1- Require Import CRtrans Compress.
2- Require Import ARtrans ARbigD.
1+ From CoRN Require Import CRtrans Compress ARtrans ARbigD.
32
43Definition eval (n:positive) (r : CR) : Q :=
5- let m := iter_pos n _ (Pmult 10) 1%positive in approximate r (1#m)% Qpos.
4+ let m := Pos.iter (Pmult 10) 1%positive n in approximate r (1#m :> Qpos) .
65
76Definition deval (n:positive) (r : ARbigD) : bigD :=
8- let m := iter_pos n _ (Pmult 10) 1%positive in approximate r (1#m)% Qpos.
7+ let m := Pos.iter (Pmult 10) 1%positive n in approximate r (1#m :> Qpos) .
98
10- Let ARtest1 : ARbigD := ARpi.
11- Let CRtest1 : CR := CRpi.
9+ Definition ARtest1 : ARbigD := ARpi.
10+ Definition CRtest1 : CR := CRpi.
1211
13- Let ARtest2 : ARbigD := ARexp (ARcompress (ARexp (ARcompress (AQexp (1 ≪ (-1)))))).
14- Let CRtest2 : CR := exp (compress (exp (compress (rational_exp (1#2))))).
12+ Definition ARtest2 : ARbigD := ARexp (ARcompress (ARexp (ARcompress (AQexp (1 ≪ (-1)))))).
13+ Definition CRtest2 : CR := exp (compress (exp (compress (rational_exp (1#2))))).
1514
16- Let ARtest3 : ARbigD := ARexp (ARcompress ARpi) - ARpi.
17- Let CRtest3 : CR := exp (compress CRpi) - CRpi.
15+ Definition ARtest3 : ARbigD := ARexp (ARcompress ARpi) - ARpi.
16+ Definition CRtest3 : CR := exp (compress CRpi) - CRpi.
1817
19- Let ARtest4 : ARbigD := ARarctan (ARcompress ARpi).
20- Let CRtest4 : CR := arctan (compress CRpi).
18+ Definition ARtest4 : ARbigD := ARarctan (ARcompress ARpi).
19+ Definition CRtest4 : CR := arctan (compress CRpi).
2120
22- Let ARtest5 : ARbigD := ARcos ('(10^50)%Z).
23- Let CRtest5 : CR := cos ('inject_Z (10^50)%Z).
21+ Definition ARtest5 : ARbigD := ARcos ('(10^50)%Z).
22+ Definition CRtest5 : CR := cos ('inject_Z (10^50)%Z).
2423
25- Let ARtest6 : ARbigD := ARsin (ARcompress (ARsin (ARcompress (AQsin 1)))).
26- Let CRtest6 : CR := sin (compress (sin (compress (rational_sin (1#1))))).
24+ Definition ARtest6 : ARbigD := ARsin (ARcompress (ARsin (ARcompress (AQsin 1)))).
25+ Definition CRtest6 : CR := sin (compress (sin (compress (rational_sin (1#1))))).
2726
2827Time Eval vm_compute in (deval 300 ARtest1).
29- Time Eval vm_compute in (eval 300 CRtest1).
30- Time Eval vm_compute in (deval 2100 ARtest1).
28+ Time Eval vm_compute in (eval 30 CRtest1).
29+ Time Eval vm_compute in (deval 400 ARtest1).
3130
3231Time Eval vm_compute in (deval 25 ARtest2).
33- Time Eval vm_compute in (eval 25 CRtest2).
34- Time Eval vm_compute in (deval 425 ARtest2).
32+ Time Eval vm_compute in (eval 7 CRtest2).
33+ Time Eval vm_compute in (deval 150 ARtest2).
3534
3635Time Eval vm_compute in (deval 25 ARtest3).
37- Time Eval vm_compute in (eval 25 CRtest3).
38- Time Eval vm_compute in (deval 425 ARtest3).
36+ Time Eval vm_compute in (eval 10 CRtest3).
37+ Time Eval vm_compute in (deval 200 ARtest3).
3938
4039Time Eval vm_compute in (deval 25 ARtest4).
41- Time Eval vm_compute in (eval 25 CRtest4).
40+ Time Eval vm_compute in (eval 5 CRtest4).
4241Time Eval vm_compute in (deval 85 ARtest4).
4342
4443Time Eval vm_compute in (deval 40 ARtest5).
45- Time Eval vm_compute in (eval 40 CRtest5).
46- Time Eval vm_compute in (deval 3000 ARtest5).
44+ Time Eval vm_compute in (eval 10 CRtest5).
45+ Time Eval vm_compute in (deval 200 ARtest5).
4746
4847Time Eval vm_compute in (deval 25 ARtest6).
49- Time Eval vm_compute in (eval 25 CRtest6).
50- Time Eval vm_compute in (deval 425 ARtest6).
48+ Time Eval vm_compute in (eval 10 CRtest6).
49+ Time Eval vm_compute in (deval 150 ARtest6).
5150
5251(* Finally, we compare our sqrt with an implementation not using type classes *)
53- Require Import ARroot dyadics.
52+ From CoRN Require Import ARroot.
53+ From MathClasses Require Import dyadics.
5454
55- Let n := Eval compute in (10 * 10 * 10 * 10)%nat.
56- Let ARroot_test : nat -> bigD * bigD := AQsqrt_loop (a:=2).
55+ Definition n := Eval compute in (10 * 10 * 10 * 10)%nat.
56+ Definition ARroot_test : nat -> bigD * bigD := AQsqrt_loop (a:=2).
5757
5858Time Eval vm_compute in (
5959 (fun _ _ _ _ _ _ _ _ _ _ => true)
@@ -68,25 +68,25 @@ Time Eval vm_compute in (
6868 (snd (ARroot_test n))
6969 (snd (ARroot_test n))).
7070
71- Require Import BigZ.
71+ From Bignums Require Import BigZ.
7272Open Scope bigZ_scope.
7373
74- Definition BigD_0 : bigD := (0 $ 0).
75- Definition BigD_1 : bigD := (1 $ 0).
76- Definition BigD_2 : bigD := (2 $ 0).
77- Definition BigD_4 : bigD := (4 $ 0).
74+ Definition BigD_0 : bigD := (0 ▼ 0).
75+ Definition BigD_1 : bigD := (1 ▼ 0).
76+ Definition BigD_2 : bigD := (2 ▼ 0).
77+ Definition BigD_4 : bigD := (4 ▼ 0).
7878
7979Definition BigD_plus (x y : bigD) : bigD :=
8080 match BigZ.compare (expo x) (expo y) with
81- | Gt => BigZ.shiftl (mant x) (expo x - expo y) + mant y $ BigZ.min (expo x) (expo y)
82- | _ => mant x + BigZ.shiftl (mant y) (expo y - expo x) $ BigZ.min (expo x) (expo y)
81+ | Gt => BigZ.shiftl (mant x) (expo x - expo y) + mant y ▼ BigZ.min (expo x) (expo y)
82+ | _ => mant x + BigZ.shiftl (mant y) (expo y - expo x) ▼ BigZ.min (expo x) (expo y)
8383 end .
8484
85- Definition BigD_opp (x : bigD) : bigD := -mant x $ expo x.
85+ Definition BigD_opp (x : bigD) : bigD := -mant x ▼ expo x.
8686
87- Definition BigD_mult (x y : bigD) : bigD := mant x * mant y $ expo x + expo y.
87+ Definition BigD_mult (x y : bigD) : bigD := mant x * mant y ▼ expo x + expo y.
8888
89- Definition BigD_shiftl (x : bigD) (n : bigZ) : bigD := mant x $ expo x + n.
89+ Definition BigD_shiftl (x : bigD) (n : bigZ) : bigD := mant x ▼ expo x + n.
9090
9191Definition BigD_compare (x y : bigD) : comparison :=
9292 match BigZ.compare (expo x) (expo y) with
0 commit comments