(FILECREATED "20-Jun-86 15:30:09" {QV}<PEDERSEN>LISP>ARRAYSUPPORT.;3 4192   

      changes to:  (VARS ARRAYSUPPORTCOMS)

      previous date: "17-Jun-86 10:45:16" {QV}<PEDERSEN>LISP>ARRAYSUPPORT.;2)


(* Copyright (c) 1986 by Xerox Corporation. All rights reserved.)

(PRETTYCOMPRINT ARRAYSUPPORTCOMS)

(RPAQQ ARRAYSUPPORTCOMS ((FNS ARRAYBASE \BLKEXPONENT \BLKFABSMAX \BLKFABSMIN \BLKFDIFF \BLKFMAX 
				\BLKFMIN \BLKFPLUS \BLKFTIMES \BLKPERM \BLKSMALLP2FLOAT \FLOATTOBYTE 
				\POLYNOM)
			   (MACROS MUL2 \POLYNOM)
			   (PROP DOPVAL \BLKEXPONENT \BLKFABSMAX \BLKFABSMIN \BLKFDIFF \BLKFMAX 
				 \BLKFMIN \BLKFPLUS \BLKFTIMES \BLKPERM \BLKSMALLP2FLOAT \FLOATTOBYTE)
			   (I.S.OPRS product upto)))
(DEFINEQ

(ARRAYBASE
  [LAMBDA (A)                                                (* jop: "15-Jun-86 17:38")

          (* *)


    (if (type? ARRAY A)
	then (\ADDBASE (ffetch (ARRAY BASE) of A)
			   (ffetch (ARRAY BASE.OFFSET) of A))
      else (ERROR "Not an array" A])

(\BLKEXPONENT
  [LAMBDA (SOURCE DEST CNT)                                  (* jop: "15-Jun-86 17:55")

          (* *)


    (\BLKEXPONENT SOURCE DEST CNT])

(\BLKFABSMAX
  [LAMBDA (SOURCE ZERO CNT)                                  (* jop: "15-Jun-86 17:55")

          (* *)


    (\BLKFABSMAX SOURCE ZERO CNT])

(\BLKFABSMIN
  [LAMBDA (SOURCE ZERO CNT)                                  (* jop: "15-Jun-86 17:56")

          (* *)


    (\BLKFABSMIN SOURCE ZERO CNT])

(\BLKFDIFF
  [LAMBDA (SOURCE1 SOURCE2 DEST CNT)                         (* jop: "15-Jun-86 17:57")

          (* *)


    (\BLKFDIFF SOURCE1 SOURCE2 DEST CNT])

(\BLKFMAX
  [LAMBDA (SOURCE ZERO CNT)                                  (* jop: "15-Jun-86 17:57")

          (* *)


    (\BLKFMAX SOURCE ZERO CNT])

(\BLKFMIN
  [LAMBDA (SOURCE ZERO CNT)                                  (* jop: "15-Jun-86 17:57")

          (* *)


    (\BLKFMIN SOURCE ZERO CNT])

(\BLKFPLUS
  [LAMBDA (SOURCE1 SOURCE2 DEST CNT)                         (* jop: "15-Jun-86 17:58")

          (* *)


    (\BLKFPLUS SOURCE1 SOURCE2 DEST CNT])

(\BLKFTIMES
  [LAMBDA (SOURCE1 SOURCE2 DEST CNT)                         (* jop: "15-Jun-86 18:00")

          (* *)


    (\BLKFTIMES SOURCE1 SOURCE2 DEST CNT])

(\BLKPERM
  [LAMBDA (ORIG PERMUTATIONS DESTINATION CNT)                (* jop: "15-Jun-86 18:01")

          (* *)


    (\BLKPERM ORIG PERMUTATIONS DESTINATION CNT])

(\BLKSMALLP2FLOAT
  [LAMBDA (SOURCE DEST CNT)                                  (* jop: "15-Jun-86 18:02")

          (* *)


    (\BLKSMALLP2FLOAT SOURCE DEST CNT])

(\FLOATTOBYTE
  [LAMBDA (SOURCE DEST CNT)                                  (* jop: "15-Jun-86 18:02")

          (* *)


    (\FLOATTOBYTE SOURCE DEST CNT])

(\POLYNOM
  [LAMBDA (X BASE SIZE)                                      (* jop: "15-Jun-86 17:53")

          (* *)


    (\POLYNOM X BASE SIZE])
)
(DECLARE: EVAL@COMPILE 
(PUTPROPS MUL2 MACRO (OPENLAMBDA (X)
				 (\ADDBASE X X)))
[PUTPROPS \POLYNOM DMACRO ((X BASE SIZE)
	   (* execute the POLYEVAL opcode on the value X, the array COEFFS with degree DEGREE)
	   (\FLOATBOX ((OPCODES UBFLOAT3 0)
		       (\FLOATUNBOX X)
		       BASE SIZE]
)

(PUTPROPS \BLKEXPONENT DOPVAL (3 MISC3 0))

(PUTPROPS \BLKFABSMAX DOPVAL (3 MISC3 6))

(PUTPROPS \BLKFABSMIN DOPVAL (3 MISC3 7))

(PUTPROPS \BLKFDIFF DOPVAL (4 MISC4 3))

(PUTPROPS \BLKFMAX DOPVAL (3 MISC3 4))

(PUTPROPS \BLKFMIN DOPVAL (3 MISC3 5))

(PUTPROPS \BLKFPLUS DOPVAL (4 MISC4 2))

(PUTPROPS \BLKFTIMES DOPVAL (4 MISC4 0))

(PUTPROPS \BLKPERM DOPVAL (4 MISC4 1))

(PUTPROPS \BLKSMALLP2FLOAT DOPVAL (3 MISC3 2))

(PUTPROPS \FLOATTOBYTE DOPVAL (3 MISC3 8))
(DECLARE: EVAL@COMPILE 
[I.S.OPR (QUOTE product)
	 (QUOTE (SETQ $$VAL (TIMES $$VAL BODY)))
	 (QUOTE (BIND ($$VAL ← 1]
[I.S.OPR (QUOTE upto)
	 NIL
	 (QUOTE (TO (SUB1 BODY]
)
(PUTPROPS ARRAYSUPPORT COPYRIGHT ("Xerox Corporation" 1986))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (711 3130 (ARRAYBASE 721 . 1043) (\BLKEXPONENT 1045 . 1217) (\BLKFABSMAX 1219 . 1389) (
\BLKFABSMIN 1391 . 1561) (\BLKFDIFF 1563 . 1738) (\BLKFMAX 1740 . 1904) (\BLKFMIN 1906 . 2070) (
\BLKFPLUS 2072 . 2247) (\BLKFTIMES 2249 . 2426) (\BLKPERM 2428 . 2610) (\BLKSMALLP2FLOAT 2612 . 2792) 
(\FLOATTOBYTE 2794 . 2966) (\POLYNOM 2968 . 3128)))))
STOP