Indeed, thanks for the clarification... I got confused when negating OCaml's '=' operator (a dangerous side-effect of writing too much C!), hence the erroneous '!=' instead of <>. Regarding, 'nan <> nan', I had convinced myself that all comparisons with NaN returned false. I wonder why <>/!= got a special treatment since e.g. 'nan < 1.' and '1. < nan' both return false. On Thu, Jul 23, 2015 at 5:14 PM, Jacques-Henri Jourdan < jacques-henri.jourdan@inria.fr> wrote: > > > Le 23/07/2015 13:34, Boris Yakobowski a écrit : > > Hi Sébastien, > > I feel obligated to point out that the _semantics_ of floating-point > comparison is a bit tricky. IEEE 754 mandates that NaN == NaN should return > false (as well as NaN != NaN), breaking all algebraic laws known to mankind > :-). > > > Beaware: > > Nan <> Nan -> true > Nan = Nan -> false > Nan != Nan and Nan == Nan : depends on the memory layout. > > OCaml's operators '=' and '!=' follow this convention, but 'compare > nan nan' returns 0, which is usually the desired behavior. However, > 'compare 0. (-0.)' also returns 0, while you might want to distinguish > those two values. > > HTH, > > On Thu, Jul 23, 2015 at 10:35 AM, Sébastien Hinderer < > Sebastien.Hinderer@inria.fr> wrote: > >> Dear all, >> >> What's the most efficient way to compare floats, please? >> Is it the polymorphic compare function, or is there a more specialized >> version of it? >> >> I saw Float.compare mentionned on the web but that does not seem to exist >> any longer? >> >> Thanks, >> >> Sébastien. >> >> -- >> Caml-list mailing list. Subscription management and archives: >> https://sympa.inria.fr/sympa/arc/caml-list >> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners >> Bug reports: http://caml.inria.fr/bin/caml-bugs >> > > > > -- > Boris > > > -- Boris