aboutsummaryrefslogtreecommitdiff
path: root/kernel/float64.mli
diff options
context:
space:
mode:
authorPierre Roux2019-04-04 00:14:47 +0200
committerPierre Roux2019-11-01 10:21:03 +0100
commitdca0135a263717b3a1a1d7c4f054f039dc08109e (patch)
tree3f2ab5ea79e084a9c72e1376d5399ad4a62cb771 /kernel/float64.mli
parent3e0db1b645a8653c62b8b5a4978e6d8fbbe9a9cc (diff)
Make primitive float work on x86_32
Flag -fexcess-precision=standard is not enough on x86_32 where -msse2 -mfpmath=sse is required (-msse is not enough) to avoid double rounding issues in the VM. Most floating-point operation are now implemented in C because OCaml is suffering double rounding issues on x86_32 with 80 bits extended precision registers used for floating-point values, causing double rounding making floating-point arithmetic incorrect with respect to its specification. Add a runtime test for double roundings.
Diffstat (limited to 'kernel/float64.mli')
-rw-r--r--kernel/float64.mli7
1 files changed, 0 insertions, 7 deletions
diff --git a/kernel/float64.mli b/kernel/float64.mli
index acc3a556ab..78dc1a7bd7 100644
--- a/kernel/float64.mli
+++ b/kernel/float64.mli
@@ -46,19 +46,14 @@ val classify : t -> float_class
[@@ocaml.inline always]
val mul : t -> t -> t
-[@@ocaml.inline always]
val add : t -> t -> t
-[@@ocaml.inline always]
val sub : t -> t -> t
-[@@ocaml.inline always]
val div : t -> t -> t
-[@@ocaml.inline always]
val sqrt : t -> t
-[@@ocaml.inline always]
(** Link with integers *)
val of_int63 : Uint63.t -> t
@@ -77,10 +72,8 @@ val ldshiftexp : t -> Uint63.t -> t
[@@ocaml.inline always]
val next_up : t -> t
-[@@ocaml.inline always]
val next_down : t -> t
-[@@ocaml.inline always]
(** Return true if two floats are equal.
* All NaN values are considered equal. *)