Man Linux: Main Page and Category List

NAME

       cproj, cprojf, cprojl - complex projection functions

SYNOPSIS

       #include <complex.h>

       double complex cproj(double complex z);
       float complex cprojf(float complex z);
       long double complex cprojl(long double complex z);

DESCRIPTION

       These  functions  shall  compute  a  projection  of  z onto the Riemann
       sphere: z projects to z, except that all complex infinities (even those
       with  one  infinite part and one NaN part) project to positive infinity
       on the real axis. If z has an infinite part, then cproj(  z)  shall  be
       equivalent to:

              INFINITY + I * copysign(0.0, cimag(z))

RETURN VALUE

       These  functions  shall  return  the  value  of the projection onto the
       Riemann sphere.

ERRORS

       No errors are defined.

       The following sections are informative.

EXAMPLES

       None.

APPLICATION USAGE

       None.

RATIONALE

       Two topologies are commonly used in complex  mathematics:  the  complex
       plane with its continuum of infinities, and the Riemann sphere with its
       single infinity. The complex plane is better suited for  transcendental
       functions,  the  Riemann  sphere  for  algebraic functions. The complex
       types with their multiplicity of infinities provide  a  useful  (though
       imperfect)  model  for  the  complex plane.  The cproj() function helps
       model the Riemann sphere by mapping all infinities to one,  and  should
       be  used  just before any operation, especially comparisons, that might
       give spurious results for any of the  other  infinities.  Note  that  a
       complex value with one infinite part and one NaN part is regarded as an
       infinity, not a NaN, because if one part is infinite, the complex value
       is  infinite  independent  of the value of the other part. For the same
       reason, cabs() returns an infinity if its argument has an infinite part
       and a NaN part.

FUTURE DIRECTIONS

       None.

SEE ALSO

       carg()  ,  cimag()  , conj() , creal() , the Base Definitions volume of
       IEEE Std 1003.1-2001, <complex.h>

COPYRIGHT

       Portions of this text are reprinted and reproduced in  electronic  form
       from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
       -- Portable Operating System Interface (POSIX),  The  Open  Group  Base
       Specifications  Issue  6,  Copyright  (C) 2001-2003 by the Institute of
       Electrical and Electronics Engineers, Inc and The Open  Group.  In  the
       event of any discrepancy between this version and the original IEEE and
       The Open Group Standard, the original IEEE and The Open Group  Standard
       is  the  referee document. The original Standard can be obtained online
       at http://www.opengroup.org/unix/online.html .