Greetings! Just FYI regarding some recent gcl work: ============================================================================= /tmp/mb.l ============================================================================= (defconstant +reps+ 10000000)
(let ((f (compile nil (lambda (x) (declare (long-float x)) (dotimes (i +reps+) (let ((z x)) (setq z (cos z)) z)))))) (time (funcall f 1.0d0))) (let ((f (compile nil (lambda (x) (declare (long-float x)) (dotimes (i +reps+) (let ((z x)) (setq z (sqrt (exp z)) z (exp (- (* z z)))) z)))))) (time (funcall f 1.0d0))) (let ((f (compile nil (lambda (x) (declare (long-float x)) (dotimes (i +reps+) (let ((z x)) (setq z (exp (atan z))) z)))))) (time (funcall f 1.0d0))) (let ((f (compile nil (lambda (x) (declare ((complex long-float) x)) (dotimes (i +reps+) (let ((z x)) (setq z (exp (atan z))) z)))))) (time (funcall f #c(1.0d0 1.0d0)))) ============================================================================= >(load "/tmp/mb.l") ;; Loading /tmp/mb.l ;; Compiling /tmp/gazonk_14798_0.lsp. ;; End of Pass 1. ;; End of Pass 2. ;; OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3, (Debug quality ignored) ;; Finished compiling /tmp/gazonk_14798_0.o. ;; Loading /tmp/gazonk_14798_0.o ;; start address -T 0xaa75e0 ;; Finished loading /tmp/gazonk_14798_0.o real time : 0.910 secs run-gbc time : 0.920 secs child run time : 0.000 secs gbc time : 0.000 secs ;; Compiling /tmp/gazonk_14798_0.lsp. ;; End of Pass 1. ;; End of Pass 2. ;; OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3, (Debug quality ignored) ;; Finished compiling /tmp/gazonk_14798_0.o. ;; Loading /tmp/gazonk_14798_0.o ;; start address -T 0xa6f2e0 ;; Finished loading /tmp/gazonk_14798_0.o real time : 5.050 secs run-gbc time : 5.050 secs child run time : 0.000 secs gbc time : 0.000 secs ;; Compiling /tmp/gazonk_14798_0.lsp. ;; End of Pass 1. ;; End of Pass 2. ;; OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3, (Debug quality ignored) ;; Finished compiling /tmp/gazonk_14798_0.o. ;; Loading /tmp/gazonk_14798_0.o ;; start address -T 0xaac250 ;; Finished loading /tmp/gazonk_14798_0.o real time : 3.010 secs run-gbc time : 3.010 secs child run time : 0.000 secs gbc time : 0.000 secs ;; Compiling /tmp/gazonk_14798_0.lsp. ;; End of Pass 1. ;; End of Pass 2. ;; OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3, (Debug quality ignored) ;; Finished compiling /tmp/gazonk_14798_0.o. ;; Loading /tmp/gazonk_14798_0.o ;; start address -T 0xa6c6e8 ;; Finished loading /tmp/gazonk_14798_0.o real time : 5.780 secs run-gbc time : 5.770 secs child run time : 0.000 secs gbc time : 0.000 secs ;; Finished loading /tmp/mb.l T > ============================================================================= GCL is able to infer the types from the above and conclude that a direct call to the C routine in libm can proceed without boxing. These are just some examples -- many other such functions have now been implemented in gcl_mnum.lsp. Take care, -- 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