JIS X 3012:1998 プログラム言語ISLISP | ページ 13

56
X 3012 : 1998 (ISO/IEC 13816 : 1997)
(- x+) →<number> 関数
関数-は,1個の引数xが与えられると,符号を反転した値を返す。xが数値でない場合は,エラーが発
生する(エラー名domain-error)。
処理系が-0.0と0.0とを区別する場合は, (- 0.0) は-0.0を返す。処理系が-0.0と0.0とを区別しない場合
は, (- 0.0) は0.0を返す。
例 (- 1) ⇒ -1
(- -4.0) ⇒ 4.0
(- 4.0) ⇒ -4.0
(eql (- 0.0) -0.0) ⇒ t
(eql (- -0.0) 0.0) ⇒ t
2個以上の引数x1...xnが与えられた場合は,関数-は,それらの連続した差x1-x2-... -xnを返す。xのいずれ
かが数値でない場合は,エラーが発生する(エラー名domain-error)。
例 (- 1 2) ⇒ -1
(- 92 43) ⇒ 49
(- 2.3 -3.0) ⇒ 5.3
(- 0.0 0.0) ⇒ 0.0
(- 3 4 5) ⇒ -6
(reciproca1 x) →<number> 関数
(quotient dividend divisor+) →<number> 関数
関数reciprocalは,引数xの逆数,すなわち,1/xを返す。xがゼロである場合は,エラーが発生する(エ
ラー名 division-by-zero)。
関数quotientは,2個の引数dividend及びdivisorを与えられると,それらの数値の商を返す。結果は,
dividend及びdivisorがいずれも整数で,dividendがdivisorで割り切れるなら,整数とし,そうでなければ
浮動小数点数とする。
3個以上の引数が与えられた場合は,quotientは,dividend / divisor1 / ... / divisornというように,各divisor
に繰り返し作用する。3引数以上のquotientは次のとおり定義できるので,結果の型は2引数の場合に従
う。
(quotient dividend divisor1 divisor2...)
≡(quotient (quotient dividend divisor1) ivisor2...)
dividendが数値でない場合は,エラーが発生する(エラー名domain-error)。divisorのいずれかが数値で
ない場合は,エラーが発生する(エラー名domain-error)。いずれかのdivisorがゼロである場合は,エラー
が発生する(エラー名division-by-zero)。
例 (reciproca1 2) ⇒ 0.5
(quotient 10 5) ⇒2
(quotient 1 2) ⇒ 0.5
(quotient 2 -0.5) ⇒ -4.0
(quotient 0 0.0) エラーが発生する。

――――― [JIS X 3012 pdf 61] ―――――

                                                                                             57
X 3012 : 1998 (ISO/IEC 13816 : 1997)
(quotient 2 3 4) ⇒ 0.16666666666666666
(max x+) →<number> 関数
(min x+) →<number> 関数
関数minは,引数の中で最小の値(負の無限大に最も近い値)を返す。比較は,<によって行う。
関数maxは,引数の中で最大の値(正の無限大に最も近い値)を返す。比較は,>によって行う。
xのいずれかが数値でない場合は,エラーが発生する(エラー名domain-error)。
例 (max -5 3) ⇒3
(max 2.0 3) ⇒3
(max 2 2.0) ⇒ 2又は2.0 (処理系定義)
(max 1 5 2 4 3) ⇒5
(min 3 1) ⇒1
(min 1 2.0) ⇒1
(min 2 2.0) ⇒ 2又は2.0 (処理系定義)
(min 1 5 2 4 3 ) ⇒1
(abs x) →<number> 関数
関数absは,引数の絶対値を返す。xが数値でない場合は,エラーが発生する(エラー名domain-error)。
例 (abs -3) ⇒3
(abs 2.0) ⇒ 2.0
(abs -0.0) ⇒ 0.0
(exp x) →<number> 関数
関数expは,eのx乗を返す。ここで,eは,自然対数の底とする。xが数値でない場合は,エラーが発
生する(エラー名domain-error)。
例 (exp 1) ⇒ 2.718281828459045
(exp 2) ⇒ 7.38905609893065
(exp 1.23) ⇒ 3.4212295362896734
(exp 0) ⇒ 1又は1.0(処理系定義)
(log x) →<number> 関数
関数logは,xの自然対数を返す。xが正の数値でない場合は,エラーが発生する(エラー名domain-error)。
例 (log 2.718281828459045) ⇒ 1.0
(log 10) ⇒ 2.302585092994046
(log 1) ⇒ 0又は0.0 (処理系定義)
(expt x1 x2) →<number> 関数
関数exptは,x1のx2乗を返す。x1が整数でx2が非負整数ならば,結果は整数とする。x1がゼロでx2が
負,x1がゼロでx2が浮動小数点数のゼロ,又はx1が負でx2が整数でない場合は,エラーが発生する。

