(rontolisp) docs
← cl パッケージの関数

expt

(expt base power)

base の power 乗を返します。整数の引数では結果は正確な整数になり ((expt 2 10) は 1024)、負の整数の指数は逆数を返します ((expt 2 -1) は 1/2)。どちらかの引数が浮動小数点数なら -- あるいは指数が比なら -- 結果は浮動小数点数になり、分数の指数 ((expt 2 0.5)、(expt 10000.0 0.75)) はどのバックエンドでも動作します。振り分けは実行時の値で行われるため、実行時に計算された指数もリテラルと同じように振る舞います。浮動小数点数や分数の指数はどのバックエンドでも fdlibm の pow なので(数学関数のバックエンド)、桁はどこでも一致します。負の底を整数でない指数で累乗すると実数直線を離れ、NaN ではなく複素平面の値を返します: (expt -8 1/3) は #C(1.0000000000000002 1.7320508075688772) で、絶対値 |base|^power を power * pi ラジアン回転させたものです。整数の指数は -- 2.0 のような整数値の浮動小数点数も含めて -- 底の符号によらず実数のままなので、(expt -8.0 2.0) は 64.0 です。正確な 0 を負の整数で累乗すると division-by-zero を通知します ((expt 0 -1))。結果が浮動小数点数になる場合は IEEE 754 に従うので、(expt 0 -1.5)、(expt 0 -1/2)、(expt 0.0 -1) は無限大です。複素数の底を有理数で累乗すると、SBCL と同じく絶対値 |base|^power を power * (phase base) ラジアン回転させた値になるので、-0.0 の部分が保たれます: (expt #c(0.0 -0.0) 2) は #C(0.0 -0.0)、(expt #c(1.5 -0.0) 3) は #C(3.375 -0.0) です。正確な複素数を整数で累乗すると正確なままで ((expt #c(1 2) 3) は #C(-11 -2))、指数が 0 なら常に #C(1.0 0.0) です。0 の底を浮動小数点数か複素数で累乗すると、指数の実部が正なら 0 (両方の引数が正確なら正確な 0、そうでなければ #C(0.0 0.0)) になります。それ以外のそうした指数では値が存在せず、IEEE の #C(NaN NaN) を返します。4 つすべてのバックエンドで動作します。