D Programming Language 2.0

Last update Wed Apr 11 21:24:26 2012


Module that will replace the built-in types cfloat, cdouble, creal, ifloat, idouble, and ireal.

Lars Tandle Kyllingstad

Boost License 1.0


pure nothrow @safe auto complex(T)(T re);
pure nothrow @safe auto complex(R, I)(R re, I im);
Helper function that returns a complex number with the specified real and imaginary parts.

If neither re nor im are floating-point numbers, this function returns a Complex!double. Otherwise, the return type is deduced using std.traits.CommonType!(R, I).

    auto c = complex(2.0);
    static assert (is(typeof(c) == Complex!double));
    assert (c.re == 2.0);
    assert (c.im == 0.0);

    auto w = complex(2);
    static assert (is(typeof(w) == Complex!double));
    assert (w == c);

    auto z = complex(1, 3.14L);
    static assert (is(typeof(z) == Complex!real));
    assert (z.re == 1.0L);
    assert (z.im == 3.14L);

struct Complex(T) if (isFloatingPoint!(T));
A complex number parametrised by a type T, which must be either float, double or real.

T re;
The real part of the number.

T im;
The imaginary part of the number.

const T abs();
Calculate the absolute value (or modulus) of the number.

const T arg();
Calculate the argument (or phase) of the number.

const Complex conj();
Return the complex conjugate of the number.

const string toString(scope void delegate(const(char)[]) sink = null, string formatSpec = "%s");
Convert the complex number to a string representation.

If a sink delegate is specified, the string is passed to it and this function returns null. Otherwise, this function returns the string representation directly.

The output format is controlled via formatSpec, which should consist of a single POSIX format specifier, including the percent (%) character. Note that complex numbers are floating point numbers, so the only valid format characters are 'e', 'f', 'g', 'a', and 's', where 's' gives the default behaviour. Positional parameters are not valid in this context.

See the std.format documentation for more information.

pure nothrow @safe Complex!(CommonType!(T,U)) fromPolar(T, U)(T modulus, U argument);
Construct a complex number given its absolute value and argument.

pure nothrow @safe Complex!(T) sin(T)(Complex!(T) z);
pure nothrow @safe Complex!(T) cos(T)(Complex!(T) z);
Trigonometric functions.

pure nothrow @safe Complex!(T) sqrt(T)(Complex!(T) z);
Square root.