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