Difference between revisions of "Talk:Not a Number"

 
(One possibility for working with NaN: new section)
Line 1: Line 1:
 
'''--[[User:Manus|manus]] 19:37, 8 May 2007 (CEST)''': Have a look at [[Real_numbers| Real Numbers]] page where we already started a similar discussion but currently only for the specification of REAL_64, not its usage.
 
'''--[[User:Manus|manus]] 19:37, 8 May 2007 (CEST)''': Have a look at [[Real_numbers| Real Numbers]] page where we already started a similar discussion but currently only for the specification of REAL_64, not its usage.
 +
 +
== One possibility for working with NaN ==
 +
 +
I was working on a project to represent complex numbers and used the following `is_equal' to accomodate the use of NaNs:
 +
 +
 +
is_equal (other: like Current): BOOLEAN
 +
-- Is `other' attached to an object considered
 +
-- equal to current object?
 +
-- If current object is not a number (NaN) and
 +
-- `other' is as well `True' will be returned.
 +
do
 +
if is_nan then
 +
if real /~ real and then imaginary ~ imaginary then
 +
Result := real /~ other.real and then imaginary ~ other.imaginary
 +
elseif real ~ real and then imaginary /~ imaginary then
 +
Result := real ~ other.real and then imaginary /~ other.imaginary
 +
elseif real /~ real and then imaginary /~ imaginary then
 +
Result := real /~ other.real and then imaginary /~ other.imaginary
 +
end
 +
else
 +
Result := real ~ other.real and then imaginary ~ other.imaginary
 +
end
 +
end

Revision as of 19:18, 19 February 2010

--manus 19:37, 8 May 2007 (CEST): Have a look at Real Numbers page where we already started a similar discussion but currently only for the specification of REAL_64, not its usage.

One possibility for working with NaN

I was working on a project to represent complex numbers and used the following `is_equal' to accomodate the use of NaNs:


is_equal (other: like Current): BOOLEAN -- Is `other' attached to an object considered -- equal to current object? -- If current object is not a number (NaN) and -- `other' is as well `True' will be returned. do if is_nan then if real /~ real and then imaginary ~ imaginary then Result := real /~ other.real and then imaginary ~ other.imaginary elseif real ~ real and then imaginary /~ imaginary then Result := real ~ other.real and then imaginary /~ other.imaginary elseif real /~ real and then imaginary /~ imaginary then Result := real /~ other.real and then imaginary /~ other.imaginary end else Result := real ~ other.real and then imaginary ~ other.imaginary end end