> _ := PolynomialRing(Rationals());
> K := NumberField(x^4 - 5*x^2 + 25);
> time C := SolveSumOfSquares(theta + 1); C;
Time: 0.290
[
1/2*(theta + 2),
-1/4*theta,
1/4*(-theta^2 + 5)
]
> &+ [ c^2 : c in C ];
theta + 1
What is new?
Version 0.5:
CQF can now costruct isotropic vector (see function IsotropicVector).
More new functions: RandomDQF, Subform, Evaluate.
Version 0.4.1:
Fixed a bug in that in some cases returned false positives for (local) isotropy of a form over a number field.
Version 0.4:
Added a new function SolveSumOfSquares that decomposes any totally positive element into a sum of squares of minimal length.
Version 0.3:
Completely new function AnisotropicPart that computes an anisotropic part of a given quadratic form.
More new functions: Find, OrderingSeparation, Coefficients, RundomShuffle, AreSimilar, RealRootBound, RealRootIntervals.
The internal folder structure and file naming convention has been changed.
Some bugs have been removed.
Version 0.2.2:
Corrected bug in AnisotropicDimension of quadratic forms over rational function fields over finite fields.
Version 0.2.1:
Corrected bug that returned wrong Pythagoras element for some formally real number fields of even degree over QQ.
Version 0.2:
One can create the Witt ring as a Magma's object and perform basic operations on elements of Witt rings.
As a consequence of the previous point, one can test Witt equivalence for any combination of fields supported by CQF. For example, CQF will recognize that the field of complex numbers is Witt equivalent to the finite field of two elements.
Relevant primes are now cached for every diagonal quadratic form over a global field. This speeds up repeated computations on the same form.