Location : Home > Languages > Perl > Package Title : Math::Calculator |
![]() |
Math::Calculator - マルチスタックの計算クラス
version 1.02
Calculator.pm, 2005/03/06 03:09:16
use Math::Calculator; my $calc = Math::Calculator->new; $calc->push(10, 20, 30); $calc->add; $calc->root; # 1.0471285480509 (10の50乗根)
Math::Calculator はスタックベースの計算機を示す簡易なクラスである。任意の数のスタックを保持することができる。
new
このクラスメソッドは新しい Math::Calculator オブジェクトを1スタックとして返す。("default").
current_stack($stackname)
本メソッドは現在のスタックを命名済のスタックに設定する。指定されたスタックが存在しなければその名称を持つ新たな空のスタックが生成される。スタック名は文字列である。スタック名が指定されないまたは不当な名称であった場合はスタック選択は無効と見なされる。
選択されたスタックの名称を返す。
stack($stackname)
本メソッドは命名されたスタックへの配列参照を返す。または名称が指定されなければ現在選択されているスタックを返す。
top
本メソッドはスタックの内容を変更せずに現在のスタックの最上のスタックの値を返す。.
clear
現在のスタックの内容をクリアする。すなわち () に設定する。
push(@elements)
push は所与の順序のスタックに要素をプッシュする。
push_to($stackname, @elements)
push_to は push と同等であるが、こちらは命名されたスタックにプッシュする。
pop($howmany)
これは pops $howmany 個の要素をポップする。または $howmany が指定されなければ1要素をポップする。
pop_from($stackname, [ $howmany ])
pop_from は pop と同等であるが、こちらは命名されたスタックにポップする。
from_to($from_stack, $to_stack, [ $howmany ])
これは1つのスタックから値をポップし、他のスタックにプッシュする。
dupe
dupe は現在のスタックの最も上の値を複製する。$calc->push($calc->top) に等しい。
_op_two($coderef)
本メソッドは将来的に(おそらく n 要素を操作するように)改造するか改名を行うかも知れないとい意味で半分は私用である。2要素をポップし、所与のコード参照へパラメータとして付与し、結果をプッシュする。
twiddle
これは現在のスタックの最上段2つの値の位置を入れ替える。
add
x = pop; y = pop; push x + y;
これは現在のスタックから2つの値をポップし、それらを加え、結果をプッシュする。
subtract
x = pop; y = pop; push x - y;
これは現在のスタックから2つの値をポップし、1つめの値から2つめの値を引き、結果をプッシュする。
multiply
x = pop; y = pop; push x * y;
これは現在のスタックから2つの値をポップし、それらを掛け、結果をプッシュする。
divide
x = pop; y = pop; push x / y;
これは現在のスタックから2つの値をポップし、2つめの値を1つめの値で割り、結果をプッシュする。
modulo
x = pop; y = pop; push x % y;
これは現在のスタックから2つの値をポップし、2つめの値を法とする1つめの値を計算し、結果をプッシュする。
raise_to
x = pop; y = pop; push x ** y;
これは現在のスタックから2つの値をポップし、2つめの値の1つめの値乗を計算し、結果をプッシュする。
root
x = pop; y = pop; push x ** (1/y);
これは現在のスタックから2つの値 x, y をポップし、x の y 乗根を計算し、結果をプッシュする。
sqrt
このメソッドは現在のスタックの最上段の値をポップし、その平方根をポップする。
quorem
divmod
本メソッドはスタックから2つの値をポップし、これらを割った答えの整数部分及び剰余を返す。
本モジュールに対するいくつかのユーザインタフェースを、おそらく Math::RPN をポートし、dc のような、 Curses::UI インタフェースのようなものを書きたい。
精度を向上させるために BigInt 及び BigFloat のサポートを追加したい。
操作の追加が可能なように Math::Calculator の呼び出し・解除を容易にしたい。
Ricardo SIGNES, rjbs@cpan.org
Duan TOH に謝意を表する。私は彼が講師を務める Perl 中級の集中講義を受け、Perl においてオブジェクトがどのように動くかを知るための簡易な例としてこのクラスを書くことに興味を持った。
Math::Calculator は Perl 本体と同等の条件で利用可能である。
![]() |
Updated : 2006/10/03 |