CABS(3) | Library Functions Manual | CABS(3) |
cabs
— complex
norm (absolute value) function
carg
— complex argument
function
#include
<complex.h>
double
cabs
(double
complex z);
long double
cabsl
(long
double complex z);
float
cabsf
(float
complex z);
double
carg
(double
complex z);
long double
cargl
(long
double complex z);
float
cargf
(float
complex z);
cabs
(z)
computes the norm (absolute value) of the complex floating-point number
z.
carg
(z)
computes the argument (also called phase angle) of the complex
floating-point number z, with a branch cut on the
negative real axis. The result is in the range [-pi, pi], and has the same
sign as the imaginary part of z.
The function foo defined in the example below applies a non-linear rotation to the complex plane, such that points near the origin are not much affected, and points far from the origin are rotated by about pi/2.
This is accomplished by using cabs and carg to convert to polar coordinates, then computing the transformation in that coordinate system, and finally converting back to the usual rectangular coordinate system.
#include <complex.h> #include <math.h> double complex foo(double complex z) { // get the polar coordinates of z double r = cabs(z); double theta = carg(z); // add a value dependent on r to theta theta += atan(r); // now change back to rectangular coordinates and // return the new complex number return r*cos(theta) + r*sin(theta)*I; }
cabs
(x
+ yi), cabs
(y + xi), and
cabs
(x - yi) are equivalent.
This is used to abbreviate the specification of special values.
cabs
(x
± 0i) is equivalent to
fabs
(x).
cabs
(±inf
+ yi) returns inf even if y is a NaN.
cabs
(x
+ NaN i) returns NaN, for finite x.
cabs
(NaN
+ NaN i) returns NaN.
carg
(-0
± 0i) returns ±pi.
carg
(+0
± 0i) returns ±0.
carg
(x
± 0i) returns ±pi for x < 0.
carg
(x
± 0i) returns ±0 for x > 0.
carg
(±0
+ yi) returns -pi/2 for y < 0.
carg
(±0
+ yi) returns +pi/2 for y > 0.
carg
(-inf
± yi) returns ±pi for finite y > 0.
carg
(+inf
± yi) returns ±0 for finite y > 0.
carg
(x
± inf i) returns ±pi/2 for finite x.
carg
(-inf
± inf i) returns ±3*pi/4.
carg
(+inf
± inf i) returns ±pi/4.
carg
(x
+ yi) returns NaN if either of x or y is NaN.
cabs
() and carg
()
are fully specified in terms of real functions:
cabs(x + iy) = hypot(x,y) carg(x + iy) = atan2(y,x).
The cabs
() and
carg
() functions conform to ISO/IEC 9899:2011.
December 11, 2006 | BSD 4 |