[Haskell-cafe] Desired behaviour of rounding etc.

wren ng thornton wren at community.haskell.org
Fri Oct 8 23:52:58 EDT 2010


On 10/8/10 8:08 AM, Daniel Fischer wrote:
> The methods of the RealFrac class produce garbage when the value lies
> outside the range of the target type, e.g.
>
> Prelude GHC.Float>  truncate 1.234e11 :: Int  -- 32-bits
> -1154051584
>
> and, in the case of truncate, different garbage when the rewrite rule
> fires:
>
> Prelude GHC.Float>  double2Int 1.234e11
> -2147483648
>
> I'm currently working on faster implementations of properFraction,
> truncate, round, ceiling and floor for Float and Double, so I'd like to
> know
>
> - does it matter at all what garbage is returned in the above case?

I've never relied on particular garbage for these situations. Though I 
think it would be best if the firing of rewrite rules doesn't affect 
which garbage you get; that way bugs should be easier to locate since 
they're not dependent on optimization level, compiler version, etc. 
(Granted, consistent behavior may make *detecting* the presence of bugs 
a little harder.)

-- 
Live well,
~wren


More information about the Libraries mailing list