(FILECREATED " 3-Dec-85 16:25:44" {ERIS}<LISPCORE>LIBRARY>CMLARITH.;10 15466        changes to:  (VARS CMLARITHCOMS)      previous date: "11-Nov-85 16:11:17" {ERIS}<LISPCORE>LIBRARY>CMLARITH.;9)(* Copyright (c) 1985 by Xerox Corporation. All rights reserved.)(PRETTYCOMPRINT CMLARITHCOMS)(RPAQQ CMLARITHCOMS [(RECORDS RATIO COMPLEX)	(FNS PLUSP)	(* MINUSP ODDP EVENP are close enough)	(COMS (FNS = /= < > <= >=)	      (FNS %%=)	      (MACROS = /= < > <= >=))	(* MAX and MIN are OK)	(COMS (FNS - + CL:* / %%/)	      (MACROS - + CL:* /))	(COMS (FNS 1+ 1-)	      (MACROS 1+ 1-))	(CONSTANTS PI (MOST-POSITIVE-FIXNUM MAX.SMALLP)		   (MOST-NEGATIVE-FIXNUM MIN.SMALLP))	(FNS CONJUGATE PHASE SIGNUM CL:SIN CL:COS CL:TAN ASIN ACOS RATIONALP LOGEQV LOGNAND LOGNOR 	     LOGANDC1 LOGANDC2 LOGORC1 LOGORC2 BOOLE LOGTEST LOGBITP BYTE-SIZE BYTE-POSITION LDB-TEST 	     MASK-FIELD DEPOSIT-FIELD)	(CONSTANTS BOOLE-CLR BOOLE-SET BOOLE-1 BOOLE-2 BOOLE-C1 BOOLE-C2 BOOLE-AND BOOLE-IOR 		   BOOLE-XOR BOOLE-EQV BOOLE-NAND BOOLE-NOR BOOLE-ANDC1 BOOLE-ANDC2 BOOLE-ORC1 		   BOOLE-ORC2)	(P (MOVD (QUOTE INTEGERLENGTH)		 (QUOTE INTEGER-LENGTH))	   (MOVD (QUOTE LSH)		 (QUOTE ASH))	   (MOVD (QUOTE LOGOR)		 (QUOTE LOGIOR)))	(DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS		  (ADDVARS (NLAMA)			   (NLAML)			   (LAMA LOGEQV / - >= <= > < /= =])[DECLARE: EVAL@COMPILE (DATATYPE RATIO (NUMERATOR DENOMINATOR))(DEFSTRUCT (COMPLEX (:CONC-NAME NIL)			(:CONSTRUCTOR COMPLEX)			(:PREDICATE COMPLEXP))	     REALPART IMAGPART)](/DECLAREDATATYPE (QUOTE RATIO)		  (QUOTE (POINTER POINTER))		  (QUOTE ((RATIO 0 POINTER)			  (RATIO 2 POINTER)))		  (QUOTE 4))(/DECLAREDATATYPE (QUOTE COMPLEX)		  (QUOTE (POINTER POINTER))		  (QUOTE ((COMPLEX 0 POINTER)			  (COMPLEX 2 POINTER)))		  (QUOTE 4))(DEFINEQ(PLUSP  (CL:LAMBDA (NUMBER)    (GREATERP NUMBER 0))))(* MINUSP ODDP EVENP are close enough)(DEFINEQ(=  (CL:LAMBDA (NUMBER &REST MORE-NUMBERS)                     (* lmm "16-Jul-85 16:51")    (for X in MORE-NUMBERS always (%%= NUMBER X))))(/=  [CL:LAMBDA (&REST NUMBERS)                                 (* lmm "16-Jul-85 16:56")    (for X on NUMBERS always (for Y in (CDR X) always (NOT (= (CAR X)							      Y])(<  [CL:LAMBDA (&REST MORE-NUMBERS)                            (* lmm "16-Jul-85 17:03")    (for X on MORE-NUMBERS while (CDR X) always (LESSP (CAR X)						       (CADR X])(>  [CL:LAMBDA (&REST MORE-NUMBERS)                            (* lmm "16-Jul-85 17:04")    (for X on MORE-NUMBERS while (CDR X) always (GREATERP (CAR X)							  (CADR X])(<=  [CL:LAMBDA (&REST MORE-NUMBERS)                            (* lmm "16-Jul-85 17:18")    (for X on MORE-NUMBERS while (CDR X) always (LEQ (CAR X)						     (CADR X])(>=  [CL:LAMBDA (&REST MORE-NUMBERS)                            (* lmm "16-Jul-85 17:19")    (for X on MORE-NUMBERS while (CDR X) always (GEQ (CAR X)						     (CADR X]))(DEFINEQ(%%=  [LAMBDA (X Y)                                              (* lmm "16-Jul-85 17:01")                                                             (* sort of like EQP)    (if (AND (FIXP X)	     (FIXP Y))	then (IEQP X Y)      else (FEQP X Y]))(DECLARE: EVAL@COMPILE [PUTPROPS = DMACRO (DEFMACRO (N &REST NS)			     (COND ((CDR NS)				    (BQUOTE ([OPENLAMBDA (N)							 (AND (= N (\, (CAR NS)))							      (= N (\,@ (CDR NS]					     , N)))				   (T (BQUOTE (%%= (\, N)						   (\, (CAR NS][PUTPROPS  /= DMACRO  (DEFMACRO    (N &REST NS)    (COND      [NS	(IF	  (CDR NS)	  THEN	  [LET [(VARS (FOR X IN (CONS N NS)			   COLLECT			   (LIST (GENSYM (QUOTE /=))				 X]	       (BQUOTE ([OPENLAMBDA			  (\, (MAPCAR VARS (QUOTE CAR)))			  (AND (\,@ (for X on VARS join					 (for Y on (CDR VARS)					      collect					      (BQUOTE (NOT (= (\, (CAAR X))							      (\, (CAAR Y]			(\,@ (MAPCAR VARS (QUOTE CADR]	  ELSE	  (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 (GEQ (\, (CAAR X))								   (\, (CAADR X]				     (\,@ (MAPCAR VARS (QUOTE CADR]		      (T (BQUOTE (GEQ (\, N)				      (\, (CAR NS])(* MAX and MIN are OK)(DEFINEQ(-  (CL:LAMBDA (NUMBER &REST NUMBERS)                          (* raf "11-Nov-85 16:01")    (if (NULL NUMBERS)	then (DIFFERENCE 0 NUMBER)      else (LET ((RESULT NUMBER))	          (for X in NUMBERS do (SETQ RESULT (DIFFERENCE RESULT X)))	      RESULT))))(+  (CL:LAMBDA (&REST NUMBERS)    (if (NULL NUMBERS)	then 0      else (APPLY (FUNCTION PLUS)		      NUMBERS))))(CL:*  (CL:LAMBDA (&REST NUMBERS)    (if (NULL NUMBERS)	then 1      else (APPLY (FUNCTION TIMES)		      NUMBERS))))(/  [CL:LAMBDA (NUMBER &REST NUMBERS)                          (* lmm " 5-Sep-85 02:56")    (if (NULL NUMBERS)	then (%%/ 1 NUMBER)      else (for X in NUMBERS do (SETQ NUMBER (%%/ NUMBER X)) finally (RETURN NUMBER])(%%/  [LAMBDA (X Y)                                              (* raf "11-Nov-85 16:10")    (if (AND (FIXP X)		 (FIXP Y)		 (ODDP X Y))	then (ERROR "Ratios not implemented")      else (QUOTIENT X Y]))(DECLARE: EVAL@COMPILE [PUTPROPS - DMACRO (DEFMACRO (NUMBER &REST NUMBERS)			     (if (NULL NUMBERS)				 then				 (BQUOTE (DIFFERENCE 0 (\, NUMBER)))				 else				 (for X in NUMBERS do [SETQ NUMBER (BQUOTE (DIFFERENCE (\, NUMBER)										       (\, X]				      finally				      (RETURN NUMBER][DEFMACRO + (&REST NUMBERS)	  (if (NULL NUMBERS)	      then 0 else (BQUOTE (PLUS (\., NUMBERS][DEFMACRO CL:* (&REST NUMBERS)	  (if (NULL NUMBERS)	      then 1 else (BQUOTE (TIMES (\., NUMBERS][PUTPROPS / DMACRO (DEFMACRO (NUMBER &REST NUMBERS)			     (if (NULL NUMBERS)				 then				 (BQUOTE (%%/ 1 (\, NUMBER)))				 else				 (for X in NUMBERS do [SETQ NUMBER (BQUOTE (%%/ (\, NUMBER)										(\, X]				      finally				      (RETURN NUMBER])(DEFINEQ(1+  [LAMBDA (X)    (PLUS X 1])(1-  [LAMBDA (X)    (DIFFERENCE X 1]))(DECLARE: EVAL@COMPILE (PUTPROPS 1+ DMACRO ((X)	   (PLUS X 1)))(PUTPROPS 1- DMACRO ((X)	   (DIFFERENCE X 1))))(DECLARE: EVAL@COMPILE (RPAQQ PI 3.141593)(RPAQ MOST-POSITIVE-FIXNUM MAX.SMALLP)(RPAQ MOST-NEGATIVE-FIXNUM MIN.SMALLP)(CONSTANTS PI (MOST-POSITIVE-FIXNUM MAX.SMALLP)	   (MOST-NEGATIVE-FIXNUM MIN.SMALLP)))(DEFINEQ(CONJUGATE  [LAMBDA (NUMBER)    (IF (TYPE? COMPLEX NUMBER)	THEN (CREATE COMPLEX		     REALPART _ (FETCH REALPART NUMBER)		     IMAGPART _ (FETCH IMAGPART NUMBER))      ELSE NUMBER])(PHASE  (CL:LAMBDA (NUMBER)    "Returns the angle part of the polar representation of a complex number.  For non-complex numbers, this is 0."    (COND      ((COMPLEXP NUMBER)	(CL:ATAN (REALPART NUMBER)		 (IMAGPART NUMBER)))      (T 0))))(SIGNUM  [CL:LAMBDA (NUMBER)    "If NUMBER is zero, return NUMBER, else return (/ NUMBER (ABS NUMBER)).  Currently not implemented for complex numbers."    (COND      ((ZEROP NUMBER)	NUMBER)      (T (COND	   ((RATIONALP NUMBER)	     (COND	       ((PLUSP NUMBER)		 1)	       (T -1)))	   (T (/ NUMBER (ABS NUMBER])(CL:SIN(CL:LAMBDA (RADIANS) (SIN RADIANS T)))(CL:COS(CL:LAMBDA (RADIANS) (COS RADIANS T)))(CL:TAN(CL:LAMBDA (RADIANS) (TAN RADIANS T)))(ASIN(CL:LAMBDA (NUMBER) (ARCSIN NUMBER T)))(ACOS(CL:LAMBDA (NUMBER) (ARCCOS NUMBER T)))(RATIONALP  [LAMBDA (NUMBER)    (OR (INTEGERP NUMBER)	(TYPE? RATIO NUMBER])(LOGEQV  (CL:LAMBDA (&REST INTEGERS)                                (* lmm " 5-Sep-85 02:19")    (COND      (INTEGERS (CL:DO* [(RESULT (pop INTEGERS)				 (LOGNOT (LOGXOR RESULT (pop INTEGERS]			((NULL INTEGERS)			 RESULT)))      (T -1))))(LOGNAND  (CL:LAMBDA (INTEGER1 INTEGER2)                             (* kbr: "31-Aug-85 21:00")    (LOGNOT (LOGAND INTEGER1 INTEGER2))))(LOGNOR  (CL:LAMBDA (INTEGER1 INTEGER2)                             (* kbr: "31-Aug-85 21:00")    (LOGNOT (LOGOR INTEGER1 INTEGER2))))(LOGANDC1  (CL:LAMBDA (INTEGER1 INTEGER2)                             (* kbr: "31-Aug-85 21:00")    (LOGAND (LOGNOT INTEGER1)	    INTEGER2)))(LOGANDC2  (CL:LAMBDA (INTEGER1 INTEGER2)                             (* kbr: "31-Aug-85 21:01")    (LOGAND INTEGER1 (LOGNOT INTEGER2))))(LOGORC1  (CL:LAMBDA (INTEGER1 INTEGER2)                             (* kbr: "31-Aug-85 21:01")    (LOGOR (LOGNOT INTEGER1)	   INTEGER2)))(LOGORC2  (CL:LAMBDA (INTEGER1 INTEGER2)                             (* kbr: "31-Aug-85 21:01")    (LOGOR INTEGER1 (LOGNOT INTEGER2))))(BOOLE  (CL:LAMBDA (OP INTEGER1 INTEGER2)                          (* lmm " 5-Sep-85 02:24")    (SELECTQ OP	     (0 0)	     (1 -1)	     (2 INTEGER1)	     (3 INTEGER2)	     (4 (LOGNOT INTEGER1))	     (5 (LOGNOT INTEGER2))	     (6 (LOGAND INTEGER1 INTEGER2))	     (7 (LOGIOR INTEGER1 INTEGER2))	     (8 (LOGXOR INTEGER1 INTEGER2))	     (9 (LOGEQV INTEGER1 INTEGER2))	     (10 (LOGNAND INTEGER1 INTEGER2))	     (11 (LOGNOR INTEGER1 INTEGER2))	     (12 (LOGANDC1 INTEGER1 INTEGER2))	     (13 (LOGANDC2 INTEGER1 INTEGER2))	     (14 (LOGORC1 INTEGER1 INTEGER2))	     (15 (LOGORC2 INTEGER1 INTEGER2))	     (CL:ERROR "~S is not of type (mod 16)." OP))))(LOGTEST  (CL:LAMBDA (INTEGER1 INTEGER2)                             (* kbr: "31-Aug-85 21:10")    (NOT (EQ (LOGAND INTEGER1 INTEGER2)	     0))))(LOGBITP  (CL:LAMBDA (INDEX INTEGER)                                 (* kbr: "31-Aug-85 21:12")    (EQ (LOADBYTE INTEGER INDEX 1)	1)))(BYTE-SIZE  (CL:LAMBDA (BYTESPEC)                                      (* kbr: "31-Aug-85 21:15")    (fetch (BYTESPEC BYTESPEC.SIZE) of BYTESPEC)))(BYTE-POSITION  (CL:LAMBDA (BYTESPEC)                                      (* lmm "16-Sep-85 13:28")    (fetch (BYTESPEC BYTESPEC.POSITION) of BYTESPEC)))(LDB-TEST  (CL:LAMBDA (BYTESPEC INTEGER)                              (* kbr: "31-Aug-85 21:21")    (NOT (EQ (MASK-FIELD BYTESPEC INTEGER)	     0))))(MASK-FIELD  (CL:LAMBDA (BYTESPEC INTEGER)                              (* kbr: "31-Aug-85 21:21")    (LOGAND (MASK.1'S (fetch (BYTESPEC BYTESPEC.POSITION) of BYTESPEC)		      (fetch (BYTESPEC BYTESPEC.SIZE) of BYTESPEC))	    INTEGER)))(DEPOSIT-FIELD  (CL:LAMBDA (NEWBYTE BYTESPEC INTEGER)                      (* kbr: "31-Aug-85 21:23")    (DEPOSITBYTE NEWBYTE (fetch (BYTESPEC BYTESPEC.POSITION) of BYTESPEC)		 (fetch (BYTESPEC BYTESPEC.SIZE) of BYTESPEC)		 INTEGER))))(DECLARE: EVAL@COMPILE (RPAQQ BOOLE-CLR 0)(RPAQQ BOOLE-SET 1)(RPAQQ BOOLE-1 2)(RPAQQ BOOLE-2 3)(RPAQQ BOOLE-C1 4)(RPAQQ BOOLE-C2 5)(RPAQQ BOOLE-AND 6)(RPAQQ BOOLE-IOR 7)(RPAQQ BOOLE-XOR 8)(RPAQQ BOOLE-EQV 9)(RPAQQ BOOLE-NAND 10)(RPAQQ BOOLE-NOR 11)(RPAQQ BOOLE-ANDC1 12)(RPAQQ BOOLE-ANDC2 13)(RPAQQ BOOLE-ORC1 14)(RPAQQ BOOLE-ORC2 15)(CONSTANTS BOOLE-CLR BOOLE-SET BOOLE-1 BOOLE-2 BOOLE-C1 BOOLE-C2 BOOLE-AND BOOLE-IOR BOOLE-XOR 	   BOOLE-EQV BOOLE-NAND BOOLE-NOR BOOLE-ANDC1 BOOLE-ANDC2 BOOLE-ORC1 BOOLE-ORC2))(MOVD (QUOTE INTEGERLENGTH)      (QUOTE INTEGER-LENGTH))(MOVD (QUOTE LSH)      (QUOTE ASH))(MOVD (QUOTE LOGOR)      (QUOTE LOGIOR))(DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDTOVAR NLAMA )(ADDTOVAR NLAML )(ADDTOVAR LAMA LOGEQV / - >= <= > < /= =))(PRETTYCOMPRINT CMLARITHCOMS)(RPAQQ CMLARITHCOMS [(RECORDS RATIO COMPLEX)	(FNS PLUSP)	(* MINUSP ODDP EVENP are close enough)	(COMS (FNS = /= < > <= >=)	      (FNS %%=)	      (MACROS = /= < > <= >=))	(* MAX and MIN are OK)	(COMS (FNS - + CL:* / %%/)	      (MACROS - + CL:* /))	(COMS (FNS 1+ 1-)	      (MACROS 1+ 1-))	(CONSTANTS PI (MOST-POSITIVE-FIXNUM MAX.SMALLP)		   (MOST-NEGATIVE-FIXNUM MIN.SMALLP))	(FNS CONJUGATE PHASE SIGNUM CL:SIN CL:COS CL:TAN ASIN ACOS RATIONALP LOGEQV LOGNAND LOGNOR 	     LOGANDC1 LOGANDC2 LOGORC1 LOGORC2 BOOLE LOGTEST LOGBITP BYTE-SIZE BYTE-POSITION LDB-TEST 	     MASK-FIELD DEPOSIT-FIELD)	(CONSTANTS BOOLE-CLR BOOLE-SET BOOLE-1 BOOLE-2 BOOLE-C1 BOOLE-C2 BOOLE-AND BOOLE-IOR 		   BOOLE-XOR BOOLE-EQV BOOLE-NAND BOOLE-NOR BOOLE-ANDC1 BOOLE-ANDC2 BOOLE-ORC1 		   BOOLE-ORC2)	(P (MOVD (QUOTE INTEGERLENGTH)		 (QUOTE INTEGER-LENGTH))	   (MOVD (QUOTE LSH)		 (QUOTE ASH))	   (MOVD (QUOTE LOGOR)		 (QUOTE LOGIOR)))	(DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS		  (ADDVARS (NLAMA)			   (NLAML)			   (LAMA LOGEQV / CL:* + - >= <= > < /= =])(DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDTOVAR NLAMA )(ADDTOVAR NLAML )(ADDTOVAR LAMA LOGEQV / CL:* + - >= <= > < /= =))(PUTPROPS CMLARITH COPYRIGHT ("Xerox Corporation" 1985))(DECLARE: DONTCOPY  (FILEMAP (NIL (1844 1918 (PLUSP 1854 . 1916)) (1966 3231 (= 1976 . 2141) (/= 2143 . 2368) (< 2370 . 2585) (> 2587 . 2801) (<= 2803 . 3015) (>= 3017 . 3229)) (3232 3539 (%%= 3242 . 3537)) (6347 7493 (- 6357 . 6666) (+ 6668 . 6812) (CL:* 6814 . 6962) (/ 6964 . 7239) (%%/ 7241 . 7491)) (8255 8357 (1+ 8265 . 8306) (1- 8308 . 8355)) (8701 13204 (CONJUGATE 8711 . 8930) (PHASE 8932 . 9198) (SIGNUM 9200 . 9562) (CL:SIN 9564 . 9614) (CL:COS 9616 . 9666) (CL:TAN 9668 . 9718) (ASIN 9720 . 9769) (ACOS 9771 . 9820) (RATIONALP 9822 . 9916) (LOGEQV 9918 . 10191) (LOGNAND 10193 . 10343) (LOGNOR 10345 . 10493) (LOGANDC1 10495 . 10651) (LOGANDC2 10653 . 10804) (LOGORC1 10806 . 10959) (LOGORC2 10961 . 11110) (BOOLE 11112 . 11824) (LOGTEST 11826 . 11994) (LOGBITP 11996 . 12149) (BYTE-SIZE 12151 . 12316) (BYTE-POSITION 12318 . 12490) (LDB-TEST 12492 . 12664) (MASK-FIELD 12666 . 12934) (DEPOSIT-FIELD 12936 . 13202)))))STOP