Consider the expression foo=: 3 : 'assert. *./#:<:2^y' The smallest argument value which triggers the assertion failure is 44. This value is the same on both 32bit J (windows xp) and 64bit J (Ubuntu 7.04). (Aside: the expression #:<:2^N is the binary representation of _1 + 2^N, which, from the point of view of the language, must always be a sequence of 1's)
I am puzzled by this result because in J-64 integers are indeed represented with 8bytes as can be demonstrated by: abcd =. 1000?1000 7!:5<'abcd' returns 4096 -- with 32bit J 8192 -- with 64 bit J It is the difference in behaviour of the binary primitives between 32bit and 64bit that led me to believe that domain of precise arithmetic with integers would be greater in J64 than in J32. For example: 1 (17 b.)2^40 throws a domain error on 32bit J but returns 0 on 64bit J. Can someone explain? Regards David ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