――――― [JIS X 3012 pdf 62] ―――――

58
X 3012 : 1998 (ISO/IEC 13816 : 1997)
例 (expt 2 3) ⇒8
(expt -100 2) ⇒ 10000
(expt 4 -2) ⇒ 0.0625
(expt 0.5 2) ⇒ 0.25
(expt x 0) ⇒1 xが,整数の場合
(expt x 0) ⇒ 1.0 xが,浮動小数点数の場合
(expt -0.25 -1) ⇒ -4.0
(expt 100 0.5) ⇒ 10.0
(expt 100 -1.5) ⇒ 0.001
(expt x 0.0) ⇒ 1.0 xが,正の浮動小数点数の場合
(expt 0.0 0.0) エラーが発生する。
(sqrt x) →<number> 関数
関数sqrtは,xの正の平方根を返す。xが非負の数値でない場合は,エラーが発生する(エラー名
domain-error)。
例 (sqrt 4) ⇒2
(sqrt 2) ⇒ 1.4142135623730951
(sqrt -1) エラーが発生する。
(sin x) →<number> 関数
(cos x) →<number> 関数
(tan x) →<number> 関数
関数sinは,xの正弦を返す。関数cosは,xの余弦を返す。関数tanは,xの正接を返す。どの場合もx
はラジアンで与える。
xが数値でない場合は,エラーが発生する(エラー名domain-error)。
例 ;; これらの結果における浮動小数点数の精度は,
;; 処理系によって異なる可能性があることに注意せよ。
(sin 1) ⇒ 0.8414709848078965
(sin 0) ⇒ 0又は0.0 (処理系定義)
(sin 0.001) ⇒ 9.999998333333417E-4
(cos 1) ⇒ 0.5403023058681398
(cos 0) ⇒ 1又は1.0 (処理系定義)
(cos 0.001) ⇒ 0.9999995000000417
(tan 1) ⇒ 1.557407724654902
(tan 0) ⇒ 0又は0.0 (処理系定義)
(tan 0.001) ⇒ 0.0010000003333334668
(atan x) →<number> 関数
関数atanは,xの逆正接を返す。

――――― [JIS X 3012 pdf 63] ―――――

                                                                                             59
