Complex 組込みオブジェクト

この章では組込み変数領域が初めから備えている Complex 組込みオブジェクトを定義する。

Complex オブジェクトは、スクリプトで扱われる整数を表すオブジェクトである。

Complex のメンバ

prototype
Number.prototype を準プロトタイプとするオブジェクト。
name
文字列オブジェクト "Complex"
zero
Complex オブジェクト。オブジェクトの re プロパティの値と im プロパティの値はどちらも 0 を表す Integer オブジェクトである。
one
Complex オブジェクト。このオブジェクトの re プロパティの値は 1 を表す Integer オブジェクトであり、またこのオブジェクトの im プロパティの値は 0 を表す Integer オブジェクトである。
i
Complex オブジェクト。このオブジェクトの re プロパティの値は 0 を表す Integer オブジェクトであり、またこのオブジェクトの im プロパティの値は 1 を表す Integer オブジェクトである。
conj メソッド
1-ary メソッド。一つの Complex オブジェクトを引数として関数として呼出されると、その引数の conj プロパティを取得してその結果を返す。 上記以外の引数における関数としての呼び出しの動作は規定しない。

Complex の内部メンバ

$prototype
Type.prototype

Complex の関数としての呼出し

Complex は関数として呼出し可能であり、 関数として呼出されると次の処理を実行する:

引数が一つの Number オブジェクト x の場合
x + 0i の結果を返す。
引数が二つの Number オブジェクト x, y の場合
x + y * 1i の結果を返す。
引数が文字列オブジェクト一つの場合
引数である文字列オブジェクトの内容を数値として解釈し、その値を表す Complex オブジェクトを値とする正常終了の結果を返してもよい。 文字列オブジェクトの内容を数値として解釈しないまたはできない場合は、新しい ArgumentError のインスタンスを投げる。 文字列オブジェクトの内容の解釈の方法は実行環境に任せる。
上記以外の引数の場合
規定しない。

Complex オブジェクトのプロパティ

Complex オブジェクトは以下のプロパティを持つ。ただし、reim プロパティ以外のプロパティについては、 Complex.prototype やその準プロトタイプのプロパティが スクリプトの実行によって変更された場合は、この限りではない。

re
Real オブジェクト。この値は複素数の実部を表す。
このプロパティは不変である。
im
Real オブジェクト。この値は複素数の虚部を表す。
このプロパティは不変である。
$get$abs メソッド
Math$abs メソッド
次の関数生成式を評価して得られるような関数オブジェクト: @{ @this.abs2 ^ /2 }
$get$abs2 メソッド
Math$abs2 メソッド
次の関数生成式を評価して得られるような関数オブジェクト: @{ @this.re * @this.re + @this.im * @this.im }
$get$conj メソッド
Math$conj メソッド
次の関数生成式を評価して得られるような関数オブジェクト: @{ @this.re - 1i * @this.im }
Math$re メソッド
次の関数生成式を評価して得られるような関数オブジェクト: @{ @this.re }
Math$im メソッド
次の関数生成式を評価して得られるような関数オブジェクト: @{ @this.im }
$get$arg メソッド
Math$arg メソッド
次の関数生成式を評価して得られるような関数オブジェクト: @{ Math.atan[@this.re, @this.im] }
$get$sign メソッド
Math$sign メソッド
次の関数生成式を評価して得られるような関数オブジェクト: @{ @this == 0 ? 0 : @this / @this.abs }
$get$exp メソッド
Math$exp メソッド
次の関数生成式を評価して得られるような関数オブジェクト: @{ @this.re.exp * (@this.im.cos + 1i * @this.im.sin) }
$get$log メソッド
Math$log メソッド
次の関数生成式を評価して得られるような関数オブジェクト: @{ z == 0i ? @cinf : @this.abs.log + 1i * @this.arg } または @{ z == 0i ? @cinf : @this.abs2.log / 2 + 1i * @this.arg }
$get$sin メソッド
Math$sin メソッド
次の関数生成式を評価して得られるような関数オブジェクト: @{ (@this * 1i).sinh / 1i }
$get$cos メソッド
Math$cos メソッド
次の関数生成式を評価して得られるような関数オブジェクト: @{ (@this * 1i).cosh }
$get$tan メソッド
Math$tan メソッド
次の関数生成式を評価して得られるような関数オブジェクト: @{ (@this * 1i).tanh / 1i }
$get$asin メソッド
Math$asin メソッド
次の関数生成式を評価して得られるような関数オブジェクト: @{ (@this * 1i).asinh / 1i }
$get$acos メソッド
Math$acos メソッド
0-ary メソッド。Complex オブジェクト z を @this 値として関数として呼びだされると、次の動作を行う:
  1. z.asin の結果の値を v とする。
  2. 円周率の半分の値 π / 2 = 1.5707963… の値を表す Float オブジェクトを p とする。ただし、ap(p) > ap(v.re) とする。
  3. p - v の結果を返す。
$get$atan メソッド
Math$atan メソッド
次の関数生成式を評価して得られるような関数オブジェクト: @{ (@this * 1i).atanh / 1i }
$get$sinh メソッド
Math$sinh メソッド
次の関数生成式を評価して得られるような関数オブジェクト: @{ (@this.exp - (-@this).exp) / 2 } または @{ @this.re.sinh * @this.im.cos + 1i * @this.re.cosh * @this.im.sin }
$get$cosh メソッド
Math$cosh メソッド
次の関数生成式を評価して得られるような関数オブジェクト: @{ (@this.exp + (-@this).exp) / 2 } または @{ @this.re.cosh * @this.im.cos + 1i * @this.re.sinh * @this.im.sin }
$get$tanh メソッド
Math$tanh メソッド
次の関数生成式を評価して得られるような関数オブジェクト: @{ (@this.exp - (-@this).exp) / (@this.exp + (-@this).exp) } または @{ ((2 * @this.re).sinh + 1i * (2 * @this.im).sin) / ((2 * @this.re).cosh + (2 * @this.im).cos) }
$get$asinh メソッド
Math$asinh メソッド
次の関数生成式を評価して得られるような関数オブジェクト: @{ (@this + (@this * @this + 1).sqrt).log }
$get$acosh メソッド
Math$acosh メソッド
次の関数生成式を評価して得られるような関数オブジェクト: @{ (@this + (@this + 1).sqrt * (@this - 1).sqrt).log }
$get$atanh メソッド
Math$atanh メソッド
次の関数生成式を評価して得られるような関数オブジェクト: @{ ((1 + @this).log - (1 - @this).log) / 2 }
toString メソッド
0-ary メソッド。Complex オブジェクトを @this 値としてこのメソッドを呼出すと、渡された @this 値を文字列オブジェクトに変換したものを結果として返す。 文字列オブジェクトへの変換の方法は実行環境に任せる。

上記各メソッドの呼出しにおける動作では、実行環境は次のことを仮定して 動作を効率化しても良い:

実際のメソッドの呼出しにおいてこれらの仮定が満たされていない場合、 動作は未定義である。

上記計算における π や ap 等の定義は Math での定義に従う。

© 2006-2007 Magicant