caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: "Soegtrop, Michael" <michael.soegtrop@intel.com>
To: "Daniel Bünzli" <daniel.buenzli@erratique.ch>,
	"Viet Le" <vietlq85@gmail.com>,
	"caml-list@inria.fr" <caml-list@inria.fr>
Subject: RE: [Caml-list] Float precision in OCaml
Date: Tue, 1 Aug 2017 13:57:03 +0000	[thread overview]
Message-ID: <0F7D3B1B3C4B894D824F5B822E3E5A175B282955@IRSMSX102.ger.corp.intel.com> (raw)
In-Reply-To: <etPan.59807016.3723f31.123@erratique.ch>

Dear Daniel,

> 1. The latest RFC recommends [1] to support the range of IEEE 754 double
> precision numbers (those are OCaml's float) in JSON numbers. However since
> you are converting your floating point representation from binary to a decimal
> one you can't guarantee to round trip your floats with a JSON number.

I don't agree with this. It is possible to have a decimal representation of double precision numbers, which guarantees identity (maybe up to NaN and Inf variants) when serialized and desrialized. The point is that the example

4.94065645841e-324

Is probably a correctly rounded decimal representation of a precise double precision floating point number. There has been a lengthy discussion on the Maxima list on what floating point numbers mean and the final consensus there was that each floating point number is precisely an integer times a power of 2, even a denormalized one. Just that you can't convert decimal presentations exactly to floating point numbers doesn't mean that there is something like an imprecise floating point number, there are just imprecise representations of decimals numbers in floating point numbers.

Said that, one can define a mapping from floating point numbers to usual decimal string representations and back such that each floating point number results in a unique string. It is just quite tricky to get it right without extended precision arithmetic, though.

As far as I know the Lisp standard requires that certain floating point formats have this property (I need to check). One might be able to learn from them how to do this properly.

Best regards,

Michael
Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Christin Eisenschmid, Christian Lamprechter
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

  parent reply	other threads:[~2017-08-01 13:57 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-01 10:47 Viet Le
2017-08-01 11:18 ` Nicolás Ojeda Bär
2017-08-01 11:25   ` Frédéric Bour
2017-08-01 11:45     ` Viet Le
2017-08-01 11:40   ` François Bobot
2017-08-01 11:42   ` Viet Le
2017-08-01 11:48     ` François Bobot
2017-08-01 12:12 ` Daniel Bünzli
2017-08-01 12:56   ` Viet Le
     [not found]   ` <etPan.59807b8a.db32dee.123@AirmailxGenerated.am>
2017-08-01 13:17     ` Daniel Bünzli
2017-08-01 13:57   ` Soegtrop, Michael [this message]
2017-08-01 14:07     ` Soegtrop, Michael
2017-08-01 15:48     ` Peter Thiemann
2017-08-01 17:12       ` Soegtrop, Michael
2017-08-02  7:41         ` Peter Thiemann
     [not found]   ` <etPan.5980c173.1234cb4.123@AirmailxGenerated.am>
2017-08-01 18:05     ` Daniel Bünzli
2017-08-02  5:46       ` Viet Le
2017-08-02  8:22       ` Soegtrop, Michael

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0F7D3B1B3C4B894D824F5B822E3E5A175B282955@IRSMSX102.ger.corp.intel.com \
    --to=michael.soegtrop@intel.com \
    --cc=caml-list@inria.fr \
    --cc=daniel.buenzli@erratique.ch \
    --cc=vietlq85@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).