# Quantum Codes

- [Introduction](introduction.md)

- [Constructing Quantum Codes](creation.md)

  - [Construction of General Quantum Codes](creation.md#construction-of-general-quantum-codes)

    - [`QuantumCode(S): Code → CodeQuantum`](creation.md#function-quantumcode-code)

    - [`Example: Simple Quant Constr`](creation.md#example-ex-1cf7b5)

    - [`Example: Simple Quant Extended Constr`](creation.md#example-ex-ddc82a)

    - [`Example: Simple Quant Self Dual Constr`](creation.md#example-ex-ca78b6)

    - [`Example: Simple Quant Additive Constr`](creation.md#example-ex-f692ec)

    - [`QuantumCode(M): ModMatRngElt → CodeQuantum`](creation.md#function-quantumcode-modmatrngelt)

    - [`Example: Simple Quant Constr Mat`](creation.md#example-ex-863e76)

    - [`QuantumCode(G): Grph → CodeQuantum`](creation.md#function-quantumcode-grph)

    - [`Example: Hexacode Quant`](creation.md#example-ex-29ea9f)

    - [`Example: Dodecacode Quant`](creation.md#example-ex-d4d3a5)

    - [`RandomQuantumCode(F, n, k): FldFin, RngIntElt, RngIntElt → CodeQuantum`](creation.md#function-randomquantumcode-fldfin-rngintelt-rngintelt)

    - [`Example: Random Quant Constr`](creation.md#example-ex-27cad1)

    - [`Subcode(Q, k): CodeQuantum, RngIntElt → CodeQuantum`](creation.md#function-subcode-codequantum-rngintelt)

  - [Construction of Special Quantum Codes](creation.md#construction-of-special-quantum-codes)

    - [`Hexacode() → CodeQuantum`](creation.md#function-hexacode)

    - [`Dodecacode() → CodeQuantum`](creation.md#function-dodecacode)

  - [CSS Codes](creation.md#css-codes)

    - [`CSSCode(C1, C2): Code, Code → CodeQuantum`](creation.md#function-csscode-code-code)

    - [`CalderbankShorSteaneCode(C1, C2): Code, Code → CodeQuantum`](creation.md#function-calderbankshorsteanecode-code-code)

    - [`Example: CSS Quant Constr`](creation.md#example-ex-37614f)

  - [Cyclic Quantum Codes](creation.md#cyclic-quantum-codes)

    - [`QuantumCyclicCode(v): ModTupFldElt → CodeAdd`](creation.md#function-quantumcycliccode-modtupfldelt)

    - [`QuantumCyclicCode(Q): [ModTupFldElt] → CodeAdd`](creation.md#function-quantumcycliccode-modtupfldelt-2)

    - [`Example: Cyclic Quant Codesimple`](creation.md#example-ex-0477fe)

    - [`QuantumCyclicCode(n, f): RngIntElt, RngUPolElt → CodeAdd`](creation.md#function-quantumcycliccode-rngintelt-rngupolelt)

    - [`QuantumCyclicCode(n, Q): RngIntElt, [RngUPolElt] → CodeAdd`](creation.md#function-quantumcycliccode-rngintelt-rngupolelt-2)

    - [`Example: Cyclic Quant Code Poly`](creation.md#example-ex-87e469)

    - [`QuantumCyclicCode(v4, v2): ModTupFldElt, ModTupFldElt → CodeAdd`](creation.md#function-quantumcycliccode-modtupfldelt-modtupfldelt)

    - [`Example: Cyclic Quant Code GF4GF2`](creation.md#example-ex-088686)

  - [Quasi-Cyclic Quantum Codes](creation.md#quasi-cyclic-quantum-codes)

    - [`QuantumQuasiCyclicCode(n, Q): RngIntElt, SeqEnum[RngUPolElt] → CodeAdd`](creation.md#function-quantumquasicycliccode-rngintelt-seqenum-rngupolelt)

    - [`QuantumQuasiCyclicCode(Q): SeqEnum[ModTupFldElt] → CodeAdd`](creation.md#function-quantumquasicycliccode-seqenum-modtupfldelt)

    - [`Example: Quasi Cyclic Quant Code`](creation.md#example-ex-efccba)

- [Access Functions](access.md)

  - [`QuantumBasisElement(F): FldFin → FldFinElt`](access.md#function-quantumbasiselement-fldfin)

  - [`Example: Quantum Basis Element`](access.md#example-ex-2560f5)

  - [`StabilizerCode(Q): CodeQuantum → CodeAdd`](access.md#function-stabilizercode-codequantum)

  - [`StabiliserCode(Q): CodeQuantum → CodeAdd`](access.md#function-stabilisercode-codequantum)

  - [`StabilizerMatrix(Q): CodeQuantum → ModMatFldElt`](access.md#function-stabilizermatrix-codequantum)

  - [`StabiliserMatrix(Q): CodeQuantum → ModMatFldElt`](access.md#function-stabilisermatrix-codequantum)

  - [`NormalizerCode(Q): CodeQuantum → CodeAdd`](access.md#function-normalizercode-codequantum)

  - [`NormaliserCode(Q): CodeQuantum → CodeAdd`](access.md#function-normalisercode-codequantum)

  - [`NormalizerMatrix(Q): CodeQuantum → ModMatFldElt`](access.md#function-normalizermatrix-codequantum)

  - [`NormaliserMatrix(Q): CodeQuantum → ModMatFldElt`](access.md#function-normalisermatrix-codequantum)

  - [Quantum Error Group](access.md#quantum-error-group)

    - [`QuantumErrorGroup(p, n): RngIntElt, RngIntElt → GrpPC`](access.md#function-quantumerrorgroup-rngintelt-rngintelt)

    - [`QuantumBinaryErrorGroup(n): RngIntElt → GrpPC`](access.md#function-quantumbinaryerrorgroup-rngintelt)

    - [`Example: Quantum Error Group`](access.md#example-ex-442960)

    - [`QuantumErrorGroup(Q): CodeQuantum → GrpPC`](access.md#function-quantumerrorgroup-codequantum)

    - [`StabilizerGroup(Q): CodeQuantum → GrpPC`](access.md#function-stabilizergroup-codequantum)

    - [`StabiliserGroup(Q): CodeQuantum → GrpPC`](access.md#function-stabilisergroup-codequantum)

    - [`StabilizerGroup(Q, G): CodeQuantum, GrpPC → GrpPC`](access.md#function-stabilizergroup-codequantum-grppc)

    - [`StabiliserGroup(Q, G): CodeQuantum, GrpPC → GrpPC`](access.md#function-stabilisergroup-codequantum-grppc)

    - [`Example: Quant Stab Group`](access.md#example-ex-1844d0)

    - [`Example: Quant Stab Group Hack`](access.md#example-ex-8f08f4)

- [Inner Products and Duals](inner-products.md)

  - [`SymplecticInnerProduct(v1, v2): ModTupFldElt, ModTupFldElt → FldFinElt`](inner-products.md#function-symplecticinnerproduct-modtupfldelt-modtupfldelt)

  - [`Example: Symplectic Products Compared`](inner-products.md#example-ex-176f6b)

  - [`Example: Symplectic Product Formats`](inner-products.md#example-ex-f66c0e)

  - [`SymplecticDual(C): CodeAdd → CodeAdd`](inner-products.md#function-symplecticdual-codeadd)

  - [`IsSymplecticSelfDual(C): CodeAdd → BoolElt`](inner-products.md#function-issymplecticselfdual-codeadd)

  - [`IsSymplecticSelfOrthogonal(C): CodeAdd → BoolElt`](inner-products.md#function-issymplecticselforthogonal-codeadd)

  - [`Example: Symplectic Eg`](inner-products.md#example-ex-b98847)

  - [`Example: symplecticselforthog`](inner-products.md#example-ex-937695)

- [Weight Distribution and Minimum Weight](weight-distribution.md)

  - [`WeightDistribution(Q): CodeQuantum → SeqEnum, SeqEnum, SeqEnum`](weight-distribution.md#function-weightdistribution-codequantum)

  - [`Example: Quant Weight Dist`](weight-distribution.md#example-ex-839de5)

  - [`MinimumWeight(Q): CodeQuantum → RngIntElt`](weight-distribution.md#function-minimumweight-codequantum)

  - [`Example: Quant Min Weight`](weight-distribution.md#example-ex-9556d5)

  - [`IsPure(Q): CodeQuantum → BoolElt`](weight-distribution.md#function-ispure-codequantum)

  - [`Example: QECC IsPure`](weight-distribution.md#example-ex-e05555)

- [New Codes From Old](combining-codes.md)

  - [`DirectSum(Q1, Q2): CodeQuantum, CodeQuantum → CodeQuantum`](combining-codes.md#function-directsum-codequantum-codequantum)

  - [`ExtendCode(Q): CodeQuantum → CodeQuantum`](combining-codes.md#function-extendcode-codequantum)

  - [`ExtendCode(Q, m): CodeQuantum, RngIntElt → CodeQuantum`](combining-codes.md#function-extendcode-codequantum-rngintelt)

  - [`PunctureCode(Q, i): CodeQuantum, RngIntElt → CodeQuantum`](combining-codes.md#function-puncturecode-codequantum-rngintelt)

  - [`PunctureCode(Q, I): CodeQuantum, SetEnum → CodeQuantum`](combining-codes.md#function-puncturecode-codequantum-setenum)

  - [`ShortenCode(Q, i): CodeQuantum, RngIntElt → CodeQuantum`](combining-codes.md#function-shortencode-codequantum-rngintelt)

  - [`ShortenCode(Q, I): CodeQuantum, SetEnum → CodeQuantum`](combining-codes.md#function-shortencode-codequantum-setenum)

  - [`C ^ tau: CodeQuantum, GrpPermElt → CodeQuantum`](combining-codes.md#operation-op-pow-codequantum-grppermelt)

  - [`Example: Non Quant Combs`](combining-codes.md#example-ex-31e314)

- [Best Known Quantum Codes](best-known-quantum-codes.md)

  - [`QECC(F, n, k): FldFin, RngIntElt, RngIntElt → CodeQuantum, BoolElt`](best-known-quantum-codes.md#function-qecc-fldfin-rngintelt-rngintelt)

  - [`BKQC(F, n, k): FldFin, RngIntElt, RngIntElt → CodeQuantum, BoolElt`](best-known-quantum-codes.md#function-bkqc-fldfin-rngintelt-rngintelt)

  - [`BestKnownQuantumCode(F, n, k): FldFin, RngIntElt, RngIntElt → CodeQuantum, BoolElt`](best-known-quantum-codes.md#function-bestknownquantumcode-fldfin-rngintelt-rngintelt)

  - [`Example: QECC Egs`](best-known-quantum-codes.md#example-ex-4ef878)

  - [`Example: QECC Self Dual`](best-known-quantum-codes.md#example-ex-aece57)

  - [`Example: QECC Verbose`](best-known-quantum-codes.md#example-ex-e5b5cc)

- [Best Known Bounds](best-known-quantum-bounds.md)

  - [`QECCLowerBound(F, n, k): FldFin, RngIntElt, RngIntElt → RngIntElt`](best-known-quantum-bounds.md#function-qecclowerbound-fldfin-rngintelt-rngintelt)

  - [`QECCUpperBound(F, n, k): FldFin, RngIntElt, RngIntElt → RngIntElt`](best-known-quantum-bounds.md#function-qeccupperbound-fldfin-rngintelt-rngintelt)

  - [`Example: QECC Bounds`](best-known-quantum-bounds.md#example-ex-9d1cfb)

- [Automorphism Group](additive-automorphisms.md)

  - [`AutomorphismGroup(Q): CodeQuantum → GrpPerm`](additive-automorphisms.md#function-automorphismgroup-codequantum)

  - [`PermutationGroup(Q): CodeQuantum → GrpPerm`](additive-automorphisms.md#function-permutationgroup-codequantum)

  - [`Example: Quantum Auto`](additive-automorphisms.md#example-ex-9f0d8a)

  - [`Example: QECC Auto Stabilizer`](additive-automorphisms.md#example-ex-320db8)

- [Hilbert Spaces](hilbert-space.md)

  - [`HilbertSpace(F, n): FldCom, RngIntElt → HilbSpc`](hilbert-space.md#function-hilbertspace-fldcom-rngintelt)

  - [`Field(H): HilbSpc → FldCom`](hilbert-space.md#function-field-hilbspc)

  - [`NumberOfQubits(H): HilbSpc → RngIntElt`](hilbert-space.md#function-numberofqubits-hilbspc)

  - [`Nqubits(H): HilbSpc → RngIntElt`](hilbert-space.md#function-nqubits-hilbspc)

  - [`Dimension(H): HilbSpc → RngIntElt`](hilbert-space.md#function-dimension-hilbspc)

  - [`IsDenselyRepresented(H): HilbSpc → RngIntElt`](hilbert-space.md#function-isdenselyrepresented-hilbspc)

  - [`H1 eq H2: HilbSpc, HilbSpc → BoolElt`](hilbert-space.md#operation-op-eq-hilbspc-hilbspc)

  - [`H1 ne H2: HilbSpc, HilbSpc → BoolElt`](hilbert-space.md#operation-op-ne-hilbspc-hilbspc)

  - [`Example: Hilbert Space Create`](hilbert-space.md#example-ex-a2ce0e)

  - [Creation of Quantum States](hilbert-space.md#creation-of-quantum-states)

    - [`QuantumState(H, v): HilbSpc, ModTupFldElt → HilbSpcElt`](hilbert-space.md#function-quantumstate-hilbspc-modtupfldelt)

    - [`QuantumState(H, v): HilbSpc, MtrxSprs → HilbSpcElt`](hilbert-space.md#function-quantumstate-hilbspc-mtrxsprs)

    - [`H ! i: HilbSpc, RngIntElt → HilbSpcElt`](hilbert-space.md#operation-op-hilbspc-rngintelt)

    - [`H ! s: HilbSpc, [RngIntElt] → HilbSpcElt`](hilbert-space.md#operation-op-hilbspc-rngintelt-2)

    - [`SetPrintKetsInteger(b): BoolElt`](hilbert-space.md#function-setprintketsinteger-boolelt)

    - [`Example: Quantum State Create`](hilbert-space.md#example-ex-1f7466)

    - [`Example: Quantum State Create Coerce`](hilbert-space.md#example-ex-9b3454)

  - [Manipulation of Quantum States](hilbert-space.md#manipulation-of-quantum-states)

    - [`a * e: FldComElt, HilbSpcElt → HilbSpcElt`](hilbert-space.md#operation-op-times-fldcomelt-hilbspcelt)

    - [`- e: HilbSpcElt → HilbSpcElt`](hilbert-space.md#operation-operation-hilbspcelt-hilbspcelt)

    - [`e1 + e2: HilbSpcElt, HilbSpcElt → HilbSpcElt`](hilbert-space.md#operation-op-plus-hilbspcelt-hilbspcelt)

    - [`e1 - e2: HilbSpcElt, HilbSpcElt → HilbSpcElt`](hilbert-space.md#operation-op-minus-hilbspcelt-hilbspcelt)

    - [`Normalisation(e): HilbSpcElt → HilbSpcElt`](hilbert-space.md#function-normalisation-hilbspcelt)

    - [`Normalisation(~e): HilbSpcElt`](hilbert-space.md#function-normalisation-hilbspcelt-ref)

    - [`Normalization(e): HilbSpcElt → HilbSpcElt`](hilbert-space.md#function-normalization-hilbspcelt)

    - [`Normalization(~e): HilbSpcElt`](hilbert-space.md#function-normalization-hilbspcelt-ref)

    - [`NormalisationCoefficient(e): HilbSpc → FldComElt`](hilbert-space.md#function-normalisationcoefficient-hilbspc)

    - [`NormalizationCoefficient(e): HilbSpc → FldComElt`](hilbert-space.md#function-normalizationcoefficient-hilbspc)

    - [`e1 eq e2: HilbSpcElt, HilbSpcElt → BoolElt`](hilbert-space.md#operation-op-eq-hilbspcelt-hilbspcelt)

    - [`e1 ne e2: HilbSpcElt, HilbSpcElt → BoolElt`](hilbert-space.md#operation-op-ne-hilbspcelt-hilbspcelt)

    - [`Example: Quantum State Normalisation`](hilbert-space.md#example-ex-d9a8c5)

  - [Inner Product and Probabilities of Quantum States](hilbert-space.md#inner-product-and-probabilities-of-quantum-states)

    - [`InnerProduct(e1, e2): HilbSpcElt, HilbSpcElt → HilbSpcElt`](hilbert-space.md#function-innerproduct-hilbspcelt-hilbspcelt)

    - [`ProbabilityDistribution(e): HilbSpcElt → Mtrx`](hilbert-space.md#function-probabilitydistribution-hilbspcelt)

    - [`Probability(e, i): HilbSpcElt, RngIntElt → FldReElt`](hilbert-space.md#function-probability-hilbspcelt-rngintelt)

    - [`Probability(e, v): HilbSpcElt, RngIntElt → FldReElt`](hilbert-space.md#function-probability-hilbspcelt-rngintelt-2)

    - [`PrintProbabilityDistribution(e): HilbSpcElt`](hilbert-space.md#function-printprobabilitydistribution-hilbspcelt)

    - [`PrintSortedProbabilityDistribution(e): HilbSpcElt`](hilbert-space.md#function-printsortedprobabilitydistribution-hilbspcelt)

    - [`Example: Quantum State Probabilities`](hilbert-space.md#example-ex-c0f168)

    - [`Example: Quantum State Sorted Probabilities`](hilbert-space.md#example-ex-10594e)

  - [Unitary Transformations on Quantum States](hilbert-space.md#unitary-transformations-on-quantum-states)

    - [`BitFlip(e, k): HilbSpcElt, RngIntElt → HilbSpcElt`](hilbert-space.md#function-bitflip-hilbspcelt-rngintelt)

    - [`BitFlip(~e, k): HilbSpcElt, RngIntElt`](hilbert-space.md#function-bitflip-hilbspcelt-rngintelt-ref)

    - [`BitFlip(e, B): HilbSpcElt, {RngIntElt} → HilbSpcElt`](hilbert-space.md#function-bitflip-hilbspcelt-rngintelt-2)

    - [`BitFlip(~e, B): HilbSpcElt, {RngIntElt}`](hilbert-space.md#function-bitflip-hilbspcelt-rngintelt-ref-2)

    - [`PhaseFlip(e, k): HilbSpcElt, RngIntElt → HilbSpcElt`](hilbert-space.md#function-phaseflip-hilbspcelt-rngintelt)

    - [`PhaseFlip(~e, k): HilbSpcElt, RngIntElt`](hilbert-space.md#function-phaseflip-hilbspcelt-rngintelt-ref)

    - [`PhaseFlip(e, B): HilbSpcElt, {RngIntElt} → HilbSpcElt`](hilbert-space.md#function-phaseflip-hilbspcelt-rngintelt-2)

    - [`PhaseFlip(~e, B): HilbSpcElt, {RngIntElt}`](hilbert-space.md#function-phaseflip-hilbspcelt-rngintelt-ref-2)

    - [`ControlledNot(e, B, k): HilbSpcElt, {RngIntElt}, RngIntElt → HilbSpcElt`](hilbert-space.md#function-controllednot-hilbspcelt-rngintelt-rngintelt)

    - [`ControlledNot(~e, B, k): HilbSpcElt, {RngIntElt}, RngIntElt`](hilbert-space.md#function-controllednot-hilbspcelt-rngintelt-rngintelt-ref)

    - [`HadamardTrasformation(e): HilbSpcElt → HilbSpcElt`](hilbert-space.md#function-hadamardtrasformation-hilbspcelt)

    - [`HadamardTrasformation(~e): HilbSpcElt`](hilbert-space.md#function-hadamardtrasformation-hilbspcelt-ref)

    - [`Example: Quantum State Unitary`](hilbert-space.md#example-ex-360d11)
