Some demo involving the algebraic number
.
axiom
t1 := (sqrt(3)-3)*(sqrt(3)+1)/6
axiom
tt1 := -1/sqrt(3)
axiom
t2 := sqrt(3)/6
axiom
t1+t2
axiom
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:
axiom
RAN ==> RECLOS FRAC INT
Type: Void
axiom
x1 := (sqrt(3)$RAN-3)*(sqrt(3)$RAN+1)/6
Type: RealClosure
? Fraction Integer
axiom
xx1 := -1/sqrt(3)$RAN
Type: RealClosure
? Fraction Integer
axiom
(x1=xx1)@Boolean
Type: Boolean
It's preferable to give names to the roots:
axiom
s3 := sqrt(3)$RAN
Type: RealClosure
? Fraction Integer
axiom
(s3-3)*(s3+1)/6
Type: RealClosure
? Fraction Integer
AlgebraicNumber
doesn't like the following:
axiom
f3 := sqrt(3,5)$RAN
Type: RealClosure
? Fraction Integer
axiom
f25 := sqrt(1/25,5)$RAN;
Type: RealClosure
? Fraction Integer
axiom
f32 := sqrt(32/5,5)$RAN;
Type: RealClosure
? Fraction Integer
axiom
f27 := sqrt(27/5,5)$RAN;
Type: RealClosure
? Fraction Integer
axiom
sqrt(f32-f27,3)-f25*(1+f3-f3^2)
Type: RealClosure
? Fraction Integer
Although the main point of RECLOS
is supposed do be mathematical ordering and approximation, I could not find a convincing exmaple. From the examples
section of 'RECLOS':
axiom
s := sqrt(190)$RAN+sqrt(1751)$RAN-sqrt(208)$RAN-sqrt(1698)$RAN
Type: RealClosure
? Fraction Integer
axiom
approximate(s, 10^-15)::Float
Type: Float
But we get the same without 'RECLOS':
axiom
t := sqrt(190)+sqrt(1751)-sqrt(208)-sqrt(1698)
axiom
digits(30);
axiom
numeric t - approximate(s, 10^-30)::Float
Type: Float