module Linear.Conjugate
( Conjugate(..)
) where
import Data.Complex hiding (conjugate)
import Data.Int
import Data.Word
import Foreign.C.Types (CFloat, CDouble)
class Num a => Conjugate a where
conjugate :: a -> a
conjugate = id
instance Conjugate Integer
instance Conjugate Int
instance Conjugate Int64
instance Conjugate Int32
instance Conjugate Int16
instance Conjugate Int8
instance Conjugate Word
instance Conjugate Word64
instance Conjugate Word32
instance Conjugate Word16
instance Conjugate Word8
instance Conjugate Double
instance Conjugate Float
instance Conjugate CFloat
instance Conjugate CDouble
instance (Conjugate a, RealFloat a) => Conjugate (Complex a) where
conjugate (a :+ b) = conjugate a :+ negate b