Function EXP, EXPT

UP


Function EXP, EXPT

Function EXP, EXPT

構文

exp number => result
expt base-number power-number => result

引数と戻り値

number - 数
base-number - 数
power-number - 数
result - 数

定義

expexptは、べき乗を計算します。

expは、enumber乗を返却します。 ただしeは自然対数の底です。 expにはブランチカットはありません。

exptbase-numberpower-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ではありません。

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

TOP, Github