Square roots cannot (in the typical case) be represented using extended precision numbers (which are integers).
a=:1234567890101020405060708090x a^1r2 3.51364e13 datatype a^1r2 floating This floating representation represents numbers using a representation of sign * 1+fraction * 2^exponent This all fits into a 64 bit representation with one bit for sign (choosing from 1 or _1), 52 bits for the fraction, and the remaining 11 bits for the exponent (with a few exponent values reserved for handling infinities and "NaN" numbers). (All arranged so that the same less than / greater than logic used for integers will also work for floating point numbers.) But the (a) value is not a square number: __ q: a 2 5 211 461 23339 54381270850093261 1 1 1 1 1 1 If it were square, the values in the second row of that result would all be even numbers. So that means that a precise representation of the square root would take an infinite number of bits in the floating point fraction, which is more than the 52 bits which get used. Anyways, if you want a better approximation of the square root, you'd probably use the floating point value as a starting point and then use some algorithm to improve that estimate until it seems good enough. -- Raul FYI, -- Raul On Thu, Nov 1, 2018 at 3:13 PM Skip Cave <[email protected]> wrote: > > a=:1234567890101020405060708090x > > > a=2^~a^1r2 > > 1 > > a=2^~%:a > > 1 > > a-:2^~a^1r2 > > 1 > > a-:2^~%:a > > 1 > > > NB. All looking good. However: > > > x:2^~a^1r2 > > 1234567890101024064259751936 > > a > > 1234567890101020405060708090 > > > NB. Clearly not equal. > > > x:2^~%:a > > 1234567890101020490846961664 > > a > > 1234567890101020405060708090 > > > NB. Also clearly not equal, and different from the first one! > > > What's going on! > > > Skip > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
