cexpf, cexp, cexpl - cppreference.com (original) (raw)
| Defined in header <complex.h> | ||
|---|---|---|
| float complex cexpf( float complex z ); | (1) | (since C99) |
| double complex cexp( double complex z ); | (2) | (since C99) |
| long double complex cexpl( long double complex z ); | (3) | (since C99) |
| Defined in header <tgmath.h> | ||
| #define exp( z ) | (4) | (since C99) |
1-3) Computes the complex base-e exponential of z.
- Type-generic macro: If
zhas type long double complex,cexplis called. ifzhas type double complex,cexpis called, ifzhas type float complex,cexpfis called. Ifzis real or integer, then the macro invokes the corresponding real function (expf, exp, expl). Ifzis imaginary, the corresponding complex argument version is called.
Contents
- 1 Parameters
- 2 Return value
- 3 Error handling and special values
- 4 Notes
- 5 Example
- 6 References
- 7 See also
[edit] Parameters
[edit] Return value
If no errors occur, e raised to the power of z, \(\small e^z\)ez
is returned.
[edit] Error handling and special values
Errors are reported consistent with math_errhandling.
If the implementation supports IEEE floating-point arithmetic,
- cexp(conj(z)) == conj(cexp(z))
- If
zis±0+0i, the result is1+0i - If
zisx+∞i(for any finite x), the result isNaN+NaNiand FE_INVALID is raised. - If
zisx+NaNi(for any finite x), the result isNaN+NaNiand FE_INVALID may be raised. - If
zis+∞+0i, the result is+∞+0i - If
zis-∞+yi(for any finite y), the result is+0cis(y) - If
zis+∞+yi(for any finite nonzero y), the result is+∞cis(y) - If
zis-∞+∞i, the result is±0±0i(signs are unspecified) - If
zis+∞+∞i, the result is±∞+NaNiand FE_INVALID is raised (the sign of the real part is unspecified) - If
zis-∞+NaNi, the result is±0±0i(signs are unspecified) - If
zis+∞+NaNi, the result is±∞+NaNi(the sign of the real part is unspecified) - If
zisNaN+0i, the result isNaN+0i - If
zisNaN+yi(for any nonzero y), the result isNaN+NaNiand FE_INVALID may be raised - If
zisNaN+NaNi, the result isNaN+NaNi
where \(\small{\rm cis}(y)\)cis(y) is \(\small \cos(y)+{\rm i}\sin(y)\)cos(y) + i sin(y)
[edit] Notes
The complex exponential function \(\small e^z\)ez
for \(\small z = x + {\rm i}y\)z = x+iy equals \(\small e^x {\rm cis}(y)\)ex
cis(y), or, \(\small e^x (\cos(y)+{\rm i}\sin(y))\)ex
(cos(y) + i sin(y))
The exponential function is an entire function in the complex plane and has no branch cuts.
[edit] Example
#include <stdio.h> #include <math.h> #include <complex.h> int main(void) { double PI = acos(-1); double complex z = cexp(I * PI); // Euler's formula printf("exp(i*pi) = %.1f%+.1fi\n", creal(z), cimag(z)); }
Output:
[edit] References
C11 standard (ISO/IEC 9899:2011):
7.3.7.1 The cexp functions (p: 194)
7.25 Type-generic math <tgmath.h> (p: 373-375)
G.6.3.1 The cexp functions (p: 543)
G.7 Type-generic math <tgmath.h> (p: 545)
C99 standard (ISO/IEC 9899:1999):
7.3.7.1 The cexp functions (p: 176)
7.22 Type-generic math <tgmath.h> (p: 335-337)
G.6.3.1 The cexp functions (p: 478)
G.7 Type-generic math <tgmath.h> (p: 480)