Jon Hough wrote:
>  It seems J did not want to handle
>     q: 9999999999999999
>  2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5  

That's not a limit on q: or p: specifically; numeric literals greater than
2^32 (or 2^64, if you're on a 64-bit machine) are interpreted as IEEE
double-precision floating-point values, which can hold small numbers to
great precision, or large numbers to small precision, but not large
numbers to large precision.

More specifically, at some point, integers with distinct string
representations are mapped to the same floating-point value.  I can't
reproduce your exact problem on my 64-bit machine (which produces 3 3 11
17 73 101 137 5882353, as you'd expect), but I bet if you just typed bare
9999999999999999 into the session manager, you'd see something like 1e16
(note the scientific notation, indicating the value is interally
represented with a floating point number), whose prime-decomposition is,
indeed, */ 2 5^16, as q: reports.

In order to represent 9999999999999999 exactly on your 32-bit machine, you
need to use extended precision notation:  9999999999999999x .  Not that
x:9999999999999999 will NOT work, for the very same reason
q:9999999999999999 doesn't work.

-Dan
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to