carg
Retrieve the argument of a complex number, with a branch cut along the negative real axis.
Interface Definition
C interface:
float cargf(float complex x);
double carg(double complex x);
long double cargl(long double complex x);
Parameters
Parameter |
Type |
Description |
Input/Output |
|---|---|---|---|
x |
|
Floating-point value of the input data. |
Input |
Return Value
- The argument y of a complex number is returned, with a branch cut along the negative real axis. y ∈ [–π, +π]
- The special values are listed in the following table.
Real Part of the Input (real)
Imaginary Part of the Input (imag)
Output Value (y)
+0
+0
+0
+0
-0
-0
+0
inf
π/2
+0
-inf
–π/2
+0
SNaN
NaN
+0
–SNaN
NaN
+0
QNaN
NaN
+0
–QNaN
NaN
-0
+0
π
-0
-0
–π
-0
inf
π/2
-0
-inf
–π/2
-0
SNaN
NaN
-0
–SNaN
NaN
-0
QNaN
NaN
-0
–QNaN
NaN
inf
+0
+0
inf
-0
-0
inf
inf
π/4
inf
-inf
–π/4
inf
SNaN
NaN
inf
–SNaN
NaN
inf
QNaN
NaN
inf
–QNaN
NaN
-inf
+0
π
-inf
-0
–π
-inf
inf
3*π/4
-inf
-inf
–3*π/4
-inf
SNaN
NaN
-inf
–SNaN
NaN
-inf
QNaN
NaN
-inf
–QNaN
NaN
SNaN
+0
NaN
SNaN
-0
NaN
SNaN
inf
NaN
SNaN
-inf
NaN
SNaN
SNaN
NaN
SNaN
–SNaN
NaN
SNaN
QNaN
NaN
SNaN
–QNaN
NaN
–SNaN
+0
NaN
–SNaN
-0
NaN
–SNaN
inf
NaN
–SNaN
-inf
NaN
–SNaN
SNaN
NaN
–SNaN
–SNaN
NaN
–SNaN
QNaN
NaN
–SNaN
–QNaN
NaN
QNaN
+0
NaN
QNaN
-0
NaN
QNaN
inf
NaN
QNaN
-inf
NaN
QNaN
SNaN
NaN
QNaN
–SNaN
NaN
QNaN
QNaN
NaN
QNaN
–QNaN
NaN
–QNaN
+0
NaN
–QNaN
-0
NaN
–QNaN
inf
NaN
–QNaN
-inf
NaN
–QNaN
SNaN
NaN
–QNaN
–SNaN
NaN
–QNaN
QNaN
NaN
–QNaN
–QNaN
NaN
Dependency
C: "km.h"
Example
// typical usage
double x1 = INFINITY, y1 = INFINITY;
double x2 = -INFINITY, y2 = 0;
double x3 = 0, y3 = -INFINITY;
double x4 = NAN, y4 = NAN;
double x5 = 0, y5 = 0;
// print result
printf("/*\n");
printf(" * carg(%.2f + %.2f*I) = %.6f\n", x1, y1, carg(__builtin_complex(x1, y1)));
printf(" * carg(%.2f + %.2f*I) = %.6f\n", x2, y2, carg(__builtin_complex(x2, y2)));
printf(" * carg(%.2f + %.2f*I) = %.6f\n", x3, y3, carg(__builtin_complex(x3, y3)));
printf(" * carg(%.2f + %.2f*I) = %.6f\n", x4, y4, carg(__builtin_complex(x4, y4)));
printf(" * carg(%.2f + %.2f*I) = %.6f\n", x5, y5, carg(__builtin_complex(x5, y5)));
/*
* carg(inf + inf*I) = 0.785398
* carg(-inf + 0.00*I) = 3.141593
* carg(0.00 + -inf*I) = -1.570796
* carg(nan + nan*I) = nan
* carg(0.00 + 0.00*I) = 0.000000
**/