-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | complex numbers with non-mandatory RealFloat
--
-- The base package's Data.Complex has a RealFloat
-- requirement for almost all operations, which rules out uses such as
-- 'Complex Rational' or 'Complex Integer'. This package provides an
-- alternative, putting most operations into additional type classes.
-- Generating instances with template haskell helps reduce excessive
-- boilerplate and avoids instance overlap.
@package complex-generic
@version 0.1.1.1
-- | Classes for complex number operations.
module Data.Complex.Generic.Class
-- | Rectangular form.
class ComplexRect c r | c -> r
-- | Construction.
mkRect :: ComplexRect c r => r -> r -> c
-- | Construction with imagPart 0.
real :: ComplexRect c r => r -> c
-- | Construction with realPart 0.
imag :: ComplexRect c r => r -> c
-- | Deconstruction.
rect :: ComplexRect c r => c -> (r, r)
-- | Get the real part.
realPart :: ComplexRect c r => c -> r
-- | Get the imaginary part.
imagPart :: ComplexRect c r => c -> r
-- | Conjugation.
conjugate :: ComplexRect c r => c -> c
-- | Squared magnitude.
magnitudeSquared :: ComplexRect c r => c -> r
-- | Complex square.
sqr :: ComplexRect c r => c -> c
-- | Real-complex multiplication.
(.*) :: ComplexRect c r => r -> c -> c
-- | Complex-real multiplication.
(*.) :: ComplexRect c r => c -> r -> c
-- | Complex-real division.
(/.) :: (Fractional r, ComplexRect c r) => c -> r -> c
infixl 6 /.
-- | A synonym for mkRect.
(.+) :: ComplexRect c r => r -> r -> c
infix 6 .+
-- | Polar form.
class ComplexPolar c r | c -> r
mkPolar :: ComplexPolar c r => r -> r -> c
cis :: ComplexPolar c r => r -> c
polar :: ComplexPolar c r => c -> (r, r)
-- | Magnitude.
magnitude :: ComplexPolar c r => c -> r
-- | Phase in (-pi, pi].
phase :: ComplexPolar c r => c -> r
-- | Default implementations of complex number operations.
module Data.Complex.Generic.Default
realDefault :: (Num r, ComplexRect c r) => r -> c
imagDefault :: (Num r, ComplexRect c r) => r -> c
rectDefault :: ComplexRect c r => c -> (r, r)
realPartDefault :: ComplexRect c r => c -> r
imagPartDefault :: ComplexRect c r => c -> r
conjugateDefault :: (Num r, ComplexRect c r) => c -> c
magnitudeSquaredDefault :: (Num r, ComplexRect c r) => c -> r
sqrDefault :: (Num r, ComplexRect c r) => c -> c
sqrDefaultRF :: (RealFloat r, ComplexRect c r) => c -> c
rmulDefault :: (Num r, ComplexRect c r) => r -> c -> c
mulrDefault :: (Num r, ComplexRect c r) => c -> r -> c
mkPolarDefault :: (Floating r, ComplexRect c r) => r -> r -> c
cisDefault :: (Floating r, ComplexRect c r) => r -> c
polarDefault :: (ComplexPolar c r) => c -> (r, r)
magnitudeDefault :: (Floating r, ComplexRect c r) => c -> r
magnitudeDefaultRF :: (RealFloat r, ComplexRect c r) => c -> r
phaseDefault :: (Ord r, Floating r, ComplexRect c r) => c -> r
phaseDefaultRF :: (RealFloat r, ComplexRect c r) => c -> r
addDefault :: (Num r, ComplexRect c r) => c -> c -> c
subDefault :: (Num r, ComplexRect c r) => c -> c -> c
mulDefault :: (Num r, ComplexRect c r) => c -> c -> c
negateDefault :: (Num r, ComplexRect c r) => c -> c
absDefault :: (Num r, ComplexRect c r, ComplexPolar c r) => c -> c
signumDefault :: (Eq r, Fractional r, ComplexRect c r, ComplexPolar c r) => c -> c
fromIntegerDefault :: (Num r, ComplexRect c r) => Integer -> c
divDefault :: (Fractional r, ComplexRect c r) => c -> c -> c
divDefaultRF :: (RealFloat r, ComplexRect c r) => c -> c -> c
fromRationalDefault :: (Fractional r, ComplexRect c r) => Rational -> c
piDefault :: (Floating r, ComplexRect c r) => c
expDefault :: (Floating r, ComplexRect c r) => c -> c
logDefault :: (Floating r, ComplexRect c r, ComplexPolar c r) => c -> c
sqrtDefault :: (Eq r, Ord r, Floating r, ComplexRect c r, ComplexPolar c r) => c -> c
sinDefault :: (Floating r, ComplexRect c r) => c -> c
cosDefault :: (Floating r, ComplexRect c r) => c -> c
tanDefault :: (Floating r, Fractional c, ComplexRect c r) => c -> c
sinhDefault :: (Floating r, ComplexRect c r) => c -> c
coshDefault :: (Floating r, ComplexRect c r) => c -> c
tanhDefault :: (Floating r, Floating c, ComplexRect c r) => c -> c
asinDefault :: (Num r, Floating c, ComplexRect c r) => c -> c
acosDefault :: (Num r, Floating c, ComplexRect c r) => c -> c
atanDefault :: (Num r, Floating c, ComplexRect c r) => c -> c
asinhDefault :: (Floating c, ComplexRect c r) => c -> c
acoshDefault :: (Floating c, ComplexRect c r) => c -> c
atanhDefault :: (Floating c, ComplexRect c r) => c -> c
-- | Derive instances for complex numbers using template haskell.
module Data.Complex.Generic.TH
-- | Derive instances for RealFloat types.
deriveComplexRF :: Name -> Name -> Name -> Name -> Q [Dec]
-- | Derive instances for Floating types.
deriveComplexF :: Name -> Name -> Name -> Name -> Q [Dec]
-- | Derive instances for Num types.
deriveComplexN :: Name -> Name -> Name -> Name -> Q [Dec]
-- | Complex numbers.
module Data.Complex.Generic
-- | Complex numbers in rectangular form.
data Complex a
(:+) :: !a -> !a -> Complex a
-- | Convert to Complex.
toDataComplex :: Complex r -> Complex r
-- | Convert from Complex.
fromDataComplex :: Complex r -> Complex r
instance Data.Complex.Generic.Class.ComplexRect (Data.Complex.Generic.Complex GHC.Word.Word64) GHC.Word.Word64
instance GHC.Num.Num (Data.Complex.Generic.Complex GHC.Word.Word64)
instance Data.Fixed.HasResolution t => Data.Complex.Generic.Class.ComplexRect (Data.Complex.Generic.Complex (Data.Fixed.Fixed t)) (Data.Fixed.Fixed t)
instance Data.Fixed.HasResolution t => GHC.Num.Num (Data.Complex.Generic.Complex (Data.Fixed.Fixed t))
instance Data.Fixed.HasResolution t => GHC.Real.Fractional (Data.Complex.Generic.Complex (Data.Fixed.Fixed t))
instance GHC.Real.Integral t => Data.Complex.Generic.Class.ComplexRect (Data.Complex.Generic.Complex (GHC.Real.Ratio t)) (GHC.Real.Ratio t)
instance GHC.Real.Integral t => GHC.Num.Num (Data.Complex.Generic.Complex (GHC.Real.Ratio t))
instance GHC.Real.Integral t => GHC.Real.Fractional (Data.Complex.Generic.Complex (GHC.Real.Ratio t))
instance Data.Complex.Generic.Class.ComplexRect (Data.Complex.Generic.Complex GHC.Word.Word32) GHC.Word.Word32
instance GHC.Num.Num (Data.Complex.Generic.Complex GHC.Word.Word32)
instance Data.Complex.Generic.Class.ComplexRect (Data.Complex.Generic.Complex GHC.Word.Word16) GHC.Word.Word16
instance GHC.Num.Num (Data.Complex.Generic.Complex GHC.Word.Word16)
instance Data.Complex.Generic.Class.ComplexRect (Data.Complex.Generic.Complex GHC.Word.Word8) GHC.Word.Word8
instance GHC.Num.Num (Data.Complex.Generic.Complex GHC.Word.Word8)
instance Data.Complex.Generic.Class.ComplexRect (Data.Complex.Generic.Complex GHC.Types.Word) GHC.Types.Word
instance GHC.Num.Num (Data.Complex.Generic.Complex GHC.Types.Word)
instance Data.Complex.Generic.Class.ComplexRect (Data.Complex.Generic.Complex GHC.Int.Int64) GHC.Int.Int64
instance GHC.Num.Num (Data.Complex.Generic.Complex GHC.Int.Int64)
instance Data.Complex.Generic.Class.ComplexRect (Data.Complex.Generic.Complex GHC.Int.Int32) GHC.Int.Int32
instance GHC.Num.Num (Data.Complex.Generic.Complex GHC.Int.Int32)
instance Data.Complex.Generic.Class.ComplexRect (Data.Complex.Generic.Complex GHC.Int.Int16) GHC.Int.Int16
instance GHC.Num.Num (Data.Complex.Generic.Complex GHC.Int.Int16)
instance Data.Complex.Generic.Class.ComplexRect (Data.Complex.Generic.Complex GHC.Int.Int8) GHC.Int.Int8
instance GHC.Num.Num (Data.Complex.Generic.Complex GHC.Int.Int8)
instance Data.Complex.Generic.Class.ComplexRect (Data.Complex.Generic.Complex GHC.Types.Int) GHC.Types.Int
instance GHC.Num.Num (Data.Complex.Generic.Complex GHC.Types.Int)
instance Data.Complex.Generic.Class.ComplexRect (Data.Complex.Generic.Complex GHC.Integer.Type.Integer) GHC.Integer.Type.Integer
instance GHC.Num.Num (Data.Complex.Generic.Complex GHC.Integer.Type.Integer)
instance Data.Complex.Generic.Class.ComplexRect (Data.Complex.Generic.Complex Foreign.C.Types.CDouble) Foreign.C.Types.CDouble
instance Data.Complex.Generic.Class.ComplexPolar (Data.Complex.Generic.Complex Foreign.C.Types.CDouble) Foreign.C.Types.CDouble
instance GHC.Num.Num (Data.Complex.Generic.Complex Foreign.C.Types.CDouble)
instance GHC.Real.Fractional (Data.Complex.Generic.Complex Foreign.C.Types.CDouble)
instance GHC.Float.Floating (Data.Complex.Generic.Complex Foreign.C.Types.CDouble)
instance Data.Complex.Generic.Class.ComplexRect (Data.Complex.Generic.Complex Foreign.C.Types.CFloat) Foreign.C.Types.CFloat
instance Data.Complex.Generic.Class.ComplexPolar (Data.Complex.Generic.Complex Foreign.C.Types.CFloat) Foreign.C.Types.CFloat
instance GHC.Num.Num (Data.Complex.Generic.Complex Foreign.C.Types.CFloat)
instance GHC.Real.Fractional (Data.Complex.Generic.Complex Foreign.C.Types.CFloat)
instance GHC.Float.Floating (Data.Complex.Generic.Complex Foreign.C.Types.CFloat)
instance Data.Complex.Generic.Class.ComplexRect (Data.Complex.Generic.Complex GHC.Types.Double) GHC.Types.Double
instance Data.Complex.Generic.Class.ComplexPolar (Data.Complex.Generic.Complex GHC.Types.Double) GHC.Types.Double
instance GHC.Num.Num (Data.Complex.Generic.Complex GHC.Types.Double)
instance GHC.Real.Fractional (Data.Complex.Generic.Complex GHC.Types.Double)
instance GHC.Float.Floating (Data.Complex.Generic.Complex GHC.Types.Double)
instance Data.Complex.Generic.Class.ComplexRect (Data.Complex.Generic.Complex GHC.Types.Float) GHC.Types.Float
instance Data.Complex.Generic.Class.ComplexPolar (Data.Complex.Generic.Complex GHC.Types.Float) GHC.Types.Float
instance GHC.Num.Num (Data.Complex.Generic.Complex GHC.Types.Float)
instance GHC.Real.Fractional (Data.Complex.Generic.Complex GHC.Types.Float)
instance GHC.Float.Floating (Data.Complex.Generic.Complex GHC.Types.Float)
instance Data.Data.Data a => Data.Data.Data (Data.Complex.Generic.Complex a)
instance GHC.Read.Read a => GHC.Read.Read (Data.Complex.Generic.Complex a)
instance GHC.Show.Show a => GHC.Show.Show (Data.Complex.Generic.Complex a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Complex.Generic.Complex a)
instance GHC.Base.Functor Data.Complex.Generic.Complex