⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scalar.pm

📁 网页留言本,比一般的留言簿管用
💻 PM
字号:
################################################################################ core math lib for BigInt, representing big numbers by normal int/float's# for testing only, will fail any bignum test if range is exceededpackage Math::BigInt::Scalar;use 5.005;use strict;# use warnings; # dont use warnings for older Perlsrequire Exporter;use vars qw/@ISA $VERSION/;@ISA = qw(Exporter);$VERSION = '0.11';############################################################################### global constants, flags and accessory # constants for easier lifemy $nan = 'NaN';############################################################################### create objects from various representationssub _new  {  # (string) return ref to num  my $d = $_[1];  my $x = $$d;	# make copy  return \$x;  }                                                                             sub _zero  {  my $x = 0; return \$x;  }sub _one  {  my $x = 1; return \$x;  }sub _copy  {  my $x = $_[1];  my $z = $$x;  return \$z;  }# catch and throw awaysub import { }############################################################################### convert back to string and numbersub _str  {  # make string  return \"${$_[1]}";  }                                                                             sub _num  {  # make a number  return ${$_[1]};  }############################################################################### actual math codesub _add  {  my ($c,$x,$y) = @_;  $$x += $$y;  return $x;  }                                                                             sub _sub  {  my ($c,$x,$y) = @_;  $$x -= $$y;  return $x;  }                                                                             sub _mul  {  my ($c,$x,$y) = @_;  $$x *= $$y;  return $x;  }                                                                             sub _div  {  my ($c,$x,$y) = @_;  my $u = int($$x / $$y); my $r = $$x % $$y; $$x = $u;  return ($x,\$r) if wantarray;  return $x;  }                                                                             sub _pow  {  my ($c,$x,$y) = @_;  my $u = $$x ** $$y; $$x = $u;  return $x;  }sub _and  {  my ($c,$x,$y) = @_;  my $u = int($$x) & int($$y); $$x = $u;  return $x;  }sub _xor  {  my ($c,$x,$y) = @_;  my $u = int($$x) ^ int($$y); $$x = $u;  return $x;  }sub _or  {  my ($c,$x,$y) = @_;  my $u = int($$x) | int($$y); $$x = $u;  return $x;  }sub _inc  {  my ($c,$x) = @_;  my $u = int($$x)+1; $$x = $u;  return $x;  }sub _dec  {  my ($c,$x) = @_;  my $u = int($$x)-1; $$x = $u;  return $x;  }############################################################################### testingsub _acmp  {  my ($c,$x, $y) = @_;  return ($$x <=> $$y);  }sub _len  {  return length("${$_[1]}");  }sub _digit  {  # return the nth digit, negative values count backward  # 0 is the rightmost digit  my ($c,$x,$n) = @_;    $n ++;			# 0 => 1, 1 => 2  return substr($$x,-$n,1);	# 1 => -1, -2 => 2 etc  }############################################################################### _is_* routinessub _is_zero  {  # return true if arg is zero  my ($c,$x) = @_;  return ($$x == 0) <=> 0;  }sub _is_even  {  # return true if arg is even  my ($c,$x) = @_;  return (!($$x & 1)) <=> 0;   }sub _is_odd  {  # return true if arg is odd  my ($c,$x) = @_;  return ($$x & 1) <=> 0;  }sub _is_one  {  # return true if arg is one  my ($c,$x) = @_;  return ($$x == 1) <=> 0;  }################################################################################ check routine to test internal state of corruptionssub _check  {  # no checks yet, pull it out from the test suite  my ($c,$x) = @_;  return "$x is not a reference" if !ref($x);  return 0;  }1;__END__=head1 NAMEMath::BigInt::Scalar - Pure Perl module to test Math::BigInt with scalars=head1 SYNOPSISProvides support for big integer calculations via means of 'small' int/floats.Only for testing purposes, since it will fail at large values. But it is simpleenough not to introduce bugs on it's own and to serve as a testbed.=head1 DESCRIPTIONPlease see Math::BigInt::Calc.=head1 LICENSE This program is free software; you may redistribute it and/or modify it underthe same terms as Perl itself. =head1 AUTHORTels http://bloodgate.com in 2001.=head1 SEE ALSOL<Math::BigInt>, L<Math::BigInt::Calc>.=cut

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -