Greetings, and thanks! "Robert Dodier" <[EMAIL PROTECTED]> writes:
> Camm, > > About this code in maxima/src/numerical/f2cl-lib.lisp, > > > (defun d1mach (i) > > (ecase i > > (1 > > #-gcl least-positive-normalized-double-float > > #+gcl least-positive-double-float) > > (2 most-positive-double-float) > > (3 double-float-epsilon) > > (4 (scale-float double-float-epsilon 1)) > > (5 (log (float (float-radix 1d0) 1d0) 10d0)))) > > The change log at the end of the file says this -- > > ;;; Revision 1.48 2002/05/03 17:48:06 rtoy > ;;; GCL doesn't have least-positive-normalized-{single/double}-float, so > ;;; use just least-positive-{single/double}-float. > > However GCL does now appear to have least-positive-normalized-double-float > so it seems like we could erase the #+gcl bit above. > Considering the commentary in d1mach.f it seems like the > normalized value is intended. (Btw when were the *-normalized-* bits > introduced in GCL?) Maybe around 2.6.6 if memory serves. > > If there are no objections (I have none) and you want to change f2cl-lib.lisp, > please go ahead. I believe you have write permission for Maxima CVS. > OK, This works as a patch to the Debian maxima package for 5.10.0. --- maxima-5.10.0.orig/src/numerical/f2cl-lib.lisp +++ maxima-5.10.0/src/numerical/f2cl-lib.lisp @@ -1244,17 +1244,15 @@ ;; D1MACH( 5) = LOG10(B) ;; -#+gcl -(defconstant least-positive-normalized-double-float least-positive-double-float) -#+gcl -(defconstant least-positive-normalized-single-float least-positive-single-float) +;; #+gcl +;; (defconstant least-positive-normalized-double-float least-positive-double-float) +;; #+gcl +;; (defconstant least-positive-normalized-single-float least-positive-single-float) (defun d1mach (i) (ecase i - (1 - #-gcl least-positive-normalized-double-float - #+gcl least-positive-double-float) + (1 least-positive-normalized-double-float) (2 most-positive-double-float) (3 double-float-epsilon) (4 (scale-float double-float-epsilon 1)) @@ -1262,9 +1260,7 @@ (defun r1mach (i) (ecase i - (1 - #-gcl least-positive-normalized-single-float - #+gcl least-positive-single-float) + (1 least-positive-normalized-single-float) (2 most-positive-single-float) (3 single-float-epsilon) (4 (scale-float single-float-epsilon 1)) Would someone mind checking this in? I'm having difficulties: [EMAIL PROTECTED]:/fix/t1/camm/debian/maxima/test$ cvs -z9 -q co -d head maxima ssh: connect to host cvs.sourceforge.net port 22: No route to host cvs [checkout aborted]: end of file from server (consult above messages if any) Take care, > All the best > Robert > > PS. Here's some comments from d1mach.f . > > C D1MACH( 1) = B**(EMIN-1), the smallest positive magnitude. > C D1MACH( 2) = B**EMAX*(1 - B**(-T)), the largest magnitude. > C D1MACH( 3) = B**(-T), the smallest relative spacing. > C D1MACH( 4) = B**(1-T), the largest relative spacing. > C D1MACH( 5) = LOG10(B) > C > C Assume double precision numbers are represented in the T-digit, > C base-B form > C > C sign (B**E)*( (X(1)/B) + ... + (X(T)/B**T) ) > C > C where 0 .LE. X(I) .LT. B for I=1,...,T, 0 .LT. X(1), and > C EMIN .LE. E .LE. EMAX. > C > C The values of B, T, EMIN and EMAX are provided in I1MACH as > C follows: > C I1MACH(10) = B, the base. > C I1MACH(14) = T, the number of base-B digits. > C I1MACH(15) = EMIN, the smallest exponent E. > C I1MACH(16) = EMAX, the largest exponent E. > _______________________________________________ > Maxima mailing list > [EMAIL PROTECTED] > http://www.math.utexas.edu/mailman/listinfo/maxima > > > -- Camm Maguire [EMAIL PROTECTED] ========================================================================== "The earth is but one country, and mankind its citizens." -- Baha'u'llah _______________________________________________ Gcl-devel mailing list Gcl-devel@gnu.org http://lists.gnu.org/mailman/listinfo/gcl-devel