daveroundy:
> On Wed, Mar 12, 2008 at 9:27 PM, Don Stewart <[EMAIL PROTECTED]> wrote:
> >  You could consider binding directly to the C functions, if needed,
> >
> >     {-# OPTIONS -fffi -#include "math.h" #-}
> >
> >     import Foreign.C.Types
> >
> >     foreign import ccall unsafe "math.h log10"
> >         c_log10 :: CDouble -> CDouble
> >
> >     log10 :: Double -> Double
> >     log10 x = realToFrac (c_log10 (realToFrac x))
> 
> Actually, you could almost certainly just use
> 
> foreign import ccall unsafe "math.h log10" log10 :: Double -> Double
> 
> since in ghc CDouble and Double are identical.
> 
> It's a bit sloppier, but shouldn't cause any trouble.  And I've no
> idea how realToFrac is implemented, but would worry about it behaving
> oddly... for instance when given NaNs.

It's a no-op (from the core I was looking at), and then you're not worrying 
about coercing newtypes.

-- Don
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to