Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / man / man3 / bignum.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 "bignum 3"
132.TH bignum 3 "2002-06-01" "perl v5.8.0" "Perl Programmers Reference Guide"
133.SH "NAME"
134bignum \- Transparent BigNumber support for Perl
135.SH "SYNOPSIS"
136.IX Header "SYNOPSIS"
137.Vb 1
138\& use bignum;
139.Ve
140.PP
141.Vb 2
142\& $x = 2 + 4.5,"\en"; # BigFloat 6.5
143\& print 2 ** 512 * 0.1; # 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 and
148floating-point constants are created as proper BigInts or BigFloats,
149respectively.
150.Sh "\s-1OPTIONS\s0"
151.IX Subsection "OPTIONS"
152bignum recognizes some options that can be passed while loading it via use.
153The options can (currently) be either a single letter form, or the long form.
154The following options exist:
155.IP "a or accuracy" 2
156.IX Item "a or accuracy"
157This sets the accuracy for all math operations. The argument must be greater
158than or equal to zero. See Math::BigInt's \fIbround()\fR function for details.
159.Sp
160.Vb 1
161\& perl -Mbignum=a,50 -le 'print sqrt(20)'
162.Ve
163.IP "p or precision" 2
164.IX Item "p or precision"
165This sets the precision for all math operations. The argument can be any
166integer. Negative values mean a fixed number of digits after the dot, while
167a positive value rounds to this digit left from the dot. 0 or 1 mean round to
168integer. See Math::BigInt's \fIbfround()\fR function for details.
169.Sp
170.Vb 1
171\& perl -Mbignum=p,-50 -le 'print sqrt(20)'
172.Ve
173.IP "t or trace" 2
174.IX Item "t or trace"
175This enables a trace mode and is primarily for debugging bignum or
176Math::BigInt/Math::BigFloat.
177.IP "l or lib" 2
178.IX Item "l or lib"
179Load a different math lib, see \*(L"\s-1MATH\s0 \s-1LIBRARY\s0\*(R".
180.Sp
181.Vb 1
182\& perl -Mbignum=l,GMP -e 'print 2 ** 512'
183.Ve
184.Sp
185Currently there is no way to specify more than one library on the command
186line. This will be hopefully fixed soon ;)
187.IP "v or version" 2
188.IX Item "v or version"
189This prints out the name and version of all modules used and then exits.
190.Sp
191.Vb 1
192\& perl -Mbignum=v -e ''
193.Ve
194.Sh "\s-1MATH\s0 \s-1LIBRARY\s0"
195.IX Subsection "MATH LIBRARY"
196Math with the numbers is done (by default) by a module called
197Math::BigInt::Calc. This is equivalent to saying:
198.Sp
199.Vb 1
200\& use bignum lib => 'Calc';
201.Ve
202.Sp
203You can change this by using:
204.Sp
205.Vb 1
206\& use bignum lib => 'BitVect';
207.Ve
208.Sp
209The following would first try to find Math::BigInt::Foo, then
210Math::BigInt::Bar, and when this also fails, revert to Math::BigInt::Calc:
211.Sp
212.Vb 1
213\& use bignum lib => 'Foo,Math::BigInt::Bar';
214.Ve
215.Sp
216Please see respective module documentation for further details.
217.Sh "\s-1INTERNAL\s0 \s-1FORMAT\s0"
218.IX Subsection "INTERNAL FORMAT"
219The numbers are stored as objects, and their internals might change at anytime,
220especially between math operations. The objects also might belong to different
221classes, like Math::BigInt, or Math::BigFLoat. Mixing them together, even
222with normal scalars is not extraordinary, but normal and expected.
223.Sp
224You should not depend on the internal format, all accesses must go through
225accessor methods. E.g. looking at \f(CW$x\fR\->{sign} is not a bright idea since there
226is no guaranty that the object in question has such a hashkey, nor is a hash
227underneath at all.
228.Sh "\s-1SIGN\s0"
229.IX Subsection "SIGN"
230The sign is either '+', '\-', 'NaN', '+inf' or '\-inf' and stored seperately.
231You can access it with the \fIsign()\fR method.
232.Sp
233A sign of 'NaN' is used to represent the result when input arguments are not
234numbers or as a result of 0/0. '+inf' and '\-inf' represent plus respectively
235minus infinity. You will get '+inf' when dividing a positive number by 0, and
236\&'\-inf' when dividing any negative number by 0.
237.Sh "\s-1METHODS\s0"
238.IX Subsection "METHODS"
239Since all numbers are now objects, you can use all functions that are part of
240the BigInt or BigFloat \s-1API\s0. It is wise to use only the \fIbxxx()\fR notation, and not
241the \fIfxxx()\fR notation, though. This makes it possible that the underlying object
242might morph into a different class than BigFloat.
243.SH "MODULES USED"
244.IX Header "MODULES USED"
245\&\f(CW\*(C`bignum\*(C'\fR is just a thin wrapper around various modules of the Math::BigInt
246family. Think of it as the head of the family, who runs the shop, and orders
247the others to do the work.
248.Sp
249The following modules are currently used by bignum:
250.Sp
251.Vb 3
252\& Math::BigInt::Lite (for speed, and only if it is loadable)
253\& Math::BigInt
254\& Math::BigFloat
255.Ve
256.SH "EXAMPLES"
257.IX Header "EXAMPLES"
258Some cool command line examples to impress the Python crowd ;)
259.Sp
260.Vb 8
261\& perl -Mbignum -le 'print sqrt(33)'
262\& perl -Mbignum -le 'print 2*255'
263\& perl -Mbignum -le 'print 4.5+2*255'
264\& perl -Mbignum -le 'print 3/7 + 5/7 + 8/3'
265\& perl -Mbignum -le 'print 123->is_odd()'
266\& perl -Mbignum -le 'print log(2)'
267\& perl -Mbignum -le 'print 2 ** 0.5'
268\& perl -Mbignum=a,65 -le 'print 2 ** 0.2'
269.Ve
270.SH "LICENSE"
271.IX Header "LICENSE"
272This program is free software; you may redistribute it and/or modify it under
273the same terms as Perl itself.
274.SH "SEE ALSO"
275.IX Header "SEE ALSO"
276Especially bigrat as in \f(CW\*(C`perl \-Mbigrat \-le 'print 1/3+1/4'\*(C'\fR.
277.Sp
278Math::BigFloat, Math::BigInt, Math::BigRat and Math::Big as well
279as Math::BigInt::BitVect, Math::BigInt::Pari and Math::BigInt::GMP.
280.SH "AUTHORS"
281.IX Header "AUTHORS"
282(C) by Tels <http://bloodgate.com/> in early 2002.