Lines Matching refs:LIB

10 #            _m : absolute value of mantissa ($LIB thingy)
12 # _e : absolute value of exponent ($LIB thingy)
221 my $LIB = 'Math::BigInt::Calc';
331 return $LIB if $param eq 'with';
341 $cfg->{with} = $LIB;
400 $self -> {_m} = $LIB -> _copy($wanted -> {_m});
402 $self -> {_e} = $LIB -> _copy($wanted -> {_e});
413 $self->{_m} = $LIB -> _copy($wanted -> {value});
415 $self->{_e} = $LIB -> _zero();
423 $self->{_e} = $LIB -> _zero();
443 $self->{_m} = $LIB -> _new($2);
445 $self->{_e} = $LIB -> _zero();
876 $self -> {_m} = $LIB -> _zero();
878 $self -> {_e} = $LIB -> _zero();
946 $self -> {_m} = $LIB -> _one();
948 $self -> {_e} = $LIB -> _zero();
1023 $self -> {_m} = $LIB -> _zero();
1025 $self -> {_e} = $LIB -> _zero();
1092 $self -> {_m} = $LIB -> _zero();
1094 $self -> {_e} = $LIB -> _zero();
1244 _m => $LIB -> _new($digits),
1246 _e => $LIB -> _new($n - 1),
1307 $copy->{_m} = $LIB->_copy($x->{_m});
1308 $copy->{_e} = $LIB->_copy($x->{_e});
1338 $y = $LIB->_copy($x->{_m});
1340 $y = $LIB->_rsft($y, $x->{_e}, 10);
1341 } elsif (! $LIB->_is_zero($x->{_e})) { # > 0
1342 $y = $LIB->_lsft($y, $x->{_e}, 10);
1344 $y = Math::BigInt->new($x->{sign} . $LIB->_str($y));
1413 $y = Math::BigRat -> new($rat_parts[0] . $LIB -> _str($rat_parts[1])
1414 . '/' . $LIB -> _str($rat_parts[2]));
1437 ($x->{sign} eq '+' && $LIB->_is_zero($x->{_m})) ? 1 : 0;
1447 $LIB->_is_zero($x->{_e}) &&
1448 $LIB->_is_one($x->{_m})) ? 1 : 0;
1456 ($LIB->_is_zero($x->{_e})) &&
1457 ($LIB->_is_odd($x->{_m}))) ? 1 : 0;
1466 ($LIB->_is_even($x->{_m}))) ? 1 : 0; # but 1200 is
1525 my $mxl = $LIB->_len($x->{_m});
1526 my $myl = $LIB->_len($y->{_m});
1545 $cmp = $LIB->_acmp($x->{_e}, $y->{_e});
1572 $ex = $LIB->_copy($x->{_e});
1573 $ey = $LIB->_copy($y->{_e});
1580 $ex = $LIB->_copy($x->{_e});
1581 $ex = $LIB->_add($ex, $y->{_e}); # ex + |ey|
1582 $ey = $LIB->_zero(); # -ex + |ey| = 0
1591 $ex = $LIB->_zero(); # -ex + |ex| = 0
1592 $ey = $LIB->_copy($y->{_e});
1593 $ey = $LIB->_add($ey, $x->{_e}); # ey + |ex|
1600 $ex = $LIB->_copy($y->{_e}); # -ex + |ey| + |ex| = |ey|
1601 $ey = $LIB->_copy($x->{_e}); # -ey + |ex| + |ey| = |ex|
1608 $ex = $LIB->_add($ex, $LIB->_new($mxl));
1609 $ey = $LIB->_add($ey, $LIB->_new($myl));
1613 $cmp = $LIB->_acmp($ex, $ey);
1625 $my = $LIB->_lsft($LIB->_copy($my), $LIB->_new($mxl - $myl), 10);
1627 $mx = $LIB->_lsft($LIB->_copy($mx), $LIB->_new($myl - $mxl), 10);
1630 $cmp = $LIB->_acmp($mx, $my);
1663 my $lxm = $LIB->_len($x->{_m});
1664 my $lym = $LIB->_len($y->{_m});
1669 my $lx = $lxm + $xes * $LIB->_num($x->{_e});
1670 my $ly = $lym + $yes * $LIB->_num($y->{_e});
1680 $ym = $LIB->_copy($y->{_m});
1681 $ym = $LIB->_lsft($ym, $LIB->_new($diff), 10);
1683 $xm = $LIB->_copy($x->{_m});
1684 $xm = $LIB->_lsft($xm, $LIB->_new(-$diff), 10);
1686 $LIB->_acmp($xm, $ym);
1704 unless $x->{sign} eq '+' && $LIB->_is_zero($x->{_m});
1726 my $zeros = $LIB->_zeros($x->{_m}); # correct for trailing zeros
1728 my $z = $LIB->_new($zeros);
1729 $x->{_m} = $LIB->_rsft($x->{_m}, $z, 10);
1731 if ($LIB->_acmp($x->{_e}, $z) >= 0) {
1732 $x->{_e} = $LIB->_sub($x->{_e}, $z);
1733 $x->{_es} = '+' if $LIB->_is_zero($x->{_e});
1735 $x->{_e} = $LIB->_sub($LIB->_copy($z), $x->{_e});
1739 $x->{_e} = $LIB->_add($x->{_e}, $z);
1744 if ($LIB->_is_zero($x->{_m})) {
1747 $x->{_e} = $LIB->_zero();
1776 if (!$LIB->_is_zero($x->{_e})) {
1777 $x->{_m} = $LIB->_lsft($x->{_m}, $x->{_e}, 10); # 1e2 => 100
1778 $x->{_e} = $LIB->_zero(); # normalize
1786 $x->{_m} = $LIB->_inc($x->{_m});
1789 $x->{_m} = $LIB->_dec($x->{_m});
1790 $x->{sign} = '+' if $LIB->_is_zero($x->{_m}); # -1 +1 => -0 => +0
1819 if (!$LIB->_is_zero($x->{_e})) {
1820 $x->{_m} = $LIB->_lsft($x->{_m}, $x->{_e}, 10); # 1e2 => 100
1821 $x->{_e} = $LIB->_zero(); # normalize
1828 $x->{_m} = $LIB->_inc($x->{_m});
1830 $x->{sign} = '+' if $LIB->_is_zero($x->{_m}); # -1 +1 => -0 => +0
1834 $x->{_m} = $LIB->_dec($x->{_m});
1886 $x->{_e} = $LIB->_copy($y->{_e});
1888 $x->{_m} = $LIB->_copy($y->{_m});
1898 $e = $LIB->_zero() if !defined $e; # if no BFLOAT?
1899 $e = $LIB->_copy($e); # make copy (didn't do it yet)
1903 ($e, $es) = $LIB -> _ssub($e, $y->{_es} || '+', $x->{_e}, $x->{_es});
1905 my $add = $LIB->_copy($y->{_m});
1908 $x->{_m} = $LIB->_lsft($x->{_m}, $e, 10);
1909 ($x->{_e}, $x->{_es}) = $LIB -> _sadd($x->{_e}, $x->{_es}, $e, $es);
1910 } elsif (!$LIB->_is_zero($e)) { # > 0
1911 $add = $LIB->_lsft($add, $e, 10);
1917 $x->{_m} = $LIB->_add($x->{_m}, $add);
1920 $LIB -> _sadd($x->{_m}, $x->{sign}, $add, $y->{sign});
1995 $x->{_m} = $LIB->_mul($x->{_m}, $y->{_m});
1997 = $LIB -> _sadd($x->{_e}, $x->{_es}, $y->{_e}, $y->{_es});
2037 $x->{_m} = $LIB->_mul($x->{_m}, $y->{_m});
2039 = $LIB -> _sadd($x->{_e}, $x->{_es}, $y->{_e}, $y->{_es});
2055 $e = $LIB->_zero() if !defined $e; # if no BFLOAT?
2056 $e = $LIB->_copy($e); # make copy (didn't do it yet)
2060 ($e, $es) = $LIB -> _ssub($e, $z->{_es} || '+', $x->{_e}, $x->{_es});
2062 my $add = $LIB->_copy($z->{_m});
2066 $x->{_m} = $LIB->_lsft($x->{_m}, $e, 10);
2067 ($x->{_e}, $x->{_es}) = $LIB -> _sadd($x->{_e}, $x->{_es}, $e, $es);
2068 } elsif (!$LIB->_is_zero($e)) # > 0
2070 $add = $LIB->_lsft($add, $e, 10);
2076 $x->{_m} = $LIB->_add($x->{_m}, $add);
2079 $LIB -> _sadd($x->{_m}, $x->{sign}, $add, $z->{sign});
2198 if defined($upgrade) && !wantarray && !$LIB -> _is_one($y -> {_m});
2225 my $lx = $LIB -> _len($x->{_m});
2226 my $ly = $LIB -> _len($y->{_m});
2233 my $y_not_one = !($LIB->_is_zero($y->{_e}) && $LIB->_is_one($y->{_m}));
2264 $x->{_m} = $LIB->_lsft($x->{_m}, $LIB->_new($scale), 10);
2265 $x->{_m} = $LIB->_div($x->{_m}, $y->{_m}); # a/c
2269 = $LIB -> _ssub($x->{_e}, $x->{_es}, $y->{_e}, $y->{_es});
2272 = $LIB -> _ssub($x->{_e}, $x->{_es}, $LIB->_new($scale), '+');
2355 ($LIB->_is_zero($y->{_e}) && $LIB->_is_one($y->{_m})));
2370 my $ym = $LIB->_copy($y->{_m});
2373 $ym = $LIB->_lsft($ym, $y->{_e}, 10)
2374 if $y->{_es} eq '+' && !$LIB->_is_zero($y->{_e});
2381 $shifty = $LIB->_num($y->{_e}); # no more digits after dot
2383 $x->{_m} = $LIB->_lsft($x->{_m}, $y->{_e}, 10);
2391 $shiftx = $LIB->_num($x->{_e}); # no more digits after dot
2392 $ym = $LIB->_lsft($ym, $x->{_e}, 10); # 123 => 1230
2395 if ($x->{_es} eq '+' && !$LIB->_is_zero($x->{_e})) {
2396 $x->{_m} = $LIB->_lsft($x->{_m}, $x->{_e}, 10); # es => '+' here
2399 $x->{_e} = $LIB->_new($shiftx);
2402 $x->{_e} = $LIB->_add($x->{_e}, $LIB->_new($shifty)) if $shifty != 0;
2406 $x->{_m} = $LIB->_mod($x->{_m}, $ym);
2408 $x->{sign} = '+' if $LIB->_is_zero($x->{_m}); # fix sign for -0
2417 $x->{sign} = '+' if $LIB->_is_zero($x->{_m}); # fix sign for -0
2531 $new_sign = $LIB -> _is_odd($y1) ? '-' : '+' if $x->{sign} ne '+';
2534 $x->{_m} = $LIB -> _pow($x->{_m}, $y1);
2535 $x->{_e} = $LIB -> _mul($x->{_e}, $y1);
2681 my $x_lib = $LIB -> _new($x -> bdstr());
2682 my $b_lib = $LIB -> _new($base -> bdstr());
2683 ($x_lib, my $exact) = $LIB -> _log_int($x_lib, $b_lib);
2686 $x->{_e} = $LIB -> _zero();
2866 $x->{_m} = $LIB->_new("2718281828459045235360287471352662497757" .
2870 $x->{_e} = $LIB->_new(79);
2876 my $A = $LIB->_new("9093339520860578540197197" .
2878 my $F = $LIB->_new(42);
2888 $A = $LIB -> _mul($A, $F);
2889 $A = $LIB -> _inc($A);
2891 $F = $LIB -> _inc($F);
2896 my $B = $LIB->_fac($LIB->_new($steps));
2898 # print "A ", $LIB->_str($A), "\nB ", $LIB->_str($B), "\n";
2901 $A = $LIB->_lsft($A, $LIB->_new($scale), 10);
2902 $A = $LIB->_div($A, $B);
2907 $x->{_e} = $LIB->_new($scale);
3435 $x -> {_m} = $LIB->_div($x->{_m}, $LIB->_new(2));
3457 if ($LIB->_is_one($x->{_m}) && $LIB->_is_zero($x->{_e})) {
3464 $x->{_m} = $LIB->_div($x->{_m}, $LIB->_new(4));
3474 $pi->{_m} = $LIB->_div($pi->{_m}, $LIB->_new(2));
3716 my $l = $LIB -> _len($x->{_m});
3718 $n++ if ($l % 2 xor $LIB -> _is_odd($x->{_e}));
3720 $na = $LIB -> _new($na);
3722 $x->{_m} = $ns eq "+" ? $LIB -> _lsft($x->{_m}, $na, 10)
3723 : $LIB -> _rsft($x->{_m}, $na, 10);
3725 $x->{_m} = $LIB -> _sqrt($x->{_m});
3730 ($x->{_e}, $x->{_es}) = $LIB -> _ssub($x->{_e}, $x->{_es}, $na, $ns);
3731 $x->{_e} = $LIB -> _div($x->{_e}, $LIB -> _new("2"));
3833 $is_two = $y->{sign} eq '+' && $LIB->_is_two($y->{_m})
3834 && $LIB->_is_zero($y->{_e});
3855 my $i = $LIB->_copy($x->{_m});
3856 $i = $LIB->_lsft($i, $x->{_e}, 10) unless $LIB->_is_zero($x->{_e});
3864 $x->{_e} = $LIB->_zero();
3927 if (! $LIB->_is_zero($x->{_e})) {
3928 $x->{_m} = $LIB->_lsft($x->{_m}, $x->{_e}, 10); # change 12e1 to 120e0
3929 $x->{_e} = $LIB->_zero(); # normalize
3932 $x->{_m} = $LIB->_fac($x->{_m}); # calculate factorial
3959 croak("bdfac() requires a newer version of the $LIB library.")
3960 unless $LIB->can('_dfac');
3962 if (! $LIB->_is_zero($x->{_e})) {
3963 $x->{_m} = $LIB->_lsft($x->{_m}, $x->{_e}, 10); # change 12e1 to 120e0
3964 $x->{_e} = $LIB->_zero(); # normalize
3967 $x->{_m} = $LIB->_dfac($x->{_m}); # calculate factorial
4330 if ($x->is_zero() || $LIB->_len($x->{_m}) <= $scale) {
4399 my $len = $LIB->_len($x->{_m}); # length of mantissa
4403 my $dad = -(0+ ($x->{_es}.$LIB->_num($x->{_e}))); # digits after dot
4449 my $dbt = $LIB->_len($x->{_m});
4451 my $dbd = $dbt + ($x->{_es} . $LIB->_num($x->{_e}));
4495 $x->{_m} = $LIB->_rsft($x->{_m}, $x->{_e}, 10);
4496 $x->{_e} = $LIB->_zero();
4499 $x->{_m} = $LIB->_inc($x->{_m}) if $x->{sign} eq '-';
4518 $x->{_m} = $LIB->_rsft($x->{_m}, $x->{_e}, 10);
4519 $x->{_e} = $LIB->_zero();
4522 $x->{_m} = $LIB->_inc($x->{_m}); # increment if positive
4524 $x->{sign} = '+' if $LIB->_is_zero($x->{_m}); # avoid -0
4545 $x->{_m} = $LIB->_rsft($x->{_m}, $x->{_e}, 10); # remove frac part
4546 $x->{_e} = $LIB->_zero(); # truncate/normalize
4548 $x->{sign} = '+' if $LIB->_is_zero($x->{_m}); # avoid -0
4647 return 1 if $LIB->_is_zero($x->{_m});
4649 my $len = $LIB->_len($x->{_m});
4650 $len += $LIB->_num($x->{_e}) if $x->{_es} eq '+';
4653 $t = $LIB->_num($x->{_e}) if $x->{_es} eq '-';
4674 my $m = Math::BigInt->new($LIB->_str($x->{_m}), undef, undef);
4694 Math::BigInt->new($x->{_es} . $LIB->_str($x->{_e}), undef, undef);
4712 $m->{value} = $LIB->_copy($x->{_m});
4714 ($m, Math::BigInt->new($x->{_es} . $LIB->_num($x->{_e})));
4748 $mant->{_e} = $LIB->_zero();
4752 my $expo = $class -> new($x -> {_es} . $LIB->_str($x -> {_e}));
4855 $int->{_m} = $LIB -> _rsft($int->{_m}, $int->{_e}, 10);
4856 $int->{_e} = $LIB -> _zero();
4858 $int->{sign} = '+' if $LIB->_is_zero($int->{_m}); # avoid -0
4901 my $num = $class -> new($LIB -> _str($rat_parts[1]));
4902 my $den = $class -> new($LIB -> _str($rat_parts[2]));
4924 my $numer_lib = $LIB -> _copy($x -> {_m});
4925 my $denom_lib = $LIB -> _1ex($x -> {_e});
4926 my $gcd_lib = $LIB -> _gcd($LIB -> _copy($numer_lib), $denom_lib);
4927 $numer_lib = $LIB -> _div($numer_lib, $gcd_lib);
4928 return $class -> new($x -> {sign} . $LIB -> _str($numer_lib));
4931 elsif (! $LIB -> _is_zero($x -> {_e})) { # exponent > 0
4932 my $numer_lib = $LIB -> _copy($x -> {_m});
4933 $numer_lib = $LIB -> _lsft($numer_lib, $x -> {_e}, 10);
4934 return $class -> new($x -> {sign} . $LIB -> _str($numer_lib));
4938 return $class -> new($x -> {sign} . $LIB -> _str($x -> {_m}));
4956 my $numer_lib = $LIB -> _copy($x -> {_m});
4957 my $denom_lib = $LIB -> _1ex($x -> {_e});
4958 my $gcd_lib = $LIB -> _gcd($LIB -> _copy($numer_lib), $denom_lib);
4959 $denom_lib = $LIB -> _div($denom_lib, $gcd_lib);
4960 return $class -> new($LIB -> _str($denom_lib));
4995 my $not_zero = !($x->{sign} eq '+' && $LIB->_is_zero($x->{_m}));
4997 $es = $LIB->_str($x->{_m});
4999 my $e = $LIB->_num($x->{_e});
5010 $cad = $LIB->_num($x->{_e});
5057 my $mant = $LIB->_str($x->{_m});
5059 my $eabs = $LIB -> _num($x->{_e});
5108 ($x->{sign} eq '-' ? '-' : '') . $LIB->_str($x->{_m})
5109 . 'e' . $x->{_es} . $LIB->_str($x->{_e});
5137 my $mant = $LIB->_str($x->{_m});
5145 $str .= $mant . 'e' . $x->{_es} . $LIB->_str($x->{_e});
5153 my ($eabs, $esgn) = $LIB -> _sadd($LIB -> _copy($x->{_e}), $x->{_es},
5154 $LIB -> _new($mantlen - 1), "+");
5156 $str .= $mant . 'e' . $esgn . $LIB->_str($eabs);
5189 my $mant = $LIB->_str($x->{_m});
5191 my ($eabs, $esgn) = $LIB -> _sadd($LIB -> _copy($x->{_e}), $x->{_es},
5192 $LIB -> _new($mantlen - 1), "+");
5195 my $mod = $LIB -> _mod($LIB -> _copy($eabs), $LIB -> _new("3"));
5196 unless ($LIB -> _is_zero($mod)) {
5198 $eabs = $LIB -> _sub($eabs, $mod);
5199 $dotpos += $LIB -> _num($mod);
5201 my $delta = $LIB -> _sub($LIB -> _new("3"), $mod);
5202 $eabs = $LIB -> _add($eabs, $delta);
5203 $dotpos += $LIB -> _num($delta);
5213 $str .= $mant . 'e' . $esgn . $LIB->_str($eabs);
5242 $str .= $LIB -> _str($x->{_m}) . ("0" x $LIB -> _num($x->{_e}));
5246 $str = $LIB -> _str($rat_parts[1]) . "/" . $LIB -> _str($rat_parts[2]);
5277 my $z = $LIB->_copy($x->{_m});
5278 if (! $LIB->_is_zero($x->{_e})) { # > 0
5279 $z = $LIB->_lsft($z, $x->{_e}, 10);
5281 my $str = $LIB->_to_hex($z);
5309 my $z = $LIB->_copy($x->{_m});
5310 if (! $LIB->_is_zero($x->{_e})) { # > 0
5311 $z = $LIB->_lsft($z, $x->{_e}, 10);
5313 my $str = $LIB->_to_oct($z);
5341 my $z = $LIB->_copy($x->{_m});
5342 if (! $LIB->_is_zero($x->{_e})) { # > 0
5343 $z = $LIB->_lsft($z, $x->{_e}, 10);
5345 my $str = $LIB->_to_bin($z);
5596 my $z = $LIB->_copy($x->{_m});
5597 if (! $LIB->_is_zero($x->{_e})) { # > 0
5598 $z = $LIB->_lsft($z, $x->{_e}, 10);
5600 my $str = $LIB->_as_hex($z);
5616 my $z = $LIB->_copy($x->{_m});
5617 if (! $LIB->_is_zero($x->{_e})) { # > 0
5618 $z = $LIB->_lsft($z, $x->{_e}, 10);
5620 my $str = $LIB->_as_oct($z);
5636 my $z = $LIB->_copy($x->{_m});
5637 if (! $LIB->_is_zero($x->{_e})) { # > 0
5638 $z = $LIB->_lsft($z, $x->{_e}, 10);
5640 my $str = $LIB->_as_bin($z);
5757 # $LIB = shift() || 'Calc';
5771 $LIB = Math::BigInt -> config('lib');
5913 my $dbd = $LIB->_num($x->{_e});
5915 $dbd += $LIB->_len($x->{_m});
5932 ($LIB->_is_one($x->{_e}) &&
5933 $LIB->_is_one($x->{_m})))
5945 if (($LIB->_is_zero($x->{_e}) && # $x == 2
5946 $LIB->_is_two($x->{_m})))
5962 ($LIB->_is_one($x->{_e}) &&
5963 $LIB->_is_one($x->{_m}))))
6038 $LIB -> _ssub($x->{_e}, $x->{_es}, $LIB->_new($dbd), $dbd_sign);
6218 return $LIB -> _sadd($x, $xs, $y, $ys);
6223 return $LIB -> _ssub($x, $xs, $y, $ys);