M_Complex —
Agar-Math complex number
#include <agar/core.h>
#include <agar/gui.h>
#include <agar/math/m.h>
The M_Complex object describes a complex
number (without requiring an ISO C90 compiler). It is a simple structure
defined as:
typedef struct m_complex {
M_Real r; /* Real part */
M_Real i; /* "Imaginary" part */
} M_Complex;
M_Complex
M_ComplexGet(M_Real
r, M_Real i);
M_Complex
M_ReadComplex(AG_DataSource
*ds);
void
M_CopyComplex(AG_DataSource
*ds, M_Complex
*z);
void
M_WriteComplex(AG_DataSource
*ds, M_Complex
z);
The
M_ComplexGet()
routine returns a M_Complex structure describing a
complex number with real part r and imaginary part
i.
M_ComplexI()
returns the complex number for i.
M_ComplexMinusI()
returns the complex number for -i.
The
M_ReadComplex()
function reads a complex number from an
AG_DataSource(3)
and returns it. M_CopyComplex() returns the number
in z. M_WriteComplex() writes
a complex number to a data source.
M_Complex
M_ComplexAdd(M_Complex
a, M_Complex
b);
M_Complex
M_ComplexSub(M_Complex
a, M_Complex
b);
M_Complex
M_ComplexMult(M_Complex
a, M_Complex
b);
M_Complex
M_ComplexDiv(M_Complex
a, M_Complex
b);
M_Real
M_ComplexAbs(M_Complex
z);
The
M_ComplexAdd()
routine returns the sum of complex numbers a and
b. M_ComplexSub() returns the
difference.
M_ComplexMult()
computes the product of complex numbers a and
b. M_ComplexDiv() divides
a by b and returns the
result.
The
M_ComplexAbs()
function computes the complex absolute value (i.e., sqrt(r^2 + i^2)). If the
magnitude of either real or imaginary parts differs with zero up to 50% of
machine precision, both parts are rescaled prior to squaring.
M_ComplexSqrt()
computes the complex square root of z.
M_ComplexLog()
computes the complex natural logarithm of z.
M_ComplexExp()
computes the exponential of z.
M_ComplexPow()
returns a raised to the complex power
z.
M_Complex
M_ComplexSin(M_Complex
z);
M_Complex
M_ComplexCos(M_Complex
z);
M_Complex
M_ComplexTan(M_Complex
z);
M_Complex
M_ComplexCot(M_Complex
z);
M_Complex
M_ComplexAsin(M_Complex
z);
M_Complex
M_ComplexAcos(M_Complex
z);
M_Complex
M_ComplexAtan(M_Complex
z);
M_Complex
M_ComplexSinh(M_Complex
z);
M_Complex
M_ComplexAsinh(M_Complex
z);
M_Complex
M_ComplexCosh(M_Complex
z);
M_Complex
M_ComplexAcosh(M_Complex
z);
M_Complex
M_ComplexTanh(M_Complex
z);
M_Complex
M_ComplexAtanh(M_Complex
z);
The
M_ComplexSin()
function returns the complex sine of z.
M_ComplexCos() returns the complex cosine,
M_ComplexTan() returns the complex tangent and
M_ComplexCot() returns the complex cotangent.
M_ComplexAsin(),
M_ComplexAcos() and
M_ComplexAtan() compute the complex arc sine, arc
cosine and arc tangent of z, respectively.
M_ComplexSinh(),
M_ComplexAsinh(),
M_ComplexCosh(),
M_ComplexAcosh(),
M_ComplexTanh(),
M_ComplexAtanh() compute the complex hyperbolic
sine, arc sine, cosine, arc cosine, tangent and arc tangent of
z, respectively.
The M_Complex structure first appeared in
Agar 1.3.4.