[Haskell-cafe] GHC handles badly with math formulas
Chris Smith
cdsmith at gmail.com
Mon Jun 13 18:03:03 CEST 2011
On Mon, 2011-06-13 at 19:46 +0400, Grigory Sarnitskiy wrote:
> I've noted several times that GHC doesn't evaluate formulas for Double values during compilation.
>
> That is using
> 4.2326514735445615 instead of (512 / 0.844)**(1/3)
> or
> 0.906179845938664 instead of (1/3) * sqrt(5 + 2 * sqrt(10 / 7))
Yep, looks that way. It's the square roots and powers that GHC is not
applying. Where you've got divisions between constants, those are
getting applied at compile time.
> This can lead to significant slowdown if such values are called often.
If you assign them to a global name, then lazy evaluation will take care
of it. It looks like GHC is even throwing in a specialization for
Double when I give the global name a polymorphic type.
--
Chris Smith
More information about the Haskell-Cafe
mailing list