% Function EXP, EXPT
Function EXP, EXPT
exp number => result
expt base-number power-number => result
number - 数
base-number - 数
power-number - 数
result - 数
expは、eのnumber乗を返却します。
ただしeは自然対数の底です。
expにはブランチカットはありません。
exptはbase-numberのpower-number乗を返却します。
もしbase-numberが有理数であり、
かつpower-numberが整数のとき、
計算は正確に行われ、
返却値はおそらく型rationalになります。
それ以外のときは、結果は浮動小数の近似になるでしょう。
exptが有理数の複素数に対して整数のべき乗を求めるとき、
計算は正確に行われなければならず、
その結果は(or rational (complex rational))の型になります。
exptの結果は、引数が複素数ではないときでさえ、
もしbase-numberが負でありpower-numberが整数ではないときに、
その結果は複素数になれます。
例えば、(expt -8 1/3)は-2が-8の立方根であるとしても、
-2を返却することは許されません。
その主な立方根は#C(1.0 1.73205)に等しくなるような複素数の近似であり、
-2ではありません。
exptはb^{x} = e^{x log b}として定義されます。
この定義は主な返却値として正確です。
exptの範囲は複素平面全体です。
これをbを固定としたxの関数としてみたとき、
ブランチカットはありません。
xを固定としたbの関数としてみたとき、
一般的には負の実軸にそって第2象限へ続くブランチカットが存在します。
この領域は原点を排他します。
定義により0^0=1です。
もしb=0であり実部xが厳密に正であるときb^x=0です。
その他の全ての値xに対して0^xはエラーです。
power-numberが整数の0のとき、
base-numberが(どんな型であれ)0のときでさえ、
その結果はbase-numberの型の1になります。
つまり下記のようになります。
(expt x 0) == (coerce 1 (type-of x))
power-numberがその他の型のゼロのとき、
その結果もまた1になりますが、
その型は12.1.1.2. 数値演算の伝染に記載されている伝染の規則を適用したあとの
引数の型になります。
ただしひとつ例外があり、base-numberがゼロであり、
power-numberが整数の型ではないゼロのときの結果は未定義です。
(exp 0) => 1.0
(exp 1) => 2.718282
(exp (log 5)) => 5.0
(expt 2 8) => 256
(expt 4 .5) => 2.0
(expt #c(0 1) 2) => -1
(expt #c(2 2) 3) => #C(-16 16)
(expt #c(2 2) 4) => -64
なし。
なし。
log,
12.1.3.3. 浮動小数の代替可能性の規則
exptの実装は、
power-numberの型がrationalのときと
power-numberの型がfloatのときで
違うアルゴリズムを使用することが許されます。
下記のロジックでは、(sqrt (expt x 3))と (expt x 3/2)が
等価ではないことに注意してください。
(setq x (exp (/ (* 2 pi #c(0 1)) 3))) ;exp(2.pi.i/3)
(expt x 3) => 1 ;丸め誤差を考慮しない
(sqrt (expt x 3)) => 1 ;丸め誤差を考慮しない
(expt x 3/2) => -1 ;丸め誤差を考慮しない