On Tue, 27 Nov 2007, Bit Connor wrote: > > Actually, IEEE numbers are designed in such a way, that if you interpret > > their bits as integer number, then 'succ' leads you to the next larger > > representable number. Thus you only have to cast from Float or Double to > > Int32 or Int64 respectively, call enumFromTo, then cast back to Float or > > Double, respectively. :-] > > How do you cast from Float to Int32(or Word32), and back again? I > couldn't find an appropriate function. Only thing I can see is going > through the Storable interface, but that seems cumbersome and I > imagine slow.
As Don pointed out correctly I'm evil. Storable is a fine way, since it makes a hack look like a hack. Or you might use castSTUArray. > Also, a related question: How do you convert from Float -> Double, and > the reverse? Only thing I could find is (fromRational . toRational) > which I also imagine to be slow, and I also wonder about accuracy. Rational keeps full precision. Performance - I don't know, maybe it's fused away? When I started with Haskell I regularly needed conversion between Float and Double. I don't know why. I haven't needed it for a long time now. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe