summaryrefslogtreecommitdiffstats
path: root/upstream/debian-unstable/man3/bignum.3perl
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
commitfc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch)
treece1e3bce06471410239a6f41282e328770aa404a /upstream/debian-unstable/man3/bignum.3perl
parentInitial commit. (diff)
downloadmanpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz
manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'upstream/debian-unstable/man3/bignum.3perl')
-rw-r--r--upstream/debian-unstable/man3/bignum.3perl617
1 files changed, 617 insertions, 0 deletions
diff --git a/upstream/debian-unstable/man3/bignum.3perl b/upstream/debian-unstable/man3/bignum.3perl
new file mode 100644
index 00000000..0f9cc5ef
--- /dev/null
+++ b/upstream/debian-unstable/man3/bignum.3perl
@@ -0,0 +1,617 @@
+.\" -*- mode: troff; coding: utf-8 -*-
+.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
+.ie n \{\
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds C`
+. ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
+. \}
+.\}
+.rr rF
+.\" ========================================================================
+.\"
+.IX Title "bignum 3perl"
+.TH bignum 3perl 2024-01-12 "perl v5.38.2" "Perl Programmers Reference Guide"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH NAME
+bignum \- transparent big number support for Perl
+.SH SYNOPSIS
+.IX Header "SYNOPSIS"
+.Vb 1
+\& use bignum;
+\&
+\& $x = 2 + 4.5; # Math::BigFloat 6.5
+\& print 2 ** 512 * 0.1; # Math::BigFloat 134...09.6
+\& print 2 ** 512; # Math::BigInt 134...096
+\& print inf + 42; # Math::BigInt inf
+\& print NaN * 7; # Math::BigInt NaN
+\& print hex("0x1234567890123490"); # Perl v5.10.0 or later
+\&
+\& {
+\& no bignum;
+\& print 2 ** 256; # a normal Perl scalar now
+\& }
+\&
+\& # for older Perls, import into current package:
+\& use bignum qw/hex oct/;
+\& print hex("0x1234567890123490");
+\& print oct("01234567890123490");
+.Ve
+.SH DESCRIPTION
+.IX Header "DESCRIPTION"
+.SS "Literal numeric constants"
+.IX Subsection "Literal numeric constants"
+By default, every literal integer becomes a Math::BigInt object, and literal
+non-integer becomes a Math::BigFloat object. Whether a numeric literal is
+considered an integer or non-integers depends only on the value of the constant,
+not on how it is represented. For instance, the constants 3.14e2 and 0x1.3ap8
+become Math::BigInt objects, because they both represent the integer value
+decimal 314.
+.PP
+The default \f(CW\*(C`use bignum;\*(C'\fR is equivalent to
+.PP
+.Vb 1
+\& use bignum downgrade => "Math::BigInt", upgrade => "Math::BigFloat";
+.Ve
+.PP
+The classes used for integers and non-integers can be set at compile time with
+the \f(CW\*(C`downgrade\*(C'\fR and \f(CW\*(C`upgrade\*(C'\fR options, for example
+.PP
+.Vb 2
+\& # use Math::BigInt for integers and Math::BigRat for non\-integers
+\& use bignum upgrade => "Math::BigRat";
+.Ve
+.PP
+Note that disabling downgrading and upgrading does not affect how numeric
+literals are converted to objects
+.PP
+.Vb 4
+\& # disable both downgrading and upgrading
+\& use bignum downgrade => undef, upgrade => undef;
+\& $x = 2.4; # becomes 2.4 as a Math::BigFloat
+\& $y = 2; # becomes 2 as a Math::BigInt
+.Ve
+.SS "Upgrading and downgrading"
+.IX Subsection "Upgrading and downgrading"
+By default, when the result of a computation is an integer, an Inf, or a NaN,
+the result is downgraded even when all the operands are instances of the upgrade
+class.
+.PP
+.Vb 4
+\& use bignum;
+\& $x = 2.4; # becomes 2.4 as a Math::BigFloat
+\& $y = 1.2; # becomes 1.2 as a Math::BigFloat
+\& $z = $x / $y; # becomes 2 as a Math::BigInt due to downgrading
+.Ve
+.PP
+Equivalently, by default, when the result of a computation is a finite
+non-integer, the result is upgraded even when all the operands are instances of
+the downgrade class.
+.PP
+.Vb 4
+\& use bignum;
+\& $x = 7; # becomes 7 as a Math::BigInt
+\& $y = 2; # becomes 2 as a Math::BigInt
+\& $z = $x / $y; # becomes 3.5 as a Math::BigFloat due to upgrading
+.Ve
+.PP
+The classes used for downgrading and upgrading can be set at runtime with the
+"\fBdowngrade()\fR" and "\fBupgrade()\fR" methods, but see "CAVEATS" below.
+.PP
+The upgrade and downgrade classes don't have to be Math::BigInt and
+Math::BigFloat. For example, to use Math::BigRat as the upgrade class, use
+.PP
+.Vb 3
+\& use bignum upgrade => "Math::BigRat";
+\& $x = 2; # becomes 2 as a Math::BigInt
+\& $y = 3.6; # becomes 18/5 as a Math::BigRat
+.Ve
+.PP
+The upgrade and downgrade classes can be modified at runtime
+.PP
+.Vb 4
+\& use bignum;
+\& $x = 3; # becomes 3 as a Math::BigInt
+\& $y = 2; # becomes 2 as a Math::BigInt
+\& $z = $x / $y; # becomes 1.5 as a Math::BigFlaot
+\&
+\& bignum \-> upgrade("Math::BigRat");
+\& $w = $x / $y; # becomes 3/2 as a Math::BigRat
+.Ve
+.PP
+Disabling downgrading doesn't change the fact that literal constant integers are
+converted to the downgrade class, it only prevents downgrading as a result of a
+computation. E.g.,
+.PP
+.Vb 5
+\& use bignum downgrade => undef;
+\& $x = 2; # becomes 2 as a Math::BigInt
+\& $y = 2.4; # becomes 2.4 as a Math::BigFloat
+\& $z = 1.2; # becomes 1.2 as a Math::BigFloat
+\& $w = $x / $y; # becomes 2 as a Math::BigFloat due to no downgrading
+.Ve
+.PP
+If you want all numeric literals, both integers and non-integers, to become
+Math::BigFloat objects, use the bigfloat pragma.
+.PP
+Equivalently, disabling upgrading doesn't change the fact that literal constant
+non-integers are converted to the upgrade class, it only prevents upgrading as a
+result of a computation. E.g.,
+.PP
+.Vb 5
+\& use bignum upgrade => undef;
+\& $x = 2.5; # becomes 2.5 as a Math::BigFloat
+\& $y = 7; # becomes 7 as a Math::BigInt
+\& $z = 2; # becomes 2 as a Math::BigInt
+\& $w = $x / $y; # becomes 3 as a Math::BigInt due to no upgrading
+.Ve
+.PP
+If you want all numeric literals, both integers and non-integers, to become
+Math::BigInt objects, use the bigint pragma.
+.PP
+You can even do
+.PP
+.Vb 1
+\& use bignum upgrade => "Math::BigRat", upgrade => undef;
+.Ve
+.PP
+which converts all integer literals to Math::BigInt objects and all non-integer
+literals to Math::BigRat objects. However, when the result of a computation
+involving two Math::BigInt objects results in a non-integer (e.g., 7/2), the
+result will be truncted to a Math::BigInt rather than being upgraded to a
+Math::BigRat, since upgrading is disabled.
+.SS Overloading
+.IX Subsection "Overloading"
+Since all numeric literals become objects, you can call all the usual methods
+from Math::BigInt and Math::BigFloat on them. This even works to some extent on
+expressions:
+.PP
+.Vb 3
+\& perl \-Mbignum \-le \*(Aq$x = 1234; print $x\->bdec()\*(Aq
+\& perl \-Mbignum \-le \*(Aqprint 1234\->copy()\->binc();\*(Aq
+\& perl \-Mbignum \-le \*(Aqprint 1234\->copy()\->binc()\->badd(6);\*(Aq
+.Ve
+.SS Options
+.IX Subsection "Options"
+\&\f(CW\*(C`bignum\*(C'\fR recognizes some options that can be passed while loading it via via
+\&\f(CW\*(C`use\*(C'\fR. The following options exist:
+.IP "a or accuracy" 4
+.IX Item "a or accuracy"
+This sets the accuracy for all math operations. The argument must be greater
+than or equal to zero. See Math::BigInt's \fBbround()\fR method for details.
+.Sp
+.Vb 1
+\& perl \-Mbignum=a,50 \-le \*(Aqprint sqrt(20)\*(Aq
+.Ve
+.Sp
+Note that setting precision and accuracy at the same time is not possible.
+.IP "p or precision" 4
+.IX Item "p or precision"
+This sets the precision for all math operations. The argument can be any
+integer. Negative values mean a fixed number of digits after the dot, while a
+positive value rounds to this digit left from the dot. 0 means round to integer.
+See Math::BigInt's \fBbfround()\fR method for details.
+.Sp
+.Vb 1
+\& perl \-Mbignum=p,\-50 \-le \*(Aqprint sqrt(20)\*(Aq
+.Ve
+.Sp
+Note that setting precision and accuracy at the same time is not possible.
+.IP "l, lib, try, or only" 4
+.IX Item "l, lib, try, or only"
+Load a different math lib, see "Math Library".
+.Sp
+.Vb 4
+\& perl \-Mbignum=l,GMP \-e \*(Aqprint 2 ** 512\*(Aq
+\& perl \-Mbignum=lib,GMP \-e \*(Aqprint 2 ** 512\*(Aq
+\& perl \-Mbignum=try,GMP \-e \*(Aqprint 2 ** 512\*(Aq
+\& perl \-Mbignum=only,GMP \-e \*(Aqprint 2 ** 512\*(Aq
+.Ve
+.IP hex 4
+.IX Item "hex"
+Override the built-in \fBhex()\fR method with a version that can handle big numbers.
+This overrides it by exporting it to the current package. Under Perl v5.10.0 and
+higher, this is not so necessary, as \fBhex()\fR is lexically overridden in the
+current scope whenever the \f(CW\*(C`bignum\*(C'\fR pragma is active.
+.IP oct 4
+.IX Item "oct"
+Override the built-in \fBoct()\fR method with a version that can handle big numbers.
+This overrides it by exporting it to the current package. Under Perl v5.10.0 and
+higher, this is not so necessary, as \fBoct()\fR is lexically overridden in the
+current scope whenever the \f(CW\*(C`bignum\*(C'\fR pragma is active.
+.IP "v or version" 4
+.IX Item "v or version"
+this prints out the name and version of the modules and then exits.
+.Sp
+.Vb 1
+\& perl \-Mbignum=v
+.Ve
+.SS "Math Library"
+.IX Subsection "Math Library"
+Math with the numbers is done (by default) by a backend library module called
+Math::BigInt::Calc. The default is equivalent to saying:
+.PP
+.Vb 1
+\& use bignum lib => \*(AqCalc\*(Aq;
+.Ve
+.PP
+you can change this by using:
+.PP
+.Vb 1
+\& use bignum lib => \*(AqGMP\*(Aq;
+.Ve
+.PP
+The following would first try to find Math::BigInt::Foo, then Math::BigInt::Bar,
+and if this also fails, revert to Math::BigInt::Calc:
+.PP
+.Vb 1
+\& use bignum lib => \*(AqFoo,Math::BigInt::Bar\*(Aq;
+.Ve
+.PP
+Using c<lib> warns if none of the specified libraries can be found and
+Math::BigInt and Math::BigFloat fell back to one of the default
+libraries. To suppress this warning, use \f(CW\*(C`try\*(C'\fR instead:
+.PP
+.Vb 1
+\& use bignum try => \*(AqGMP\*(Aq;
+.Ve
+.PP
+If you want the code to die instead of falling back, use \f(CW\*(C`only\*(C'\fR instead:
+.PP
+.Vb 1
+\& use bignum only => \*(AqGMP\*(Aq;
+.Ve
+.PP
+Please see respective module documentation for further details.
+.SS "Method calls"
+.IX Subsection "Method calls"
+Since all numbers are now objects, you can use the methods that are part of the
+Math::BigInt and Math::BigFloat API.
+.PP
+But a warning is in order. When using the following to make a copy of a number,
+only a shallow copy will be made.
+.PP
+.Vb 2
+\& $x = 9; $y = $x;
+\& $x = $y = 7;
+.Ve
+.PP
+Using the copy or the original with overloaded math is okay, e.g., the following
+work:
+.PP
+.Vb 2
+\& $x = 9; $y = $x;
+\& print $x + 1, " ", $y,"\en"; # prints 10 9
+.Ve
+.PP
+but calling any method that modifies the number directly will result in \fBboth\fR
+the original and the copy being destroyed:
+.PP
+.Vb 2
+\& $x = 9; $y = $x;
+\& print $x\->badd(1), " ", $y,"\en"; # prints 10 10
+\&
+\& $x = 9; $y = $x;
+\& print $x\->binc(1), " ", $y,"\en"; # prints 10 10
+\&
+\& $x = 9; $y = $x;
+\& print $x\->bmul(2), " ", $y,"\en"; # prints 18 18
+.Ve
+.PP
+Using methods that do not modify, but test that the contents works:
+.PP
+.Vb 2
+\& $x = 9; $y = $x;
+\& $z = 9 if $x\->is_zero(); # works fine
+.Ve
+.PP
+See the documentation about the copy constructor and \f(CW\*(C`=\*(C'\fR in overload, as well
+as the documentation in Math::BigFloat for further details.
+.SS Methods
+.IX Subsection "Methods"
+.IP \fBinf()\fR 4
+.IX Item "inf()"
+A shortcut to return \f(CW\*(C`inf\*(C'\fR as an object. Useful because Perl does not always
+handle bareword \f(CW\*(C`inf\*(C'\fR properly.
+.IP \fBNaN()\fR 4
+.IX Item "NaN()"
+A shortcut to return \f(CW\*(C`NaN\*(C'\fR as an object. Useful because Perl does not always
+handle bareword \f(CW\*(C`NaN\*(C'\fR properly.
+.IP e 4
+.IX Item "e"
+.Vb 1
+\& # perl \-Mbignum=e \-wle \*(Aqprint e\*(Aq
+.Ve
+.Sp
+Returns Euler's number \f(CW\*(C`e\*(C'\fR, aka \fBexp\fR\|(1) (= 2.7182818284...).
+.IP PI 4
+.IX Item "PI"
+.Vb 1
+\& # perl \-Mbignum=PI \-wle \*(Aqprint PI\*(Aq
+.Ve
+.Sp
+Returns PI (= 3.1415926532..).
+.IP \fBbexp()\fR 4
+.IX Item "bexp()"
+.Vb 1
+\& bexp($power, $accuracy);
+.Ve
+.Sp
+Returns Euler's number \f(CW\*(C`e\*(C'\fR raised to the appropriate power, to the wanted
+accuracy.
+.Sp
+Example:
+.Sp
+.Vb 1
+\& # perl \-Mbignum=bexp \-wle \*(Aqprint bexp(1,80)\*(Aq
+.Ve
+.IP \fBbpi()\fR 4
+.IX Item "bpi()"
+.Vb 1
+\& bpi($accuracy);
+.Ve
+.Sp
+Returns PI to the wanted accuracy.
+.Sp
+Example:
+.Sp
+.Vb 1
+\& # perl \-Mbignum=bpi \-wle \*(Aqprint bpi(80)\*(Aq
+.Ve
+.IP \fBaccuracy()\fR 4
+.IX Item "accuracy()"
+Set or get the accuracy.
+.IP \fBprecision()\fR 4
+.IX Item "precision()"
+Set or get the precision.
+.IP \fBround_mode()\fR 4
+.IX Item "round_mode()"
+Set or get the rounding mode.
+.IP \fBdiv_scale()\fR 4
+.IX Item "div_scale()"
+Set or get the division scale.
+.IP \fBupgrade()\fR 4
+.IX Item "upgrade()"
+Set or get the class that the downgrade class upgrades to, if any. Set the
+upgrade class to \f(CW\*(C`undef\*(C'\fR to disable upgrading. See \f(CW\*(C`/CAVEATS\*(C'\fR below.
+.IP \fBdowngrade()\fR 4
+.IX Item "downgrade()"
+Set or get the class that the upgrade class downgrades to, if any. Set the
+downgrade class to \f(CW\*(C`undef\*(C'\fR to disable upgrading. See "CAVEATS" below.
+.IP \fBin_effect()\fR 4
+.IX Item "in_effect()"
+.Vb 1
+\& use bignum;
+\&
+\& print "in effect\en" if bignum::in_effect; # true
+\& {
+\& no bignum;
+\& print "in effect\en" if bignum::in_effect; # false
+\& }
+.Ve
+.Sp
+Returns true or false if \f(CW\*(C`bignum\*(C'\fR is in effect in the current scope.
+.Sp
+This method only works on Perl v5.9.4 or later.
+.SH CAVEATS
+.IX Header "CAVEATS"
+.IP "The \fBupgrade()\fR and \fBdowngrade()\fR methods" 4
+.IX Item "The upgrade() and downgrade() methods"
+Note that setting both the upgrade and downgrade classes at runtime with the
+"\fBupgrade()\fR" and "\fBdowngrade()\fR" methods, might not do what you expect:
+.Sp
+.Vb 4
+\& # Assuming that downgrading and upgrading hasn\*(Aqt been modified so far, so
+\& # the downgrade and upgrade classes are Math::BigInt and Math::BigFloat,
+\& # respectively, the following sets the upgrade class to Math::BigRat, i.e.,
+\& # makes Math::BigInt upgrade to Math::BigRat:
+\&
+\& bignum \-> upgrade("Math::BigRat");
+\&
+\& # The following sets the downgrade class to Math::BigInt::Lite, i.e., makes
+\& # the new upgrade class Math::BigRat downgrade to Math::BigInt::Lite
+\&
+\& bignum \-> downgrade("Math::BigInt::Lite");
+\&
+\& # Note that at this point, it is still Math::BigInt, not Math::BigInt::Lite,
+\& # that upgrades to Math::BigRat, so to get Math::BigInt::Lite to upgrade to
+\& # Math::BigRat, we need to do the following (again):
+\&
+\& bignum \-> upgrade("Math::BigRat");
+.Ve
+.Sp
+A simpler way to do this at runtime is to use \fBimport()\fR,
+.Sp
+.Vb 2
+\& bignum \-> import(upgrade => "Math::BigRat",
+\& downgrade => "Math::BigInt::Lite");
+.Ve
+.IP "Hexadecimal, octal, and binary floating point literals" 4
+.IX Item "Hexadecimal, octal, and binary floating point literals"
+Perl (and this module) accepts hexadecimal, octal, and binary floating point
+literals, but use them with care with Perl versions before v5.32.0, because some
+versions of Perl silently give the wrong result.
+.IP "Operator vs literal overloading" 4
+.IX Item "Operator vs literal overloading"
+\&\f(CW\*(C`bigrat\*(C'\fR works by overloading handling of integer and floating point literals,
+converting them to Math::BigRat objects.
+.Sp
+This means that arithmetic involving only string values or string literals are
+performed using Perl's built-in operators.
+.Sp
+For example:
+.Sp
+.Vb 4
+\& use bigrat;
+\& my $x = "900000000000000009";
+\& my $y = "900000000000000007";
+\& print $x \- $y;
+.Ve
+.Sp
+outputs \f(CW0\fR on default 32\-bit builds, since \f(CW\*(C`bignum\*(C'\fR never sees the string
+literals. To ensure the expression is all treated as \f(CW\*(C`Math::BigFloat\*(C'\fR objects,
+use a literal number in the expression:
+.Sp
+.Vb 1
+\& print +(0+$x) \- $y;
+.Ve
+.IP Ranges 4
+.IX Item "Ranges"
+Perl does not allow overloading of ranges, so you can neither safely use ranges
+with \f(CW\*(C`bignum\*(C'\fR endpoints, nor is the iterator variable a \f(CW\*(C`Math::BigFloat\*(C'\fR.
+.Sp
+.Vb 7
+\& use 5.010;
+\& for my $i (12..13) {
+\& for my $j (20..21) {
+\& say $i ** $j; # produces a floating\-point number,
+\& # not an object
+\& }
+\& }
+.Ve
+.IP \fBin_effect()\fR 4
+.IX Item "in_effect()"
+This method only works on Perl v5.9.4 or later.
+.IP \fBhex()\fR/\fBoct()\fR 4
+.IX Item "hex()/oct()"
+\&\f(CW\*(C`bignum\*(C'\fR overrides these routines with versions that can also handle big
+integer values. Under Perl prior to version v5.9.4, however, this will not
+happen unless you specifically ask for it with the two import tags "hex" and
+"oct" \- and then it will be global and cannot be disabled inside a scope with
+\&\f(CW\*(C`no bignum\*(C'\fR:
+.Sp
+.Vb 1
+\& use bignum qw/hex oct/;
+\&
+\& print hex("0x1234567890123456");
+\& {
+\& no bignum;
+\& print hex("0x1234567890123456");
+\& }
+.Ve
+.Sp
+The second call to \fBhex()\fR will warn about a non-portable constant.
+.Sp
+Compare this to:
+.Sp
+.Vb 1
+\& use bignum;
+\&
+\& # will warn only under Perl older than v5.9.4
+\& print hex("0x1234567890123456");
+.Ve
+.SH EXAMPLES
+.IX Header "EXAMPLES"
+Some cool command line examples to impress the Python crowd ;)
+.PP
+.Vb 10
+\& perl \-Mbignum \-le \*(Aqprint sqrt(33)\*(Aq
+\& perl \-Mbignum \-le \*(Aqprint 2**255\*(Aq
+\& perl \-Mbignum \-le \*(Aqprint 4.5+2**255\*(Aq
+\& perl \-Mbignum \-le \*(Aqprint 3/7 + 5/7 + 8/3\*(Aq
+\& perl \-Mbignum \-le \*(Aqprint 123\->is_odd()\*(Aq
+\& perl \-Mbignum \-le \*(Aqprint log(2)\*(Aq
+\& perl \-Mbignum \-le \*(Aqprint exp(1)\*(Aq
+\& perl \-Mbignum \-le \*(Aqprint 2 ** 0.5\*(Aq
+\& perl \-Mbignum=a,65 \-le \*(Aqprint 2 ** 0.2\*(Aq
+\& perl \-Mbignum=l,GMP \-le \*(Aqprint 7 ** 7777\*(Aq
+.Ve
+.SH BUGS
+.IX Header "BUGS"
+Please report any bugs or feature requests to
+\&\f(CW\*(C`bug\-bignum at rt.cpan.org\*(C'\fR, or through the web interface at
+<https://rt.cpan.org/Ticket/Create.html?Queue=bignum> (requires login).
+We will be notified, and then you'll automatically be notified of
+progress on your bug as I make changes.
+.SH SUPPORT
+.IX Header "SUPPORT"
+You can find documentation for this module with the perldoc command.
+.PP
+.Vb 1
+\& perldoc bignum
+.Ve
+.PP
+You can also look for information at:
+.IP \(bu 4
+GitHub
+.Sp
+<https://github.com/pjacklam/p5\-bignum>
+.IP \(bu 4
+RT: CPAN's request tracker
+.Sp
+<https://rt.cpan.org/Dist/Display.html?Name=bignum>
+.IP \(bu 4
+MetaCPAN
+.Sp
+<https://metacpan.org/release/bignum>
+.IP \(bu 4
+CPAN Testers Matrix
+.Sp
+<http://matrix.cpantesters.org/?dist=bignum>
+.IP \(bu 4
+CPAN Ratings
+.Sp
+<https://cpanratings.perl.org/dist/bignum>
+.SH LICENSE
+.IX Header "LICENSE"
+This program is free software; you may redistribute it and/or modify it under
+the same terms as Perl itself.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+bigint and bigrat.
+.PP
+Math::BigInt, Math::BigFloat, Math::BigRat and Math::Big as well as
+Math::BigInt::FastCalc, Math::BigInt::Pari and Math::BigInt::GMP.
+.SH AUTHORS
+.IX Header "AUTHORS"
+.IP \(bu 4
+(C) by Tels <http://bloodgate.com/> in early 2002 \- 2007.
+.IP \(bu 4
+Maintained by Peter John Acklam <pjacklam@gmail.com>, 2014\-.