名前空間
変種
操作

std::exp(std::complex)

From cppreference.com
< cpp‎ | numeric‎ | complex
 
 
 
 
ヘッダ <complex> で定義
template< class T >
std::complex<T> exp( const std::complex<T>& z );

z の e(ネイピア数、2.7182818)を z 乗した値を計算します。

目次

[編集] 引数

z - complex value

[編集] 戻り値

エラーが発生しない場合、z の e 乗、ez
、が返されます。

[編集] エラー処理と特殊な値

エラーは math_errhandling と一致する方法で報告される。

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

  • std::exp(std::conj(z)) == std::conj(std::exp(z))
  • z が (±0,+0) の場合、結果は (1,+0) です。
  • z が (x,+∞)(任意の有限 x)の場合、結果は (NaN,NaN) となり、FE_INVALID が発生します。
  • z が (x,NaN)(任意の有限 x)の場合、結果は (NaN,NaN) となり、FE_INVALID が発生する場合があります。
  • もし z(+∞,+0) なら、結果は (+∞,+0) です。
  • z が (-∞,y)(任意の有限 y)の場合、結果は +0cis(y) となります。
  • z が (+∞,y)(任意の有限非ゼロ y)の場合、結果は +∞cis(y) となります。
  • z が (-∞,+∞) の場合、結果は (±0,±0)(符号は不定)となります。
  • z が (+∞,+∞) の場合、結果は (±∞,NaN) となり、FE_INVALID が発生します(実数部の符号は不定)。
  • z が (-∞,NaN) の場合、結果は (±0,±0)(符号は不定)となります。
  • z が (+∞,NaN) の場合、結果は (±∞,NaN)(実数部の符号は不定)となります。
  • もし z(NaN,+0) の場合、結果は (NaN,+0) です。
  • z が (NaN,y)(任意の非ゼロ y)の場合、結果は (NaN,NaN) となり、FE_INVALID が発生する場合があります。
  • z(NaN,NaN) の場合、結果は (NaN,NaN)

ここで、cis(y)cos(y) + i sin(y) です。

[編集] 注記

複素指数関数 ez
は、z = x+iy の場合、ex
cis(y)
、すなわち ex
(cos(y) + i sin(y))
と等しくなります。

指数関数は複素平面における「整関数」であり、分岐切り込みを持ちません。

実数部が 0 である場合、以下のものは同等の結果になります。

この場合、exp は約 4.5 倍遅くなる可能性があります。実数部がリテラルの 0 である引数で exp を呼び出す代わりに、他の形式のいずれかを使用すべきです。ただし、z.real() == 0 を実行時チェックで回避しようとしても、メリットはありません。

[編集]

#include <cmath>
#include <complex>
#include <iostream>
 
int main()
{
   const double pi = std::acos(-1.0);
   const std::complex<double> i(0.0, 1.0);
 
   std::cout << std::fixed << " exp(i * pi) = " << std::exp(i * pi) << '\n';
}

出力

exp(i * pi) = (-1.000000,0.000000)

[編集] 関連項目

複素数の自然対数、分枝切断は負の実軸に沿う
(関数テンプレート) [編集]
(C++11)(C++11)
与えられたべき乗に累乗した e を返す (ex)
(関数) [編集]
valarrayの各要素に関数std::expを適用する
(function template) [編集]
大きさと偏角から複素数を構築する
(関数テンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)