ADC Home > Reference Library > Reference > Mac OS X > Mac OS X Man Pages

 

This document is a Mac OS X manual page. Manual pages are a command-line technology for providing documentation. You can view these manual pages locally using the man(1) command. These manual pages come from many different sources, and thus, have a variety of writing styles.

For more information about the manual page format, see the manual page for manpages(5).



CABS(3)                  BSD Library Functions Manual                  CABS(3)

NAME
     cabs -- complex norm (absolute value) function
     carg -- complex argument function

SYNOPSIS
     #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);

DESCRIPTION
     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.

EXAMPLES
     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 trans-formation transformation
     formation 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;
           }

SPECIAL VALUES
     cabs(x + yi), cabs(y + xi), and cabs(x - yi) are equivalent.  This is used to abbreviate the specifica-tion specification
     tion 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.

NOTES
     cabs() and carg() are fully specified in terms of real functions:

           cabs(x + iy) = hypot(x,y)
           carg(x + iy) = atan2(y,x).

SEE ALSO
     hypot(3), atan2(3), fabs(3), complex(3)

STANDARDS
     The cabs() and carg() functions conform to ISO/IEC 9899:1999(E).

4th Berkeley Distribution      October 10, 2006      4th Berkeley Distribution

Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.