(FILECREATED "22-Sep-86 17:00:44" ("compiled on " {ERIS}LIBRARY>CMLARITH.;40) "16-Sep-86 11:57:30" in "Xerox Lisp 16-Sep-86 ..." dated "16-Sep-86 12:29:41") (FILECREATED "17-Sep-86 15:06:57" {ERIS}LIBRARY>CMLARITH.;40 122580 changes to: (FNS REM FLOAT-RADIX) previous date: "11-Sep-86 16:42:40" {ERIS}LIBRARY>CMLARITH.;39) (RPAQQ CMLARITHCOMS ((* * CMLARITH. Common Lisp Arithmetic. Covers all of Common Lisp arithmetic except for higher math functions. Covers sections 2.1-2.1.4, 12.1-12.4, and %12.6-12.10 Doesn't cover sections %12.5-12.5.3. -- By Kelly Roach *) (COMS (* Miscellaneous. *) (FNS ISQRT PRIMEP PHASE SIGNUM %%SIGNUM)) (COMS (* Section %2.1.2 Ratios. *) (STRUCTURES RATIO) (DECLARE: DONTEVAL@LOAD DOCOPY (P (* The following makes NUMBERP true on ratios *) (\SETTYPEMASK (\TYPENUMBERFROMNAME (QUOTE RATIO)) (LOGOR \TT.NUMBERP \TT.ATOM)))) (FNS NUMERATOR DENOMINATOR RATIONALP RATIONAL RATIONALIZE %%RATIO-PRINT %%BUILD-RATIO %%RATIONALIZE-FLOAT %%RATIO* %%RATIO/ %%RATIO-TIMES-QUOTIENT %%RATIO+ %%RATIO- %%RATIO-PLUS-DIFFERENCE %%RATIO-INTEGER* %%RATIO-INTEGER+ %%RATIO-INTEGER-)) (COMS (* Section %2.1.4 Complex Numbers. *) (STRUCTURES COMPLEX) (DECLARE: DONTEVAL@LOAD DOCOPY (P (* Make it so that COMPLEX is NUMBERP *) (\SETTYPEMASK (\TYPENUMBERFROMNAME (QUOTE COMPLEX)) (LOGOR \TT.NUMBERP \TT.ATOM)))) (FNS COMPLEX REALPART IMAGPART %%COMPLEX+ %%COMPLEX- %%COMPLEX* %%COMPLEX/ %%COMPLEX-ABS %%COMPLEX-MINUS %%COMPLEX-TIMESI CONJUGATE %%COMPLEX-PRINT)) (COMS (* Section 12.2 Predicates on Numbers. *) (* MINUSP is made to work on ratios. Otherwise, backwards compatible. *) (FNS NEW-MINUSP) (DECLARE: DONTEVAL@LOAD DOCOPY (P (MOVD (QUOTE NEW-MINUSP) (QUOTE MINUSP)))) (FNS CL:ZEROP) (FNS EVENP ODDP PLUSP)) (COMS (* Section 12.3 Comparisons on Numbers. *) (FNS %%= %%>) (FNS = %%= /= < > <= >=) (PROP DMACRO = /= < > <= >=) (* MAX and MIN are OK because they use GREATERP and GREATERP is fixed by this file to work on ratios. *)) (COMS (* Section 12.4 Arithmetic Operations. *) (FNS + - CL:* / %%/ 1+ 1-) (PROP DMACRO + - CL:* / 1+ 1-) (DECLARE: DONTEVAL@LOAD DOCOPY (P (MOVD (QUOTE +) (QUOTE PLUS)) (MOVD (QUOTE -) (QUOTE DIFFERENCE)) (MOVD (QUOTE 1+) (QUOTE ADD1)) (MOVD (QUOTE 1-) (QUOTE SUB1)) (MOVD ( QUOTE CL:*) (QUOTE TIMES)))) (* INCF and DECF implemented by CMLSETF. *) (* CONJUGATE implemented in section %2.1.4 above. *) (FNS CL:GCD %%GCD LCM)) (COMS (* Section 12.6 Type Conversions and Component Extractions on Numbers. *) (* * LLFLOAT replacements. LLFLOAT ufns seem OK once we modify \FLOAT appropriately. *) (FNS FLOAT \FLOAT) (* NUMERATOR and DENOMINATOR implemented in section %2.1.2 above. *) (FNS CL:FLOOR TRUNCATE CEILING ROUND CL:MOD REM FFLOOR FCEILING FTRUNCATE FROUND) (* Page 218 functions. *) (FNS DECODE-FLOAT SCALE-FLOAT FLOAT-RADIX FLOAT-SIGN FLOAT-DIGITS FLOAT-PRECISION INTEGER-DECODE-FLOAT) (* EXPT COMPLEX REALPART and IMAGPART are defined by CMLFLOAT. *)) (COMS (* * LLARITH replacements. Either you have to live with these replacements or you have to start fixing CLISP for loops, the history mechanism etc. Larry tried taking these out and the things I had fixed by putting these replacements in started breaking again. These replacements are supposed to be good for you in any case. *) (COMS (* Non ufns *) (* GREATERP and LESSP are made to work on ratios. EQP, ABS, and MINUS is fixed to work on ratios and complexs. *) (FNS NEW-LESSP NEW-EQP NEW-ABS NEW-MINUS) ( DECLARE: DONTEVAL@LOAD DOCOPY (P (MOVD (QUOTE %%>) (QUOTE GREATERP)) (MOVD (QUOTE NEW-LESSP) (QUOTE LESSP)) (MOVD (QUOTE NEW-EQP) (QUOTE EQP)) (MOVD (QUOTE NEW-ABS) (QUOTE ABS)) (MOVD (QUOTE NEW-MINUS) (QUOTE MINUS))))) (COMS (* New LLARITH UFNS *) (COMS (* INTEGER ARITH UFNS .UNBOX. is made to understand RATIOs so integer arith ufns must be recompiled. \IQUOTREM has not changed, but \IQUOTREM uses .UNBOX. and NEW-SLOWIQUOTIENT and NEW-IREMAINDER use \IQUOTREM. *) (DECLARE: EVAL@COMPILE DONTCOPY (MACROS .CMLUNBOX. .CMLIQUOTREM.)) (FNS NEW-SLOWIPLUS2 NEW-SLOWIDIFFERENCE NEW-SLOWITIMES2 NEW-SLOWIQUOTIENT NEW-IREMAINDER NEW-SLOWIGREATERP)) (DECLARE: DONTEVAL@LOAD DOCOPY (P (\SETUFNENTRY ( CAR (\FINDOP (QUOTE IPLUS2))) (QUOTE NEW-SLOWIPLUS2) 2 0) (\SETUFNENTRY (CAR (\FINDOP (QUOTE IDIFFERENCE))) (QUOTE NEW-SLOWIDIFFERENCE) 2 0) (\SETUFNENTRY (CAR (\FINDOP (QUOTE ITIMES2))) (QUOTE NEW-SLOWITIMES2) 2 0) (\SETUFNENTRY (CAR (\FINDOP (QUOTE IQUOTIENT))) (QUOTE NEW-SLOWIQUOTIENT) 2 0) ( \SETUFNENTRY (CAR (\FINDOP (QUOTE IREMAINDER))) (QUOTE NEW-IREMAINDER) 2 0) (\SETUFNENTRY (CAR ( \FINDOP (QUOTE IGREATERP))) (QUOTE NEW-SLOWIGREATERP) 2 0))))) (COMS (* New general arithmetic UFNs which know about ratio and complex *) (* NOTE: %%/ CAN NOT COMPILE INTO THE EXISTING QUOTIENT OPCODE. This is because %%/ is supposed to produce a rational when numerator is not evenly divisible by denominator. Therefore, there is no MACRO for %%/ below. *) (PROP DOPVAL %%+ %%- %%* %%>) (FNS %%+ %%- %%* %%/) (DECLARE: DONTEVAL@LOAD DOCOPY (P (\SETUFNENTRY (CAR (\FINDOP (QUOTE PLUS2))) (QUOTE %%+) 2 0) (\SETUFNENTRY (CAR (\FINDOP (QUOTE DIFFERENCE))) (QUOTE %%-) 2 0) (\SETUFNENTRY (CAR (\FINDOP ( QUOTE TIMES2))) (QUOTE %%*) 2 0) (\SETUFNENTRY (CAR (\FINDOP (QUOTE GREATERP))) (QUOTE %%>) 2 0)))) ( COMS (* Section 12.7 Logical Operations on Numbers. *) (* Page 221 functions. LOGAND LOGXOR are OK. *) (FNS LOGIOR LOGEQV LOGNAND LOGNOR LOGANDC1 LOGANDC2 LOGORC1 LOGORC2) (* Page 222.0 BOOLE and constants. *) (FNS BOOLE) (INITVARS (BOOLE-CLR 0) (BOOLE-SET 1) (BOOLE-1 2) (BOOLE-2 3) (BOOLE-C1 4) ( BOOLE-C2 5) (BOOLE-AND 6) (BOOLE-IOR 7) (BOOLE-XOR 8) (BOOLE-EQV 9) (BOOLE-NAND 10) (BOOLE-NOR 11) ( BOOLE-ANDC1 12) (BOOLE-ANDC2 13) (BOOLE-ORC1 14) (BOOLE-ORC2 15)) (* Remainder of section 12.7 LOGNOT is OK. *) (FNS LOGTEST LOGBITP) (FNS ASH) (FNS LOGCOUNT %%LOGCOUNT) (FNS INTEGER-LENGTH)) (COMS (* Section 12.8 Byte Manipulations Functions. *) (* BYTE macro already implemented. Should be function. * ) (FNS BYTE-SIZE BYTE-POSITION) (* LDB macro already implemented. Should be function. *) (FNS LDB-TEST MASK-FIELD) (* DPB macro already implemented. Should be function. *) (FNS DEPOSIT-FIELD)) (DECLARE: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP) LLFLOAT LLCODE LLBIGNUM)) (PROP FILETYPE CMLARITH) (DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA) (NLAML) (LAMA DEPOSIT-FIELD MASK-FIELD LDB-TEST BYTE-POSITION BYTE-SIZE LOGCOUNT LOGBITP LOGTEST BOOLE LOGORC2 LOGORC1 LOGANDC2 LOGANDC1 LOGNOR LOGNAND LOGEQV LOGIOR INTEGER-DECODE-FLOAT FLOAT-PRECISION FLOAT-DIGITS FLOAT-SIGN FLOAT-RADIX DECODE-FLOAT FROUND FTRUNCATE FCEILING FFLOOR REM CL:MOD ROUND CEILING TRUNCATE CL:FLOOR FLOAT LCM %%GCD CL:GCD / CL:* - + >= <= > < /= = PLUSP ODDP EVENP CL:ZEROP %%COMPLEX-PRINT %%COMPLEX-TIMESI %%COMPLEX-MINUS %%COMPLEX-ABS %%COMPLEX/ %%COMPLEX* %%COMPLEX- %%COMPLEX+ IMAGPART REALPART COMPLEX %%RATIO-INTEGER- %%RATIO-INTEGER+ %%RATIO-INTEGER* %%RATIO-PLUS-DIFFERENCE %%RATIO- %%RATIO+ %%RATIO-TIMES-QUOTIENT %%RATIO/ %%RATIO* %%BUILD-RATIO RATIONALIZE RATIONAL DENOMINATOR NUMERATOR %%SIGNUM SIGNUM PHASE PRIMEP ISQRT))))) ISQRT D1 (L (0 INTEGER)) f@3 Yj@hiP@ 1kHkm YdHkjhimj ԺJkIhiIIJm [d@hiKKZo@ (143Q CL:ERROR 111Q ASH 63Q ASH 40Q ASH 35Q ASH 21Q INTEGER-LENGTH) NIL ( 137Q "Isqrt: ~S argument must be a nonnegative integer") PRIMEP D1 (L (0 X)) s@lhil@hi @l D1 (NAME > L (1 Y 0 X)) @qH_d3 ;AZYd3 @Al@AI`A @A igJo bl5A\[d3 lK`A @A igLo bO`SA^]d3 @ @ Al@ @ AM`@ A A @ igNo bigHo b(343Q CHECK-TYPE-FAIL 323Q CHECK-TYPE-FAIL 304Q DENOMINATOR 300Q NUMERATOR 273Q DENOMINATOR 267Q NUMERATOR 247Q DENOMINATOR 243Q NUMERATOR 226Q DENOMINATOR 222Q NUMERATOR 171Q CHECK-TYPE-FAIL 153Q NUMERATOR 145Q DENOMINATOR 100Q CHECK-TYPE-FAIL 62Q NUMERATOR 54Q DENOMINATOR) (333Q X 313Q Y 260Q RATIOTYPE# 203Q RATIOTYPE# 161Q Y 137Q RATIOTYPE# 70Q Y 46Q RATIOTYPE#) ( 340Q (OR INTEGER FLOAT RATIO) 320Q (OR INTEGER FLOAT RATIO) 166Q (OR (OR INTEGER FLOAT) RATIO) 75Q (OR INTEGER FLOAT RATIO)) = D1 (L (0 -args-)) I eka!Hl2MdLNZ!ia_OOh_Mk]O&_IK hJ(100Q %%=) NIL () %%= D1 (NAME = L (1 Y 0 X))  @A:{@H_d3 HAZYdl@A `@A MjA bbI3higJo b`eA\[d`@ A : @ A :l@A:Kd3 `@A A jbbRigLo bOdlPA^]dlq3 BMd`6`@A A jbbigNo b`cA_d`&@ A E@ A bb3@ A !@ jbbigOo bigHo bv(613Q CHECK-TYPE-FAIL 573Q CHECK-TYPE-FAIL 543Q COMPLEX-IMAGPART 531Q %%= 525Q COMPLEX-REALPART 503Q COMPLEX-IMAGPART 477Q COMPLEX-IMAGPART 465Q %%= 462Q COMPLEX-REALPART 456Q COMPLEX-REALPART 423Q CHECK-TYPE-FAIL 374Q COMPLEX-IMAGPART 366Q %%= 363Q COMPLEX-REALPART 274Q CHECK-TYPE-FAIL 245Q COMPLEX-IMAGPART 237Q %%= 234Q COMPLEX-REALPART 174Q RATIO-DENOMINATOR 170Q RATIO-DENOMINATOR 161Q RATIO-NUMERATOR 155Q RATIO-NUMERATOR 122Q CHECK-TYPE-FAIL 67Q COMPLEX-IMAGPART 60Q %%= 55Q COMPLEX-REALPART 40Q FEQP) (603Q X 562Q Y 446Q COMPLEXTYPE# 433Q COMPLEXTYPE# 413Q Y 353Q COMPLEXTYPE# 342Q RATIOTYPE# 264Q Y 224Q COMPLEXTYPE# 207Q FLOATP 145Q RATIOTYPE# 132Q RATIOTYPE# 112Q Y 45Q COMPLEXTYPE#) ( 610Q (OR INTEGER RATIO FLOAT COMPLEX) 570Q (OR COMPLEX NUMBER) 420Q (OR FLOAT (OR INTEGER RATIO) COMPLEX) 271Q (OR RATIO FLOAT INTEGER COMPLEX) 117Q (OR FLOAT COMPLEX NUMBER)) /= D1 (L (0 -args-)) NeHk2JdIK1IZ)iaL Mh\JkZM&JL hihK[ihJ(67Q %%=) NIL () < D1 (L (0 -args-)) ^ eka!Hl2MdLNZhJIJ[i"h a_OOh_Mk]O&_iKdKhNIL NIL () > D1 (L (0 -args-)) ^ eka!Hl2MdLNZhIJJ[i"h a_OOh_Mk]O&_iKdKhNIL NIL () <= D1 (L (0 -args-)) f eka!Hl2MdLNZh1IJ"h a_OOh_Mk]O&_iJ[ihiKKhihKNIL NIL () >= D1 (L (0 -args-)) f eka!Hl2MdLNZh1JI"h a_OOh_Mk]O&_iJ[ihiKKhihKNIL NIL () (PUTPROPS = DMACRO (DEFMACRO (N &REST NS) (COND ((CDR NS) (LET ((NNAME (GENSYM))) (BQUOTE (LET (((\, NNAME) (\, N))) (AND (\,@ (for X in NS collect (BQUOTE (%%= (\, NNAME) (\, X)))))))))) (T (BQUOTE (%%= (\, N) (\, (CAR NS)))))))) (PUTPROPS /= DMACRO (DEFMACRO (N &REST NS) (COND (NS (COND ((CDR NS) (LET ((VARS (for X in (CONS N NS) collect (LIST (GENSYM (QUOTE /=)) X)))) (BQUOTE (LET (\, VARS) (AND (\,@ (for X on VARS join (for Y on (CDR VARS) collect (BQUOTE (NOT (= (\, (CAAR X)) (\, (CAAR Y))))))))))))) (T (BQUOTE (NOT (= (\, N) (\, (CAR NS)))))))) (T T)))) (PUTPROPS < DMACRO (DEFMACRO (N &REST NS) (COND ((NULL NS) T) ((CDR NS) (LET ((VARS (FOR X IN (CONS N NS) COLLECT (LIST (GENSYM (QUOTE /=)) X)))) (BQUOTE ((OPENLAMBDA (\, (MAPCAR VARS (QUOTE CAR))) (AND ( \,@ (for X on VARS while (CDR X) collect (BQUOTE (LESSP (\, (CAAR X)) (\, (CAADR X)))))))) (\,@ ( MAPCAR VARS (QUOTE CADR))))))) (T (BQUOTE (LESSP (\, N) (\, (CAR NS)))))))) (PUTPROPS > DMACRO (DEFMACRO (N &REST NS) (COND ((NULL NS) T) ((CDR NS) (LET ((VARS (FOR X IN (CONS N NS) COLLECT (LIST (GENSYM (QUOTE /=)) X)))) (BQUOTE ((OPENLAMBDA (\, (MAPCAR VARS (QUOTE CAR))) (AND ( \,@ (for X on VARS while (CDR X) collect (BQUOTE (GREATERP (\, (CAAR X)) (\, (CAADR X)))))))) (\,@ ( MAPCAR VARS (QUOTE CADR))))))) (T (BQUOTE (GREATERP (\, N) (\, (CAR NS)))))))) (PUTPROPS <= DMACRO (DEFMACRO (N &REST NS) (COND ((NULL NS) T) ((CDR NS) (LET ((VARS (FOR X IN (CONS N NS) COLLECT (LIST (GENSYM (QUOTE /=)) X)))) (BQUOTE ((OPENLAMBDA (\, (MAPCAR VARS (QUOTE CAR))) (AND (\,@ (for X on VARS while (CDR X) collect (BQUOTE (LEQ (\, (CAAR X)) (\, (CAADR X)))))))) (\,@ (MAPCAR VARS (QUOTE CADR))))))) (T (BQUOTE (LEQ (\, N) (\, (CAR NS)))))))) (PUTPROPS >= DMACRO (DEFMACRO (N &REST NS) (COND ((NULL NS) T) ((CDR NS) (LET ((VARS (FOR X IN (CONS N NS) COLLECT (LIST (GENSYM (QUOTE >=)) X)))) (BQUOTE ((OPENLAMBDA (\, (MAPCAR VARS (QUOTE CAR))) (AND (\,@ (for X on VARS while (CDR X) collect (BQUOTE (NOT (< (\, (CAAR X)) (\, (CAADR X))))))))) (\,@ ( MAPCAR VARS (FUNCTION CADR))))))) (T (BQUOTE (GEQ (\, N) (\, (CAR NS)))))))) + D1 (L (0 N)) )e0HjjkakKHhiKk[aJIԺJNIL NIL () - D1 (L (0 N)) .e0HkkajIkakKHhiKk[aJIպJNIL NIL () CL:* D1 (L (0 N)) )e0HjkkakKHhiKk[aJIֺJNIL NIL () / D1 (L (0 -args-)) M eka!Hl2MdLN/kI a_OOh_Mk]O&_IK JZI(102Q %%/ 35Q %%/) NIL () %%/ D1 (NAME / L (1 N2 0 N1))  @ H_d3 AZYd3 2@d`!d`A`A`@dA j@AA l@AId`A @A bb`@j A igJo blSA\[d3 lKd`A @A bbB`@o A igLo bOd`IA^]d3 @ @ A lBMd`@A `QigNo b`dA__d3 @Aj l@Ao Od`A @A bb`@A igOo bigHo bS(651Q CHECK-TYPE-FAIL 631Q CHECK-TYPE-FAIL 613Q %%COMPLEX/ 566Q NUMERATOR 560Q DENOMINATOR 540Q %%COMPLEX/ 535Q %%MAKE-COMPLEX 516Q %%COMPLEX/ 513Q %%MAKE-COMPLEX 460Q CHECK-TYPE-FAIL 432Q %%RATIO/ 403Q %%BUILD-RATIO 376Q DENOMINATOR 372Q NUMERATOR 337Q CHECK-TYPE-FAIL 322Q %%COMPLEX/ 316Q %%MAKE-COMPLEX 266Q NUMERATOR 260Q DENOMINATOR 210Q CHECK-TYPE-FAIL 173Q %%COMPLEX/ 167Q %%MAKE-COMPLEX 143Q NUMERATOR 135Q DENOMINATOR 105Q %%BUILD-RATIO 71Q IMOD) (641Q N1 620Q N2 604Q COMPLEXTYPE# 550Q RATIOTYPE# 470Q COMPLEXTYPE# 450Q N2 437Q COMPLEXTYPE# 422Q RATIOTYPE# 352Q RATIOTYPE# 327Q N2 304Q COMPLEXTYPE# 250Q RATIOTYPE# 200Q N2 160Q COMPLEXTYPE# 125Q RATIOTYPE# 61Q MAX.INTEGER 53Q MIN.INTEGER 43Q MAX.INTEGER 34Q MIN.INTEGER) ( 646Q (OR INTEGER FLOAT RATIO COMPLEX) 626Q (OR INTEGER FLOAT RATIO COMPLEX) 532Q 0.0 455Q (OR INTEGER FLOAT RATIO COMPLEX) 334Q (OR (OR INTEGER FLOAT) RATIO COMPLEX) 313Q 0.0 205Q (OR INTEGER FLOAT RATIO COMPLEX)) 1+ D1 (L (0 NUMBER)) @kNIL NIL () 1- D1 (L (0 NUMBER)) @kNIL NIL () (PUTPROPS + DMACRO (DEFMACRO (&REST NUMBERS) (COND ((NULL NUMBERS) 0) (T (BQUOTE (PLUS (\., NUMBERS))) )))) (PUTPROPS - DMACRO (DEFMACRO (NUMBER &REST NUMBERS) (COND ((NULL NUMBERS) (BQUOTE (DIFFERENCE 0 (\, NUMBER)))) (T (for X in NUMBERS do (SETQ NUMBER (BQUOTE (DIFFERENCE (\, NUMBER) (\, X)))) finally ( RETURN NUMBER)))))) (PUTPROPS CL:* DMACRO (DEFMACRO (&REST NUMBERS) (COND ((NULL NUMBERS) 1) (T (BQUOTE (TIMES (\., NUMBERS))))))) (PUTPROPS / DMACRO (DEFMACRO (NUMBER &REST NUMBERS) (COND ((NULL NUMBERS) (BQUOTE (%%/ 1 (\, NUMBER))) ) (T (for X in NUMBERS do (SETQ NUMBER (BQUOTE (%%/ (\, NUMBER) (\, X)))) finally (RETURN NUMBER)))))) (PUTPROPS 1+ DMACRO (DEFMACRO (X) (BQUOTE (PLUS (\, X) 1)))) (PUTPROPS 1- DMACRO (DEFMACRO (X) (BQUOTE (DIFFERENCE (\, X) 1)))) (MOVD (QUOTE +) (QUOTE PLUS)) (MOVD (QUOTE -) (QUOTE DIFFERENCE)) (MOVD (QUOTE 1+) (QUOTE ADD1)) (MOVD (QUOTE 1-) (QUOTE SUB1)) (MOVD (QUOTE CL:*) (QUOTE TIMES)) CL:GCD D1 (L (0 -args-)) heHk2JdIK1IjaL Mh\JkZM&3 oI I ZI[J\3 oL JL ZdkK(134Q %%GCD 126Q CL:ERROR 100Q ABS 72Q CL:ERROR) NIL ( 122Q "GCD: ~S is not an integer." 65Q "GCD: ~S is not an integer.") %%GCD D1 (L (1 V 0 U)) @ A 2HjHkI kH k IjHkjhiIkjhiJHkjhHm Im Jk԰ijIՅHm \jLdd HK iLm \kjhL LXjLչHIհ(226Q PLUSP 210Q ASH 177Q ASH 170Q \FZEROP 152Q ASH 130Q ASH 121Q ASH 45Q \FZEROP 37Q %%= 31Q %%= 7 ABS 3 ABS) NIL () LCM D1 (L (0 -args-)) ekaAHl2 OdNOI3 %,a_OOh__Ok_O&_oI I [J\K]3 oM M KM K[dj޿L(161Q %%/ 156Q %%GCD 151Q ABS 144Q CL:ERROR 116Q ABS 111Q CL:ERROR) NIL ( 140Q "LCM: ~S is not an integer." 105Q "LCM: ~S is not an integer.") FLOAT D1 (L (1 OTHER 0 NUMBER)) @NIL (3 FLOATP) () \FLOAT D1 (L (0 X)) @@d3 dl@@@Hn$IjHjnHkظnHٸnIkعkjlHIi k1j!jY@hi@k@jkjn@kغIlHJi @  @ @ @l b](241Q \LISPERROR 231Q RATIO-DENOMINATOR 225Q RATIO-NUMERATOR 220Q RATIO-P 214Q \BIGNUM.TO.FLOAT 207Q \MAKEFLOAT 124Q \MAKEFLOAT) NIL () CL:FLOOR D1 (L (0 -args-)) UekaAlHklaIJ [K]jMi!jJI hjILkMJ LM (122Q VALUES 114Q VALUES 72Q \FZEROP 66Q PLUSP 33Q \MVLIST 30Q TRUNCATE) NIL () TRUNCATE D1 (L (0 -args-)) eka lHklah[JkI^]d3 IolIdM`I I ۰UigNo Yl:O`IJ igOo Zhl?J__d3 lIJ [IKJ\KL O`igOo ZO`igOo I__d3 J__d3 kIJ۰(321Q CHECK-TYPE-FAIL 270Q CHECK-TYPE-FAIL 241Q VALUES 225Q \FIXP.FROM.FLOATP 165Q CHECK-TYPE-FAIL 147Q TRUNCATE 144Q %%/ 116Q CHECK-TYPE-FAIL 77Q RATIO-DENOMINATOR 73Q RATIO-NUMERATOR) (310Q NUMBER 301Q RATIOTYPE# 257Q DIVISOR 250Q RATIOTYPE# 154Q DIVISOR 135Q RATIOTYPE# 106Q NUMBER 65Q RATIOTYPE#) ( 316Q (OR INTEGER FLOAT RATIO) 265Q (OR (OR INTEGER FLOAT) RATIO) 162Q (OR INTEGER FLOAT RATIO) 113Q (OR INTEGER FLOAT RATIO)) CEILING D1 (L (0 -args-)) UekaAlHklaIJ [K]jM i!jJjI hI LkMJ LM (122Q VALUES 114Q VALUES 102Q PLUSP 71Q \FZEROP 33Q \MVLIST 30Q TRUNCATE) NIL () ROUND D1 (L (0 -args-)) ekaqlHkilaJK l oIK ]M_LOL NkjhijK/NkOK jL_OOO NkjhijKNkOK NO (217Q VALUES 210Q VALUES 155Q %%= 133Q VALUES 100Q %%= 56Q \MVLIST 53Q TRUNCATE 40Q %%/ 33Q ABS) NIL ( 45Q .5) CL:MOD D1 (L (1 DIVISOR 0 NUMBER)) 1@A HjHijA@ hj@HAH(40Q \FZEROP 34Q PLUSP 4 REM) NIL () REM D1 (L (1 DIVISOR 0 NUMBER)) @A (7 \MVLIST 4 TRUNCATE) NIL () FFLOOR D1 (L (0 -args-)) -ekaAlHklaIJ [KLM (52Q VALUES 33Q \MVLIST 30Q CL:FLOOR) (46Q FLOATP) () FCEILING D1 (L (0 -args-)) -ekaAlHklaIJ [KLM (52Q VALUES 33Q \MVLIST 30Q CEILING) (46Q FLOATP) () FTRUNCATE D1 (L (0 -args-)) -ekaAlHklaIJ [KLM (52Q VALUES 33Q \MVLIST 30Q TRUNCATE) (46Q FLOATP) () FROUND D1 (L (0 -args-)) -ekaAlHklaIJ [KLM (52Q VALUES 33Q \MVLIST 30Q ROUND) (46Q FLOATP) () DECODE-FLOAT D1 (L (0 FLOAT)) G@bddo ojo n?@@l~@joo (104Q VALUES 34Q VALUES 16Q %%=) (3 FLOATP) ( 101Q -1.0 74Q 1.0 31Q 1.0 24Q 0.0 13Q 0.0) SCALE-FLOAT D1 (L (1 INTEGER 0 FLOAT)) 2@bddo o@Al@l@i (57Q \MAKEFLOAT 16Q %%=) (3 FLOATP) ( 23Q 0.0 13Q 0.0) FLOAT-RADIX D1 (L (0 FLOAT)) lNIL NIL () FLOAT-SIGN D1 (L (0 -args-)) (ekalHkIlajIjJJjJNIL (23Q FLOATP) () FLOAT-DIGITS D1 (L (0 FLOAT)) @llo@ (20Q CL:ERROR) NIL ( 14Q "Float-digits: ~A not a float") FLOAT-PRECISION D1 (L (0 FLOAT)) @j@dd j (22Q FLOAT-DIGITS 14Q \FZEROP) NIL () INTEGER-DECODE-FLOAT D1 (L (0 FLOAT)) ;@bddo jdk l@@l@jkm (70Q VALUES 26Q VALUES 16Q %%=) (3 FLOATP) ( 13Q 0.0) NEW-LESSP D1 (L (1 Y 0 X)) A@NIL NIL () NEW-EQP D1 (L (1 Y 0 X)) 8@A3@d3A3@A @A@dl@Al @A (65Q EQDEFP 23Q %%=) NIL () NEW-ABS D1 (L (0 X)) f@HYd3 j@j@@lo@o@Id`j@ j@ @ `@ igHo b(137Q CHECK-TYPE-FAIL 122Q %%COMPLEX-ABS 107Q %%MAKE-RATIO 104Q DENOMINATOR 77Q NUMERATOR 67Q NUMERATOR) (127Q X 114Q COMPLEXTYPE# 56Q RATIOTYPE#) ( 134Q (OR INTEGER SINGLE-FLOAT RATIO COMPLEX) 45Q 0.0 35Q 0.0) NEW-MINUS D1 (L (0 N)) j@NIL NIL () (MOVD (QUOTE %%>) (QUOTE GREATERP)) (MOVD (QUOTE NEW-LESSP) (QUOTE LESSP)) (MOVD (QUOTE NEW-EQP) (QUOTE EQP)) (MOVD (QUOTE NEW-ABS) (QUOTE ABS)) (MOVD (QUOTE NEW-MINUS) (QUOTE MINUS)) NEW-SLOWIPLUS2 D1 (NAME IPLUS L (1 Y 0 X)) P@dl@@dk(j@hij@n@ӹAdl DOPVAL (2 GREATERP)) %%+ D1 (NAME + L (1 N2 0 N1)) X @ H_d3 GAZYd3 @Al@AId`A@ `@j A igJo blJA\[d3 lKd`@A A `@o A igLo bOd`JA^]d3 @A l@ @ AMd`@A `YigNo b`OA__d3 @Aj l@Ao Od``@A igOo bigHo b(520Q CHECK-TYPE-FAIL 500Q CHECK-TYPE-FAIL 462Q %%COMPLEX+ 434Q %%COMPLEX+ 431Q %%MAKE-COMPLEX 412Q %%COMPLEX+ 407Q %%MAKE-COMPLEX 354Q CHECK-TYPE-FAIL 326Q %%RATIO+ 304Q DENOMINATOR 300Q NUMERATOR 266Q %%RATIO-INTEGER+ 232Q CHECK-TYPE-FAIL 215Q %%COMPLEX+ 211Q %%MAKE-COMPLEX 170Q DENOMINATOR 164Q NUMERATOR 114Q CHECK-TYPE-FAIL 77Q %%COMPLEX+ 73Q %%MAKE-COMPLEX 57Q %%RATIO-INTEGER+) (510Q N1 467Q N2 453Q COMPLEXTYPE# 444Q RATIOTYPE# 364Q COMPLEXTYPE# 344Q N2 333Q COMPLEXTYPE# 316Q RATIOTYPE# 245Q RATIOTYPE# 222Q N2 177Q COMPLEXTYPE# 154Q RATIOTYPE# 104Q N2 64Q COMPLEXTYPE# 47Q RATIOTYPE#) ( 515Q (OR INTEGER FLOAT RATIO COMPLEX) 475Q (OR INTEGER FLOAT RATIO COMPLEX) 426Q 0.0 351Q (OR INTEGER FLOAT RATIO COMPLEX) 227Q (OR (OR INTEGER FLOAT) RATIO COMPLEX) 206Q 0.0 111Q (OR INTEGER FLOAT RATIO COMPLEX)) %%- D1 (NAME - L (1 N2 0 N1)) \ @ H_d3 KAZYd3 @Al@AId`@k A `@j A igJo blJA\[d3 lKd`@A A `@o A igLo bOd`JA^]d3 @A l@ @ AMd`@A `YigNo b`OA__d3 @Aj l@Ao Od``@A igOo bigHo b(524Q CHECK-TYPE-FAIL 504Q CHECK-TYPE-FAIL 466Q %%COMPLEX- 440Q %%COMPLEX- 435Q %%MAKE-COMPLEX 416Q %%COMPLEX- 413Q %%MAKE-COMPLEX 360Q CHECK-TYPE-FAIL 332Q %%RATIO- 310Q DENOMINATOR 304Q NUMERATOR 272Q %%RATIO-INTEGER- 236Q CHECK-TYPE-FAIL 221Q %%COMPLEX- 215Q %%MAKE-COMPLEX 174Q DENOMINATOR 170Q NUMERATOR 120Q CHECK-TYPE-FAIL 103Q %%COMPLEX- 77Q %%MAKE-COMPLEX 63Q %%RATIO- 57Q %%MAKE-RATIO) (514Q N1 473Q N2 457Q COMPLEXTYPE# 450Q RATIOTYPE# 370Q COMPLEXTYPE# 350Q N2 337Q COMPLEXTYPE# 322Q RATIOTYPE# 251Q RATIOTYPE# 226Q N2 203Q COMPLEXTYPE# 160Q RATIOTYPE# 110Q N2 70Q COMPLEXTYPE# 47Q RATIOTYPE#) ( 521Q (OR INTEGER FLOAT RATIO COMPLEX) 501Q (OR INTEGER FLOAT RATIO COMPLEX) 432Q 0.0 355Q (OR INTEGER FLOAT RATIO COMPLEX) 233Q (OR (OR INTEGER FLOAT) RATIO COMPLEX) 212Q 0.0 115Q (OR INTEGER FLOAT RATIO COMPLEX)) %%* D1 (NAME CL:* L (1 N2 0 N1)) Y A H_d3 G@ZYd3 @Al@AId`@A `@Aj igJo blJ@\[d3 lKd`@ @ A`@Ao igLo bOd`J@^]d3 A@ l@A A Md`A@ `YigNo b`P@__d3 `@j A Odl@o A `@A igOo bigHo b(521Q CHECK-TYPE-FAIL 501Q CHECK-TYPE-FAIL 463Q %%COMPLEX* 447Q %%COMPLEX* 443Q %%MAKE-COMPLEX 421Q %%COMPLEX* 415Q %%MAKE-COMPLEX 354Q CHECK-TYPE-FAIL 326Q %%RATIO* 305Q DENOMINATOR 301Q NUMERATOR 266Q %%RATIO-INTEGER* 232Q CHECK-TYPE-FAIL 215Q %%COMPLEX* 212Q %%MAKE-COMPLEX 167Q DENOMINATOR 163Q NUMERATOR 114Q CHECK-TYPE-FAIL 77Q %%COMPLEX* 74Q %%MAKE-COMPLEX 57Q %%RATIO-INTEGER*) (511Q N2 470Q N1 454Q COMPLEXTYPE# 406Q RATIOTYPE# 364Q COMPLEXTYPE# 344Q N1 333Q COMPLEXTYPE# 316Q RATIOTYPE# 245Q RATIOTYPE# 222Q N1 177Q COMPLEXTYPE# 154Q RATIOTYPE# 104Q N1 64Q COMPLEXTYPE# 47Q RATIOTYPE#) ( 516Q (OR INTEGER FLOAT RATIO COMPLEX) 476Q (OR (OR INTEGER RATIO) FLOAT COMPLEX) 440Q 0.0 351Q (OR INTEGER FLOAT RATIO COMPLEX) 227Q (OR (OR INTEGER FLOAT) RATIO COMPLEX) 207Q 0.0 111Q (OR INTEGER FLOAT RATIO COMPLEX)) %%/ D1 (NAME / L (1 N2 0 N1))  @ H_d3 AZYd3 2@d`!d`A`A`@dA j@AA l@AId`A @A bb`@j A igJo blSA\[d3 lKd`A @A bbB`@o A igLo bOd`IA^]d3 @ @ A lBMd`@A `QigNo b`dA__d3 @Aj l@Ao Od`A @A bb`@A igOo bigHo bS(651Q CHECK-TYPE-FAIL 631Q CHECK-TYPE-FAIL 613Q %%COMPLEX/ 566Q NUMERATOR 560Q DENOMINATOR 540Q %%COMPLEX/ 535Q %%MAKE-COMPLEX 516Q %%COMPLEX/ 513Q %%MAKE-COMPLEX 460Q CHECK-TYPE-FAIL 432Q %%RATIO/ 403Q %%BUILD-RATIO 376Q DENOMINATOR 372Q NUMERATOR 337Q CHECK-TYPE-FAIL 322Q %%COMPLEX/ 316Q %%MAKE-COMPLEX 266Q NUMERATOR 260Q DENOMINATOR 210Q CHECK-TYPE-FAIL 173Q %%COMPLEX/ 167Q %%MAKE-COMPLEX 143Q NUMERATOR 135Q DENOMINATOR 105Q %%BUILD-RATIO 71Q IMOD) (641Q N1 620Q N2 604Q COMPLEXTYPE# 550Q RATIOTYPE# 470Q COMPLEXTYPE# 450Q N2 437Q COMPLEXTYPE# 422Q RATIOTYPE# 352Q RATIOTYPE# 327Q N2 304Q COMPLEXTYPE# 250Q RATIOTYPE# 200Q N2 160Q COMPLEXTYPE# 125Q RATIOTYPE# 61Q MAX.INTEGER 53Q MIN.INTEGER 43Q MAX.INTEGER 34Q MIN.INTEGER) ( 646Q (OR INTEGER FLOAT RATIO COMPLEX) 626Q (OR INTEGER FLOAT RATIO COMPLEX) 532Q 0.0 455Q (OR INTEGER FLOAT RATIO COMPLEX) 334Q (OR (OR INTEGER FLOAT) RATIO COMPLEX) 313Q 0.0 205Q (OR INTEGER FLOAT RATIO COMPLEX)) (\SETUFNENTRY (CAR (\FINDOP (QUOTE PLUS2))) (QUOTE %%+) 2 0) (\SETUFNENTRY (CAR (\FINDOP (QUOTE DIFFERENCE))) (QUOTE %%-) 2 0) (\SETUFNENTRY (CAR (\FINDOP (QUOTE TIMES2))) (QUOTE %%*) 2 0) (\SETUFNENTRY (CAR (\FINDOP (QUOTE GREATERP))) (QUOTE %%>) 2 0) LOGIOR D1 (L (0 N)) EeHdlkalakkajHjjkalalalJHhiIJaJkZINIL NIL () LOGEQV D1 (L (0 -args-)) GeHk2JdIKImIIJaL Mh\JkZM&JIImNIL NIL () LOGNAND D1 (L (1 INTEGER2 0 INTEGER1)) @AmNIL NIL () LOGNOR D1 (L (1 INTEGER2 0 INTEGER1)) @AmNIL NIL () LOGANDC1 D1 (L (1 INTEGER2 0 INTEGER1)) @mANIL NIL () LOGANDC2 D1 (L (1 INTEGER2 0 INTEGER1)) @AmNIL NIL () LOGORC1 D1 (L (1 INTEGER2 0 INTEGER1)) @mANIL NIL () LOGORC2 D1 (L (1 INTEGER2 0 INTEGER1)) @AmNIL NIL () BOOLE D1 (L (2 INTEGER2 1 INTEGER1 0 OP)) @djjkm@dlAlB@dlAmlBm@dlABlAB @dlABl AB @dl AB l AB @dl AB l AB @dlAB lAB o@ (246Q CL:ERROR 235Q LOGORC2 223Q LOGORC1 206Q LOGANDC2 174Q LOGANDC1 157Q LOGNOR 145Q LOGNAND 130Q LOGEQV 103Q LOGIOR) NIL ( 242Q "~S is not of type (mod 16).") (RPAQ? BOOLE-CLR 0) (RPAQ? BOOLE-SET 1) (RPAQ? BOOLE-1 2) (RPAQ? BOOLE-2 3) (RPAQ? BOOLE-C1 4) (RPAQ? BOOLE-C2 5) (RPAQ? BOOLE-AND 6) (RPAQ? BOOLE-IOR 7) (RPAQ? BOOLE-XOR 8) (RPAQ? BOOLE-EQV 9) (RPAQ? BOOLE-NAND 10) (RPAQ? BOOLE-NOR 11) (RPAQ? BOOLE-ANDC1 12) (RPAQ? BOOLE-ANDC2 13) (RPAQ? BOOLE-ORC1 14) (RPAQ? BOOLE-ORC2 15) LOGTEST D1 (L (1 INTEGER2 0 INTEGER1)) @AjhiNIL NIL () LOGBITP D1 (L (1 INTEGER 0 INDEX)) A@ kk(4 RSH) NIL () ASH D1 (L (1 COUNT 0 INTEGER)) :AjhiAj@@jA @jjAdl@A dj@dbkٰ@(47Q \BIGNUM.LSH 24Q RSH) NIL () LOGCOUNT D1 (L (0 INTEGER)) P@@d3 j@@m@ `)j@@m@jHIIJ ԹHXo@ (115Q CL:ERROR 76Q %%LOGCOUNT 26Q %%LOGCOUNT) (53Q BIGNUM 33Q BIGNUMTYPE#) ( 111Q "Argument not integer, ~A.") %%LOGCOUNT D1 (L (0 N)) jX@djHdkbHkԸNIL NIL () INTEGER-LENGTH D1 (L (0 INTEGER)) j@m@bo@n@Cl@"l@l@@jjkll@lll@@l @lll@lln@ n@n@l l n@l l n@@n @l ln@ll@m l(250Q INTEGER-LENGTH 245Q ASH) NIL ( 16Q 200000Q) BYTE-SIZE D1 (L (0 BYTESPEC)) @NIL NIL () BYTE-POSITION D1 (L (0 BYTESPEC)) @NIL NIL () LDB-TEST D1 (L (1 INTEGER 0 BYTESPEC)) @A jhi(4 MASK-FIELD) NIL () MASK-FIELD D1 (L (1 INTEGER 0 BYTESPEC)) @@kIkHANIL NIL () DEPOSIT-FIELD D1 (L (2 INTEGER 1 BYTESPEC 0 NEWBYTE)) BAAkIkH @A(25Q LOGANDC2) NIL () (PUTPROPS CMLARITH FILETYPE COMPILE-FILE) (PUTPROPS CMLARITH COPYRIGHT ("Xerox Corporation" 1985 1986)) NIL