Some demo involving the algebraic number .
fricas
t1 := (sqrt(3)-3)*(sqrt(3)+1)/6
fricas
tt1 := -1/sqrt(3)
fricas
t2 := sqrt(3)/6
fricas
t1+t2
fricas
tt1+t2
Note that in PanAxiom the above are not generic expressions but of
type AlgebraicNumber?.
Alternatively, we could also use Renaud Rioboo's RECLOS
package,
which has both mathematical equality and ordering.
Unfortunately, it is not as easy to use - most importantly,
you have to "name" your real roots, if you want simple answers:
fricas
RAN ==> RECLOS FRAC INT
Type: Void
fricas
x1 := (sqrt(3)$RAN-3)*(sqrt(3)$RAN+1)/6
fricas
xx1 := -1/sqrt(3)$RAN
fricas
(x1=xx1)@Boolean
Type: Boolean
It's preferable to give names to the roots:
fricas
s3 := sqrt(3)$RAN
fricas
(s3-3)*(s3+1)/6
AlgebraicNumber? doesn't like the following:
fricas
f3 := sqrt(3,5)$RAN
fricas
f25 := sqrt(1/25,5)$RAN
fricas
f32 := sqrt(32/5,5)$RAN;
fricas
f27 := sqrt(27/5,5)$RAN;
fricas
expr1 := sqrt(f32-f27,3)
fricas
expr2 := (1+f3-f3^2)
fricas
expr1 - f25*expr2
Although the main point of RECLOS
is supposed do be mathematical
ordering and approximation, I could not find a convincing example.
From the "examples" section of 'RECLOS':
fricas
s := sqrt(190)$RAN+sqrt(1751)$RAN-sqrt(208)$RAN-sqrt(1698)$RAN
fricas
approximate(s, 10^-15)::Float
Type: Float
But we get the same without 'RECLOS':
fricas
t := sqrt(190)+sqrt(1751)-sqrt(208)-sqrt(1698)
fricas
digits(30);
fricas
numeric t - approximate(s, 10^-30)::Float
Type: Float