
the ghc docs suggest using Doubles instead of Floats because GHC specializes Double but not float...I want to use floats to save memory and to test this claim, i grepped through the libraries for the SPECIALIZE keyword and find that with the exception of a few complex routines (which I don't care about), floats are just as specialized as doubles...is this the case, or am I missing something? the results of grepping are: moussor:libraries/ grep "SPECIALI[SZ]E" `find . | grep 'hs$'` | cut -d':' -f2- | grep Float {-# SPECIALISE instance Num (Complex Float) #-} {-# SPECIALISE instance Fractional (Complex Float) #-} {-# SPECIALISE instance Floating (Complex Float) #-} {-# SPECIALISE instance Floating (Complex Double) #-} {-# SPECIALIZE properFraction :: Float -> (Int, Float) #-} {-# SPECIALIZE round :: Float -> Int #-} {-# SPECIALIZE ceiling :: Float -> Int #-} {-# SPECIALIZE floor :: Float -> Int #-} {-# SPECIALIZE properFraction :: Float -> (Integer, Float) #-} {-# SPECIALIZE truncate :: Float -> Integer #-} {-# SPECIALIZE round :: Float -> Integer #-} {-# SPECIALIZE ceiling :: Float -> Integer #-} {-# SPECIALIZE floor :: Float -> Integer #-} {-# SPECIALIZE showEFloat :: {-# SPECIALIZE showFFloat :: {-# SPECIALIZE showGFloat :: moussor:libraries/ grep "SPECIALI[SZ]E" `find . | grep 'hs$'` | cut -d':' -f2- | grep Double {-# SPECIALISE conjugate :: Complex Double -> Complex Double #-} {-# SPECIALISE mkPolar :: Double -> Double -> Complex Double #-} {-# SPECIALISE cis :: Double -> Complex Double #-} {-# SPECIALISE polar :: Complex Double -> (Double,Double) #-} {-# SPECIALISE magnitude :: Complex Double -> Double #-} {-# SPECIALISE phase :: Complex Double -> Double #-} {-# SPECIALISE instance Num (Complex Double) #-} {-# SPECIALISE instance Fractional (Complex Double) #-} {-# SPECIALISE instance Floating (Complex Double) #-} {-# SPECIALIZE properFraction :: Double -> (Int, Double) #-} {-# SPECIALIZE round :: Double -> Int #-} {-# SPECIALIZE ceiling :: Double -> Int #-} {-# SPECIALIZE floor :: Double -> Int #-} {-# SPECIALIZE properFraction :: Double -> (Integer, Double) #-} {-# SPECIALIZE truncate :: Double -> Integer #-} {-# SPECIALIZE round :: Double -> Integer #-} {-# SPECIALIZE ceiling :: Double -> Integer #-} {-# SPECIALIZE floor :: Double -> Integer #-} {-# SPECIALISE fromRat :: Rational -> Double, -- Hal Daume III "Computer science is no more about computers | hdaume@isi.edu than astronomy is about telescopes." -Dijkstra | www.isi.edu/~hdaume
participants (1)
-
Hal Daume III