|
Location : Home > Languages > Perl > Package Title : Math::BigInt::Constant |
![]() |
Math::BigInt::Constant - 任意の大きさの整数定数
use Math::BigInt::Constant;
my $class = 'Math::BigInt::Constant';
# 定数の生成
$x = $class->new($str); # デフォルトは 0
$nan = $class->bnan(); # NotANumber を生成
$zero = $class->bzero(); # "0" を生成
$one = $class->bone(); # "1" を生成
$m_one = $class->bone('-'); # "-1" を生成
# テスト
$x->is_zero(); # 引数が 0 か否かを返す。
$x->is_nan(); # 引数が NaN か否かを返す。
$x->is_one(); # 引数が +1 であれば true を返す。
$x->is_one('-'); # 引数が -1 であれば true を返す。
$x->is_odd(); # 奇数であれば true を、偶数であれば false を返す。
$x->is_even(); # 偶数であれば true を、奇数であれば false を返す。
$x->is_inf($sign); # 引数 ('+' または '-') で指定されいる符号の一致まで含めて引数が +inf または -inf であれば true を返す。
$x->is_pos(); # 引数が > 0 であれば true を返す。
$x->is_neg(); # 引数が < 0 であれば true を返す。
$x->bcmp($y); # 数の比較 (undef, <0, =0, >0)
$x->bacmp($y); # 絶対値の比較 (undef, <0, =0, >0)
$x->sign(); # +, -, +inf, -inf, NaN のいずれかの符号を返す。
# 以下の例は修正時に使う。もし異常があれば落ちる。
# 設定
$x->bzero(); # $x を 0 に設定
$x->bnan(); # $x を NaN に設定
$x->bneg(); # 符号反転
$x->babs(); # 絶対値
$x->bnorm(); # 正規化 (no-op)
$x->bnot(); # 2の補数(2進計算で Not)
$x->binc(); # x に 1 ずつ値を増やす
$x->bdec(); # x から ずつ値を減らす
$x->badd($y); # 加算($x に $y を加える)
$x->bsub($y); # 減算($x から $y を減じる)
$x->bmul($y); # 乗算($x に $y を乗じる)
$x->bdiv($y); # 除算: $x に商を設定する。
# (quo,rem)を返すが、スカラであれば quo を返す。
$x->bmod($y); # 法 (x % y)
$x->bpow($y); # べき乗 (x ** y)
$x->blsft($y); # 左シフト
$x->brsft($y); # 右シフト
$x->band($y); # 2進計算で and
$x->bior($y); # 2進計算で inclusive or
$x->bxor($y); # 2進計算で exclusive or
$x->bnot(); # 2進計算で not (2の補数)
$x->bsqrt(); # 平方根を計算
$x->broot($y); # $y の根を計算
$x->blog($base); # 整数対数
$x->round($A,$P,$round_mode); # モード $r を用いて丸め
$x->bround($N); # $N 字を保持して丸め
$x->bfround($N); # $N 桁目の値に丸めるが BigInts に対しては何もしない
# BigInt では引数を変化させない
$x->bfloor(); # $x に等しいか小さい整数を返す。
$x->bceil(); # $x に等しいか大きい整数を返す。
bgcd(@values); # 最大公約数
blcm(@values); # 最小公倍数
$x->bstr(); # 正規化された文字列を返す。
$x->bsstr(); # 科学的記法における文字列を返す。
$x->length(); # 数値の字数を返す。
$x->digit($n); # 数値から N 番目の数を抽出する。
$x->as_int(); # オブジェクトのコピーを BigInt として返す。
$x->as_hex(); # 16進数文字列(hex string)として返す。
$x->as_bin(); # 2進数文字列として返す。
本モジュールを用いて per-object の BigInt 整数を定義できる。通常の use Math::BigInt ':constant' ではプログラム内のあらゆる整数定数を定義することはできるが、こっそりと定義したり文字列のように扱うことも 1e5 のような浮動小数点を定義することもできない。
Math::BigInt::Constant は Math::BigInt の真のサブクラスであり、オブジェクトを変更する以外の全てが実行できる。
use constant を通じてコンパイル時に確認する。
use Math::BigInt;
use constant X => Math::BigInt->new("12345678");
print X," ",X+2,"\n"; # OK
print "X\n"; # oups
X += 2; # 落ちる。
これらは実行時に確認され、文字列に変換される。
use Math::BigInt::Constant;
$x = Math::BigInt::Constant->new("3141592");
print "$x\n"; # OK
print $x+2,"\n"; # dito
$x += 2; # 落ちる。
まだ発見されていない。
(c) by Tels, http://bloodgate.com/ 2001 - 2006.
![]() |
Updated : 2007/02/25 |