Namespaces
Variants

clogf, clog, clogl

From cppreference.net
ヘッダー <complex.h> で定義
float complex clogf ( float complex z ) ;
(1) (C99以降)
double complex clog ( double complex z ) ;
(2) (C99以降)
long double complex clogl ( long double complex z ) ;
(3) (C99以降)
ヘッダー <tgmath.h> で定義
#define log( z )
(4) (C99以降)
1-3) 負の実軸に分岐切断を持つ z の複素自然(底 e )対数を計算します。
4) 型総称マクロ: z の型が long double complex の場合、 clogl が呼び出される。 z の型が double complex の場合、 clog が呼び出される。 z の型が float complex の場合、 clogf が呼び出される。 z が実数または整数の場合、マクロは対応する実数関数( logf log logl )を呼び出す。 z が虚数の場合、対応する複素数版が呼び出される。

目次

パラメータ

z - 複素引数

戻り値

エラーが発生しない場合、複素数の自然対数が返されます。その範囲は、虚軸に沿って区間 [−iπ, +iπ] 内の帯状領域であり、実軸に沿って数学的に非有界です。

エラーハンドリングと特殊値

エラーは math_errhandling に従って報告されます

IEEE浮動小数点演算がサポートされている実装の場合、

  • この関数は虚部の符号を考慮して分岐切断線上で連続です
  • clog ( conj ( z ) ) == conj ( clog ( z ) )
  • z -0+0i の場合、結果は -∞+πi となり、 FE_DIVBYZERO が発生します
  • z +0+0i の場合、結果は -∞+0i となり、 FE_DIVBYZERO が発生します
  • z x+∞i (任意の有限のxについて)の場合、結果は +∞+πi/2 となります
  • z x+NaNi (任意の有限のxについて)の場合、結果は NaN+NaNi となり、 FE_INVALID が発生する可能性があります
  • z -∞+yi (任意の有限の正のyについて)の場合、結果は +∞+πi となります
  • z +∞+yi (任意の有限の正のyについて)の場合、結果は +∞+0i となります
  • z -∞+∞i の場合、結果は +∞+3πi/4 となります
  • z +∞+∞i の場合、結果は +∞+πi/4 となります
  • z ±∞+NaNi の場合、結果は +∞+NaNi となります
  • z NaN+yi (任意の有限のyについて)の場合、結果は NaN+NaNi となり、 FE_INVALID が発生する可能性があります
  • z NaN+∞i の場合、結果は +∞+NaNi となります
  • z NaN+NaNi の場合、結果は NaN+NaNi となります

注記

複素数の自然対数 z は、極座標成分 (r,θ) を持つ場合、 ln r + i(θ+2nπ) に等しく、主値は ln r + iθ となります

#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));
}

出力:

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

参考文献

  • C11標準 (ISO/IEC 9899:2011):
  • 7.3.7.2 clog関数 (p: 195)
  • 7.25 型総称数学 <tgmath.h> (p: 373-375)
  • G.6.3.2 clog関数 (p: 543-544)
  • G.7 型総称数学 <tgmath.h> (p: 545)
  • C99標準 (ISO/IEC 9899:1999):
  • 7.3.7.2 clog関数 (p: 176-177)
  • 7.22 型総称数学 <tgmath.h> (p: 335-337)
  • G.6.3.2 clog関数 (p: 478-479)
  • G.7 型総称数学 <tgmath.h> (p: 480)

関連項目

(C99) (C99) (C99)
複素数の底eの指数関数を計算する
(関数)
(C99) (C99)
自然(底 e )対数( ln(x) )を計算する
(関数)