Copyright | [2015..2017] Trevor L. McDonell |
---|---|
License | BSD3 |
Maintainer | Trevor L. McDonell <tmcdonell@cse.unsw.edu.au> |
Stability | experimental |
Portability | non-portable (GHC extensions) |
Safe Haskell | None |
Language | Haskell2010 |
Complex numbers, stored in the usual C-style array-of-struct representation, for easy interoperability.
Synopsis
- data Complex a = !a :+ !a
- real :: (Elt a, Elt (Complex a)) => Exp (Complex a) -> Exp a
- imag :: (Elt a, Elt (Complex a)) => Exp (Complex a) -> Exp a
- mkPolar :: forall a. (Floating a, Elt (Complex a)) => Exp a -> Exp a -> Exp (Complex a)
- cis :: forall a. (Floating a, Elt (Complex a)) => Exp a -> Exp (Complex a)
- polar :: (RealFloat a, Elt (Complex a)) => Exp (Complex a) -> Exp (a, a)
- magnitude :: (RealFloat a, Elt (Complex a)) => Exp (Complex a) -> Exp a
- phase :: (RealFloat a, Elt (Complex a)) => Exp (Complex a) -> Exp a
- conjugate :: (Num a, Elt (Complex a)) => Exp (Complex a) -> Exp (Complex a)
Rectangular from
Complex numbers are an algebraic type.
For a complex number z
,
is a number with the magnitude of abs
zz
,
but oriented in the positive real direction, whereas
has the phase of signum
zz
, but unit magnitude.
The Foldable
and Traversable
instances traverse the real part first.
!a :+ !a infix 6 | forms a complex number from its real and imaginary rectangular components. |
Instances
real :: (Elt a, Elt (Complex a)) => Exp (Complex a) -> Exp a Source #
Return the real part of a complex number
imag :: (Elt a, Elt (Complex a)) => Exp (Complex a) -> Exp a Source #
Return the imaginary part of a complex number
Polar form
mkPolar :: forall a. (Floating a, Elt (Complex a)) => Exp a -> Exp a -> Exp (Complex a) Source #
Form a complex number from polar components of magnitude and phase.
magnitude :: (RealFloat a, Elt (Complex a)) => Exp (Complex a) -> Exp a Source #
The non-negative magnitude of a complex number
Conjugate
conjugate :: (Num a, Elt (Complex a)) => Exp (Complex a) -> Exp (Complex a) Source #
Return the complex conjugate of a complex number, defined as
conjugate(Z) = X - iY