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
のプロパティe
Float
オブジェクト。このオブジェクトの
表す値の絶対精度は、実際にこのプロパティに対して get-property
を行ったときの実行コンテクストのデフォルトの精度に従う。(よって、このプロパティの値は不変ではない)pi
Float
オブジェクト。このオブジェクトの
表す値の絶対精度は、実際にこのプロパティに対して 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
の内部メンバ$prototype
Object.prototype
Math
の関数としての呼出しMath
は、関数として呼出し可能ではない。