Difference between revisions of "Talk:Ieee arithmetic"
m (Added open questions on equality and ordering) |
|||
Line 9: | Line 9: | ||
Does it affect the benchmarks? | Does it affect the benchmarks? | ||
:'''--[[User:Manus|manus]] 17:59, 3 February 2010 (UTC)''' Actually it does not on Windows for sure, I've verified that it was inlined. But you are right that those could be simply defined as macros. | :'''--[[User:Manus|manus]] 17:59, 3 February 2010 (UTC)''' Actually it does not on Windows for sure, I've verified that it was inlined. But you are right that those could be simply defined as macros. | ||
+ | ::'''--[[User:Manus|manus]] 20:25, 3 February 2010 (UTC)''' I've done again some of the benchmarks and on windows at least, some of them are slower when I use a macro. I'm no sure why I haven't looked at the generated assembly code. | ||
'''--[[User:Colin-adams|Colin-adams]] 14:48, 3 February 2010 (UTC)''' | '''--[[User:Colin-adams|Colin-adams]] 14:48, 3 February 2010 (UTC)''' |
Revision as of 11:25, 3 February 2010
Most probably C compilers inline functions, but just to be sure, I'd convert them into the macros:
#define to_raw_bits(d) *((EIF_NATURAL_64*)&(d)) #define eif_is_nan_bits(value) ((value & ~RTU64C(0x8000000000000000)) > RTU64C(0x7ff0000000000000)) #define eif_is_nan(v) ((*((EIF_NATURAL_64 *)&(v)) & ~RTU64C(0x8000000000000000)) > RTU64C(0x7ff0000000000000))
Does it affect the benchmarks?
- --manus 17:59, 3 February 2010 (UTC) Actually it does not on Windows for sure, I've verified that it was inlined. But you are right that those could be simply defined as macros.
- --manus 20:25, 3 February 2010 (UTC) I've done again some of the benchmarks and on windows at least, some of them are slower when I use a macro. I'm no sure why I haven't looked at the generated assembly code.
--Colin-adams 14:48, 3 February 2010 (UTC) Not IEEE arithmetic, nor maths, NaN = NaN is never true. And placing NaNs in a sort order isn't write either - REAL_32/64 are not totally ordered types.
- --manus 17:57, 3 February 2010 (UTC) How do you solve the problem of assertions then in ARRAY.put for example?
--Alexander Kogtenkov 20:01, 3 February 2010 (UTC)
- Does it mean that
REAL_GENERAL
should inheritPART_COMPARABLE
rather thanCOMPARABLE
? - Do we need 2 equality queries: one that tells two objects represent the same value (it is used to ensure
copy
does what is expected, and it is used to implement~
) and the other one that tells that the numbers are equal in terms of ordering relation of(PART_)COMPARABLE
?