;; instructions on how to load oct only, assuming you are in ;; lisp/generic directory. This is RJF's version of OCT, based on ;; RTOY's program, based on Yozo Hida's QD program (in C). ;; Why is RTOY version and RJF's version not the same? Well, parallel ;; but different tracks in some respects -- minor differences in ;; design philosophy, and minor differences in emphasis. RJF's version ;; assumes the possibility of generic arithmetic (GA) involving many ;; other kinds of arithmetic, rather than piling it on OCT. RJF's ;; version runs in Allegro CL and does not especially make an effort ;; to optimize for CMU-CL. RTOY's version was written, debugged and ;; optimized for CMU-CL and ported to Allegro (etc) with RJF's help, ;; but doesn't seem to be debugged quite, for Allegro. The advantage ;; of the CMU-CL version is that the quad-double number can be packed ;; differently: CMU-CL supports double-double, and so a complex ;; double-double is sufficient for a (real) quad. Allegro, and most ;; other lisps use a 4-element array of doubles. CMU-CL also supports ;; inlining of program calls as a compiler optimization. Allegro does ;; not do this for user-defined programs. CMU-CL takes a long time to ;; compile this code. Allegro does it virtually instantaneously. One ;; of the consequences of aggressive optimization in Allegro is not ;; saving certain floating-point flags, and so the fastest ;; optimization setting should be (declare (optimize (speed 3)(safety ;; 1))), which is hardly slower than (safety 0). ;; RTOY has played more with elementary functions than RJF, though ;; RJF's may also work. RTOY has done more testing (on CMU-CL). RTOY's ;; i/o functions seem considerably more complicated, but have slightly ;; nicer properties pertaining to rounding. RTOY uses CLOS more ;; thoroughly. RTOY has more complex number stuff. RTOY seems to have ;; though some about NaN and Infinities. But it doesn't work on ;; Allegro :( ;; Anyhow, here's what to do to get RJF's stuff running on allegro: (load "ga") ;generic arithmetic; loads packs, too (load "octi") (load "oct") ;; then do (in-package :oct) ;; or just :pa :oct ;; any of these files can be compiled, probably best done after loading ;; this file.