-- 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