hash and equal problem
stéphane ducasse
ducasse at iam.unibe.ch
Tue Mar 28 08:51:22 UTC 2006
Nicolas
thanks!
My question was also more interested :)
If you want to see this bug to be fixed, submit a fix and a bunch of
tests :).
You look like that right guy to do that :)
Stef
On 28 mars 06, at 10:39, ncellier at ifrance.com wrote:
>
> Hi, Stef and Boris,
>
> We know from 1997-99 discussions that VA implementation is not good.
> It computes hash code fast, but handle Set of Float inefficiently.
> Example:
> ((1 to: 100) collect: [:i | 10.0 raisedTo: i negated]) asSet.
> All elements have same hash code (0 hash) and access performance
> turn to linear search.
>
> In other dialects,
> self=self truncated ifFalse: [...]
> is also here to handle fraction/float equality (3/2) hash = 1.5 hash
>
> VW used to convert everything to Fraction (and had nasty bugs
> because their imperfect asRational algorithm sometimes have
> (aDouble = aDouble asRational asDouble) answering false, see SYSBUG-
> asRational at cincom public store).
> Now they convert everything to Float, then to Double if anything
> fail (Overflow) then to old Fraction hash (Large Fraction can also
> overflow max IEEE754 Double). I think new implementation is faster,
> and also cove rs other nasty bugs of aFloat=aDouble answering true,
> but having different fractional representations. This also cover
> scaled numbers.
>
> I do not have Dolphin, ST/X, ... image here, but i imagine they
> follow one of the above paths.
>
> Sorry, I have no original solution in mind, but borrow solutions of
> our Smalltalk cousins.
>
>
>
>
> iFRANCE
> exprimez-vous !
>
More information about the Squeak-dev
mailing list
|