% 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 ;丸め誤差を考慮しない