diff options
author | Sébastien Dailly <sebastien@chimrod.com> | 2017-11-07 15:44:40 +0100 |
---|---|---|
committer | Sébastien Dailly <sebastien@chimrod.com> | 2017-11-08 14:05:56 +0100 |
commit | 6f6ff0e39eb6d771ef5336394079646ccdc18bd5 (patch) | |
tree | f06907f88972e8e87c5924de8eb225362a4a775b /tools.ml | |
parent | 50c16c8fc79d349f9db9d7975d1ae4e57050b648 (diff) |
Use Zarith instead of Num for computing numbers
Diffstat (limited to 'tools.ml')
-rwxr-xr-x | tools.ml | 46 |
1 files changed, 0 insertions, 46 deletions
@@ -69,52 +69,6 @@ module String = struct end -module Num = struct - - include Num - - let of_float_string a = begin - try - let ipart_s,fpart_s = String.split a ~by:'.' in - let ipart = if ipart_s = "" then Num.Int 0 else Num.num_of_string ipart_s in - let fpart = - if fpart_s = "" then Num.Int 0 - else - let fpart = Num.num_of_string fpart_s in - let num10 = Num.num_of_int 10 in - let frac = Num.power_num num10 (Num.num_of_int (String.length fpart_s)) in - Num.div_num fpart frac - in - Num.add_num ipart fpart - with Not_found -> Num.num_of_string a - end - - let of_float f = begin - match classify_float f with - | FP_normal - | FP_subnormal -> - let x,e = frexp f in - let n,e = - Big_int.big_int_of_int64 (Int64.of_float (ldexp x 52)), - (e-52) - in - if e >= 0 then - Big_int (Big_int.shift_left_big_int n e) - else - Num.div_num - (Big_int n) - (Big_int Big_int.(shift_left_big_int unit_big_int ~-e)) - | FP_zero -> Num.num_of_int 0 - | FP_nan -> Num.div_num (Num.num_of_int 0) (Num.num_of_int 0) - | FP_infinite -> - if f >= 0. then - Num.div_num (Num.num_of_int 1) (Num.num_of_int 0) - else - Num.div_num (Num.num_of_int (-1)) (Num.num_of_int 0) - end - -end - module List = struct (** fold_left over only the first element *) |