Quadratic form extras¶
-
sage.quadratic_forms.extras.
extend_to_primitive
(A_input)¶ Given a matrix (resp. list of vectors), extend it to a square matrix (resp. list of vectors), such that its determinant is the gcd of its minors (i.e. extend the basis of a lattice to a “maximal” one in Z^n).
Author(s): Gonzalo Tornaria and Jonathan Hanke.
INPUT:
a matrix, or a list of length n vectors (in the same space)
OUTPUT:
a square matrix, or a list of n vectors (resp.)
EXAMPLES:
sage: A = Matrix(ZZ, 3, 2, range(6)) sage: extend_to_primitive(A) [ 0 1 0] [ 2 3 0] [ 4 5 -1] sage: extend_to_primitive([vector([1,2,3])]) [(1, 2, 3), (0, 1, 0), (0, 0, 1)]
-
sage.quadratic_forms.extras.
is_triangular_number
(n, return_value=False)¶ Return whether
n
is a triangular number.A triangular number is a number of the form \(k(k+1)/2\) for some non-negative integer \(n\). See Wikipedia article Triangular_number. The sequence of triangular number is references as A000217 in the Online encyclopedia of integer sequences (OEIS).
If you want to get the value of \(k\) for which \(n=k(k+1)/2\) set the argument
return_value
toTrue
(see the examples below).INPUT:
n
- an integerreturn_value
- a boolean set toFalse
by default. If set toTrue
the function returns a pair made of a boolean and the valuev
such that \(v(v+1)/2 = n\).
EXAMPLES:
sage: is_triangular_number(3) True sage: is_triangular_number(3, return_value=True) (True, 2) sage: 2*(2+1)/2 3 sage: is_triangular_number(2) False sage: is_triangular_number(2, return_value=True) (False, None) sage: is_triangular_number(25*(25+1)/2) True sage: is_triangular_number(10^6 * (10^6 +1)/2, return_value=True) (True, 1000000)
-
sage.quadratic_forms.extras.
least_quadratic_nonresidue
(p)¶ Returns the smallest positive integer quadratic non-residue in Z/pZ for primes p>2.
EXAMPLES:
sage: least_quadratic_nonresidue(5) 2 sage: [least_quadratic_nonresidue(p) for p in prime_range(3,100)] [2, 2, 3, 2, 2, 3, 2, 5, 2, 3, 2, 3, 2, 5, 2, 2, 2, 2, 7, 5, 3, 2, 3, 5]