REAL 64 (issues): Difference between revisions

From EiffelStudio: an EiffelSoftware project
Jump to navigation Jump to search
Juliant (talk | contribs)
No edit summary
Juliant (talk | contribs)
No edit summary
Line 1: Line 1:
[[Category:ELKS]]
[[Category:ELKS]]
This page describes issues with the current implementation of REAL_64 in comparison to the [[REAL_64 (interface)|interace description]].
This page describes issues with the current implementation of REAL_64 in comparison to the [[REAL_64 (interface)|interace description]] or desired output when nothing is specified.


===is_equal and NaN===
===is_equal and NaN===
Line 7: Line 7:


At the moment 'is_equal' for reals is optimized in the compiler and is replaced by '=' and thus the postcondition of 'twin' is violated.
At the moment 'is_equal' for reals is optimized in the compiler and is replaced by '=' and thus the postcondition of 'twin' is violated.
===floor, ceiling, rounded and truncated_to_integer===
Currently when doing a 'floor', 'ceiling', 'rounded' or 'truncate_to_integer' with a number which is too large (e.g. 2^31) the result is {INTEGER}.min_value.
The change in the sign is a not expected behaviour and violates (informal) contracts.

Revision as of 18:42, 17 November 2006

This page describes issues with the current implementation of REAL_64 in comparison to the interace description or desired output when nothing is specified.

is_equal and NaN

The floating point standard says that 'NaN = NaN' is false. But in order to uphold the postcondition of 'NaN.twin' which says that 'Result.is_equal (Current)' the comparision with 'is_eqaul' should yield true.

At the moment 'is_equal' for reals is optimized in the compiler and is replaced by '=' and thus the postcondition of 'twin' is violated.

floor, ceiling, rounded and truncated_to_integer

Currently when doing a 'floor', 'ceiling', 'rounded' or 'truncate_to_integer' with a number which is too large (e.g. 2^31) the result is {INTEGER}.min_value.

The change in the sign is a not expected behaviour and violates (informal) contracts.