Why not just use another number? Many more bits that way... Thanks,
-- Raul On Wed, Sep 20, 2017 at 5:47 AM, Erling Hellenäs <[email protected]> wrote: > Hi all ! > > "A NaN may carry a payload that is intended for diagnostic information > indicating the source of the NaN" > > https://en.wikipedia.org/wiki/IEEE_754#Alternate_exception_handling > > Maybe this is a way to represent missing data? > > Cheers, > > Erling > > > > Den 2017-09-20 kl. 11:21, skrev Erling Hellenäs: >> >> Hi all! >> >> This is how J handles overflow and underflow. This is exacly how the >> platform handles it. JWithATwist gives exactly the same results. As we can >> see overflow results in infinity, underflow results in a zero result. >> >> 0.1234567891234567e_15 * 0.1234567891234567e_307 >> 0 >> 0.1234567891234567e_14 * 0.1234567891234567e_307 >> 1.4822e_323 >> 0.123456789 * 0.123456789 >> 0.0152416 >> 0.1234567891234567e3 * 0.1234567891234567e307 >> 1.52416e308 >> 0.1234567891234567e4 * 0.1234567891234567e307 >> _ >> >> We can see that overflow and underflow are treated differently. >> >> Before we get a zero result in the underflow case the fraction bits are >> moved to the right and we lose precision. >> >> As we can understand this is a problematic behavior. Zero is no fault >> indication. It is a number with zero precision. If we multiply it with some >> big number and then add or subtract something we get a non-zero, but totally >> random result. Lost precision is also a problem. In engineering we rely on >> the precision of the result. >> >> It would be preferable to get a NaN or optionally an underflow error in >> this case? Instead of even losing precision? >> >> The overflow case seems less of a problem. As far as I understand further >> calculation with the infinity value will never result in a seemingly >> legitimate value. The positive infinity, negative infinity or NaN that will >> be the result of the calculations can be used as fault indications. >> >> As I see it we would like to optionally get an overflow error in this >> case. >> >> A big number is not infinity, and as I see it we would prefer a NaN result >> to an infinity result. We can get infinity when we should, for example when >> we divide by exactly 0? >> >> We would like the positive and negative infinity to have their >> mathematical meaning? >> >> We have signed zero. +0 has a different representation from -0. That's >> peculiar. However in comparisons they happily are considered equal. >> >> I can't find any way to make these different representations cause any >> trouble. >> >> However, in J 0 % 0 is now considered to be 0. The mathematically correct >> result in undefined. Windows gives NaN. >> >> J: >> >> 3!:0 (0 + 0.5 - 0.5) >> 8 >> (0 + 0.5 - 0.5) % (0 + 0.5 - 0.5) >> 0 >> >> JWithATwist, Windows default: >> >> >> { ( 0 + 0.5 - 0.5 ) % ( 0 + 0.5 - 0.5 ) } >> NaN >> >> >> I think this should be changed. We should get NaN. Optionally we should >> get a NaN error. >> >> >> Infinity divided with negative zero gives positive infinity as default on >> the Windows platform and in J. This seems reasonable as there is no means to >> have the +0 and -0 represent function results approaching but not reaching >> zero from both sides anyway. Otherwise, this might have been meaningful >> functionality. This would require THREE different zero representations! >> >> >> It would probably be good to be able to represent missing data. R is an >> example of a language which represents missing data. >> >> >> We can still lose precision by addition and subtraction of large positive >> or negative numbers. >> >> >> I did not investigate how much of my proposed modifications the standards >> would allow. >> >> >> Cheers, >> >> Erling >> >> ---------------------------------------------------------------------- >> 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
