Location : Home > Languages > Perl > Package
Title : Math::BigInt::Constant
Toolbox Logo

名称

 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;			# 落ちる。

バグ

 まだ発見されていない。


参考資料

 Math::BigInt


著者

(c) by Tels, http://bloodgate.com/ 2001 - 2006.

Toolbox Logo
Updated : 2007/02/25