(FILECREATED "25-Jun-86 01:28:45" {QV}<PEDERSEN>LISP>EARRAY-CMPFNS.;9 33450
changes to: (FNS EARRAY-GENERIC-NOT-EQUAL EARRAY-GENERIC-MEMBER EARRAY-GENERIC-INDEXOF
EARRAY-FLOAT-EQP EARRAY-FLOAT-GEQ EARRAY-FLOAT-GREATERP EARRAY-FLOAT-INDEXOF
EARRAY-FLOAT-LEQ EARRAY-FLOAT-LESSP EARRAY-FLOAT-MEMBER EARRAY-FLOAT-NOT-EQP
EARRAY-GENERIC-EQUAL EARRAY-GENERIC-GEQ EARRAY-GENERIC-GREATERP
EARRAY-GENERIC-LEQ EARRAY-GENERIC-LESSP)
previous date: "23-Jun-86 14:08:56" {QV}<PEDERSEN>LISP>EARRAY-CMPFNS.;6)
(* Copyright (c) 1986 by Xerox Corporation. All rights reserved.)
(PRETTYCOMPRINT EARRAY-CMPFNSCOMS)
(RPAQQ EARRAY-CMPFNSCOMS ((FNS EARRAY-AND EARRAY-AND-FN EARRAY-EQP EARRAY-EQP-FN EARRAY-EQUAL
EARRAY-EQUAL-FN EARRAY-FLOAT-EQP EARRAY-FLOAT-GEQ
EARRAY-FLOAT-GREATERP EARRAY-FLOAT-INDEXOF EARRAY-FLOAT-LEQ
EARRAY-FLOAT-LESSP EARRAY-FLOAT-MEMBER EARRAY-FLOAT-NOT-EQP
EARRAY-GENERIC-EQUAL EARRAY-GENERIC-GEQ EARRAY-GENERIC-GREATERP
EARRAY-GENERIC-INDEXOF EARRAY-GENERIC-LEQ EARRAY-GENERIC-LESSP
EARRAY-GENERIC-MEMBER EARRAY-GENERIC-NOT-EQUAL EARRAY-GEQ
EARRAY-GEQ-FN EARRAY-GREATERP EARRAY-GREATERP-FN EARRAY-INDEXOF
EARRAY-LEQ EARRAY-LEQ-FN EARRAY-LESSP EARRAY-LESSP-FN EARRAY-MEMBER
EARRAY-NAND EARRAY-NAND-FN EARRAY-NOR EARRAY-NOR-FN EARRAY-NOT
EARRAY-NOT-EQP EARRAY-NOT-EQP-FN EARRAY-NOT-EQUAL
EARRAY-NOT-EQUAL-FN EARRAY-NOT-FN EARRAY-OR EARRAY-OR-FN EARRAY-XOR
EARRAY-XOR-FN)
(DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY (LOCALVARS . T))))
(DEFINEQ
(EARRAY-AND
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "15-Jun-86 15:28")
(* *)
(EARRAY-DYADIC-APPLY (FUNCTION AND)
ARRAY1 ARRAY2 RESULT])
(EARRAY-AND-FN
[LAMBDA (OP ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 12:09")
(* *)
(EARRAY-GENERIC-DYADIC-APPLY (FUNCTION SCALAR-AND)
ARRAY1 ARRAY2 RESULT])
(EARRAY-EQP
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "15-Jun-86 14:48")
(* *)
(EARRAY-DYADIC-APPLY (FUNCTION EQP)
ARRAY1 ARRAY2 RESULT])
(EARRAY-EQP-FN
[LAMBDA (OP ARRAY1 ARRAY2 RESULT) (* jop: "15-Jun-86 15:04")
(* *)
(if (USE-FLOAT-P ARRAY1 ARRAY2)
then (EARRAY-FLOAT-EQP ARRAY1 ARRAY2 RESULT)
else (EARRAY-GENERIC-DYADIC-APPLY (FUNCTION SCALAR-EQP)
ARRAY1 ARRAY2 RESULT])
(EARRAY-EQUAL
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "15-Jun-86 15:12")
(* *)
(EARRAY-DYADIC-APPLY (FUNCTION EQUAL)
ARRAY1 ARRAY2 RESULT])
(EARRAY-EQUAL-FN
[LAMBDA (OP ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 12:08")
(* *)
(if (USE-FLOAT-P ARRAY1 ARRAY2)
then (EARRAY-FLOAT-EQP ARRAY1 ARRAY2 RESULT)
else (EARRAY-GENERIC-EQUAL ARRAY1 ARRAY2 RESULT])
(EARRAY-FLOAT-EQP
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (LOGICAL-VALUE (EQP ARRAY1 ARRAY2))
else (if (EARRAY-SCALARP ARRAY1)
then (bind (ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(SCALAR ←(FLOAT ARRAY1)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET [LOGICAL-VALUE (UFEQP SCALAR (\GETBASEFLOATP
ARRAYBASE2
(MUL2 I]
LINEARIZEDRESULT I))
elseif (EARRAY-SCALARP ARRAY2)
then (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(SCALAR ←(FLOAT ARRAY2)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET (LOGICAL-VALUE (UFEQP (\GETBASEFLOATP ARRAYBASE1
(MUL2 I))
SCALAR))
LINEARIZEDRESULT I))
else (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET [LOGICAL-VALUE (UFEQP (\GETBASEFLOATP ARRAYBASE1
(MUL2 I))
(\GETBASEFLOATP ARRAYBASE2
(MUL2 I]
LINEARIZEDRESULT I)))
RESULT])
(EARRAY-FLOAT-GEQ
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (LOGICAL-VALUE (GEQ ARRAY1 ARRAY2))
else (if (EARRAY-SCALARP ARRAY1)
then (bind (ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(SCALAR ←(FLOAT ARRAY1)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET [LOGICAL-VALUE (UFGEQ SCALAR (\GETBASEFLOATP
ARRAYBASE2
(MUL2 I]
LINEARIZEDRESULT I))
elseif (EARRAY-SCALARP ARRAY2)
then (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(SCALAR ←(FLOAT ARRAY2)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET (LOGICAL-VALUE (UFGEQ (\GETBASEFLOATP ARRAYBASE1
(MUL2 I))
SCALAR))
LINEARIZEDRESULT I))
else (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET [LOGICAL-VALUE (UFGEQ (\GETBASEFLOATP ARRAYBASE1
(MUL2 I))
(\GETBASEFLOATP ARRAYBASE2
(MUL2 I]
LINEARIZEDRESULT I)))
RESULT])
(EARRAY-FLOAT-GREATERP
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (LOGICAL-VALUE (GREATERP ARRAY1 ARRAY2))
else (if (EARRAY-SCALARP ARRAY1)
then (bind (ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(SCALAR ←(FLOAT ARRAY1)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET [LOGICAL-VALUE (UFGREATERP SCALAR (\GETBASEFLOATP
ARRAYBASE2
(MUL2 I]
LINEARIZEDRESULT I))
elseif (EARRAY-SCALARP ARRAY2)
then (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(SCALAR ←(FLOAT ARRAY2)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET (LOGICAL-VALUE (UFGREATERP (\GETBASEFLOATP ARRAYBASE1
(MUL2 I))
SCALAR))
LINEARIZEDRESULT I))
else (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET [LOGICAL-VALUE (UFGREATERP (\GETBASEFLOATP ARRAYBASE1
(MUL2 I))
(\GETBASEFLOATP ARRAYBASE2
(MUL2 I]
LINEARIZEDRESULT I)))
RESULT])
(EARRAY-FLOAT-INDEXOF
[LAMBDA (ARRAY VECTOR RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(LET ((VECTORSIZE (EARRAY-TOTAL-SIZE VECTOR))
(VECTORBASE (ARRAYBASE VECTOR)))
(if (EARRAY-SCALARP ARRAY)
then (OR [bind (SCALAR ←(FLOAT ARRAY)) declare (TYPE FLOATP SCALAR)
for I from 0 upto VECTORSIZE thereis (UFEQP
SCALAR
(\GETBASEFLOATP
VECTORBASE
(MUL2 I]
VECTORSIZE)
else (bind (ARRAYBASE ←(ARRAYBASE ARRAY))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET (OR [bind (SCALAR ←(\GETBASEFLOATP ARRAYBASE (MUL2 I)))
declare (TYPE FLOATP SCALAR) for J from 0
upto VECTORSIZE thereis (UFEQP SCALAR
(\GETBASEFLOATP
VECTORBASE
(MUL2 J]
VECTORSIZE)
LINEARIZEDRESULT I))
RESULT])
(EARRAY-FLOAT-LEQ
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (LEQ ARRAY1 ARRAY2)
else (if (LOGICAL-VALUE (EARRAY-SCALARP ARRAY1))
then (bind (ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(SCALAR ←(FLOAT ARRAY1)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET [LOGICAL-VALUE (UFLEQ SCALAR (\GETBASEFLOATP
ARRAYBASE2
(MUL2 I]
LINEARIZEDRESULT I))
elseif (EARRAY-SCALARP ARRAY2)
then (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(SCALAR ←(FLOAT ARRAY2)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET (LOGICAL-VALUE (UFLEQ (\GETBASEFLOATP ARRAYBASE1
(MUL2 I))
SCALAR))
LINEARIZEDRESULT I))
else (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET [LOGICAL-VALUE (UFLEQ (\GETBASEFLOATP ARRAYBASE1
(MUL2 I))
(\GETBASEFLOATP ARRAYBASE2
(MUL2 I]
LINEARIZEDRESULT I)))
RESULT])
(EARRAY-FLOAT-LESSP
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (LOGICAL-VALUE (LESSP ARRAY1 ARRAY2))
else (if (EARRAY-SCALARP ARRAY1)
then (bind (ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(SCALAR ←(FLOAT ARRAY1)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET [LOGICAL-VALUE (UFLESSP SCALAR (\GETBASEFLOATP
ARRAYBASE2
(MUL2 I]
LINEARIZEDRESULT I))
elseif (EARRAY-SCALARP ARRAY2)
then (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(SCALAR ←(FLOAT ARRAY2)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET (LOGICAL-VALUE (UFLESSP (\GETBASEFLOATP ARRAYBASE1
(MUL2 I))
SCALAR))
LINEARIZEDRESULT I))
else (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET [LOGICAL-VALUE (UFLESSP (\GETBASEFLOATP ARRAYBASE1
(MUL2 I))
(\GETBASEFLOATP ARRAYBASE2
(MUL2 I]
LINEARIZEDRESULT I)))
RESULT])
(EARRAY-FLOAT-MEMBER
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (EARRAY-SCALARP ARRAY1)
then [LOGICAL-VALUE (if (EARRAY-SCALARP ARRAY2)
then (EQP ARRAY1 ARRAY2)
else (bind (ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(SCALAR ←(FLOAT ARRAY1)) declare (TYPE FLOATP
SCALAR)
for I from 0 upto (EARRAY-TOTAL-SIZE ARRAY2)
thereis (UFEQP SCALAR (\GETBASEFLOATP ARRAYBASE2
(MUL2 I]
else (if (EARRAY-SCALARP ARRAY2)
then (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(SCALAR ←(FLOAT ARRAY2)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET (LOGICAL-VALUE (UFEQP (\GETBASEFLOATP ARRAYBASE1
(MUL2 I))
SCALAR))
LINEARIZEDRESULT I))
else (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET [LOGICAL-VALUE (bind (SCALAR ←(\GETBASEFLOATP ARRAYBASE1
(MUL2 I)))
declare (TYPE FLOATP SCALAR) for J
from 0 upto (EARRAY-TOTAL-SIZE ARRAY2)
thereis (UFEQP SCALAR
(\GETBASEFLOATP
ARRAYBASE2
(MUL2 J]
LINEARIZEDRESULT I)))
RESULT])
(EARRAY-FLOAT-NOT-EQP
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (LOGICAL-VALUE (NOT (EQP ARRAY1 ARRAY2)))
else (if (EARRAY-SCALARP ARRAY1)
then (bind (ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(SCALAR ←(FLOAT ARRAY1)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET [LOGICAL-VALUE (NOT (UFEQP SCALAR (\GETBASEFLOATP
ARRAYBASE2
(MUL2 I]
LINEARIZEDRESULT I))
elseif (EARRAY-SCALARP ARRAY2)
then (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(SCALAR ←(FLOAT ARRAY2)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET (LOGICAL-VALUE (NOT (UFEQP (\GETBASEFLOATP
ARRAYBASE1
(MUL2 I))
SCALAR)))
LINEARIZEDRESULT I))
else (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET [LOGICAL-VALUE (NOT (UFEQP (\GETBASEFLOATP ARRAYBASE1
(MUL2 I))
(\GETBASEFLOATP ARRAYBASE2
(MUL2 I]
LINEARIZEDRESULT I)))
RESULT])
(EARRAY-GENERIC-EQUAL
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (LOGICAL-VALUE (NOT (EQUAL ARRAY1 ARRAY2)))
else (if (EARRAY-SCALARP ARRAY1)
then (bind (LINEARIZEDARRAY2 ←(EARRAY-LINEARIZE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET [LOGICAL-VALUE (NOT (EQUAL ARRAY1 (AREF
LINEARIZEDARRAY2 I]
LINEARIZEDRESULT I))
elseif (EARRAY-SCALARP ARRAY2)
then (bind (LINEARIZEDARRAY1 ←(EARRAY-LINEARIZE ARRAY1))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET (LOGICAL-VALUE (NOT (EQUAL (AREF LINEARIZEDARRAY1 I)
ARRAY2)))
LINEARIZEDRESULT I))
else (bind (LINEARIZEDARRAY1 ←(EARRAY-LINEARIZE ARRAY1))
(LINEARIZEDARRAY2 ←(EARRAY-LINEARIZE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET [LOGICAL-VALUE (NOT (EQUAL (AREF LINEARIZEDARRAY1 I)
(AREF LINEARIZEDARRAY2 I]
LINEARIZEDRESULT I)))
RESULT])
(EARRAY-GENERIC-GEQ
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (LOGICAL-VALUE (GEQ ARRAY1 ARRAY2))
else (if (EARRAY-SCALARP ARRAY1)
then (bind (LINEARIZEDARRAY2 ←(EARRAY-LINEARIZE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(SCALAR ←(FLOAT ARRAY1)) for I from 0 upto (
EARRAY-TOTAL-SIZE
RESULT)
do (ASET (LOGICAL-VALUE (GEQ SCALAR (AREF LINEARIZEDARRAY2 I)))
LINEARIZEDRESULT I))
elseif (EARRAY-SCALARP ARRAY2)
then (bind (LINEARIZEDARRAY1 ←(EARRAY-LINEARIZE ARRAY1))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(SCALAR ←(FLOAT ARRAY2)) for I from 0 upto (
EARRAY-TOTAL-SIZE
RESULT)
do (ASET (LOGICAL-VALUE (GEQ (AREF LINEARIZEDARRAY1 I)
SCALAR))
LINEARIZEDRESULT I))
else (bind (LINEARIZEDARRAY1 ←(EARRAY-LINEARIZE ARRAY1))
(LINEARIZEDARRAY2 ←(EARRAY-LINEARIZE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET (LOGICAL-VALUE (GEQ (AREF LINEARIZEDARRAY1 I)
(AREF LINEARIZEDARRAY2 I)))
LINEARIZEDRESULT I)))
RESULT])
(EARRAY-GENERIC-GREATERP
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (LOGICAL-VALUE (GREATERP ARRAY1 ARRAY2))
else (if (EARRAY-SCALARP ARRAY1)
then (bind (LINEARIZEDARRAY2 ←(EARRAY-LINEARIZE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(SCALAR ←(FLOAT ARRAY1)) for I from 0 upto (
EARRAY-TOTAL-SIZE
RESULT)
do (ASET (LOGICAL-VALUE (GREATERP SCALAR (AREF LINEARIZEDARRAY2 I))
)
LINEARIZEDRESULT I))
elseif (EARRAY-SCALARP ARRAY2)
then (bind (LINEARIZEDARRAY1 ←(EARRAY-LINEARIZE ARRAY1))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(SCALAR ←(FLOAT ARRAY2)) for I from 0 upto (
EARRAY-TOTAL-SIZE
RESULT)
do (ASET (LOGICAL-VALUE (GREATERP (AREF LINEARIZEDARRAY1 I)
SCALAR))
LINEARIZEDRESULT I))
else (bind (LINEARIZEDARRAY1 ←(EARRAY-LINEARIZE ARRAY1))
(LINEARIZEDARRAY2 ←(EARRAY-LINEARIZE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET (LOGICAL-VALUE (GREATERP (AREF LINEARIZEDARRAY1 I)
(AREF LINEARIZEDARRAY2 I)))
LINEARIZEDRESULT I)))
RESULT])
(EARRAY-GENERIC-INDEXOF
[LAMBDA (ARRAY VECTOR RESULT) (* jop: "24-Jun-86 00:28")
(* *)
(if (EARRAY-SCALARP ARRAY)
then (OR (for I from 0 upto (EARRAY-TOTAL-SIZE VECTOR)
thereis (EQUAL ARRAY (AREF VECTOR I)))
(EARRAY-TOTAL-SIZE VECTOR))
else (bind (LINEARIZEDARRAY ←(EARRAY-LINEARIZE ARRAY))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(VECTORSIZE ←(EARRAY-TOTAL-SIZE VECTOR)) for I from 0 upto (
EARRAY-TOTAL-SIZE
RESULT)
do (ASET (OR (bind (ELT ←(AREF LINEARIZEDARRAY I)) for J from 0
upto VECTORSIZE thereis (EQUAL ELT (AREF VECTOR J)))
VECTORSIZE)
LINEARIZEDRESULT I))
RESULT])
(EARRAY-GENERIC-LEQ
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (LOGICAL-VALUE (LEQ ARRAY1 ARRAY2))
else (if (EARRAY-SCALARP ARRAY1)
then (bind (LINEARIZEDARRAY2 ←(EARRAY-LINEARIZE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(SCALAR ←(FLOAT ARRAY1)) for I from 0 upto (
EARRAY-TOTAL-SIZE
RESULT)
do (ASET (LOGICAL-VALUE (LEQ SCALAR (AREF LINEARIZEDARRAY2 I)))
LINEARIZEDRESULT I))
elseif (EARRAY-SCALARP ARRAY2)
then (bind (LINEARIZEDARRAY1 ←(EARRAY-LINEARIZE ARRAY1))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(SCALAR ←(FLOAT ARRAY2)) for I from 0 upto (
EARRAY-TOTAL-SIZE
RESULT)
do (ASET (LOGICAL-VALUE (LEQ (AREF LINEARIZEDARRAY1 I)
SCALAR))
LINEARIZEDRESULT I))
else (bind (LINEARIZEDARRAY1 ←(EARRAY-LINEARIZE ARRAY1))
(LINEARIZEDARRAY2 ←(EARRAY-LINEARIZE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET (LOGICAL-VALUE (LEQ (AREF LINEARIZEDARRAY1 I)
(AREF LINEARIZEDARRAY2 I)))
LINEARIZEDRESULT I)))
RESULT])
(EARRAY-GENERIC-LESSP
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (LOGICAL-VALUE (LESSP ARRAY1 ARRAY2))
else (if (EARRAY-SCALARP ARRAY1)
then (bind (LINEARIZEDARRAY2 ←(EARRAY-LINEARIZE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(SCALAR ←(FLOAT ARRAY1)) for I from 0 upto (
EARRAY-TOTAL-SIZE
RESULT)
do (ASET (LOGICAL-VALUE (LESSP SCALAR (AREF LINEARIZEDARRAY2 I)))
LINEARIZEDRESULT I))
elseif (EARRAY-SCALARP ARRAY2)
then (bind (LINEARIZEDARRAY1 ←(EARRAY-LINEARIZE ARRAY1))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT))
(SCALAR ←(FLOAT ARRAY2)) for I from 0 upto (
EARRAY-TOTAL-SIZE
RESULT)
do (ASET (LOGICAL-VALUE (LESSP (AREF LINEARIZEDARRAY1 I)
SCALAR))
LINEARIZEDRESULT I))
else (bind (LINEARIZEDARRAY1 ←(EARRAY-LINEARIZE ARRAY1))
(LINEARIZEDARRAY2 ←(EARRAY-LINEARIZE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET (LOGICAL-VALUE (LESSP (AREF LINEARIZEDARRAY1 I)
(AREF LINEARIZEDARRAY2 I)))
LINEARIZEDRESULT I)))
RESULT])
(EARRAY-GENERIC-MEMBER
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "24-Jun-86 00:28")
(* *)
(if (EARRAY-SCALARP ARRAY1)
then [LOGICAL-VALUE (if (EARRAY-SCALARP ARRAY2)
then (EQUAL ARRAY1 ARRAY2)
else (bind (LINEARIZEDARRAY ←(EARRAY-LINEARIZE ARRAY2))
for I from 0 upto (EARRAY-TOTAL-SIZE ARRAY2)
thereis (EQUAL ARRAY1 (AREF LINEARIZEDARRAY I]
else (if (EARRAY-SCALARP ARRAY2)
then (bind (LINEARIZEDARRAY ←(EARRAY-LINEARIZE ARRAY1))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET (LOGICAL-VALUE (EQUAL (AREF LINEARIZEDARRAY I)
ARRAY2))
LINEARIZEDRESULT I))
else (bind (LINEARIZEDARRAY1 ←(EARRAY-LINEARIZE ARRAY1))
(LINEARIZEDARRAY2 ←(EARRAY-LINEARIZE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET [LOGICAL-VALUE (bind (ELT ←(AREF LINEARIZEDARRAY1 I))
for J from 0 upto (EARRAY-TOTAL-SIZE
ARRAY2)
thereis (EQUAL ELT (AREF
LINEARIZEDARRAY2 J]
LINEARIZEDRESULT I)))
RESULT])
(EARRAY-GENERIC-NOT-EQUAL
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "25-Jun-86 01:14")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (LOGICAL-VALUE (NOT (EQUAL ARRAY1 ARRAY2)))
else (if (EARRAY-SCALARP ARRAY1)
then (bind (LINEARIZEDARRAY2 ←(EARRAY-LINEARIZE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET [LOGICAL-VALUE (NOT (EQUAL ARRAY1 (AREF
LINEARIZEDARRAY2 I]
LINEARIZEDRESULT I))
elseif (EARRAY-SCALARP ARRAY2)
then (bind (LINEARIZEDARRAY1 ←(EARRAY-LINEARIZE ARRAY1))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET (LOGICAL-VALUE (NOT (EQUAL (AREF LINEARIZEDARRAY1 I)
ARRAY2)))
LINEARIZEDRESULT I))
else (bind (LINEARIZEDARRAY1 ←(EARRAY-LINEARIZE ARRAY1))
(LINEARIZEDARRAY2 ←(EARRAY-LINEARIZE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT)
do (ASET [LOGICAL-VALUE (NOT (EQUAL (AREF LINEARIZEDARRAY1 I)
(AREF LINEARIZEDARRAY2 I]
LINEARIZEDRESULT I)))
RESULT])
(EARRAY-GEQ
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "13-Jun-86 12:53")
(* *)
(EARRAY-DYADIC-APPLY (FUNCTION GEQ)
ARRAY1 ARRAY2 RESULT])
(EARRAY-GEQ-FN
[LAMBDA (OP ARRAY1 ARRAY2 RESULT) (* jop: "15-Jun-86 15:25")
(* *)
(if (USE-FLOAT-P ARRAY1 ARRAY2)
then (EARRAY-FLOAT-GEQ ARRAY1 ARRAY2 RESULT)
else (EARRAY-GENERIC-GEQ ARRAY1 ARRAY2 RESULT])
(EARRAY-GREATERP
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "13-Jun-86 12:54")
(* *)
(EARRAY-DYADIC-APPLY (FUNCTION GREATERP)
ARRAY1 ARRAY2 RESULT])
(EARRAY-GREATERP-FN
[LAMBDA (OP ARRAY1 ARRAY2 RESULT) (* jop: "15-Jun-86 15:25")
(* *)
(if (USE-FLOAT-P ARRAY1 ARRAY2)
then (EARRAY-FLOAT-GREATERP ARRAY1 ARRAY2 RESULT)
else (EARRAY-GENERIC-GREATERP ARRAY1 ARRAY2 RESULT])
(EARRAY-INDEXOF
[LAMBDA (ARRAY VECTOR RESULT) (* jop: " 9-Jun-86 16:15")
(* *)
(if (NOT (EQ (EARRAY-RANK VECTOR)
1))
then (ERROR "Not a vector" VECTOR))
(SETQ RESULT (TEST-RESULT RESULT (EARRAY-DIMENSIONS ARRAY)))
(if (AND (OR (EQ (EARRAY-ELEMENT-TYPE ARRAY)
(QUOTE SINGLE-FLOAT))
(FIXP ARRAY))
(EQ (EARRAY-ELEMENT-TYPE VECTOR)
(QUOTE SINGLE-FLOAT)))
then (EARRAY-FLOAT-INDEXOF ARRAY VECTOR RESULT)
else (EARRAY-GENERIC-INDEXOF ARRAY VECTOR RESULT])
(EARRAY-LEQ
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "13-Jun-86 12:55")
(* *)
(EARRAY-DYADIC-APPLY (FUNCTION LEQ)
ARRAY1 ARRAY2 RESULT])
(EARRAY-LEQ-FN
[LAMBDA (OP ARRAY1 ARRAY2 RESULT) (* jop: "15-Jun-86 15:25")
(* *)
(if (USE-FLOAT-P ARRAY1 ARRAY2)
then (EARRAY-FLOAT-LEQ ARRAY1 ARRAY2 RESULT)
else (EARRAY-GENERIC-LEQ ARRAY1 ARRAY2 RESULT])
(EARRAY-LESSP
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "13-Jun-86 12:55")
(* *)
(EARRAY-DYADIC-APPLY (FUNCTION LESSP)
ARRAY1 ARRAY2 RESULT])
(EARRAY-LESSP-FN
[LAMBDA (OP ARRAY1 ARRAY2 RESULT) (* jop: "15-Jun-86 15:25")
(* *)
(if (USE-FLOAT-P ARRAY1 ARRAY2)
then (EARRAY-FLOAT-LESSP ARRAY1 ARRAY2 RESULT)
else (EARRAY-GENERIC-LESSP ARRAY1 ARRAY2 RESULT])
(EARRAY-MEMBER
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: " 9-Jun-86 15:52")
(* *)
(SETQ RESULT (EARRAY-TEST-RESULT RESULT (EARRAY-DIMENSIONS ARRAY1)))
(if (AND (OR (EQ (EARRAY-ELEMENT-TYPE ARRAY1)
(QUOTE SINGLE-FLOAT))
(FIXP ARRAY1))
(OR (EQ (EARRAY-ELEMENT-TYPE ARRAY2)
(QUOTE SINGLE-FLOAT))
(FIXP ARRAY2)))
then (EARRAY-FLOAT-MEMBER ARRAY1 ARRAY2 RESULT)
else (EARRAY-GENERIC-MEMBER ARRAY1 ARRAY2 RESULT])
(EARRAY-NAND
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "15-Jun-86 15:29")
(* *)
(EARRAY-DYADIC-APPLY (FUNCTION NAND)
ARRAY1 ARRAY2 RESULT])
(EARRAY-NAND-FN
[LAMBDA (OP ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 12:09")
(* *)
(EARRAY-GENERIC-DYADIC-APPLY (FUNCTION SCALAR-NAND)
ARRAY1 ARRAY2 RESULT])
(EARRAY-NOR
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "15-Jun-86 15:30")
(* *)
(EARRAY-DYADIC-APPLY (FUNCTION NOR)
ARRAY1 ARRAY2 RESULT])
(EARRAY-NOR-FN
[LAMBDA (OP ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 12:09")
(* *)
(EARRAY-GENERIC-DYADIC-APPLY (FUNCTION SCALAR-NOR)
ARRAY1 ARRAY2 RESULT])
(EARRAY-NOT
[LAMBDA (ARRAY RESULT) (* jop: "15-Jun-86 15:31")
(* *)
(EARRAY-MONADIC-APPLY (FUNCTION NOT)
ARRAY RESULT])
(EARRAY-NOT-EQP
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "15-Jun-86 14:54")
(* *)
(EARRAY-DYADIC-APPLY (FUNCTION NOT-EQP)
ARRAY1 ARRAY2 RESULT])
(EARRAY-NOT-EQP-FN
[LAMBDA (OP ARRAY1 ARRAY2 RESULT) (* jop: "15-Jun-86 15:07")
(* *)
(if (USE-FLOAT-P ARRAY1 ARRAY2)
then (EARRAY-FLOAT-NOT-EQP ARRAY1 ARRAY2 RESULT)
else (EARRAY-GENERIC-DYADIC-APPLY (FUNCTION SCALAR-NOT-EQP)
ARRAY1 ARRAY2 RESULT])
(EARRAY-NOT-EQUAL
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "15-Jun-86 15:14")
(* *)
(EARRAY-DYADIC-APPLY (FUNCTION NOT-EQUAL)
ARRAY1 ARRAY2 RESULT])
(EARRAY-NOT-EQUAL-FN
[LAMBDA (OP ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 12:08")
(* *)
(if (USE-FLOAT-P ARRAY1 ARRAY2)
then (EARRAY-FLOAT-NOT-EQP ARRAY1 ARRAY2 RESULT)
else (EARRAY-GENERIC-NOT-EQUAL ARRAY1 ARRAY2 RESULT])
(EARRAY-NOT-FN
[LAMBDA (OP ARRAY RESULT) (* jop: "23-Jun-86 12:05")
(* *)
(EARRAY-GENERIC-MONADIC-APPLY (FUNCTION SCALAR-NOT)
ARRAY RESULT])
(EARRAY-OR
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "15-Jun-86 15:31")
(* *)
(EARRAY-DYADIC-APPLY (FUNCTION OR)
ARRAY1 ARRAY2 RESULT])
(EARRAY-OR-FN
[LAMBDA (OP ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 12:09")
(* *)
(EARRAY-GENERIC-DYADIC-APPLY (FUNCTION SCALAR-OR)
ARRAY1 ARRAY2 RESULT])
(EARRAY-XOR
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "15-Jun-86 15:32")
(* *)
(EARRAY-DYADIC-APPLY (FUNCTION XOR)
ARRAY1 ARRAY2 RESULT])
(EARRAY-XOR-FN
[LAMBDA (OP ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 12:09")
(* *)
(EARRAY-GENERIC-DYADIC-APPLY (FUNCTION SCALAR-XOR)
ARRAY1 ARRAY2 RESULT])
)
(DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY
(DECLARE: DOEVAL@COMPILE DONTCOPY
(LOCALVARS . T)
)
)
(PUTPROPS EARRAY-CMPFNS COPYRIGHT ("Xerox Corporation" 1986))
(DECLARE: DONTCOPY
(FILEMAP (NIL (1560 33262 (EARRAY-AND 1570 . 1781) (EARRAY-AND-FN 1783 . 2009) (EARRAY-EQP 2011 . 2222
) (EARRAY-EQP-FN 2224 . 2561) (EARRAY-EQUAL 2563 . 2778) (EARRAY-EQUAL-FN 2780 . 3077) (
EARRAY-FLOAT-EQP 3079 . 4649) (EARRAY-FLOAT-GEQ 4651 . 6221) (EARRAY-FLOAT-GREATERP 6223 . 7846) (
EARRAY-FLOAT-INDEXOF 7848 . 8938) (EARRAY-FLOAT-LEQ 8940 . 10510) (EARRAY-FLOAT-LESSP 10512 . 12099) (
EARRAY-FLOAT-MEMBER 12101 . 13733) (EARRAY-FLOAT-NOT-EQP 13735 . 15376) (EARRAY-GENERIC-EQUAL 15378 .
16837) (EARRAY-GENERIC-GEQ 16839 . 18352) (EARRAY-GENERIC-GREATERP 18354 . 19902) (
EARRAY-GENERIC-INDEXOF 19904 . 20767) (EARRAY-GENERIC-LEQ 20769 . 22282) (EARRAY-GENERIC-LESSP 22284
. 23804) (EARRAY-GENERIC-MEMBER 23806 . 25197) (EARRAY-GENERIC-NOT-EQUAL 25199 . 26662) (EARRAY-GEQ
26664 . 26875) (EARRAY-GEQ-FN 26877 . 27170) (EARRAY-GREATERP 27172 . 27393) (EARRAY-GREATERP-FN 27395
. 27703) (EARRAY-INDEXOF 27705 . 28362) (EARRAY-LEQ 28364 . 28575) (EARRAY-LEQ-FN 28577 . 28870) (
EARRAY-LESSP 28872 . 29087) (EARRAY-LESSP-FN 29089 . 29388) (EARRAY-MEMBER 29390 . 29977) (EARRAY-NAND
29979 . 30188) (EARRAY-NAND-FN 30190 . 30418) (EARRAY-NOR 30420 . 30631) (EARRAY-NOR-FN 30633 . 30859
) (EARRAY-NOT 30861 . 31064) (EARRAY-NOT-EQP 31066 . 31281) (EARRAY-NOT-EQP-FN 31283 . 31632) (
EARRAY-NOT-EQUAL 31634 . 31853) (EARRAY-NOT-EQUAL-FN 31855 . 32164) (EARRAY-NOT-FN 32166 . 32386) (
EARRAY-OR 32388 . 32597) (EARRAY-OR-FN 32599 . 32823) (EARRAY-XOR 32825 . 33032) (EARRAY-XOR-FN 33034
. 33260)))))
STOP