Helper code for ternary quadratic forms

sage.quadratic_forms.ternary.evaluate(a, b, c, r, s, t, v)

Function to evaluate the ternary quadratic form (a, b, c, r, s, t) in a 3-tuple v.

EXAMPLES:

sage: from sage.quadratic_forms.ternary import evaluate
sage: Q = TernaryQF([1, 2, 3, -1, 0, 0])
sage: v = (1, -1, 19)
sage: Q(v)
1105
sage: evaluate(1, 2, 3, -1, 0, 0, v)
1105
sage.quadratic_forms.ternary.extend(v)

Return the coefficients of a matrix M such that M has determinant gcd(v) and the first column is v.

EXAMPLES:

sage: from sage.quadratic_forms.ternary import extend
sage: v = (6, 4, 12)
sage: m = extend(v)
sage: M = matrix(3, m)
sage: M
[ 6  1  0]
[ 4  1  0]
[12  0  1]
sage: M.det()
2
sage: v = (-12, 20, 30)
sage: m = extend(v)
sage: M = matrix(3, m)
sage: M
[-12   1   0]
[ 20  -2   1]
[ 30   0  -7]
sage: M.det()
2
sage.quadratic_forms.ternary.primitivize(v0, v1, v2, p)

Given a 3-tuple v not singular mod p, it returns a primitive 3-tuple version of v mod p.

EXAMPLES:

sage: from sage.quadratic_forms.ternary import primitivize
sage: primitivize(12, 13, 14, 5)
(3, 2, 1)
sage: primitivize(12, 13, 15, 5)
(4, 1, 0)
sage.quadratic_forms.ternary.pseudorandom_primitive_zero_mod_p(a, b, c, r, s, t, p)

Find a zero of the form (a, b, 1) of the ternary quadratic form given by the coefficients (a, b, c, r, s, t) mod p, where p is a odd prime that doesn’t divide the discriminant.

EXAMPLES:

sage: Q = TernaryQF([1, 2, 2, -1, 0, 0])
sage: p = 1009
sage: from sage.quadratic_forms.ternary import pseudorandom_primitive_zero_mod_p
sage: v = pseudorandom_primitive_zero_mod_p(1, 2, 2, -1, 0, 0, p)
sage: v[2]
1
sage: Q(v)%p
0
sage.quadratic_forms.ternary.red_mfact(a, b)

Auxiliary function for reduction that finds the reduction factor of a, b integers.

INPUT:

  • a, b integers

OUTPUT:

Integer

EXAMPLES:

sage: from sage.quadratic_forms.ternary import red_mfact
sage: red_mfact(0, 3)
0
sage: red_mfact(-5, 100)
9