Math 組込みオブジェクトこの章では組込み変数領域が初めから備えている
Math 組込みオブジェクトを定義する。
Math は、各種数学関数をメソッドとして提供する。
この章において、e
はネイピア数を、i は虚数単位を、π は円周率を表す。また、文中の #Script コードにおいて、
Math. を省略することがある (例えば abs メンバの定義に
sqrt[abs2[z]] とあるのは、正確には
Math.sqrt[Math.abs2[z]] を意味する)。
Float オブジェクトに関する演算この章で定義する各関数の結果の値に Float
オブジェクトが含まれるとき、そのオブジェクトの
value および absolutePrecision
内部メンバの具体的な値は別項で定める通りとする (→Float
オブジェクトの精度)。
以下、Number オブジェクトと、それが表す数値とを同一視する。
Real オブジェクト (が表す値) v
に対して、その絶対精度を ap(v) と、その相対精度を rp(v)
と書く。ただし、Integer オブジェクトおよび Rational
オブジェクトが表す値の絶対精度および相対精度は無限大であると見なす。
上記の規則は Number、
Real、
Integer、
Rational、
Float、
Complex、
Infinity、
NaN
の各組込みオブジェクトの定義において準用する。
Math のプロパティeFloat オブジェクト。このオブジェクトの
表す値の絶対精度は、実際にこのプロパティに対して get-property
を行ったときの実行コンテクストのデフォルトの精度に従う。(よって、このプロパティの値は不変ではない)piFloat オブジェクト。このオブジェクトの
表す値の絶対精度は、実際にこのプロパティに対して get-property
を行ったときの実行コンテクストのデフォルトの精度に従う。(よって、このプロパティの値は不変ではない)abs メソッド@[x] { x.Math$abs[] }abs2 メソッド@[x] { x.Math$abs2[] }re メソッド@[x] { x.Math$re[] }im メソッド@[x] { x.Math$im[] }conj メソッド@[x] { x.Math$conj[] }arg メソッド@[x] { x.Math$arg[] }sign メソッド@[x] { x.Math$sign[] }exp メソッド@[x] { x.Math$exp[] }log メソッドv.Math$log[] の評価と同様にして引数オブジェクトの Math$log
メソッドを引数無しで呼出し、その結果を返す。Integer オブジェクトまたは Rational
オブジェクト a, b で、a と b
の値がどちらも正であり、式 ae = b
を満たす有理数 e がちょうど一つ存在するならば、[[その有理数
e を表す Rational オブジェクト]]
を返す。ただし、e が整数ならば、Rational
オブジェクトではなく Integer
オブジェクトを返しても良い。特に、a と b が共に
Integer オブジェクトであってかつ e が整数ならば、
必ず Integer オブジェクトを返さなければならない。Number オブジェクト a, b
で、前項に当てはまらない場合は、log[b] /
log[a] の結果を返す。ただし、a と b
の一方が Complex オブジェクトでもう一方が Real
オブジェクトならば、Real オブジェクトを Complex
オブジェクトに拡大変換してから計算を行う。log10 メソッドNumber オブジェクト z
ならば、log[10, z]
の結果を返す。sqrt メソッドNumber オブジェクト z
ならば、z ^ /2 の結果を返す。(→冪算)cbrt メソッドNumber オブジェクト z
ならば、z ^ /3 の結果を返す。(→冪算)sin メソッド@[x] { x.Math$sin[] }cos メソッド@[x] { x.Math$cos[] }tan メソッド@[x] { x.Math$tan[] }asin メソッド@[x] { x.Math$asin[] }acos メソッド@[x] { x.Math$acos[] }atan メソッドv.Math$atan[] の評価と同様にして引数オブジェクトの
Math$atan メソッドを引数無しで呼出し、その結果を返す。Real オブジェクト x, y
ならば、次の動作を行う:
NaN
オブジェクト]] を返す。Float オブジェクト]] を、y < 0 ならば
[[−π / 2 の値を表す Float
オブジェクト]] を、返す。ただし、結果の絶対精度は
ap(x) + log10|y| とする。atan[y / x] の結果を v
とする。Float オブジェクト]]
を、さもなくば [[v − π の値を表す
Float オブジェクト]] を返す。結果の絶対精度は
v のそれに一致するものとする。Number
オブジェクトならば、下表に定める結果を返す。
| 第一引数 | 第二引数 | 結果 |
|---|---|---|
| +∞ | Real | atan[1, 0] の結果 |
| −∞ | Real | atan[-1, 0] の結果 |
| Real | +∞ | atan[0, 1] の結果 |
| Real | −∞ | atan[0, -1] の結果 |
| +∞/−∞ | +∞/−∞ | NaN |
| NaN | 任意 | NaN |
| 任意 | NaN | NaN |
| その他 | 規定しない | |
sinh メソッド@[x] { x.Math$sinh[] }cosh メソッド@[x] { x.Math$cosh[] }tanh メソッド@[x] { x.Math$tanh[] }asinh メソッド@[x] { x.Math$asinh[] }acosh メソッド@[x] { x.Math$acosh[] }atanh メソッド@[x] { x.Math$atanh[] }sum メソッドNumberOfArgumentsError のインスタンスを投げる。v1 + v2 + … +
vn を評価し、その結果を返す。prod メソッドNumberOfArgumentsError のインスタンスを投げる。v1 * v2 * … *
vn を評価し、その結果を返す。and メソッドNumberOfArgumentsError のインスタンスを投げる。and メソッドを、
v1 を @this 値とし、
v2, v3, …,
vn を引数として関数として呼出し、
その結果を返す。ただし、v1 が and
メソッドを持たなければ、エラーとする。or メソッドNumberOfArgumentsError のインスタンスを投げる。or メソッドを、
v1 を @this 値とし、
v2, v3, …,
vn を引数として関数として呼出し、
その結果を返す。ただし、v1 が or
メソッドを持たなければ、エラーとする。xor メソッドNumberOfArgumentsError のインスタンスを投げる。xor メソッドを、
v1 を @this 値とし、
v2, v3, …,
vn を引数として関数として呼出し、
その結果を返す。ただし、v1 が xor
メソッドを持たなければ、エラーとする。not メソッドNumberOfArgumentsError のインスタンスを投げる。not メソッドを、
v1 を @this 値とし、
v2, v3, …,
vn を引数として関数として呼出し、
その結果を返す。ただし、v1 が not
メソッドを持たなければ、エラーとする。floor メソッド@[x] { x.Math$floor[] }ceil メソッド@[x] { x.Math$ceil[] }Math の内部メンバ$prototypeObject.prototypeMath の関数としての呼出しMath は、関数として呼出し可能ではない。