std:: log (std::complex)
|
ヘッダーで定義
<complex>
|
||
|
template
<
class
T
>
std:: complex < T > log ( const std:: complex < T > & z ) ; |
||
複素値 z の複素 自然(底 e )対数 を計算します。負の実軸に沿って分岐切断があります。
目次 |
パラメータ
| z | - | 複素数値 |
戻り値
エラーが発生しない場合、複素数の自然対数が z として返されます。その値は虚軸に沿って区間 [−iπ, +iπ] 内の帯状領域に含まれ、実軸に沿っては数学的に非有界となります。
エラーハンドリングと特殊値
エラーの報告は math_errhandling に従って行われます。
IEEE浮動小数点演算がサポートされている実装の場合、
- この関数は虚部の符号を考慮して分岐切断線上で連続である
- std:: log ( std:: conj ( z ) ) == std:: conj ( std:: log ( z ) )
-
z
が
(-0,+0)の場合、結果は(-∞,π)となり、 FE_DIVBYZERO が発生する -
z
が
(+0,+0)の場合、結果は(-∞,+0)となり、 FE_DIVBYZERO が発生する -
z
が
(x,+∞)(任意の有限のxについて)の場合、結果は(+∞,π/2) -
z
が
(x,NaN)(任意の有限のxについて)の場合、結果は(NaN,NaN)となり、 FE_INVALID が発生する可能性がある -
z
が
(-∞,y)(任意の有限の正のyについて)の場合、結果は(+∞,π) -
z
が
(+∞,y)(任意の有限の正のyについて)の場合、結果は(+∞,+0) -
z
が
(-∞,+∞)の場合、結果は(+∞,3π/4) -
z
が
(+∞,+∞)の場合、結果は(+∞,π/4) -
z
が
(±∞,NaN)の場合、結果は(+∞,NaN) -
z
が
(NaN,y)(任意の有限のyについて)の場合、結果は(NaN,NaN)となり、 FE_INVALID が発生する可能性がある -
z
が
(NaN,+∞)の場合、結果は(+∞,NaN) -
z
が
(NaN,NaN)の場合、結果は(NaN,NaN)
注記
極座標成分 (r,θ) を持つ複素数 z の自然対数は、 ln r + i(θ+2nπ) に等しく、その主値は ln r + iθ です。
この関数のセマンティクスは、C関数 clog と一貫性を保つことを意図しています。
例
#include <cmath> #include <complex> #include <iostream> int main() { std::complex<double> z {0.0, 1.0}; // r = 1, θ = pi / 2 std::cout << "2 * log" << z << " = " << 2.0 * std::log(z) << '\n'; std::complex<double> z2 {sqrt(2.0) / 2, sqrt(2.0) / 2}; // r = 1, θ = pi / 4 std::cout << "4 * log" << z2 << " = " << 4.0 * std::log(z2) << '\n'; std::complex<double> z3 {-1.0, 0.0}; // r = 1, θ = pi std::cout << "log" << z3 << " = " << std::log(z3) << '\n'; std::complex<double> z4 {-1.0, -0.0}; // the other side of the cut std::cout << "log" << z4 << " (the other side of the cut) = " << std::log(z4) << '\n'; }
出力例:
2 * log(0,1) = (0,3.14159) 4 * log(0.707107,0.707107) = (0,3.14159) log(-1,0) = (0,3.14159) log(-1,-0) (the other side of the cut) = (0,-3.14159)
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 2597 | C++98 | 仕様が符号付きゼロの虚数部を誤って扱う | 誤った要件を削除 |
関連項目
|
負の実軸に沿って分岐切断を持つ複素数の常用対数
(関数テンプレート) |
|
|
複素数の底
e
の指数関数
(関数テンプレート) |
|
|
(C++11)
(C++11)
|
自然対数(底
e
)を計算する(
ln(x)
)
(関数) |
|
関数
std::log
をvalarrayの各要素に適用する
(関数テンプレート) |
|
|
Cドキュメント
for
clog
|
|