Mark S. Miller (2013-07-10T01:09:33.000Z)
FWIW, we include 2**53 as in the "contiguous range of exactly representable
natural numbers".

https://code.google.com/p/google-caja/source/browse/trunk/src/com/google/caja/ses/startSES.js#492


On Tue, Jul 9, 2013 at 5:50 PM, Jorge Chamorro <jorge at jorgechamorro.com>wrote:

>
> On 10/07/2013, at 02:34, Allen Wirfs-Brock wrote:
>
> >
> > On Jul 9, 2013, at 4:14 PM, Brendan Eich wrote:
> >
> >> Jeff Walden wrote:
> >>> ...
> >>
> >>>> Number.MAX_INTEGER == 2^53 - 1
> >>>> The maximum integer value that can be stored in a number without
> losing precision.
> >>>> (OK, so technically 2^53 can be stored, but that's an anomaly.)
> >>>
> >>> Why discount the anomaly?  Looking at SpiderMonkey's source code, we
> have<http://mxr.mozilla.org/mozilla-central/search?string=%3C%3C%2053>
>  as vaguely representative of most of the places using a number like this,
> I think -- could be others not using the "<<  53" string, but that's
> probably a fair sample.  Ignore the RNG_DSCALE one, that's a red herring.
>  But all the others use 2**53 as the pertinent value.  (The
> dom/bindings/PrimitiveConversions.h hits using 2**53 -1 is a bug, I'm told,
> due to recent spec changes.)  So if this constant is to exist, and I think
> it's a fair constant to add, why would it not be 2**53?
> >>
> >> I think you have a point! From
> http://en.wikipedia.org/wiki/Double-precision_floating-point_format,
> >>
> >> "Between 2^52 =4,503,599,627,370,496 and 2^53 =9,007,199,254,740,992
> the representable numbers are exactly the integers."
> >>
> >
> > Isn't the anomaly (and the issue) that 2^53 (9,007,199,254,740,992) is
> both the upper-end of the range of integers that can be exactly represented
> in IEEE float64, it is is also the representation of the smallest positive
> integer (2^53+1) that cannot be exactly represented.
> >
> > In other words, if you see the IEEE float 64 encoding of
> 9,007,199,254,740,992 you don't know if it is an exact representation of
> 2^53 or an approximate representation of 2^53+1.
> >
> > 2^53-1 is the max integer value whose encoding is not also an
> approximation of some other integer value.
>
> Or, in other words, the IEEE-754 doubles 9,007,199,254,740,992 and
> 9,007,199,254,740,993 are equal:
>
> 9007199254740992 === 9007199254740993
> true
> --
> ( Jorge )();
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>



-- 
    Cheers,
    --MarkM
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20130709/92a4e87d/attachment-0001.html>
domenic at domenicdenicola.com (2013-07-16T16:37:01.640Z)
FWIW, we include 2^53 as in the "contiguous range of exactly representable
natural numbers".

https://code.google.com/p/google-caja/source/browse/trunk/src/com/google/caja/ses/startSES.js#492