| jacques G on Tue, 18 Oct 2011 20:58:22 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Parameters of floating-point arithmetic ? |
Question 1: Do the two PARI/GP programs below (flpari, flparam) work correctly on 64-bit machines ?
Question 2: Will the fast GP-specific flpari() program work in future versions of PARI/GP ?
Thanks for any answers or other comments,
Jacques Gélinas, Ottawa, Canada
flpari(p=precision(1.)) = {
local(w=#precision(1.,p));
[2, w, w*=64/#precision(1.,18), 2.>>w];
}
addhelp(flpari,"flpari(p): parameters of p-decimal PARI/GP floating-point arithmetic"\
" [base, words, bits, machine epsilon]")
flparam() = {
local( base = 2., mant = 8.^precision(1.) );
while( (( mant + 1. ) - mant) == 1., mant*=2. );
while( (( mant + base ) - mant) != base, base+=1. );
[ round(base), round( log(precision(mant,18)) / log(precision(base,18)) ), 2./mant ];
}
addhelp(flparam,"flparam(): parameters of floating-point arithmetic"\
" in current precision [base, digits, machine epsilon]")
/* References
1. How to know the internal basis of your computer (code for Pari 2.1.4):
{ x=y=1.0; while(((x+1.0)-x)==1.0, x=2.0*x ); while((x+y)-x<>y, y=y+1.0); [x,y] }
in MPFR: A multiple-precision floating-point libraby with correct rounding,
by Paul Zimmermann, Workshop: The PARI/GP System, IHP, 2004,
<http://pari.math.u-bordeaux.fr/Events/IHP2004/Paul.Zimmermann/mpfr2.ps.gz>
2. User's Guide to the PARI library by the PARI Group, 2011, 4.5.2: Type t_REAL.
3. User's Guide to PARI/GP by the PARI Group, 2011, 2.3.2: Real numbers (t_REAL).
4. Algorithms to reveal properties of floating-point arithmetic
by Michael A. Malcolm, CACM 15 (1972), pp. 949-951.
5. Computer Methods for Mathematical Computations by George E. Forsythe,
Michael A. Malcolm, and Cleve B. Moler, Prentice-Hall, 1977, pp. 10-14.
6. What Every Computer Scientist Should Know About Floating-Point Arithmetic,
by David Goldberg, published in the March, 1991 issue of Computing Surveys,
reprinted with permission as Appendix D of Numerical Computation Guide:
<http://download.oracle.com/docs/cd/E19957-01/806-3568/ncgTOC.html>
*/