Well, since it's encoded as an integer (which I would have noticed if I had read Bob Therriault's original post more closely), and not [like I was thinking] a float, I agree that dropping the .3 is better than adding a 1.
That said, I guess we also should not object too loudly if 9999999999999999.3 were instead encoded the same as 9999999999999999+0.3 gets encoded. Thanks, -- Raul On Wed, Aug 9, 2017 at 3:25 PM, Henry Rich <[email protected]> wrote: > Surely integer 999...9 is a better value than 1000...0 . > > Henry Rich > > On Aug 9, 2017 18:33, "Raul Miller" <[email protected]> wrote: > >> It's not a bug, it's an artifact of the 64 bit floating point standard. >> >> 2 ^.9999999999999999 >> 53.1508 >> >> https://en.wikipedia.org/wiki/IEEE_754#Basic_and_interchange_formats >> >> The binary64 format has 53 binary digits or 15.95 decimal digits. This >> means ".16#'9' cannot be represented exactly using this format. >> >> And, we do not use exact representation of large numbers by default >> because that's too slow for large datasets. Put differently, if you >> want exact representation and are willing to take the performance hit, >> you should specify that. For example: ".'x',~16#'9' or >> ".'3r10+','x',~16#'9' >> >> Thanks, >> >> -- >> Raul >> >> On Wed, Aug 9, 2017 at 12:05 PM, Henry Rich <[email protected]> wrote: >> > This is a bug, since 999...9.3 should become 999...9 rather than >> 100...0. >> > I'm away from home now, but I think what's happening is this: >> > >> > 999...9 is converted to integer >> > >> > . is encountered and turns it to float >> > >> > It's rounded to the nearest float which is 100...0 >> > >> > As a final step the JE checks to see if the value is exactly integral, >> > which it is, and it is converted back to integer. >> > >> > If you add this to Interpreter/Bugs I'll fix it when i get back. >> > >> > Henry Rich >> > >> > On Aug 9, 2017 16:16, "bill lam" <[email protected]> wrote: >> > >> > I think this is the difference between 32 and 64-bit, >> > >> > 9!:14'' >> > j602/2008-03-03/16:45 >> > 3!:0[ 9999999999999999.3 >> > 4 >> > >> > In J32 >> > >> > a.i. 2 fc 9999999999999999.3 >> > 0 128 224 55 121 195 65 67 >> > a.i. 2 fc 1e16 >> > 0 128 224 55 121 195 65 67 >> > >> > the number has the same bit pattern as 1e16 (an integer) >> > which can be represented as a 64-bit integer. I guess >> > J64 is correct since 9999999999999999.3 and 1e16 is the >> > same number in ieee fp and J prefers integer to floats, >> > eg >> > 3!:0 [ 2.0 >> > 4 >> > >> > Ср, 09 авг 2017, robert therriault написал(а): >> >> Hi Pascal, >> >> >> >> I see the same behaviour in j806 as j805. Do you see something >> different? >> >> >> >> JVERSION >> >> Engine: j806/j64avx/darwin >> >> Beta-4: commercial/2017-06-27T12:55:06 >> >> Library: 8.06.03 >> >> Qt IDE: 1.5.3/5.6.2 >> >> Platform: Darwin 64 >> >> Installer: J806 install >> >> InstallPath: /users/bobtherriault/j64-806 >> >> Contact: www.jsoftware.com >> >> (; datatype) 999999999999999.3 >> >> ┌────┬────────┐ >> >> │1e15│floating│ >> >> └────┴────────┘ >> >> (; datatype) 9999999999999999.3 >> >> ┌─────────────────┬───────┐ >> >> │10000000000000000│integer│ >> >> └─────────────────┴───────┘ >> >> (; datatype) 99999999999999999.3 >> >> ┌──────────────────┬───────┐ >> >> │100000000000000000│integer│ >> >> └──────────────────┴───────┘ >> >> (; datatype) 999999999999999999.3 >> >> ┌───────────────────┬───────┐ >> >> │1000000000000000000│integer│ >> >> └───────────────────┴───────┘ >> >> (; datatype) 9999999999999999999.3 >> >> ┌────┬────────┐ >> >> │1e19│floating│ >> >> └────┴────────┘ >> >> >> >> Cheers, bob >> >> >> >> > On Aug 9, 2017, at 7:54 AM, 'Pascal Jasmin' via Programming < >> > [email protected]> wrote: >> >> > >> >> > in j806, 9999999999999999.310000000000000000 probably the j805 >> > behaviour is preferred. If only for consistency. But there may be a >> good >> > reason for change. >> >> > >> >> > From: robert therriault <[email protected]> >> >> > To: Programming forum <[email protected]> >> >> > Sent: Wednesday, August 9, 2017 10:40 AM >> >> > Subject: [Jprogramming] Integer-floating type change for large numbers >> > in j805 and j806 >> >> > >> >> > I am guessing that the following has something to do with precision of >> > large numbers in j805 and is also true for j806. >> >> > >> >> > (; datatype) 999999999999999.3 >> >> > ┌────┬────────┐ >> >> > │1e15│floating│ >> >> > └────┴────────┘ >> >> > (; datatype) 9999999999999999.3 >> >> > ┌─────────────────┬───────┐ >> >> > │10000000000000000│integer│ >> >> > └─────────────────┴───────┘ >> >> > (; datatype) 99999999999999999.3 >> >> > ┌──────────────────┬───────┐ >> >> > │100000000000000000│integer│ >> >> > └──────────────────┴───────┘ >> >> > (; datatype) 999999999999999999.3 >> >> > ┌───────────────────┬───────┐ >> >> > │1000000000000000000│integer│ >> >> > └───────────────────┴───────┘ >> >> > (; datatype) 9999999999999999999.3 >> >> > ┌────┬────────┐ >> >> > │1e19│floating│ >> >> > └────┴────────┘ >> >> > JVERSION >> >> > Engine: j805/j64/darwin >> >> > Release: commercial/2016-12-11T08:17:56 >> >> > Library: 8.05.14 >> >> > Qt IDE: 1.5.4/5.6.2 >> >> > Platform: Darwin 64 >> >> > Installer: J805 install >> >> > InstallPath: /applications/j64-805 >> >> > Contact: www.jsoftware.com >> >> > >> >> > Further investigation shows me it was not this way with the 32 bit >> > version of j701, so it may be an artifact of moving to 64 bit? >> >> > >> >> > (; datatype) 999999999999999.3 >> >> > ┌────┬────────┐ >> >> > │1e15│floating│ >> >> > └────┴────────┘ >> >> > (; datatype) 9999999999999999.3 >> >> > ┌────┬────────┐ >> >> > │1e16│floating│ >> >> > └────┴────────┘ >> >> > (; datatype) 999999999999999999.3 >> >> > ┌────┬────────┐ >> >> > │1e18│floating│ >> >> > └────┴────────┘ >> >> > (; datatype) 9999999999999999999.3 >> >> > ┌────┬────────┐ >> >> > │1e19│floating│ >> >> > └────┴────────┘ >> >> > JVERSION >> >> > Engine: j701/2011-01-10/11:25 >> >> > Library: 7.01.088 >> >> > Platform: Darwin 32 >> >> > Installer: j701a_mac_intel.dmg >> >> > InstallPath: /Applications/j701 >> >> > >> >> > Cheers, bob >> >> > >> >> > >> >> > >> >> > ------------------------------------------------------------ >> ---------- >> >> > For information about J forums see http://www.jsoftware.com/ >> forums.htm >> >> > >> >> > >> >> > ------------------------------------------------------------ >> ---------- >> >> > For information about J forums see http://www.jsoftware.com/ >> forums.htm >> >> >> >> ---------------------------------------------------------------------- >> >> For information about J forums see http://www.jsoftware.com/forums.htm >> > >> > -- >> > regards, >> > ==================================================== >> > GPG key 1024D/4434BAB3 2008-08-24 >> > gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3 >> > gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3 >> > ---------------------------------------------------------------------- >> > For information about J forums see http://www.jsoftware.com/forums.htm >> > ---------------------------------------------------------------------- >> > For information about J forums see http://www.jsoftware.com/forums.htm >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
