Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / v9 / man / man3 / bigrat.3
CommitLineData
920dae64
AT
1.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
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 "bigrat 3"
132.TH bigrat 3 "2001-09-21" "perl v5.8.8" "Perl Programmers Reference Guide"
133.SH "NAME"
134bigrat \- Transparent BigNumber/BigRational support for Perl
135.SH "SYNOPSIS"
136.IX Header "SYNOPSIS"
137.Vb 1
138\& use bigrat;
139.Ve
140.PP
141.Vb 2
142\& $x = 2 + 4.5,"\en"; # BigFloat 6.5
143\& print 1/3 + 1/4,"\en"; # produces 7/12
144.Ve
145.SH "DESCRIPTION"
146.IX Header "DESCRIPTION"
147All operators (inlcuding basic math operations) are overloaded. Integer and
148floating-point constants are created as proper BigInts or BigFloats,
149respectively.
150.PP
151Other than bignum, this module upgrades to Math::BigRat, meaning that
152instead of 2.5 you will get 2+1/2 as output.
153.Sh "Modules Used"
154.IX Subsection "Modules Used"
155\&\f(CW\*(C`bigrat\*(C'\fR is just a thin wrapper around various modules of the Math::BigInt
156family. Think of it as the head of the family, who runs the shop, and orders
157the others to do the work.
158.PP
159The following modules are currently used by bignum:
160.PP
161.Vb 4
162\& Math::BigInt::Lite (for speed, and only if it is loadable)
163\& Math::BigInt
164\& Math::BigFloat
165\& Math::BigRat
166.Ve
167.Sh "Math Library"
168.IX Subsection "Math Library"
169Math with the numbers is done (by default) by a module called
170Math::BigInt::Calc. This is equivalent to saying:
171.PP
172.Vb 1
173\& use bigrat lib => 'Calc';
174.Ve
175.PP
176You can change this by using:
177.PP
178.Vb 1
179\& use bigrat lib => 'BitVect';
180.Ve
181.PP
182The following would first try to find Math::BigInt::Foo, then
183Math::BigInt::Bar, and when this also fails, revert to Math::BigInt::Calc:
184.PP
185.Vb 1
186\& use bigrat lib => 'Foo,Math::BigInt::Bar';
187.Ve
188.PP
189Please see respective module documentation for further details.
190.Sh "Sign"
191.IX Subsection "Sign"
192The sign is either '+', '\-', 'NaN', '+inf' or '\-inf'.
193.PP
194A sign of 'NaN' is used to represent the result when input arguments are not
195numbers or as a result of 0/0. '+inf' and '\-inf' represent plus respectively
196minus infinity. You will get '+inf' when dividing a positive number by 0, and
197\&'\-inf' when dividing any negative number by 0.
198.Sh "Methods"
199.IX Subsection "Methods"
200Since all numbers are not objects, you can use all functions that are part of
201the BigInt or BigFloat \s-1API\s0. It is wise to use only the \fIbxxx()\fR notation, and not
202the \fIfxxx()\fR notation, though. This makes you independed on the fact that the
203underlying object might morph into a different class than BigFloat.
204.Sh "Cavaet"
205.IX Subsection "Cavaet"
206But a warning is in order. When using the following to make a copy of a number,
207only a shallow copy will be made.
208.PP
209.Vb 2
210\& $x = 9; $y = $x;
211\& $x = $y = 7;
212.Ve
213.PP
214If you want to make a real copy, use the following:
215.PP
216.Vb 1
217\& $y = $x->copy();
218.Ve
219.PP
220Using the copy or the original with overloaded math is okay, e.g. the
221following work:
222.PP
223.Vb 2
224\& $x = 9; $y = $x;
225\& print $x + 1, " ", $y,"\en"; # prints 10 9
226.Ve
227.PP
228but calling any method that modifies the number directly will result in
229\&\fBboth\fR the original and the copy beeing destroyed:
230.PP
231.Vb 2
232\& $x = 9; $y = $x;
233\& print $x->badd(1), " ", $y,"\en"; # prints 10 10
234.Ve
235.PP
236.Vb 2
237\& $x = 9; $y = $x;
238\& print $x->binc(1), " ", $y,"\en"; # prints 10 10
239.Ve
240.PP
241.Vb 2
242\& $x = 9; $y = $x;
243\& print $x->bmul(2), " ", $y,"\en"; # prints 18 18
244.Ve
245.PP
246Using methods that do not modify, but testthe contents works:
247.PP
248.Vb 2
249\& $x = 9; $y = $x;
250\& $z = 9 if $x->is_zero(); # works fine
251.Ve
252.PP
253See the documentation about the copy constructor and \f(CW\*(C`=\*(C'\fR in overload, as
254well as the documentation in BigInt for further details.
255.Sh "Options"
256.IX Subsection "Options"
257bignum recognizes some options that can be passed while loading it via use.
258The options can (currently) be either a single letter form, or the long form.
259The following options exist:
260.IP "a or accuracy" 2
261.IX Item "a or accuracy"
262This sets the accuracy for all math operations. The argument must be greater
263than or equal to zero. See Math::BigInt's \fIbround()\fR function for details.
264.Sp
265.Vb 1
266\& perl -Mbigrat=a,50 -le 'print sqrt(20)'
267.Ve
268.IP "p or precision" 2
269.IX Item "p or precision"
270This sets the precision for all math operations. The argument can be any
271integer. Negative values mean a fixed number of digits after the dot, while
272a positive value rounds to this digit left from the dot. 0 or 1 mean round to
273integer. See Math::BigInt's \fIbfround()\fR function for details.
274.Sp
275.Vb 1
276\& perl -Mbigrat=p,-50 -le 'print sqrt(20)'
277.Ve
278.IP "t or trace" 2
279.IX Item "t or trace"
280This enables a trace mode and is primarily for debugging bignum or
281Math::BigInt/Math::BigFloat.
282.IP "l or lib" 2
283.IX Item "l or lib"
284Load a different math lib, see \*(L"\s-1MATH\s0 \s-1LIBRARY\s0\*(R".
285.Sp
286.Vb 1
287\& perl -Mbigrat=l,GMP -e 'print 2 ** 512'
288.Ve
289.Sp
290Currently there is no way to specify more than one library on the command
291line. This will be hopefully fixed soon ;)
292.IP "v or version" 2
293.IX Item "v or version"
294This prints out the name and version of all modules used and then exits.
295.Sp
296.Vb 1
297\& perl -Mbigrat=v
298.Ve
299.SH "EXAMPLES"
300.IX Header "EXAMPLES"
301.Vb 5
302\& perl -Mbigrat -le 'print sqrt(33)'
303\& perl -Mbigrat -le 'print 2*255'
304\& perl -Mbigrat -le 'print 4.5+2*255'
305\& perl -Mbigrat -le 'print 3/7 + 5/7 + 8/3'
306\& perl -Mbigrat -le 'print 12->is_odd()';
307.Ve
308.SH "LICENSE"
309.IX Header "LICENSE"
310This program is free software; you may redistribute it and/or modify it under
311the same terms as Perl itself.
312.SH "SEE ALSO"
313.IX Header "SEE ALSO"
314Especially bignum.
315.Sp
316Math::BigFloat, Math::BigInt, Math::BigRat and Math::Big as well
317as Math::BigInt::BitVect, Math::BigInt::Pari and Math::BigInt::GMP.
318.SH "AUTHORS"
319.IX Header "AUTHORS"
320(C) by Tels <http://bloodgate.com/> in early 2002 \- 2005.