HORIZON HASKELLDocslts/ghc-9.10.x248f8f02026-10-05Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05

Modulenumeric-prelude-0.4.4Haskell98

Number.Complex

Complex numbers.

  • 1 type
  • 1 class
  • 21 values

Cartesian form

11 declarations
datadata T a
#

Complex numbers are an algebraic type.

Instances29Functor, Sqr, Eq, Fractional, Num, Read, …
  • Functor TDefined in numeric-prelude-0.4.4 · Number.Complex
  • C TDefined in numeric-prelude-0.4.4 · Number.Complex
  • C a b => C a (T b)Defined in numeric-prelude-0.4.4 · Number.Complex
  • C a b => C a (T b)Defined in numeric-prelude-0.4.4 · Number.Complex

    The (*>) method can't replace scale because it requires the Algebra.Module constraint

  • (C a, Sqr a b) => C a (T b)Defined in numeric-prelude-0.4.4 · Number.Complex
  • Sqr a b => Sqr a (T b)Defined in numeric-prelude-0.4.4 · Number.Complex
  • (Ord a, C a v) => C a (T v)Defined in numeric-prelude-0.4.4 · Number.Complex
  • (C a, C a v) => C a (T v)Defined in numeric-prelude-0.4.4 · Number.Complex
  • (Show v, C v, C v, C a v) => C a (T v)Defined in numeric-prelude-0.4.4 · Number.Complex
  • C a v => C a (T v)Defined in numeric-prelude-0.4.4 · Algebra.AffineSpace
  • Eq a => Eq (T a)Defined in numeric-prelude-0.4.4 · Number.Complex
  • (Floating a, Eq a) => Fractional (T a)Defined in numeric-prelude-0.4.4 · Number.Complex
  • (Floating a, Eq a) => Num (T a)Defined in numeric-prelude-0.4.4 · Number.Complex
  • Read a => Read (T a)Defined in numeric-prelude-0.4.4 · Number.Complex
  • Show a => Show (T a)Defined in numeric-prelude-0.4.4 · Number.Complex
  • Storable a => Storable (T a)Defined in numeric-prelude-0.4.4 · Number.Complex
  • Arbitrary a => Arbitrary (T a)Defined in numeric-prelude-0.4.4 · Number.Complex
  • (C a, C a, C a) => C (T a)Defined in numeric-prelude-0.4.4 · Number.Complex
  • C a => C (T a)Defined in numeric-prelude-0.4.4 · Number.Complex
  • C a => C (T a)Defined in numeric-prelude-0.4.4 · Number.Complex
  • (C a, C a, Power a) => C (T a)Defined in numeric-prelude-0.4.4 · Number.Complex
  • C a => C (T a)Defined in numeric-prelude-0.4.4 · Number.Complex
  • (Ord a, C a, C a) => C (T a)Defined in numeric-prelude-0.4.4 · Number.Complex
  • (Ord a, C a) => C (T a)Defined in numeric-prelude-0.4.4 · Number.Complex
  • C a => C (T a)Defined in numeric-prelude-0.4.4 · Number.Complex
  • C a => C (T a)Defined in numeric-prelude-0.4.4 · Number.Complex
  • C a => C (T a)Defined in numeric-prelude-0.4.4 · Number.Complex
  • (C a, C a, C a, Power a) => C (T a)Defined in numeric-prelude-0.4.4 · Number.Complex
  • Zero a => Zero (T a)Defined in numeric-prelude-0.4.4 · Algebra.AffineSpace
valuereal :: T a -> a
#

real part

valueimag :: T a -> a
#

imaginary part

value(+:) :: a -> a -> T a
#

Construct a complex number from real and imaginary part.

value(-:) :: C a => a -> a -> T a
#

Construct a complex number with negated imaginary part.

valuescale :: C a => a -> T a -> T a
#

Scale a complex number by a real number.

valueexp :: C a => T a -> T a
#

Exponential of a complex number with minimal type class constraints.

valuequarterLeft :: C a => T a -> T a
#

Turn the point one quarter to the right.

valuequarterRight :: C a => T a -> T a
#

Turn the point one quarter to the right.

Polar form

8 declarations
valuefromPolar :: C a => a -> a -> T a
#

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

valuecis :: C a => a -> T a
#

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

valuesignum :: (C a, C a) => T a -> T a
#

Scale a complex number to magnitude 1.

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.

valuetoPolar :: (C a, C a) => T a -> (a, a)
#

The function toPolar 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.

valuephase :: (C a, C a) => T a -> a
#

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

Conjugate

1 declaration
valueconjugate :: C a => T a -> T a
#

The conjugate of a complex number.

Properties

1 declaration

Auxiliary classes

2 declarations
classclass C a => Power a where
#

We like to build the Complex Algebraic instance on top of the Algebraic instance of the scalar type. This poses no problem to sqrt. However, Number.Complex.root requires computing the complex argument which is a transcendent operation. In order to keep the type class dependencies clean for more sophisticated algebraic number types, we introduce a type class which actually performs the radix operation.

Methods

Instances3Power
  • Power DoubleDefined in numeric-prelude-0.4.4 · Number.Complex
  • Power FloatDefined in numeric-prelude-0.4.4 · Number.Complex
  • Power TDefined in numeric-prelude-0.4.4 · Number.Positional.Check