cprojf, cproj, cprojl
Defined in header
<complex.h>
|
||
(1) | (since C99) | |
(2) | (since C99) | |
(3) | (since C99) | |
Defined in header
<tgmath.h>
|
||
#define cproj( z )
|
(4) | (since C99) |
z
on the Riemann sphere.
z
has type
long
double
complex
,
long
double
imaginary
, or
long
double
,
cprojl
is called. If
z
has type
float
complex
,
float
imaginary
, or
float
,
cprojf
is called. If
z
has type
double
complex
,
double
imaginary
,
double
, or any integer type,
cproj
is called.
For most
z
,
cproj
(
z
)
==
z
, but all complex infinities, even the numbers where one component is infinite and the other is NaN, become positive real infinity,
INFINITY
+
0.0
*
I
or
INFINITY
-
0.0
*
I
. The sign of the imaginary (zero) component is the sign of
cimag
(
z
)
.
Parameters
z | - | complex argument |
Return value
The projection of
z
on the Riemann sphere.
This function is fully specified for all possible inputs and is not subject to any errors described in math_errhandling
Notes
The
cproj
function helps model the Riemann sphere by mapping all infinities to one (give or take the sign of the imaginary zero), and should be used just before any operation, especially comparisons, that might give spurious results for any of the other infinities.
Example
#include <stdio.h> #include <complex.h> #include <math.h> int main(void) { double complex z1 = cproj(1 + 2*I); printf("cproj(1+2i) = %.1f%+.1fi\n", creal(z1),cimag(z1)); double complex z2 = cproj(INFINITY+2.0*I); printf("cproj(Inf+2i) = %.1f%+.1fi\n", creal(z2),cimag(z2)); double complex z3 = cproj(INFINITY-2.0*I); printf("cproj(Inf-2i) = %.1f%+.1fi\n", creal(z3),cimag(z3)); }
Output:
cproj(1+2i) = 1.0+2.0i cproj(Inf+2i) = inf+0.0i cproj(Inf-2i) = inf-0.0i
References
- C11 standard (ISO/IEC 9899:2011):
-
- 7.3.9.5 The cproj functions (p: 198)
-
- 7.25 Type-generic math <tgmath.h> (p: 373-375)
-
- G.7 Type-generic math <tgmath.h> (p: 545)
- C99 standard (ISO/IEC 9899:1999):
-
- 7.3.9.4 The cproj functions (p: 179)
-
- 7.22 Type-generic math <tgmath.h> (p: 335-337)
-
- G.7 Type-generic math <tgmath.h> (p: 480)
See also
C++ documentation
for
proj
|