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