summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--otherlibs/num/Makefile2
-rw-r--r--otherlibs/num/big_int.ml73
-rw-r--r--otherlibs/num/nat.ml35
-rw-r--r--otherlibs/num/num.ml6
-rw-r--r--otherlibs/num/ratio.ml28
5 files changed, 73 insertions, 71 deletions
diff --git a/otherlibs/num/Makefile b/otherlibs/num/Makefile
index 080ffdeb7..8a561e888 100644
--- a/otherlibs/num/Makefile
+++ b/otherlibs/num/Makefile
@@ -24,7 +24,7 @@ CFLAGS=-O -I../../byterun $(BYTECCCOMPOPTS) $(SHAREDCCCOMPOPTS) \
CAMLC=../../ocamlcomp.sh
CAMLOPT=../../ocamlcompopt.sh
MKLIB=../../boot/ocamlrun ../../tools/ocamlmklib
-COMPFLAGS=-w s -warn-error A
+COMPFLAGS=-warn-error A
CAMLOBJS=int_misc.cmo nat.cmo big_int.cmo arith_flags.cmo \
ratio.cmo num.cmo arith_status.cmo
diff --git a/otherlibs/num/big_int.ml b/otherlibs/num/big_int.ml
index ddd5d7313..0381f466e 100644
--- a/otherlibs/num/big_int.ml
+++ b/otherlibs/num/big_int.ml
@@ -88,7 +88,7 @@ let pred_big_int bi =
0 -> { sign = -1; abs_value = nat_of_int 1}
| 1 -> let size_bi = num_digits_big_int bi in
let copy_bi = copy_nat (bi.abs_value) 0 size_bi in
- decr_nat copy_bi 0 size_bi 0;
+ ignore (decr_nat copy_bi 0 size_bi 0);
{ sign = if is_zero_nat copy_bi 0 size_bi then 0 else 1;
abs_value = copy_bi }
| _ -> let size_bi = num_digits_big_int bi in
@@ -96,7 +96,7 @@ let pred_big_int bi =
let copy_bi = create_nat (size_res) in
blit_nat copy_bi 0 (bi.abs_value) 0 size_bi;
set_digit_nat copy_bi size_bi 0;
- incr_nat copy_bi 0 size_res 1;
+ ignore (incr_nat copy_bi 0 size_res 1);
{ sign = -1;
abs_value = copy_bi }
@@ -105,7 +105,7 @@ let succ_big_int bi =
0 -> {sign = 1; abs_value = nat_of_int 1}
| -1 -> let size_bi = num_digits_big_int bi in
let copy_bi = copy_nat (bi.abs_value) 0 size_bi in
- decr_nat copy_bi 0 size_bi 0;
+ ignore (decr_nat copy_bi 0 size_bi 0);
{ sign = if is_zero_nat copy_bi 0 size_bi then 0 else -1;
abs_value = copy_bi }
| _ -> let size_bi = num_digits_big_int bi in
@@ -113,7 +113,7 @@ let succ_big_int bi =
let copy_bi = create_nat (size_res) in
blit_nat copy_bi 0 (bi.abs_value) 0 size_bi;
set_digit_nat copy_bi size_bi 0;
- incr_nat copy_bi 0 size_res 1;
+ ignore (incr_nat copy_bi 0 size_res 1);
{ sign = 1;
abs_value = copy_bi }
@@ -129,14 +129,15 @@ let add_big_int bi1 bi2 =
-1 -> let res = create_nat (succ size_bi2) in
(blit_nat res 0 (bi2.abs_value) 0 size_bi2;
set_digit_nat res size_bi2 0;
- add_nat res 0 (succ size_bi2)
- (bi1.abs_value) 0 size_bi1 0;
+ ignore
+ (add_nat res 0 (succ size_bi2)
+ (bi1.abs_value) 0 size_bi1 0);
res)
|_ -> let res = create_nat (succ size_bi1) in
(blit_nat res 0 (bi1.abs_value) 0 size_bi1;
set_digit_nat res size_bi1 0;
- add_nat res 0 (succ size_bi1)
- (bi2.abs_value) 0 size_bi2 0;
+ ignore (add_nat res 0 (succ size_bi1)
+ (bi2.abs_value) 0 size_bi2 0);
res)}
else (* Subtract absolute values if signs are different *)
@@ -146,14 +147,14 @@ let add_big_int bi1 bi2 =
| 1 -> { sign = bi1.sign;
abs_value =
let res = copy_nat (bi1.abs_value) 0 size_bi1 in
- (sub_nat res 0 size_bi1
- (bi2.abs_value) 0 size_bi2 1;
+ (ignore (sub_nat res 0 size_bi1
+ (bi2.abs_value) 0 size_bi2 1);
res) }
| _ -> { sign = bi2.sign;
abs_value =
let res = copy_nat (bi2.abs_value) 0 size_bi2 in
- (sub_nat res 0 size_bi2
- (bi1.abs_value) 0 size_bi1 1;
+ (ignore (sub_nat res 0 size_bi2
+ (bi1.abs_value) 0 size_bi1 1);
res) }
(* Coercion with int type *)
@@ -163,7 +164,7 @@ let big_int_of_int i =
let res = (create_nat 1)
in (if i = monster_int
then (set_digit_nat res 0 biggest_int;
- incr_nat res 0 1 1; ())
+ ignore (incr_nat res 0 1 1))
else set_digit_nat res 0 (abs i));
res }
@@ -179,13 +180,13 @@ let mult_int_big_int i bi =
then let res = create_nat size_res in
blit_nat res 0 (bi.abs_value) 0 size_bi;
set_digit_nat res size_bi 0;
- mult_digit_nat res 0 size_res (bi.abs_value) 0 size_bi
- (nat_of_int biggest_int) 0;
+ ignore (mult_digit_nat res 0 size_res (bi.abs_value) 0 size_bi
+ (nat_of_int biggest_int) 0);
{ sign = - (sign_big_int bi);
abs_value = res }
else let res = make_nat (size_res) in
- mult_digit_nat res 0 size_res (bi.abs_value) 0 size_bi
- (nat_of_int (abs i)) 0;
+ ignore (mult_digit_nat res 0 size_res (bi.abs_value) 0 size_bi
+ (nat_of_int (abs i)) 0);
{ sign = (sign_int i) * (sign_big_int bi);
abs_value = res }
@@ -197,10 +198,10 @@ let mult_big_int bi1 bi2 =
{ sign = bi1.sign * bi2.sign;
abs_value =
if size_bi2 > size_bi1
- then (mult_nat res 0 size_res (bi2.abs_value) 0 size_bi2
- (bi1.abs_value) 0 size_bi1;res)
- else (mult_nat res 0 size_res (bi1.abs_value) 0 size_bi1
- (bi2.abs_value) 0 size_bi2;res) }
+ then (ignore (mult_nat res 0 size_res (bi2.abs_value) 0 size_bi2
+ (bi1.abs_value) 0 size_bi1);res)
+ else (ignore (mult_nat res 0 size_res (bi1.abs_value) 0 size_bi1
+ (bi2.abs_value) 0 size_bi2);res) }
(* (quotient, rest) of the euclidian division of 2 big_int *)
let quomod_big_int bi1 bi2 =
@@ -260,10 +261,10 @@ let quomod_big_int bi1 bi2 =
(* new_r contains (r, size_bi2) the remainder *)
{ sign = - bi2.sign;
abs_value = (set_digit_nat q (pred size_q) 0;
- incr_nat q 0 size_q 1; q) },
+ ignore (incr_nat q 0 size_q 1); q) },
{ sign = 1;
abs_value =
- (sub_nat new_r 0 size_bi2 r 0 size_bi2 1;
+ (ignore (sub_nat new_r 0 size_bi2 r 0 size_bi2 1);
new_r) })
else
(if bi1_negatif then set_digit_nat q (pred size_q) 0;
@@ -380,21 +381,20 @@ let power_base_nat base nat off len =
let len = num_digits_nat res 0 n in
let len2 = min n (2 * len) in
let succ_len2 = succ len2 in
- square_nat res2 0 len2 res 0 len;
+ ignore (square_nat res2 0 len2 res 0 len);
begin
if n land !p > 0
then (set_to_zero_nat res 0 len;
- mult_digit_nat res 0 succ_len2
- res2 0 len2
- power_base pmax; ())
+ ignore (mult_digit_nat res 0 succ_len2
+ res2 0 len2 power_base pmax))
else blit_nat res 0 res2 0 len2
end;
set_to_zero_nat res2 0 len2;
p := !p lsr 1
done;
if rem > 0
- then (mult_digit_nat res2 0 (succ n)
- res 0 n power_base (pred rem);
+ then (ignore (mult_digit_nat res2 0 (succ n)
+ res 0 n power_base (pred rem));
res2)
else res
end
@@ -426,11 +426,11 @@ let power_big_int_positive_int bi n =
let len = num_digits_nat res 0 res_len in
let len2 = min res_len (2 * len) in
let succ_len2 = succ len2 in
- square_nat res2 0 len2 res 0 len;
+ ignore (square_nat res2 0 len2 res 0 len);
(if n land !p > 0
then (set_to_zero_nat res 0 len;
- mult_nat res 0 succ_len2
- res2 0 len2 (bi.abs_value) 0 bi_len;
+ ignore (mult_nat res 0 succ_len2
+ res2 0 len2 (bi.abs_value) 0 bi_len);
set_to_zero_nat res2 0 len2)
else blit_nat res 0 res2 0 len2;
set_to_zero_nat res2 0 len2);
@@ -475,14 +475,14 @@ let power_big_int_positive_big_int bi1 bi2 =
let len = num_digits_nat res 0 res_len in
let len2 = min res_len (2 * len) in
let succ_len2 = succ len2 in
- square_nat res2 0 len2 res 0 len;
+ ignore (square_nat res2 0 len2 res 0 len);
land_digit_nat nat 0 (nat_of_int !p) 0;
if is_zero_nat nat 0 len_bi2
then (blit_nat res 0 res2 0 len2;
set_to_zero_nat res2 0 len2)
else (set_to_zero_nat res 0 len;
- mult_nat res 0 succ_len2
- res2 0 len2 (bi1.abs_value) 0 bi1_len;
+ ignore (mult_nat res 0 succ_len2
+ res2 0 len2 (bi1.abs_value) 0 bi1_len);
set_to_zero_nat res2 0 len2);
p := !p lsr 1
done;
@@ -520,6 +520,7 @@ let base_power_big_int base n bi =
and len_bi = num_digits_big_int bi in
let new_len = len_bi + len_nat in
let res = make_nat new_len in
+ ignore
(if len_bi > len_nat
then mult_nat res 0 new_len
(bi.abs_value) 0 len_bi
@@ -553,7 +554,7 @@ let square_big_int bi =
let len_bi = num_digits_big_int bi in
let len_res = 2 * len_bi in
let res = make_nat len_res in
- square_nat res 0 len_res (bi.abs_value) 0 len_bi;
+ ignore (square_nat res 0 len_res (bi.abs_value) 0 len_bi);
{sign = 1; abs_value = res}
(* round off of the futur last digit (of the integer represented by the string
diff --git a/otherlibs/num/nat.ml b/otherlibs/num/nat.ml
index dcfb4c505..a77bc2072 100644
--- a/otherlibs/num/nat.ml
+++ b/otherlibs/num/nat.ml
@@ -229,7 +229,7 @@ let sqrt_nat rad off len =
div_nat next_cand 0 rad_len cand 0 cand_len;
(* next_cand (poids fort) <- next_cand (poids fort) + cand,
i.e. next_cand <- cand + rad / cand *)
- add_nat next_cand cand_len cand_rest cand 0 cand_len 0;
+ ignore (add_nat next_cand cand_len cand_rest cand 0 cand_len 0);
(* next_cand <- next_cand / 2 *)
shift_right_nat next_cand cand_len cand_rest a_1 0 1;
if lt_nat next_cand cand_len cand_rest cand 0 cand_len then
@@ -245,9 +245,9 @@ let power_base_max = make_nat 2;;
match length_of_digit with
| 64 ->
set_digit_nat power_base_max 0 (Int64.to_int 1000000000000000000L);
- mult_digit_nat power_base_max 0 2
- power_base_max 0 1 (nat_of_int 9) 0;
- ()
+ ignore
+ (mult_digit_nat power_base_max 0 2
+ power_base_max 0 1 (nat_of_int 9) 0)
| 32 -> set_digit_nat power_base_max 0 1000000000
| _ -> assert false
;;
@@ -327,9 +327,10 @@ let make_power_base base power_base =
and j = ref 0 in
set_digit_nat power_base 0 base;
while incr i; is_digit_zero power_base !i do
- mult_digit_nat power_base !i 2
- power_base (pred !i) 1
- power_base 0
+ ignore
+ (mult_digit_nat power_base !i 2
+ power_base (pred !i) 1
+ power_base 0)
done;
while !j <= !i && is_digit_int power_base !j do incr j done;
(!i - 2, !j)
@@ -373,21 +374,21 @@ let power_base_int base i =
let len = num_digits_nat res 0 newn in
let len2 = min n (2 * len) in
let succ_len2 = succ len2 in
- square_nat res2 0 len2 res 0 len;
+ ignore (square_nat res2 0 len2 res 0 len);
if n land !p > 0 then begin
set_to_zero_nat res 0 len;
- mult_digit_nat res 0 succ_len2
- res2 0 len2
- power_base pmax;
- ()
+ ignore
+ (mult_digit_nat res 0 succ_len2
+ res2 0 len2 power_base pmax)
end else
blit_nat res 0 res2 0 len2;
set_to_zero_nat res2 0 len2;
p := !p lsr 1
done;
if rem > 0 then begin
- mult_digit_nat res2 0 newn
- res 0 n power_base (pred rem);
+ ignore
+ (mult_digit_nat res2 0 newn
+ res 0 n power_base (pred rem));
res2
end else res
end else
@@ -547,9 +548,9 @@ let sys_nat_of_string base s off len =
for j = 1 to erase_len do
set_digit_nat nat1 j 0
done;
- mult_digit_nat nat1 0 !possible_len
- nat2 0 !current_len
- power_base (pred !digits_read);
+ ignore
+ (mult_digit_nat nat1 0 !possible_len
+ nat2 0 !current_len power_base (pred !digits_read));
blit_nat nat2 0 nat1 0 !possible_len;
current_len := num_digits_nat nat1 0 !possible_len;
possible_len := min !new_len (succ !current_len);
diff --git a/otherlibs/num/num.ml b/otherlibs/num/num.ml
index 3d53aefdf..ce0d83f52 100644
--- a/otherlibs/num/num.ml
+++ b/otherlibs/num/num.ml
@@ -32,11 +32,11 @@ let num_of_big_int bi =
else Big_int bi
let numerator_num = function
- Ratio r -> normalize_ratio r; num_of_big_int (numerator_ratio r)
+ Ratio r -> ignore (normalize_ratio r); num_of_big_int (numerator_ratio r)
| n -> n
let denominator_num = function
- Ratio r -> normalize_ratio r; num_of_big_int (denominator_ratio r)
+ Ratio r -> ignore (normalize_ratio r); num_of_big_int (denominator_ratio r)
| n -> Int 1
let normalize_num = function
@@ -50,7 +50,7 @@ let cautious_normalize_num_when_printing n =
if (!normalize_ratio_when_printing_flag) then (normalize_num n) else n
let num_of_ratio r =
- normalize_ratio r;
+ ignore (normalize_ratio r);
if not (is_integer_ratio r) then Ratio r
else if is_int_big_int (numerator_ratio r) then
Int (int_of_big_int (numerator_ratio r))
diff --git a/otherlibs/num/ratio.ml b/otherlibs/num/ratio.ml
index 3e86d84c1..3ee228a6a 100644
--- a/otherlibs/num/ratio.ml
+++ b/otherlibs/num/ratio.ml
@@ -143,13 +143,13 @@ let minus_ratio r =
normalized = r.normalized }
let add_int_ratio i r =
- cautious_normalize_ratio r;
+ ignore (cautious_normalize_ratio r);
{ numerator = add_big_int (mult_int_big_int i r.denominator) r.numerator;
denominator = r.denominator;
normalized = r.normalized }
let add_big_int_ratio bi r =
- cautious_normalize_ratio r;
+ ignore (cautious_normalize_ratio r);
{ numerator = add_big_int (mult_big_int bi r.denominator) r.numerator ;
denominator = r.denominator;
normalized = r.normalized }
@@ -213,7 +213,7 @@ let mult_big_int_ratio bi r =
normalized = false }
let square_ratio r =
- cautious_normalize_ratio r;
+ ignore (cautious_normalize_ratio r);
{ numerator = square_big_int r.numerator;
denominator = square_big_int r.denominator;
normalized = r.normalized }
@@ -239,13 +239,13 @@ let integer_ratio r =
(* Floor of a rational number *)
(* Always less or equal to r *)
let floor_ratio r =
- verify_null_denominator r;
+ ignore (verify_null_denominator r);
div_big_int (r.numerator) r.denominator
(* Round of a rational number *)
(* Odd function, 1/2 -> 1 *)
let round_ratio r =
- verify_null_denominator r;
+ ignore (verify_null_denominator r);
let abs_num = abs_big_int r.numerator in
let bi = div_big_int abs_num r.denominator in
report_sign_ratio r
@@ -266,8 +266,8 @@ let ceiling_ratio r =
(* Comparison operators on rational numbers *)
let eq_ratio r1 r2 =
- normalize_ratio r1;
- normalize_ratio r2;
+ ignore (normalize_ratio r1);
+ ignore (normalize_ratio r2);
eq_big_int (r1.numerator) r2.numerator &&
eq_big_int (r1.denominator) r2.denominator
@@ -306,7 +306,7 @@ let eq_big_int_ratio bi r =
(is_integer_ratio r) && eq_big_int bi r.numerator
let compare_big_int_ratio bi r =
- normalize_ratio r;
+ ignore (normalize_ratio r);
if (verify_null_denominator r)
then -(sign_big_int r.numerator)
else compare_big_int (mult_big_int bi r.denominator) r.numerator
@@ -336,7 +336,7 @@ let ratio_of_nat nat =
normalized = true }
and nat_of_ratio r =
- normalize_ratio r;
+ ignore (normalize_ratio r);
if not (is_integer_ratio r) then
failwith "nat_of_ratio"
else if sign_big_int r.numerator > -1 then
@@ -348,20 +348,20 @@ let ratio_of_big_int bi =
{ numerator = bi; denominator = unit_big_int; normalized = true }
and big_int_of_ratio r =
- normalize_ratio r;
+ ignore (normalize_ratio r);
if is_integer_ratio r
then r.numerator
else failwith "big_int_of_ratio"
let div_int_ratio i r =
- verify_null_denominator r;
+ ignore (verify_null_denominator r);
mult_int_ratio i (inverse_ratio r)
let div_ratio_int r i =
div_ratio r (ratio_of_int i)
let div_big_int_ratio bi r =
- verify_null_denominator r;
+ ignore (verify_null_denominator r);
mult_big_int_ratio bi (inverse_ratio r)
let div_ratio_big_int r bi =
@@ -392,7 +392,7 @@ let rec only_zeros s i lim =
(* Nota : for a big_int we have msd_ratio = nums_digits_big_int -1 *)
let msd_ratio r =
- cautious_normalize_ratio r;
+ ignore (cautious_normalize_ratio r);
if null_denominator r then failwith_zero "msd_ratio"
else if sign_big_int r.numerator == 0 then 0
else begin
@@ -542,7 +542,7 @@ let float_of_rational_string r =
(* Coercions with type string *)
let string_of_ratio r =
- cautious_normalize_ratio_when_printing r;
+ ignore (cautious_normalize_ratio_when_printing r);
if !approx_printing_flag
then float_of_rational_string r
else string_of_big_int r.numerator ^ "/" ^ string_of_big_int r.denominator