aboutsummaryrefslogtreecommitdiff
path: root/kernel/float64.ml
diff options
context:
space:
mode:
authorPierre Roux2018-08-28 18:56:07 +0200
committerPierre Roux2019-11-01 10:20:35 +0100
commitd18b928154a48ff8d90aaff69eca7d6eb3dfa0ab (patch)
tree9cc9b39b16849ed839f4adf7b19e3d3291f7dd98 /kernel/float64.ml
parent79605dabb10e889ae998bf72c8483f095277e693 (diff)
Implement classify on primitive float
Diffstat (limited to 'kernel/float64.ml')
-rw-r--r--kernel/float64.ml11
1 files changed, 11 insertions, 0 deletions
diff --git a/kernel/float64.ml b/kernel/float64.ml
index eebc8f35ef..7b54fd0c4b 100644
--- a/kernel/float64.ml
+++ b/kernel/float64.ml
@@ -38,6 +38,17 @@ let compare x y =
)
)
+type float_class =
+ | PNormal | NNormal | PSubn | NSubn | PZero | NZero | PInf | NInf | NaN
+
+let classify x =
+ match classify_float x with
+ | FP_normal -> if 0. < x then PNormal else NNormal
+ | FP_subnormal -> if 0. < x then PSubn else NSubn
+ | FP_zero -> if 0. < 1. /. x then PZero else NZero
+ | FP_infinite -> if 0. < x then PInf else NInf
+ | FP_nan -> NaN
+
let mul = ( *. )
let add = ( +. )
let sub = ( -. )