#define log( z )
(4) (since C99)1-3) Computes the complex natural (base-e) logarithm of z
with branch cut along the negative real axis.
Type-generic macro: If
z
has type
long double complex,
clogl
is called. if
z
has type
double complex,
clog
is called, if
z
has type
float complex,
clogf
is called. If
z
is real or integer, then the macro invokes the corresponding real function (
logf,
log,
logl). If
z
is imaginary, the corresponding complex number version is called.
[edit] Parameters [edit] Return valueIf no errors occur, the complex natural logarithm of z
is returned, in the range of a strip in the interval [âiÏ, +iÏ] along the imaginary axis and mathematically unbounded along the real axis.
Errors are reported consistent with math_errhandling
If the implementation supports IEEE floating-point arithmetic,
z
is -0+0i
, the result is -â+Ïi
and FE_DIVBYZERO is raisedz
is +0+0i
, the result is -â+0i
and FE_DIVBYZERO is raisedz
is x+âi
(for any finite x), the result is +â+Ïi/2
z
is x+NaNi
(for any finite x), the result is NaN+NaNi
and FE_INVALID may be raisedz
is -â+yi
(for any finite positive y), the result is +â+Ïi
z
is +â+yi
(for any finite positive y), the result is +â+0i
z
is -â+âi
, the result is +â+3Ïi/4
z
is +â+âi
, the result is +â+Ïi/4
z
is 屉+NaNi
, the result is +â+NaNi
z
is NaN+yi
(for any finite y), the result is NaN+NaNi
and FE_INVALID may be raisedz
is NaN+âi
, the result is +â+NaNi
z
is NaN+NaNi
, the result is NaN+NaNi
The natural logarithm of a complex number z with polar coordinate components (r,θ) equals ln r + i(θ+2nÏ), with the principal value ln r + iθ
[edit] Example#include <stdio.h> #include <math.h> #include <complex.h> int main(void) { double complex z = clog(I); // r = 1, θ = pi/2 printf("2*log(i) = %.1f%+fi\n", creal(2*z), cimag(2*z)); double complex z2 = clog(sqrt(2)/2 + sqrt(2)/2*I); // r = 1, θ = pi/4 printf("4*log(sqrt(2)/2+sqrt(2)i/2) = %.1f%+fi\n", creal(4*z2), cimag(4*z2)); double complex z3 = clog(-1); // r = 1, θ = pi printf("log(-1+0i) = %.1f%+fi\n", creal(z3), cimag(z3)); double complex z4 = clog(conj(-1)); // or clog(CMPLX(-1, -0.0)) in C11 printf("log(-1-0i) (the other side of the cut) = %.1f%+fi\n", creal(z4), cimag(z4)); }
Output:
2*log(i) = 0.0+3.141593i 4*log(sqrt(2)/2+sqrt(2)i/2) = 0.0+3.141593i log(-1+0i) = 0.0+3.141593i log(-1-0i) (the other side of the cut) = 0.0-3.141593i[edit] References
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4