base-4.10.1.0: Basic libraries

Copyright (c) The University of Glasgow 2001 BSD-style (see the file libraries/base/LICENSE) libraries@haskell.org provisional portable Trustworthy Haskell2010

Data.Complex

Description

Complex numbers.

Synopsis

# Rectangular form

data Complex a Source #

Complex numbers are an algebraic type.

For a complex number z, abs z is a number with the magnitude of z, but oriented in the positive real direction, whereas signum z has the phase of z, but unit magnitude.

The Foldable and Traversable instances traverse the real part first.

Constructors

 !a :+ !a infix 6 forms a complex number from its real and imaginary rectangular components.

Instances

 Source # Since: 4.9.0.0 Methods(>>=) :: Complex a -> (a -> Complex b) -> Complex b Source #(>>) :: Complex a -> Complex b -> Complex b Source #return :: a -> Complex a Source # Source # Methodsfmap :: (a -> b) -> Complex a -> Complex b Source #(<\$) :: a -> Complex b -> Complex a Source # Source # Since: 4.9.0.0 Methodspure :: a -> Complex a Source #(<*>) :: Complex (a -> b) -> Complex a -> Complex b Source #liftA2 :: (a -> b -> c) -> Complex a -> Complex b -> Complex c Source #(*>) :: Complex a -> Complex b -> Complex b Source #(<*) :: Complex a -> Complex b -> Complex a Source # Source # Methodsfold :: Monoid m => Complex m -> m Source #foldMap :: Monoid m => (a -> m) -> Complex a -> m Source #foldr :: (a -> b -> b) -> b -> Complex a -> b Source #foldr' :: (a -> b -> b) -> b -> Complex a -> b Source #foldl :: (b -> a -> b) -> b -> Complex a -> b Source #foldl' :: (b -> a -> b) -> b -> Complex a -> b Source #foldr1 :: (a -> a -> a) -> Complex a -> a Source #foldl1 :: (a -> a -> a) -> Complex a -> a Source #toList :: Complex a -> [a] Source #null :: Complex a -> Bool Source #length :: Complex a -> Int Source #elem :: Eq a => a -> Complex a -> Bool Source #maximum :: Ord a => Complex a -> a Source #minimum :: Ord a => Complex a -> a Source #sum :: Num a => Complex a -> a Source #product :: Num a => Complex a -> a Source # Source # Methodstraverse :: Applicative f => (a -> f b) -> Complex a -> f (Complex b) Source #sequenceA :: Applicative f => Complex (f a) -> f (Complex a) Source #mapM :: Monad m => (a -> m b) -> Complex a -> m (Complex b) Source #sequence :: Monad m => Complex (m a) -> m (Complex a) Source # Eq a => Eq (Complex a) Source # Methods(==) :: Complex a -> Complex a -> Bool #(/=) :: Complex a -> Complex a -> Bool # RealFloat a => Floating (Complex a) Source # Since: 2.1 Methodsexp :: Complex a -> Complex a Source #log :: Complex a -> Complex a Source #sqrt :: Complex a -> Complex a Source #(**) :: Complex a -> Complex a -> Complex a Source #logBase :: Complex a -> Complex a -> Complex a Source #sin :: Complex a -> Complex a Source #cos :: Complex a -> Complex a Source #tan :: Complex a -> Complex a Source #asin :: Complex a -> Complex a Source #acos :: Complex a -> Complex a Source #atan :: Complex a -> Complex a Source #sinh :: Complex a -> Complex a Source #cosh :: Complex a -> Complex a Source #tanh :: Complex a -> Complex a Source #asinh :: Complex a -> Complex a Source #acosh :: Complex a -> Complex a Source #atanh :: Complex a -> Complex a Source #log1p :: Complex a -> Complex a Source #expm1 :: Complex a -> Complex a Source # RealFloat a => Fractional (Complex a) Source # Since: 2.1 Methods(/) :: Complex a -> Complex a -> Complex a Source #recip :: Complex a -> Complex a Source # Data a => Data (Complex a) Source # Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Complex a -> c (Complex a) Source #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Complex a) Source #dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (Complex a)) Source #dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Complex a)) Source #gmapT :: (forall b. Data b => b -> b) -> Complex a -> Complex a Source #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Complex a -> r Source #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Complex a -> r Source #gmapQ :: (forall d. Data d => d -> u) -> Complex a -> [u] Source #gmapQi :: Int -> (forall d. Data d => d -> u) -> Complex a -> u Source #gmapM :: Monad m => (forall d. Data d => d -> m d) -> Complex a -> m (Complex a) Source #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Complex a -> m (Complex a) Source #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Complex a -> m (Complex a) Source # RealFloat a => Num (Complex a) Source # Since: 2.1 Methods(+) :: Complex a -> Complex a -> Complex a Source #(-) :: Complex a -> Complex a -> Complex a Source #(*) :: Complex a -> Complex a -> Complex a Source #negate :: Complex a -> Complex a Source #abs :: Complex a -> Complex a Source #signum :: Complex a -> Complex a Source # Read a => Read (Complex a) Source # Methods Show a => Show (Complex a) Source # MethodsshowsPrec :: Int -> Complex a -> ShowS Source #show :: Complex a -> String Source #showList :: [Complex a] -> ShowS Source # Source # Associated Typestype Rep (Complex a) :: * -> * Source # Methodsfrom :: Complex a -> Rep (Complex a) x Source #to :: Rep (Complex a) x -> Complex a Source # Storable a => Storable (Complex a) Source # Since: 4.8.0.0 MethodssizeOf :: Complex a -> Int Source #peekElemOff :: Ptr (Complex a) -> Int -> IO (Complex a) Source #pokeElemOff :: Ptr (Complex a) -> Int -> Complex a -> IO () Source #peekByteOff :: Ptr b -> Int -> IO (Complex a) Source #pokeByteOff :: Ptr b -> Int -> Complex a -> IO () Source #peek :: Ptr (Complex a) -> IO (Complex a) Source #poke :: Ptr (Complex a) -> Complex a -> IO () Source # Source # Associated Typestype Rep1 Complex (f :: Complex -> *) :: k -> * Source # Methodsfrom1 :: f a -> Rep1 Complex f a Source #to1 :: Rep1 Complex f a -> f a Source # type Rep (Complex a) Source # type Rep (Complex a) = D1 * (MetaData "Complex" "Data.Complex" "base" False) (C1 * (MetaCons ":+" (InfixI NotAssociative 6) False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 * a)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 * a)))) type Rep1 * Complex Source # type Rep1 * Complex = D1 * (MetaData "Complex" "Data.Complex" "base" False) (C1 * (MetaCons ":+" (InfixI NotAssociative 6) False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) Par1) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) Par1)))

realPart :: Complex a -> a Source #

Extracts the real part of a complex number.

imagPart :: Complex a -> a Source #

Extracts the imaginary part of a complex number.

# Polar form

mkPolar :: Floating a => a -> a -> Complex a Source #

Form a complex number from polar components of magnitude and phase.

cis :: Floating a => a -> Complex a Source #

cis t is a complex value with magnitude 1 and phase t (modulo 2*pi).

polar :: RealFloat a => Complex a -> (a, a) Source #

The function polar takes a complex number and returns a (magnitude, phase) pair in canonical form: the magnitude is nonnegative, and the phase in the range (-pi, pi]; if the magnitude is zero, then so is the phase.

magnitude :: RealFloat a => Complex a -> a Source #

The nonnegative magnitude of a complex number.

phase :: RealFloat a => Complex a -> a Source #

The phase of a complex number, in the range (-pi, pi]. If the magnitude is zero, then so is the phase.

# Conjugate

conjugate :: Num a => Complex a -> Complex a Source #

The conjugate of a complex number.