X 3012 : 1998 (ISO/IEC 13816 : 1997)
結果は,− 一 一 満の数値とする。
xが数値でない場合は,エラーが発生する(エラー名domain-error)。
(atan2 x1 x2) →<number> 関数
関数atan2は,点の直交座標 (x2, x1) を与えられて,その点の極座標の偏角を返す。x1がゼロでx2が負な
ら結果は正とする。x1及びx2がいずれもゼロならば,結果は処理系定義とする。
yの条件 xの条件 座標位置 結果の値域
y=0 x>0 x軸の正方向 0
* y=+0 x>0 x軸の正方向 +0
* y=−0 x>0 x軸の正方向 −0
y>0 x>0 第1象限 0<結果< 一
y>0 x=0 y軸の正方向 一
y>0 x<0 第2象限 一 結果<
y=0 x<0 x軸の負方向
* y=+0 x<0 x軸の負方向
* y=−0 x<0 x軸の負方向 −
y<0 x<0 第3象限 − 結果<− 一
y<0 x=0 y軸の負方向 − 一
y<0 x>0 第4象限 − 一 結果<0
y=0 x=0 原点 処理系定義
* y=+0 x=+0 原点 +0
* y=−0 x=+0 原点 −0
* y=+0 x=−0 原点
* y=−0 x=−0 原点 −
図3 atan2の象限情報
x1又はx2のいずれかが数値でない場合は,エラーが発生する(エラー名domain-error)。
atan2の値は,負のゼロが実装されていなければ,常に- 瀰 瀰 のゼロが実装され
ていれば,- 瀰 に含むものとする。
x1及びx2の符号が象限情報を得るために用いられる。その詳細を図3に示す。この図では,x1をy,x2
をxと表記する。アステリスク (*) は,負のゼロを実装した処理系に適用されることを意味する。
例 (atan2 0 3.0) ⇒ 0又は0.0(処理系定義)
(atan2 1 1) ⇒ 0.7853981633974483
(atan2 1.0 -0.3) ⇒ 1.8622531212727635
(atan2 0.0 -0.5) ⇒ 3.141592653589793
(atan2 -1 -1) ⇒ -2.356194490192345
(atan2 -1.0 0.3) ⇒ -1.2793396
(atan2 0.0 0.5) ⇒ 0.0
(defun asin (x) (atan2 x (sqrt (-1 (expt x 2))))) ⇒ asin
(defun acos (x) (atan2 (sqrt (-1 (expt x 2))) )) ⇒ acos
(defun atan (x) (atan2 x 1)) ⇒ atan

――――― [JIS X 3012 pdf 64] ―――――

60
X 3012 : 1998 (ISO/IEC 13816 : 1997)
(sinh x) →<number> 関数
(cosh x) →<number> 関数
(tanh x) →<number> 関数
関数sinhは,xの双曲線正弦を返す。関数coshは,xの双曲線余弦を返す。関数tanhは,xの双曲線正
接を返す。
xが数値でない場合は,エラーが発生する(エラー名domain-error)。
例 (sinh 1) ⇒ 1.1752011936438014
(sinh 0) ⇒ 0又は0.0 (処理系定義)
(sinh 0.001) ⇒ 0.001000000166666675
(cosh 1) ⇒ 1.5430806348152437
(cosh 0) ⇒ 1又は1.0 (処理系定義)
(cosh 0.001) ⇒ 1.0000005000000416
(tanh 1) ⇒ 0.7615941559557649
(tanh 0) ⇒ 0又は0.0 (処理系定義)
(tanh 0.001) ⇒ 9.999996666668002E-4
(atanh x) →<number> 関数
関数atanhは,xの双曲線逆正接を返す。xが絶対値1未満の数値でない場合は,エラーが発生する(エ
ラー名domain-error)。
例 (atanh 0.5) ⇒ 0.5493061443340549
(atanh 0) ⇒ 0又は0.0 (処理系定義)
(atanh 0.001) ⇒ 0.0010000003333335335
(defun asinh (x) (atanh (quotient x (sqrt (+ 1 (expt x 2)))))) ⇒ asinh
(defun acosh (x) (atanh (quotient (sqrt (* (- x 1) (+ x 1))) ))) ⇒ acosh

11.2 浮動小数点数クラス

 浮動小数点数は,<float>クラスのインスタンスとする。浮動小数点数は,あ
る精度の有理数によって表される(IEEE standard 754参照)。
浮動小数点数の書式は,次のいずれかとする。
[s]dd...d.dd...d
[s]dd...d.dd...dE[s]dd...d
[s]dd...d.dd...de[s]dd...d
[s]dd...dE[s] dd...d
[s]dd...de[s] dd...d
ここで,sは “+” 又は “-” のいずれかとし,dd...dは一つ以上の “0” “9” からなる数字列とする。
*pi*→<float> 名前付き定数
この定数の値は,円周率 瀰溏 似値とする。
例 *pi* ⇒ 3.141592653589793
*most-positive-float*→<float> 名前付き定数

――――― [JIS X 3012 pdf 65] ―――――

次のページ PDF 66

JIS X 3012:1998の引用国際規格 ISO 一覧

  • ISO/IEC 13816:1997(IDT)

JIS X 3012:1998の国際規格 ICS 分類一覧