Double -> CDouble, realToFrac doesn't work
Hal Daume III
hdaume at ISI.EDU
Tue Aug 3 20:53:56 EDT 2004
I need to convert a Double to a CDouble to pass to a C function.
In the past, when I've asked how to do this, I'm told: realToFrac. This
works in most cases, but recently gave me a problem that took me *forever*
to track down:
Prelude Foreign.C> (0 :: CDouble) / 0
NaN
Prelude Foreign.C> (0 :: Double) / 0
NaN
Prelude Foreign.C> realToFrac ((0 :: Double) / 0) :: CDouble
-Infinity
yikes! the NaN got turned into a -Infinity!!!
aside from manually checking for 'strange' Double/CDouble values and
wrapping realToFrac, is there a better way? also, does this count as a
bug?
--
Hal Daume III | hdaume at isi.edu
"Arrest this man, he talks in maths." | www.isi.edu/~hdaume
More information about the Glasgow-haskell-users
mailing list