complex

This module implements complex numbers. Complex numbers are currently implemented as generic on a 64-bit or 32-bit float.

Types

Complex[T] = object
  re*, im*: T                ## A complex number, consisting of a real and an imaginary part.
  
  Source Edit
Complex64 = Complex[float64]
Alias for a pair of 64-bit floats.   Source Edit
Complex32 = Complex[float32]
Alias for a pair of 32-bit floats.   Source Edit

Procs

proc complex[T: SomeFloat](re: T; im: T = 0.0): Complex[T]
  Source Edit
proc complex32(re: float32; im: float32 = 0.0): Complex[float32] {...}{.raises: [],
    tags: [].}
  Source Edit
proc complex64(re: float64; im: float64 = 0.0): Complex[float64] {...}{.raises: [],
    tags: [].}
  Source Edit
proc abs[T](z: Complex[T]): T
Returns the distance from (0,0) to z.   Source Edit
proc abs2[T](z: Complex[T]): T
Returns the squared distance from (0,0) to z.   Source Edit
proc conjugate[T](z: Complex[T]): Complex[T]
Conjugates of complex number z.   Source Edit
proc inv[T](z: Complex[T]): Complex[T]
Multiplicatives inverse of complex number z.   Source Edit
proc `==`[T](x, y: Complex[T]): bool
Compares two complex numbers x and y for equality.   Source Edit
proc `+`[T](x: T; y: Complex[T]): Complex[T]
Adds a real number to a complex number.   Source Edit
proc `+`[T](x: Complex[T]; y: T): Complex[T]
Adds a complex number to a real number.   Source Edit
proc `+`[T](x, y: Complex[T]): Complex[T]
Adds two complex numbers.   Source Edit
proc `-`[T](z: Complex[T]): Complex[T]
Unary minus for complex numbers.   Source Edit
proc `-`[T](x: T; y: Complex[T]): Complex[T]
Subtracts a complex number from a real number.   Source Edit
proc `-`[T](x: Complex[T]; y: T): Complex[T]
Subtracts a real number from a complex number.   Source Edit
proc `-`[T](x, y: Complex[T]): Complex[T]
Subtracts two complex numbers.   Source Edit
proc `/`[T](x: Complex[T]; y: T): Complex[T]
Divides complex number x by real number y.   Source Edit
proc `/`[T](x: T; y: Complex[T]): Complex[T]
Divides real number x by complex number y.   Source Edit
proc `/`[T](x, y: Complex[T]): Complex[T]
Divides x by y.   Source Edit
proc `*`[T](x: T; y: Complex[T]): Complex[T]
Multiplies a real number and a complex number.   Source Edit
proc `*`[T](x: Complex[T]; y: T): Complex[T]
Multiplies a complex number with a real number.   Source Edit
proc `*`[T](x, y: Complex[T]): Complex[T]
Multiplies x with y.   Source Edit
proc `+=`[T](x: var Complex[T]; y: Complex[T])
Adds y to x.   Source Edit
proc `-=`[T](x: var Complex[T]; y: Complex[T])
Subtracts y from x.   Source Edit
proc `*=`[T](x: var Complex[T]; y: Complex[T])
Multiplies y to x.   Source Edit
proc `/=`[T](x: var Complex[T]; y: Complex[T])
Divides x by y in place.   Source Edit
proc sqrt[T](z: Complex[T]): Complex[T]
Square root for a complex number z.   Source Edit
proc exp[T](z: Complex[T]): Complex[T]
e raised to the power z.   Source Edit
proc ln[T](z: Complex[T]): Complex[T]
Returns the natural log of z.   Source Edit
proc log10[T](z: Complex[T]): Complex[T]
Returns the log base 10 of z.   Source Edit
proc log2[T](z: Complex[T]): Complex[T]
Returns the log base 2 of z.   Source Edit
proc pow[T](x, y: Complex[T]): Complex[T]
x raised to the power y.   Source Edit
proc pow[T](x: Complex[T]; y: T): Complex[T]
Complex number x raised to the power y.   Source Edit
proc sin[T](z: Complex[T]): Complex[T]
Returns the sine of z.   Source Edit
proc arcsin[T](z: Complex[T]): Complex[T]
Returns the inverse sine of z.   Source Edit
proc cos[T](z: Complex[T]): Complex[T]
Returns the cosine of z.   Source Edit
proc arccos[T](z: Complex[T]): Complex[T]
Returns the inverse cosine of z.   Source Edit
proc tan[T](z: Complex[T]): Complex[T]
Returns the tangent of z.   Source Edit
proc arctan[T](z: Complex[T]): Complex[T]
Returns the inverse tangent of z.   Source Edit
proc cot[T](z: Complex[T]): Complex[T]
Returns the cotangent of z.   Source Edit
proc arccot[T](z: Complex[T]): Complex[T]
Returns the inverse cotangent of z.   Source Edit
proc sec[T](z: Complex[T]): Complex[T]
Returns the secant of z.   Source Edit
proc arcsec[T](z: Complex[T]): Complex[T]
Returns the inverse secant of z.   Source Edit
proc csc[T](z: Complex[T]): Complex[T]
Returns the cosecant of z.   Source Edit
proc arccsc[T](z: Complex[T]): Complex[T]
Returns the inverse cosecant of z.   Source Edit
proc sinh[T](z: Complex[T]): Complex[T]
Returns the hyperbolic sine of z.   Source Edit
proc arcsinh[T](z: Complex[T]): Complex[T]
Returns the inverse hyperbolic sine of z.   Source Edit
proc cosh[T](z: Complex[T]): Complex[T]
Returns the hyperbolic cosine of z.   Source Edit
proc arccosh[T](z: Complex[T]): Complex[T]
Returns the inverse hyperbolic cosine of z.   Source Edit
proc tanh[T](z: Complex[T]): Complex[T]
Returns the hyperbolic tangent of z.   Source Edit
proc arctanh[T](z: Complex[T]): Complex[T]
Returns the inverse hyperbolic tangent of z.   Source Edit
proc sech[T](z: Complex[T]): Complex[T]
Returns the hyperbolic secant of z.   Source Edit
proc arcsech[T](z: Complex[T]): Complex[T]
Returns the inverse hyperbolic secant of z.   Source Edit
proc csch[T](z: Complex[T]): Complex[T]
Returns the hyperbolic cosecant of z.   Source Edit
proc arccsch[T](z: Complex[T]): Complex[T]
Returns the inverse hyperbolic cosecant of z.   Source Edit
proc coth[T](z: Complex[T]): Complex[T]
Returns the hyperbolic cotangent of z.   Source Edit
proc arccoth[T](z: Complex[T]): Complex[T]
Returns the inverse hyperbolic cotangent of z.   Source Edit
proc phase[T](z: Complex[T]): T
Returns the phase of z.   Source Edit
proc polar[T](z: Complex[T]): tuple[r, phi: T]
Returns z in polar coordinates.   Source Edit
proc rect[T](r, phi: T): Complex[T]
Returns the complex number with polar coordinates r and phi.

result.re = r * cos(phi)
result.im = r * sin(phi)

  Source Edit
proc `$`(z: Complex): string
Returns z's string representation as "(re, im)".   Source Edit

Templates

template im(arg: typedesc[float32]): Complex32
  Source Edit
template im(arg: typedesc[float64]): Complex64
  Source Edit
template im(arg: float32): Complex32
  Source Edit
template im(arg: float64): Complex64
  Source Edit