Joe Buck <[EMAIL PROTECTED]> writes: | On Tue, Jul 05, 2005 at 08:05:39PM +0200, Gabriel Dos Reis wrote: | > It is definitely a good thing to use the full bits of value | > representation if we ever want to make all "interesting" bits part of | > the hash value. For reasonable or sane representations it suffices to | > get your hand on the object representation, e.g.: | > | > const int objsize = sizeof (double); | > typedef unsigned char objrep_t[objsize]; | > double x = ....; | > objrep_t& p = reintepret_cast<objrep_t&>(x); | > // ... | > | > and let frexp and friends only for less obvious value representation. | | I disagree; on an ILP32 machine, we pull out only 32 bits for the hash | value, and if you aren't careful, your approach will wind up using the | least significant bits of the mantissa. This will cause all values that | are exactly representable as floats to collide.
I'm not sure we're talking about the same thing. With the representations I'm talking about, value repsentation == object representation.