# Binary Quadratic Forms

- [Introduction](introduction.md)

- [Creation Functions](creation.md)

  - [Creation of Structures](creation.md#creation-of-structures)

    - [`BinaryQuadraticForms(D): RngIntElt → QuadBin`](creation.md#function-binaryquadraticforms-rngintelt)

    - [`QuadraticForms(D): RngIntElt → QuadBin`](creation.md#function-quadraticforms-rngintelt)

  - [Creation of Forms](creation.md#creation-of-forms)

    - [`Identity(Q): QuadBin → QuadBinElt`](creation.md#function-identity-quadbin)

    - [`Q ! 1: QuadBin, RngIntElt → QuadBinElt`](creation.md#operation-op-quadbin-rngintelt)

    - [`Q ! [a, b, c]: QuadBin, RngIntElt, RngIntElt, RngIntElt → QuadBinElt`](creation.md#operation-op-quadbin-rngintelt-rngintelt-rngintelt)

    - [`elt< Q | a, b, c>: QuadBin, RngIntElt, RngIntElt, RngIntElt → QuadBinElt`](creation.md#constructor-constructor-elt-quadbin-rngintelt-rngintelt-rngintelt-quadbinelt)

    - [`elt< Q | a, b>: QuadBin, RngIntElt, RngIntElt → QuadBinElt`](creation.md#constructor-constructor-elt-quadbin-rngintelt-rngintelt-quadbinelt)

    - [`PrimeForm(Q, p): QuadBin, RngIntElt → QuadBinElt`](creation.md#function-primeform-quadbin-rngintelt)

- [Basic Invariants](invariants.md)

  - [`Discriminant(f): QuadBinElt → RngIntElt`](invariants.md#function-discriminant-quadbinelt)

  - [`Discriminant(Q): QuadBin → RngIntElt`](invariants.md#function-discriminant-quadbin)

  - [`IsDiscriminant(D): RngIntElt → BoolElt`](invariants.md#function-isdiscriminant-rngintelt)

  - [`IsFundamental(D): RngIntElt → BoolElt`](invariants.md#function-isfundamental-rngintelt)

  - [`IsFundamentalDiscriminant(D): RngIntElt → BoolElt`](invariants.md#function-isfundamentaldiscriminant-rngintelt)

  - [`FundamentalDiscriminant(D): RngIntElt → RngIntElt`](invariants.md#function-fundamentaldiscriminant-rngintelt)

  - [`Conductor(Q): QuadBin → RngIntElt`](invariants.md#function-conductor-quadbin)

- [Operations on Forms](form-operations.md)

  - [Arithmetic](form-operations.md#arithmetic)

    - [`Conjugate(f): QuadBinElt → QuadBinElt`](form-operations.md#function-conjugate-quadbinelt)

    - [`f * g: QuadBinElt, QuadBinElt → QuadBinElt`](form-operations.md#operation-op-times-quadbinelt-quadbinelt)

    - [`Composition(f, g): QuadBinElt, QuadBinElt → QuadBinElt`](form-operations.md#function-composition-quadbinelt-quadbinelt)

    - [`f ^ n: QuadBinElt, RngIntElt → QuadBinElt`](form-operations.md#operation-op-pow-quadbinelt-rngintelt)

    - [`Power(f, n): QuadBinElt, RngIntElt → QuadBinElt`](form-operations.md#function-power-quadbinelt-rngintelt)

  - [Matrix Action](form-operations.md#matrix-action)

    - [`f * M: QuadBinElt, GrpMatElt → QuadBinElt`](form-operations.md#operation-op-times-quadbinelt-grpmatelt)

  - [Reduction](form-operations.md#reduction)

    - [`Reduction(f): QuadBinElt → QuadBinElt, Mtrx`](form-operations.md#function-reduction-quadbinelt)

    - [`ReducedForm(f): QuadBinElt → QuadBinElt, Mtrx`](form-operations.md#function-reducedform-quadbinelt)

    - [`ReductionStep(f): QuadBinElt → QuadBinElt`](form-operations.md#function-reductionstep-quadbinelt)

    - [`ReductionOrbit(f): QuadBinElt → {@ QuadBinElt @}`](form-operations.md#function-reductionorbit-quadbinelt)

    - [`Order(f): QuadBinElt → RngIntElt`](form-operations.md#function-order-quadbinelt)

  - [Attribute Access](form-operations.md#attribute-access)

    - [`f[i]: QuadBinElt, RngIntElt → RngIntElt`](form-operations.md#indexed-indexed-f-quadbinelt-rngintelt-rngintelt)

    - [`Eltseq(f): QuadBinElt → SeqEnum[RngIntElt]`](form-operations.md#function-eltseq-quadbinelt)

    - [`ElementToSequence(f): QuadBinElt → SeqEnum[RngIntElt]`](form-operations.md#function-elementtosequence-quadbinelt)

  - [Boolean Operations](form-operations.md#boolean-operations)

    - [`f in Q: QuadBinElt, QuadBin → BoolElt`](form-operations.md#operation-op-in-quadbinelt-quadbin)

    - [`f eq g: QuadBinElt, QuadBinElt → BoolElt`](form-operations.md#operation-op-eq-quadbinelt-quadbinelt)

    - [`IsIdentity(f): QuadBinElt → BoolElt`](form-operations.md#function-isidentity-quadbinelt)

    - [`IsReduced(f): QuadBinElt → BoolElt`](form-operations.md#function-isreduced-quadbinelt)

    - [`IsEquivalent(f, g): QuadBinElt, QuadBinElt → BoolElt, AlgMatElt`](form-operations.md#function-isequivalent-quadbinelt-quadbinelt)

  - [Maps of Forms](form-operations.md#maps-of-forms)

    - [`FundamentalQuotient(Q): QuadBin → Map`](form-operations.md#function-fundamentalquotient-quadbin)

    - [`QuotientMap(Q1, Q2): QuadBin, QuadBin → Map`](form-operations.md#function-quotientmap-quadbin-quadbin)

    - [`Q ! f: QuadBin, QuadBinElt → QuadBinElt`](form-operations.md#operation-op-quadbin-quadbinelt)

  - [Related Structures](form-operations.md#related-structures)

    - [`Parent(f): QuadBinElt → QuadBin`](form-operations.md#function-parent-quadbinelt)

    - [`Category(Q): QuadBin → Cat`](form-operations.md#function-category-quadbin)

    - [`QuadraticOrder(Q): QuadBin → RngQuad`](form-operations.md#function-quadraticorder-quadbin)

    - [`Ideal(f): QuadBinElt → RngQuadIdl`](form-operations.md#function-ideal-quadbinelt)

- [Reduced Forms](reduced-forms.md)

  - [`ReducedForms(Q): QuadBin → [ QuadBinElt ]`](reduced-forms.md#function-reducedforms-quadbin)

  - [`ReducedForms(D): RngIntElt → [ QuadBinElt ]`](reduced-forms.md#function-reducedforms-rngintelt)

  - [`ReducedOrbits(Q): QuadBin → [ {@ QuadBinElt @} ]`](reduced-forms.md#function-reducedorbits-quadbin)

- [Class Groups](class-group.md)

  - [`ClassNumber(Q: parameters): QuadBin → RngIntElt`](class-group.md#function-classnumber-quadbin)

  - [`ClassNumber(D: parameters): RngIntElt → RngIntElt`](class-group.md#function-classnumber-rngintelt)

  - [`ClassGroup(Q: parameters): QuadBin → GrpAb, Map`](class-group.md#function-quadbin-classgroup)

  - [`ClassGroupStructure(Q: parameters): QuadBin → [ RngIntElt ]`](class-group.md#function-classgroupstructure-quadbin)

  - [`AmbiguousForms(Q): QuadBin → SeqEnum`](class-group.md#function-ambiguousforms-quadbin)

  - [`TwoTorsionSubgroup(Q): QuadBin → GrpAb, Map`](class-group.md#function-twotorsionsubgroup-quadbin)

  - [`Example: Forms`](class-group.md#example-ex-d1a38f)

- [Discrete Logarithms](log.md)

  - [`Log(b, x): QuadBinElt, QuadBinElt → RngIntElt`](log.md#function-log-quadbinelt-quadbinelt)

  - [`Log(b, x, t): QuadBinElt, QuadBinElt, RngIntElt → RngIntElt`](log.md#function-log-quadbinelt-quadbinelt-rngintelt)

- [Elliptic and Modular Invariants](invar.md)

  - [`Lattice(f): QuadBinElt → Lat`](invar.md#function-lattice-quadbinelt)

  - [`GramMatrix(f): QuadBinElt → AlgMatElt`](invar.md#function-grammatrix-quadbinelt)

  - [`ThetaSeries(f, n): QuadBinElt, RngIntElt → RngSerElt`](invar.md#function-thetaseries-quadbinelt-rngintelt)

  - [`RepresentationNumber(f, n): QuadBinElt, RngIntElt → RngIntElt`](invar.md#function-representationnumber-quadbinelt-rngintelt)

  - [`jInvariant(f): QuadBinElt → RngSerElt`](invar.md#function-jinvariant-quadbinelt)

  - [`Eisenstein(k, f): RngIntElt, QuadBinElt → RngSerElt`](invar.md#function-eisenstein-rngintelt-quadbinelt)

  - [`WeierstrassSeries(z, f): RngSerElt, QuadBinElt → RngSerElt`](invar.md#function-weierstrassseries-rngserelt-quadbinelt)

  - [`Example: Ell Mod`](invar.md#example-ex-f93e36)

- [Class Invariants](invar-2.md)
