This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
35
unikernel/duniverse/Zarith/tests/tst_extract.ml
Normal file
35
unikernel/duniverse/Zarith/tests/tst_extract.ml
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
module I = Z
|
||||
|
||||
let pr ch x =
|
||||
output_string ch (I.to_string x);
|
||||
flush ch
|
||||
|
||||
let chk_extract x o l =
|
||||
let expected =
|
||||
I.logand (I.shift_right x o) (I.pred (I.shift_left (I.of_int 1) l))
|
||||
and actual =
|
||||
I.extract x o l in
|
||||
if actual <> expected then (Printf.printf "extract %a %d %d = %a found %a\n" pr x o l pr expected pr actual; failwith "test failed")
|
||||
|
||||
let doit () =
|
||||
let max = 128 in
|
||||
for l = 1 to max do
|
||||
if l mod 16 == 0 then Printf.printf "%i/%i\n%!" l max;
|
||||
for o = 0 to 256 do
|
||||
for n = 0 to 256 do
|
||||
let x = I.shift_left I.one n in
|
||||
chk_extract x o l;
|
||||
chk_extract (I.mul x x) o l;
|
||||
chk_extract (I.mul x (I.mul x x)) o l;
|
||||
chk_extract (I.succ x) o l;
|
||||
chk_extract (I.pred x) o l;
|
||||
chk_extract (I.neg (I.mul x x)) o l;
|
||||
chk_extract (I.neg (I.mul x (I.mul x x))) o l;
|
||||
chk_extract (I.neg x) o l;
|
||||
chk_extract (I.neg (I.succ x)) o l;
|
||||
chk_extract (I.neg (I.pred x)) o l;
|
||||
done
|
||||
done
|
||||
done
|
||||
|
||||
let _ = doit ()
|
||||
Loading…
Add table
Add a link
Reference in a new issue