Bicycle Code
| Quantum LDPC code using bicycle graph construction with circulant matrices. Stabilizer generator matrix has structure H_X = H_Z = (A |
A^T) where A is circulant and commutes with its transpose. First quantum LDPC codes, enabling efficient syndrome measurement with sparse parity checks. Used in Microsoft’s topological quantum computing approach and recent quantum computing research. |
Properties
| Property |
Value |
| Category |
Error Correction |
| Sub-category |
Quantum Code |
| Security status |
🧪 Experimental |
| Complexity |
Expert |
| Inventor |
David MacKay, Graeme Mitchison, Paul McFadden |
| Year |
2004 |
| Origin |
Not specified |
| Source |
algorithms/ecc/bicycle-code.js |
Parameters
| Parameter |
Supported values |
| Block sizes |
2 bytes (16 bits) |
Capabilities
| Flag |
Value |
supportsErrorDetection |
Yes |
supportsErrorCorrection |
Yes |
Security
Status: 🧪 Experimental
Known vulnerabilities
| Issue |
Description |
Mitigation |
| Limited Error Correction |
The [[6,2,2]] bicycle code has distance d=2, which only allows error detection, not correction. Larger bicycle codes with higher distance are needed for actual error correction. |
— |
| Circulant Commutation Constraint |
Not all circulant matrices commute with their transpose. The choice of first row must be carefully selected to satisfy A·A^T = A^T·A for valid bicycle code construction. |
— |
| Classical Simulation Limitations |
This implementation represents quantum states as classical bit arrays for educational purposes. Real quantum bicycle codes operate on superposition states requiring quantum hardware. |
— |
| Decoding Complexity |
LDPC decoding via belief propagation can have high computational complexity and may not converge for all error patterns, especially near the error floor. |
— |
Documentation
References
Test vectors
4 vectors ship with this algorithm and run in the test suite. Byte values are hexadecimal.
| Vector 1 — [Bicycle [[6,2,2]] encode logical |
00⟩](https://errorcorrectionzoo.org/c/bicycle) |
| Field |
Value |
input |
0000 |
expected |
000000000000 |
| Vector 2 — [Bicycle [[6,2,2]] encode logical |
01⟩](https://errorcorrectionzoo.org/c/bicycle) |
| Field |
Value |
input |
0001 |
expected |
000000010101 |
| Vector 3 — [Bicycle [[6,2,2]] encode logical |
10⟩](https://errorcorrectionzoo.org/c/bicycle) |
| Field |
Value |
input |
0100 |
expected |
010101000000 |
| Vector 4 — [Bicycle [[6,2,2]] encode logical |
11⟩](https://errorcorrectionzoo.org/c/bicycle) |
| Field |
Value |
input |
0101 |
expected |
010101010101 |
← All algorithms