Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / man / man3 / bigint.3
CommitLineData
86530b38
AT
1.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
2.\"
3.\" Standard preamble:
4.\" ========================================================================
5.de Sh \" Subsection heading
6.br
7.if t .Sp
8.ne 5
9.PP
10\fB\\$1\fR
11.PP
12..
13.de Sp \" Vertical space (when we can't use .PP)
14.if t .sp .5v
15.if n .sp
16..
17.de Vb \" Begin verbatim text
18.ft CW
19.nf
20.ne \\$1
21..
22.de Ve \" End verbatim text
23.ft R
24.fi
25..
26.\" Set up some character translations and predefined strings. \*(-- will
27.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28.\" double quote, and \*(R" will give a right double quote. | will give a
29.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
30.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
31.\" expand to `' in nroff, nothing in troff, for use with C<>.
32.tr \(*W-|\(bv\*(Tr
33.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34.ie n \{\
35. ds -- \(*W-
36. ds PI pi
37. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
39. ds L" ""
40. ds R" ""
41. ds C` ""
42. ds C' ""
43'br\}
44.el\{\
45. ds -- \|\(em\|
46. ds PI \(*p
47. ds L" ``
48. ds R" ''
49'br\}
50.\"
51.\" If the F register is turned on, we'll generate index entries on stderr for
52.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53.\" entries marked with X<> in POD. Of course, you'll have to process the
54.\" output yourself in some meaningful fashion.
55.if \nF \{\
56. de IX
57. tm Index:\\$1\t\\n%\t"\\$2"
58..
59. nr % 0
60. rr F
61.\}
62.\"
63.\" For nroff, turn off justification. Always turn off hyphenation; it makes
64.\" way too many mistakes in technical documents.
65.hy 0
66.if n .na
67.\"
68.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69.\" Fear. Run. Save yourself. No user-serviceable parts.
70. \" fudge factors for nroff and troff
71.if n \{\
72. ds #H 0
73. ds #V .8m
74. ds #F .3m
75. ds #[ \f1
76. ds #] \fP
77.\}
78.if t \{\
79. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80. ds #V .6m
81. ds #F 0
82. ds #[ \&
83. ds #] \&
84.\}
85. \" simple accents for nroff and troff
86.if n \{\
87. ds ' \&
88. ds ` \&
89. ds ^ \&
90. ds , \&
91. ds ~ ~
92. ds /
93.\}
94.if t \{\
95. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101.\}
102. \" troff and (daisy-wheel) nroff accents
103.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110.ds ae a\h'-(\w'a'u*4/10)'e
111.ds Ae A\h'-(\w'A'u*4/10)'E
112. \" corrections for vroff
113.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115. \" for low resolution devices (crt and lpr)
116.if \n(.H>23 .if \n(.V>19 \
117\{\
118. ds : e
119. ds 8 ss
120. ds o a
121. ds d- d\h'-1'\(ga
122. ds D- D\h'-1'\(hy
123. ds th \o'bp'
124. ds Th \o'LP'
125. ds ae ae
126. ds Ae AE
127.\}
128.rm #[ #] #H #V #F C
129.\" ========================================================================
130.\"
131.IX Title "bigint 3"
132.TH bigint 3 "2002-06-01" "perl v5.8.0" "Perl Programmers Reference Guide"
133.SH "NAME"
134bigint \- Transparent big integer support for Perl
135.SH "SYNOPSIS"
136.IX Header "SYNOPSIS"
137.Vb 1
138\& use bignt;
139.Ve
140.PP
141.Vb 2
142\& $x = 2 + 4.5,"\en"; # BigInt 6
143\& print 2 ** 512; # really is what you think it is
144.Ve
145.SH "DESCRIPTION"
146.IX Header "DESCRIPTION"
147All operators (including basic math operations) are overloaded. Integer
148constants are created as proper BigInts.
149.PP
150Floating point constants are truncated to integer. All results are also
151trunctaed.
152.Sh "\s-1OPTIONS\s0"
153.IX Subsection "OPTIONS"
154bigint recognizes some options that can be passed while loading it via use.
155The options can (currently) be either a single letter form, or the long form.
156The following options exist:
157.IP "a or accuracy" 2
158.IX Item "a or accuracy"
159This sets the accuracy for all math operations. The argument must be greater
160than or equal to zero. See Math::BigInt's \fIbround()\fR function for details.
161.Sp
162.Vb 1
163\& perl -Mbigint=a,2 -le 'print 12345+1'
164.Ve
165.IP "p or precision" 2
166.IX Item "p or precision"
167This sets the precision for all math operations. The argument can be any
168integer. Negative values mean a fixed number of digits after the dot, and
169are <B>ignored</B> since all operations happen in integer space.
170A positive value rounds to this digit left from the dot. 0 or 1 mean round to
171integer and are ignore like negative values.
172.Sp
173See Math::BigInt's \fIbfround()\fR function for details.
174.Sp
175.Vb 1
176\& perl -Mbignum=p,5 -le 'print 123456789+123'
177.Ve
178.IP "t or trace" 2
179.IX Item "t or trace"
180This enables a trace mode and is primarily for debugging bigint or
181Math::BigInt.
182.IP "l or lib" 2
183.IX Item "l or lib"
184Load a different math lib, see \*(L"\s-1MATH\s0 \s-1LIBRARY\s0\*(R".
185.Sp
186.Vb 1
187\& perl -Mbigint=l,GMP -e 'print 2 ** 512'
188.Ve
189.Sp
190Currently there is no way to specify more than one library on the command
191line. This will be hopefully fixed soon ;)
192.IP "v or version" 2
193.IX Item "v or version"
194This prints out the name and version of all modules used and then exits.
195.Sp
196.Vb 1
197\& perl -Mbigint=v -e ''
198.Ve
199.Sh "\s-1MATH\s0 \s-1LIBRARY\s0"
200.IX Subsection "MATH LIBRARY"
201Math with the numbers is done (by default) by a module called
202Math::BigInt::Calc. This is equivalent to saying:
203.Sp
204.Vb 1
205\& use bigint lib => 'Calc';
206.Ve
207.Sp
208You can change this by using:
209.Sp
210.Vb 1
211\& use bigint lib => 'BitVect';
212.Ve
213.Sp
214The following would first try to find Math::BigInt::Foo, then
215Math::BigInt::Bar, and when this also fails, revert to Math::BigInt::Calc:
216.Sp
217.Vb 1
218\& use bigint lib => 'Foo,Math::BigInt::Bar';
219.Ve
220.Sp
221Please see respective module documentation for further details.
222.Sh "\s-1INTERNAL\s0 \s-1FORMAT\s0"
223.IX Subsection "INTERNAL FORMAT"
224The numbers are stored as objects, and their internals might change at anytime,
225especially between math operations. The objects also might belong to different
226classes, like Math::BigInt, or Math::BigInt::Lite. Mixing them together, even
227with normal scalars is not extraordinary, but normal and expected.
228.Sp
229You should not depend on the internal format, all accesses must go through
230accessor methods. E.g. looking at \f(CW$x\fR\->{sign} is not a bright idea since there
231is no guaranty that the object in question has such a hash key, nor is a hash
232underneath at all.
233.Sh "\s-1SIGN\s0"
234.IX Subsection "SIGN"
235The sign is either '+', '\-', 'NaN', '+inf' or '\-inf' and stored seperately.
236You can access it with the \fIsign()\fR method.
237.Sp
238A sign of 'NaN' is used to represent the result when input arguments are not
239numbers or as a result of 0/0. '+inf' and '\-inf' represent plus respectively
240minus infinity. You will get '+inf' when dividing a positive number by 0, and
241\&'\-inf' when dividing any negative number by 0.
242.Sh "\s-1METHODS\s0"
243.IX Subsection "METHODS"
244Since all numbers are now objects, you can use all functions that are part of
245the BigInt \s-1API\s0. You can only use the \fIbxxx()\fR notation, and not the \fIfxxx()\fR
246notation, though.
247.SH "MODULES USED"
248.IX Header "MODULES USED"
249\&\f(CW\*(C`bigint\*(C'\fR is just a thin wrapper around various modules of the Math::BigInt
250family. Think of it as the head of the family, who runs the shop, and orders
251the others to do the work.
252.Sp
253The following modules are currently used by bigint:
254.Sp
255.Vb 2
256\& Math::BigInt::Lite (for speed, and only if it is loadable)
257\& Math::BigInt
258.Ve
259.SH "EXAMPLES"
260.IX Header "EXAMPLES"
261Some cool command line examples to impress the Python crowd ;) You might want
262to compare them to the results under \-Mbignum or \-Mbigrat:
263.Sp
264.Vb 8
265\& perl -Mbigint -le 'print sqrt(33)'
266\& perl -Mbigint -le 'print 2*255'
267\& perl -Mbigint -le 'print 4.5+2*255'
268\& perl -Mbigint -le 'print 3/7 + 5/7 + 8/3'
269\& perl -Mbigint -le 'print 123->is_odd()'
270\& perl -Mbigint -le 'print log(2)'
271\& perl -Mbigint -le 'print 2 ** 0.5'
272\& perl -Mbigint=a,65 -le 'print 2 ** 0.2'
273.Ve
274.SH "LICENSE"
275.IX Header "LICENSE"
276This program is free software; you may redistribute it and/or modify it under
277the same terms as Perl itself.
278.SH "SEE ALSO"
279.IX Header "SEE ALSO"
280Especially bigrat as in \f(CW\*(C`perl \-Mbigrat \-le 'print 1/3+1/4'\*(C'\fR and
281bignum as in \f(CW\*(C`perl \-Mbignum \-le 'print sqrt(2)'\*(C'\fR.
282.Sp
283Math::BigInt, Math::BigRat and Math::Big as well
284as Math::BigInt::BitVect, Math::BigInt::Pari and Math::BigInt::GMP.
285.SH "AUTHORS"
286.IX Header "AUTHORS"
287(C) by Tels <http://bloodgate.com/> in early 2002.