(FILECREATED "25-Jun-86 12:29:12" {QV}<PEDERSEN>LISP>EARRAY-ARITHFNS.;15 39795
changes to: (VARS EARRAY-ARITHFNSCOMS)
(FNS EARRAY-SAMPLE-VARIANCE-REDUCE EARRAY-SAMPLE-VARIANCE EARRAY-VARIANCE
EARRAY-VARIANCE-REDUCE EARRAY-FLOAT-ABS EARRAY-FLOAT-DIFFERENCE
EARRAY-FLOAT-FIX EARRAY-FLOAT-FLOAT EARRAY-FLOAT-MAX EARRAY-FLOAT-MIN
EARRAY-FLOAT-MINUS EARRAY-FLOAT-PLUS EARRAY-FLOAT-QUOTIENT
EARRAY-FLOAT-RECIPROCAL EARRAY-FLOAT-REMAINDER EARRAY-FLOAT-TIMES
EARRAY-GENERIC-DIFFERENCE EARRAY-GENERIC-PLUS EARRAY-GENERIC-QUOTIENT
EARRAY-GENERIC-TIMES)
previous date: "23-Jun-86 14:05:47" {QV}<PEDERSEN>LISP>EARRAY-ARITHFNS.;12)
(* Copyright (c) 1986 by Xerox Corporation. All rights reserved.)
(PRETTYCOMPRINT EARRAY-ARITHFNSCOMS)
(RPAQQ EARRAY-ARITHFNSCOMS ((FNS EARRAY-ABS EARRAY-ABS-FN EARRAY-CEILING EARRAY-CEILING-FN
EARRAY-DIFFERENCE EARRAY-DIFFERENCE-FN EARRAY-DIFFERENCE-SWEEP
EARRAY-FIX EARRAY-FIX-FN EARRAY-FLOAT EARRAY-FLOAT-ABS
EARRAY-FLOAT-DIFFERENCE EARRAY-FLOAT-FIX EARRAY-FLOAT-FLOAT
EARRAY-FLOAT-FN EARRAY-FLOAT-MAX EARRAY-FLOAT-MAX-REDUCE
EARRAY-FLOAT-MIN EARRAY-FLOAT-MIN-REDUCE EARRAY-FLOAT-MINUS
EARRAY-FLOAT-PLUS EARRAY-FLOAT-PLUS-REDUCE EARRAY-FLOAT-PLUS-SCAN
EARRAY-FLOAT-QUOTIENT EARRAY-FLOAT-RECIPROCAL
EARRAY-FLOAT-REMAINDER EARRAY-FLOAT-TIMES EARRAY-FLOAT-TIMES-SCAN
EARRAY-FLOOR EARRAY-FLOOR-FN EARRAY-GENERIC-DIFFERENCE
EARRAY-GENERIC-PLUS EARRAY-GENERIC-PLUS-REDUCE
EARRAY-GENERIC-QUOTIENT EARRAY-GENERIC-TIMES EARRAY-MAX
EARRAY-MAX-FN EARRAY-MAX-REDUCE EARRAY-MAX-REDUCE-FN EARRAY-MEAN
EARRAY-MEAN-REDUCE EARRAY-MIN EARRAY-MIN-FN EARRAY-MIN-REDUCE
EARRAY-MIN-REDUCE-FN EARRAY-MINUS EARRAY-MINUS-FN EARRAY-PLUS
EARRAY-PLUS-FN EARRAY-PLUS-REDUCE EARRAY-PLUS-REDUCE-FN
EARRAY-PLUS-SCAN EARRAY-PLUS-SCAN-FN EARRAY-PLUS-SWEEP
EARRAY-QUOTIENT EARRAY-QUOTIENT-FN EARRAY-QUOTIENT-SWEEP
EARRAY-RECIPROCAL EARRAY-RECIPROCAL-FN EARRAY-REMAINDER
EARRAY-REMAINDER-FN EARRAY-ROUND EARRAY-ROUND-FN
EARRAY-SAMPLE-VARIANCE EARRAY-SAMPLE-VARIANCE-REDUCE EARRAY-TIMES
EARRAY-TIMES-FN EARRAY-TIMES-SCAN EARRAY-TIMES-SCAN-FN
EARRAY-TIMES-SWEEP EARRAY-VARIANCE EARRAY-VARIANCE-REDUCE)
(DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY (LOCALVARS . T))))
(DEFINEQ
(EARRAY-ABS
[LAMBDA (ARRAY RESULT) (* jop: "13-Jun-86 12:10")
(* *)
(EARRAY-MONADIC-APPLY (FUNCTION ABS)
ARRAY RESULT (EARRAY-ELEMENT-TYPE ARRAY])
(EARRAY-ABS-FN
[LAMBDA (OP ARRAY RESULT) (* jop: "13-Jun-86 11:53")
(* *)
(if (AND (EQ (EARRAY-ELEMENT-TYPE ARRAY)
(QUOTE SINGLE-FLOAT))
(EQ (EARRAY-ELEMENT-TYPE RESULT)
(QUOTE SINGLE-FLOAT)))
then (EARRAY-FLOAT-ABS ARRAY RESULT)
else (EARRAY-GENERIC-MONADIC-APPLY (FUNCTION ABS)
ARRAY RESULT])
(EARRAY-CEILING
[LAMBDA (ARRAY RESULT) (* jop: "15-Jun-86 15:39")
(* *)
(EARRAY-MONADIC-APPLY (FUNCTION CEILING)
ARRAY RESULT])
(EARRAY-CEILING-FN
[LAMBDA (OP ARRAY RESULT) (* jop: "23-Jun-86 12:04")
(* *)
(EARRAY-GENERIC-MONADIC-APPLY (FUNCTION SCALAR-CEILING)
ARRAY RESULT])
(EARRAY-DIFFERENCE
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "13-Jun-86 12:28")
(* *)
(EARRAY-DYADIC-APPLY (FUNCTION DIFFERENCE)
ARRAY1 ARRAY2 RESULT (EARRAY-ARITH-TYPE (EARRAY-ELEMENT-TYPE ARRAY1)
(EARRAY-ELEMENT-TYPE ARRAY2])
(EARRAY-DIFFERENCE-FN
[LAMBDA (OP ARRAY1 ARRAY2 RESULT) (* jop: "13-Jun-86 12:20")
(* *)
(if (AND (USE-FLOAT-P ARRAY1 ARRAY2)
(EQ (EARRAY-ELEMENT-TYPE RESULT)
(QUOTE SINGLE-FLOAT)))
then (EARRAY-FLOAT-DIFFERENCE ARRAY1 ARRAY2 RESULT)
else (EARRAY-GENERIC-DIFFERENCE ARRAY1 ARRAY2 RESULT])
(EARRAY-DIFFERENCE-SWEEP
[LAMBDA (ARRAY1 ARRAY2 AXIS RESULT) (* jop: "17-Jun-86 21:17")
(* *)
(EARRAY-SWEEP (FUNCTION DIFFERENCE)
ARRAY1 ARRAY2 AXIS RESULT (EARRAY-ARITH-TYPE (EARRAY-ELEMENT-TYPE ARRAY1)
(EARRAY-ELEMENT-TYPE ARRAY2])
(EARRAY-FIX
[LAMBDA (ARRAY RESULT) (* jop: "13-Jun-86 12:10")
(* *)
(EARRAY-MONADIC-APPLY (FUNCTION FIX)
ARRAY RESULT])
(EARRAY-FIX-FN
[LAMBDA (OP ARRAY RESULT) (* jop: "13-Jun-86 11:53")
(* *)
(if (EQ (EARRAY-ELEMENT-TYPE ARRAY)
(QUOTE SINGLE-FLOAT))
then (EARRAY-FLOAT-FIX ARRAY RESULT)
else (EARRAY-GENERIC-MONADIC-APPLY (FUNCTION FIX)
ARRAY RESULT])
(EARRAY-FLOAT
[LAMBDA (ARRAY RESULT) (* jop: "13-Jun-86 12:10")
(* *)
(EARRAY-MONADIC-APPLY (FUNCTION FLOAT)
ARRAY RESULT (QUOTE SINGLE-FLOAT])
(EARRAY-FLOAT-ABS
[LAMBDA (ARRAY RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (EARRAY-SCALARP ARRAY)
then (FABS ARRAY)
else [bind (ARRAYBASE ←(ARRAYBASE ARRAY))
(RESULTBASE ←(ARRAYBASE RESULT)) for I from 0 upto (MUL2 (
EARRAY-TOTAL-SIZE
RESULT))
by 2 do (\PUTBASEFLOATP RESULTBASE I (UFABS (\GETBASEFLOATP ARRAYBASE I]
RESULT])
(EARRAY-FLOAT-DIFFERENCE
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (DIFFERENCE ARRAY1 ARRAY2)
else (if (EARRAY-SCALARP ARRAY1)
then [bind (ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(RESULTBASE ←(ARRAYBASE RESULT))
(SCALAR ←(FLOAT ARRAY1)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (MUL2 (EARRAY-TOTAL-SIZE RESULT)) by 2
do (\PUTBASEFLOATP RESULTBASE I (FDIFFERENCE SCALAR
(\GETBASEFLOATP
ARRAYBASE2 I]
elseif (EARRAY-SCALARP ARRAY2)
then (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(RESULTBASE ←(ARRAYBASE RESULT))
(SCALAR ←(FLOAT ARRAY2)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (MUL2 (EARRAY-TOTAL-SIZE RESULT)) by 2
do (\PUTBASEFLOATP RESULTBASE I (FDIFFERENCE (\GETBASEFLOATP
ARRAYBASE1 I)
SCALAR)))
else (\BLKFDIFF (ARRAYBASE ARRAY1)
(ARRAYBASE ARRAY2)
(ARRAYBASE RESULT)
(EARRAY-TOTAL-SIZE RESULT)))
RESULT])
(EARRAY-FLOAT-FIX
[LAMBDA (ARRAY RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (EARRAY-SCALARP ARRAY)
then (FIX ARRAY)
else (bind (ARRAYBASE ←(ARRAYBASE ARRAY))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT) do (ASET (UFIX (\GETBASEFLOATP
ARRAYBASE
(MUL2 I)))
LINEARIZEDRESULT I))
RESULT])
(EARRAY-FLOAT-FLOAT
[LAMBDA (ARRAY RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (EARRAY-SCALARP ARRAY)
then (FLOAT ARRAY)
else [bind (LINEARIZEDARRAY ←(EARRAY-LINEARIZE ARRAY))
(RESULTBASE ←(ARRAYBASE RESULT)) for I from 0 upto (EARRAY-TOTAL-SIZE
RESULT)
do (\PUTBASEFLOATP RESULTBASE (MUL2 I)
(FLOAT (AREF LINEARIZEDARRAY I]
RESULT])
(EARRAY-FLOAT-FN
[LAMBDA (OP ARRAY RESULT) (* jop: "13-Jun-86 11:53")
(* *)
(if (EQ (EARRAY-ELEMENT-TYPE RESULT)
(QUOTE SINGLE-FLOAT))
then (EARRAY-FLOAT-FLOAT ARRAY RESULT)
else (EARRAY-GENERIC-MONADIC-APPLY (FUNCTION FLOAT)
ARRAY RESULT])
(EARRAY-FLOAT-MAX
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (MAX ARRAY1 ARRAY2)
else [if (EARRAY-SCALARP ARRAY1)
then (bind (ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(RESULTBASE ←(ARRAYBASE RESULT))
(SCALAR ←(FLOAT ARRAY1))
ELT declare (TYPE FLOATP SCALAR ELT) for I from 0
upto (MUL2 (EARRAY-TOTAL-SIZE RESULT)) by 2
do (SETQ ELT (\GETBASEFLOATP ARRAYBASE2 I))
(if (UFGREATERP SCALAR ELT)
then (\PUTBASEFLOATP RESULTBASE I SCALAR)
else (\PUTBASEFLOATP RESULTBASE I ELT)))
elseif (EARRAY-SCALARP ARRAY2)
then (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(RESULTBASE ←(ARRAYBASE RESULT))
(SCALAR ←(FLOAT ARRAY2))
ELT declare (TYPE FLOATP SCALAR ELT) for I from 0
upto (MUL2 (EARRAY-TOTAL-SIZE RESULT)) by 2
do (SETQ ELT (\GETBASEFLOATP ARRAYBASE1 I))
(if (UFGREATERP ELT SCALAR)
then (\PUTBASEFLOATP RESULTBASE I ELT)
else (\PUTBASEFLOATP RESULTBASE I SCALAR)))
else (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(RESULTBASE ←(ARRAYBASE RESULT))
ELT1 ELT2 declare (TYPE FLOATP ELT1 ELT2) for I from 0
upto (MUL2 (EARRAY-TOTAL-SIZE RESULT)) by 2
do (SETQ ELT1 (\GETBASEFLOATP ARRAYBASE1 I))
(SETQ ELT2 (\GETBASEFLOATP ARRAYBASE2 I))
(if (UFGREATERP ELT1 ELT2)
then (\PUTBASEFLOATP RESULTBASE I ELT1)
else (\PUTBASEFLOATP RESULTBASE I ELT2]
RESULT])
(EARRAY-FLOAT-MAX-REDUCE
[LAMBDA (FLOATVECTOR) (* jop: "17-Jun-86 16:32")
(* *)
(LET ((SIZE (EARRAY-TOTAL-SIZE FLOATVECTOR)))
(if (IGREATERP SIZE 0)
then (AREF FLOATVECTOR (\BLKFMAX (ARRAYBASE FLOATVECTOR)
0 SIZE])
(EARRAY-FLOAT-MIN
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (MIN ARRAY1 ARRAY2)
else [if (EARRAY-SCALARP ARRAY1)
then (bind (ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(RESULTBASE ←(ARRAYBASE RESULT))
(SCALAR ←(FLOAT ARRAY1))
ELT declare (TYPE FLOATP SCALAR ELT) for I from 0
upto (MUL2 (EARRAY-TOTAL-SIZE RESULT)) by 2
do (SETQ ELT (\GETBASEFLOATP ARRAYBASE2 I))
(if (UFLESSP SCALAR ELT)
then (\PUTBASEFLOATP RESULTBASE I SCALAR)
else (\PUTBASEFLOATP RESULTBASE I ELT)))
elseif (EARRAY-SCALARP ARRAY2)
then (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(RESULTBASE ←(ARRAYBASE RESULT))
(SCALAR ←(FLOAT ARRAY2))
ELT declare (TYPE FLOATP SCALAR ELT) for I from 0
upto (MUL2 (EARRAY-TOTAL-SIZE RESULT)) by 2
do (SETQ ELT (\GETBASEFLOATP ARRAYBASE1 I))
(if (UFLESSP ELT SCALAR)
then (\PUTBASEFLOATP RESULTBASE I ELT)
else (\PUTBASEFLOATP RESULTBASE I SCALAR)))
else (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(RESULTBASE ←(ARRAYBASE RESULT))
ELT1 ELT2 declare (TYPE FLOATP ELT1 ELT2) for I from 0
upto (MUL2 (EARRAY-TOTAL-SIZE RESULT)) by 2
do (SETQ ELT1 (\GETBASEFLOATP ARRAYBASE1 I))
(SETQ ELT2 (\GETBASEFLOATP ARRAYBASE2 I))
(if (UFLESSP ELT1 ELT2)
then (\PUTBASEFLOATP RESULTBASE I ELT1)
else (\PUTBASEFLOATP RESULTBASE I ELT2]
RESULT])
(EARRAY-FLOAT-MIN-REDUCE
[LAMBDA (FLOATVECTOR) (* jop: "17-Jun-86 16:33")
(* *)
(LET ((SIZE (EARRAY-TOTAL-SIZE FLOATVECTOR)))
(if (IGREATERP SIZE 0)
then (AREF FLOATVECTOR (\BLKFMIN (ARRAYBASE FLOATVECTOR)
0 SIZE])
(EARRAY-FLOAT-MINUS
[LAMBDA (ARRAY RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (EARRAY-SCALARP ARRAY)
then (FMINUS ARRAY)
else [bind (ARRAYBASE ←(ARRAYBASE ARRAY))
(RESULTBASE ←(ARRAYBASE RESULT)) for I from 0 upto (MUL2 (
EARRAY-TOTAL-SIZE
RESULT))
by 2 do (\PUTBASEFLOATP RESULTBASE I (UFMINUS (\GETBASEFLOATP ARRAYBASE I]
RESULT])
(EARRAY-FLOAT-PLUS
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (PLUS ARRAY1 ARRAY2)
else (if (EARRAY-SCALARP ARRAY1)
then [bind (ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(RESULTBASE ←(ARRAYBASE RESULT))
(SCALAR ←(FLOAT ARRAY1)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (MUL2 (EARRAY-TOTAL-SIZE RESULT)) by 2
do (\PUTBASEFLOATP RESULTBASE I (FPLUS SCALAR (\GETBASEFLOATP
ARRAYBASE2 I]
elseif (EARRAY-SCALARP ARRAY2)
then (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(RESULTBASE ←(ARRAYBASE RESULT))
(SCALAR ←(FLOAT ARRAY2)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (MUL2 (EARRAY-TOTAL-SIZE RESULT)) by 2
do (\PUTBASEFLOATP RESULTBASE I (FPLUS (\GETBASEFLOATP ARRAYBASE1
I)
SCALAR)))
else (\BLKFPLUS (ARRAYBASE ARRAY1)
(ARRAYBASE ARRAY2)
(ARRAYBASE RESULT)
(EARRAY-TOTAL-SIZE RESULT)))
RESULT])
(EARRAY-FLOAT-PLUS-REDUCE
[LAMBDA (FLOATVECTOR) (* jop: "17-Jun-86 16:30")
(* *)
(LET ((SIZE (EARRAY-TOTAL-SIZE FLOATVECTOR)))
(if (IGREATERP SIZE 0)
then (\POLYNOM 1.0 (ARRAYBASE FLOATVECTOR)
(SUB1 SIZE])
(EARRAY-FLOAT-PLUS-SCAN
[LAMBDA (FLOATSOURCE FLOATSINK) (* jop: "17-Jun-86 16:48")
(* *)
(LET ((SIZE (EARRAY-TOTAL-SIZE FLOATSOURCE)))
(bind (SOURCEBASE ←(ARRAYBASE FLOATSOURCE))
(SINKBASE ←(ARRAYBASE FLOATSINK))
(TOTAL ← 0.0) declare (TYPE FLOATP TOTAL) for I from 0 upto (MUL2 SIZE)
by 2
do (SETQ TOTAL (FPLUS TOTAL (\GETBASEFLOATP SOURCEBASE I)))
(\PUTBASEFLOATP SINKBASE I TOTAL))
FLOATSINK])
(EARRAY-FLOAT-QUOTIENT
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (QUOTIENT ARRAY1 ARRAY2)
else [if (EARRAY-SCALARP ARRAY1)
then [bind (ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(RESULTBASE ←(ARRAYBASE RESULT))
(SCALAR ←(FLOAT ARRAY1)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (MUL2 (EARRAY-TOTAL-SIZE RESULT)) by 2
do (\PUTBASEFLOATP RESULTBASE I (FQUOTIENT SCALAR (\GETBASEFLOATP
ARRAYBASE2 I]
elseif (EARRAY-SCALARP ARRAY2)
then (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(RESULTBASE ←(ARRAYBASE RESULT))
(SCALAR ←(FLOAT ARRAY2)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (MUL2 (EARRAY-TOTAL-SIZE RESULT)) by 2
do (\PUTBASEFLOATP RESULTBASE I (FQUOTIENT (\GETBASEFLOATP
ARRAYBASE1 I)
SCALAR)))
else (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(RESULTBASE ←(ARRAYBASE RESULT)) for I from 0
upto (MUL2 (EARRAY-TOTAL-SIZE RESULT)) by 2
do (\PUTBASEFLOATP RESULTBASE I (FQUOTIENT (\GETBASEFLOATP
ARRAYBASE1 I)
(\GETBASEFLOATP
ARRAYBASE2 I]
RESULT])
(EARRAY-FLOAT-RECIPROCAL
[LAMBDA (ARRAY RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (EARRAY-SCALARP ARRAY)
then (FQUOTIENT 1.0 ARRAY)
else [bind (ARRAYBASE ←(ARRAYBASE ARRAY))
(RESULTBASE ←(ARRAYBASE RESULT)) for I from 0 upto (MUL2 (
EARRAY-TOTAL-SIZE
RESULT))
by 2 do (\PUTBASEFLOATP RESULTBASE I (FQUOTIENT 1.0 (\GETBASEFLOATP
ARRAYBASE I]
RESULT])
(EARRAY-FLOAT-REMAINDER
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:23")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (REMAINDER ARRAY1 ARRAY2)
else [if (EARRAY-SCALARP ARRAY1)
then [bind (ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(RESULTBASE ←(ARRAYBASE RESULT))
(SCALAR ←(FLOAT ARRAY1)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (MUL2 (EARRAY-TOTAL-SIZE RESULT)) by 2
do (\PUTBASEFLOATP RESULTBASE I (UFREMAINDER SCALAR
(\GETBASEFLOATP
ARRAYBASE2 I]
elseif (EARRAY-SCALARP ARRAY2)
then (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(RESULTBASE ←(ARRAYBASE RESULT))
(SCALAR ←(FLOAT ARRAY2)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (MUL2 (EARRAY-TOTAL-SIZE RESULT)) by 2
do (\PUTBASEFLOATP RESULTBASE I (UFREMAINDER (\GETBASEFLOATP
ARRAYBASE1 I)
SCALAR)))
else (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(RESULTBASE ←(ARRAYBASE RESULT)) for I from 0
upto (MUL2 (EARRAY-TOTAL-SIZE RESULT)) by 2
do (\PUTBASEFLOATP RESULTBASE I (UFREMAINDER (\GETBASEFLOATP
ARRAYBASE1 I)
(\GETBASEFLOATP
ARRAYBASE2 I]
RESULT])
(EARRAY-FLOAT-TIMES
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:24")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (TIMES ARRAY1 ARRAY2)
else (if (EARRAY-SCALARP ARRAY1)
then [bind (ARRAYBASE2 ←(ARRAYBASE ARRAY2))
(RESULTBASE ←(ARRAYBASE RESULT))
(SCALAR ←(FLOAT ARRAY1)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (MUL2 (EARRAY-TOTAL-SIZE RESULT)) by 2
do (\PUTBASEFLOATP RESULTBASE I (FTIMES SCALAR (\GETBASEFLOATP
ARRAYBASE2 I]
elseif (EARRAY-SCALARP ARRAY2)
then (bind (ARRAYBASE1 ←(ARRAYBASE ARRAY1))
(RESULTBASE ←(ARRAYBASE RESULT))
(SCALAR ←(FLOAT ARRAY2)) declare (TYPE FLOATP SCALAR)
for I from 0 upto (MUL2 (EARRAY-TOTAL-SIZE RESULT)) by 2
do (\PUTBASEFLOATP RESULTBASE I (FTIMES (\GETBASEFLOATP ARRAYBASE1
I)
SCALAR)))
else (\BLKFTIMES (ARRAYBASE ARRAY1)
(ARRAYBASE ARRAY2)
(ARRAYBASE RESULT)
(EARRAY-TOTAL-SIZE RESULT)))
RESULT])
(EARRAY-FLOAT-TIMES-SCAN
[LAMBDA (FLOATSOURCE FLOATSINK) (* jop: "17-Jun-86 16:47")
(* *)
(LET ((SIZE (EARRAY-TOTAL-SIZE FLOATSOURCE)))
(bind (SOURCEBASE ←(ARRAYBASE FLOATSOURCE))
(SINKBASE ←(ARRAYBASE FLOATSINK))
(PROD ← 1.0) declare (TYPE FLOATP PROD) for I from 0 upto (MUL2 SIZE)
by 2
do (SETQ PROD (FTIMES PROD (\GETBASEFLOATP SOURCEBASE I)))
(\PUTBASEFLOATP SINKBASE I PROD))
FLOATSINK])
(EARRAY-FLOOR
[LAMBDA (ARRAY RESULT) (* jop: "15-Jun-86 15:41")
(* *)
(EARRAY-MONADIC-APPLY (FUNCTION FLOOR)
ARRAY RESULT])
(EARRAY-FLOOR-FN
[LAMBDA (OP ARRAY RESULT) (* jop: "23-Jun-86 12:05")
(* *)
(EARRAY-GENERIC-MONADIC-APPLY (FUNCTION SCALAR-FLOOR)
ARRAY RESULT])
(EARRAY-GENERIC-DIFFERENCE
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:24")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (DIFFERENCE ARRAY1 ARRAY2)
else (if (EARRAY-SCALARP ARRAY1)
then (bind (LINEARIZEDARRAY ←(EARRAY-LINEARIZE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT) do (ASET (DIFFERENCE
ARRAY1
(AREF LINEARIZEDARRAY
I))
LINEARIZEDRESULT I))
elseif (EARRAY-SCALARP ARRAY2)
then (bind (LINEARIZEDARRAY ←(EARRAY-LINEARIZE ARRAY1))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT) do (ASET (DIFFERENCE
(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 (DIFFERENCE (AREF
LINEARIZEDARRAY1 I)
(AREF
LINEARIZEDARRAY2 I))
LINEARIZEDRESULT I)))
RESULT])
(EARRAY-GENERIC-PLUS
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:24")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (PLUS ARRAY1 ARRAY2)
else (if (EARRAY-SCALARP ARRAY1)
then (bind (LINEARIZEDARRAY ←(EARRAY-LINEARIZE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT) do (ASET (PLUS ARRAY1
(AREF
LINEARIZEDARRAY I))
LINEARIZEDRESULT I))
elseif (EARRAY-SCALARP ARRAY2)
then (bind (LINEARIZEDARRAY ←(EARRAY-LINEARIZE ARRAY1))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT) do (ASET (PLUS (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 (PLUS (AREF
LINEARIZEDARRAY1 I)
(AREF
LINEARIZEDARRAY2 I))
LINEARIZEDRESULT I)))
RESULT])
(EARRAY-GENERIC-PLUS-REDUCE
[LAMBDA (VECTOR) (* jop: "17-Jun-86 16:30")
(* *)
(LET ((SIZE (EARRAY-TOTAL-SIZE VECTOR)))
(if (IGREATERP SIZE 0)
then (bind (RESULT ← 0) for I from 0 upto SIZE
do (SETQ RESULT (PLUS RESULT (AREF VECTOR I))) finally (RETURN
RESULT])
(EARRAY-GENERIC-QUOTIENT
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:24")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (PLUS ARRAY1 ARRAY2)
else (if (EARRAY-SCALARP ARRAY1)
then (bind (LINEARIZEDARRAY ←(EARRAY-LINEARIZE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT) do (ASET (QUOTIENT ARRAY1
(AREF
LINEARIZEDARRAY I))
LINEARIZEDRESULT I))
elseif (EARRAY-SCALARP ARRAY2)
then (bind (LINEARIZEDARRAY ←(EARRAY-LINEARIZE ARRAY1))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT) do (ASET (QUOTIENT (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 (QUOTIENT (AREF
LINEARIZEDARRAY1 I)
(AREF
LINEARIZEDARRAY2 I))
LINEARIZEDRESULT I)))
RESULT])
(EARRAY-GENERIC-TIMES
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "23-Jun-86 22:24")
(* *)
(if (AND (EARRAY-SCALARP ARRAY1)
(EARRAY-SCALARP ARRAY2))
then (PLUS ARRAY1 ARRAY2)
else (if (EARRAY-SCALARP ARRAY1)
then (bind (LINEARIZEDARRAY ←(EARRAY-LINEARIZE ARRAY2))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT) do (ASET (TIMES ARRAY1
(AREF
LINEARIZEDARRAY I))
LINEARIZEDRESULT I))
elseif (EARRAY-SCALARP ARRAY2)
then (bind (LINEARIZEDARRAY ←(EARRAY-LINEARIZE ARRAY1))
(LINEARIZEDRESULT ←(EARRAY-LINEARIZE RESULT)) for I from 0
upto (EARRAY-TOTAL-SIZE RESULT) do (ASET (TIMES (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 (TIMES (AREF
LINEARIZEDARRAY1 I)
(AREF
LINEARIZEDARRAY2 I))
LINEARIZEDRESULT I)))
RESULT])
(EARRAY-MAX
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "13-Jun-86 12:28")
(* *)
(EARRAY-DYADIC-APPLY (FUNCTION MAX)
ARRAY1 ARRAY2 RESULT (EARRAY-COMMON-TYPE (EARRAY-ELEMENT-TYPE ARRAY1)
(EARRAY-ELEMENT-TYPE ARRAY2])
(EARRAY-MAX-FN
[LAMBDA (OP ARRAY1 ARRAY2 RESULT) (* jop: "13-Jun-86 12:22")
(* *)
(if (AND (USE-FLOAT-P ARRAY1 ARRAY2)
(EQ (EARRAY-ELEMENT-TYPE RESULT)
(QUOTE SINGLE-FLOAT)))
then (EARRAY-FLOAT-MAX ARRAY1 ARRAY2 RESULT)
else (EARRAY-GENERIC-DYADIC-APPLY (FUNCTION MAX)
ARRAY1 ARRAY2 RESULT])
(EARRAY-MAX-REDUCE
[LAMBDA (ARRAY AXIS RESULT) (* jop: "12-Jun-86 22:37")
(* *)
(EARRAY-REDUCE (FUNCTION MAX)
ARRAY AXIS RESULT (EARRAY-ELEMENT-TYPE ARRAY])
(EARRAY-MAX-REDUCE-FN
[LAMBDA (VECTOR) (* jop: "17-Jun-86 16:32")
(* *)
(if (EQ (EARRAY-ELEMENT-TYPE VECTOR)
(QUOTE SINGLE-FLOAT))
then (EARRAY-FLOAT-MAX-REDUCE VECTOR)
else (EARRAY-GENERIC-VECTOR-REDUCE (FUNCTION MAX)
VECTOR])
(EARRAY-MEAN
[LAMBDA (VECTOR) (* jop: "17-Jun-86 16:07")
(* *)
(FQUOTIENT (EARRAY-PLUS-REDUCE VECTOR)
(EARRAY-TOTAL-SIZE VECTOR])
(EARRAY-MEAN-REDUCE
[LAMBDA (ARRAY AXIS RESULT) (* jop: "17-Jun-86 16:10")
(* *)
(EARRAY-REDUCE (FUNCTION MEAN)
ARRAY AXIS RESULT (EARRAY-ELEMENT-TYPE ARRAY])
(EARRAY-MIN
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "13-Jun-86 12:29")
(* *)
(EARRAY-DYADIC-APPLY (FUNCTION MIN)
ARRAY1 ARRAY2 RESULT (EARRAY-COMMON-TYPE (EARRAY-ELEMENT-TYPE ARRAY1)
(EARRAY-ELEMENT-TYPE ARRAY2])
(EARRAY-MIN-FN
[LAMBDA (OP ARRAY1 ARRAY2 RESULT) (* jop: "13-Jun-86 12:23")
(* *)
(if (AND (USE-FLOAT-P ARRAY1 ARRAY2)
(EQ (EARRAY-ELEMENT-TYPE RESULT)
(QUOTE SINGLE-FLOAT)))
then (EARRAY-FLOAT-MIN ARRAY1 ARRAY2 RESULT)
else (EARRAY-GENERIC-DYADIC-APPLY (FUNCTION MIN)
ARRAY1 ARRAY2 RESULT])
(EARRAY-MIN-REDUCE
[LAMBDA (ARRAY AXIS RESULT) (* jop: "12-Jun-86 22:35")
(* *)
(EARRAY-REDUCE (FUNCTION MIN)
ARRAY AXIS RESULT (EARRAY-ELEMENT-TYPE ARRAY])
(EARRAY-MIN-REDUCE-FN
[LAMBDA (VECTOR) (* jop: "17-Jun-86 16:33")
(* *)
(if (EQ (EARRAY-ELEMENT-TYPE VECTOR)
(QUOTE SINGLE-FLOAT))
then (EARRAY-FLOAT-MIN-REDUCE VECTOR)
else (EARRAY-GENERIC-VECTOR-REDUCE (FUNCTION MIN)
VECTOR])
(EARRAY-MINUS
[LAMBDA (ARRAY RESULT) (* jop: "13-Jun-86 12:12")
(* *)
(EARRAY-MONADIC-APPLY (FUNCTION MINUS)
ARRAY RESULT (EARRAY-ELEMENT-TYPE ARRAY])
(EARRAY-MINUS-FN
[LAMBDA (OP ARRAY RESULT) (* jop: "13-Jun-86 11:53")
(* *)
(if (AND (EQ (EARRAY-ELEMENT-TYPE ARRAY)
(QUOTE SINGLE-FLOAT))
(EQ (EARRAY-ELEMENT-TYPE RESULT)
(QUOTE SINGLE-FLOAT)))
then (EARRAY-FLOAT-MINUS ARRAY RESULT)
else (EARRAY-GENERIC-MONADIC-APPLY (FUNCTION MINUS)
ARRAY RESULT])
(EARRAY-PLUS
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "13-Jun-86 12:29")
(* *)
(EARRAY-DYADIC-APPLY (FUNCTION PLUS)
ARRAY1 ARRAY2 RESULT (EARRAY-ARITH-TYPE (EARRAY-ELEMENT-TYPE ARRAY1)
(EARRAY-ELEMENT-TYPE ARRAY2])
(EARRAY-PLUS-FN
[LAMBDA (OP ARRAY1 ARRAY2 RESULT) (* jop: "13-Jun-86 12:23")
(* *)
(if (AND (USE-FLOAT-P ARRAY1 ARRAY2)
(EQ (EARRAY-ELEMENT-TYPE RESULT)
(QUOTE SINGLE-FLOAT)))
then (EARRAY-FLOAT-PLUS ARRAY1 ARRAY2 RESULT)
else (EARRAY-GENERIC-PLUS ARRAY1 ARRAY2 RESULT])
(EARRAY-PLUS-REDUCE
[LAMBDA (ARRAY AXIS RESULT) (* jop: "12-Jun-86 22:35")
(* *)
(EARRAY-REDUCE (FUNCTION PLUS)
ARRAY AXIS RESULT (EARRAY-ELEMENT-TYPE ARRAY])
(EARRAY-PLUS-REDUCE-FN
[LAMBDA (VECTOR) (* jop: "17-Jun-86 16:30")
(* *)
(if (EQ (EARRAY-ELEMENT-TYPE VECTOR)
(QUOTE SINGLE-FLOAT))
then (EARRAY-FLOAT-PLUS-REDUCE VECTOR)
else (EARRAY-GENERIC-PLUS-REDUCE VECTOR])
(EARRAY-PLUS-SCAN
[LAMBDA (ARRAY AXIS RESULT) (* jop: "12-Jun-86 22:56")
(* *)
(EARRAY-SCAN (FUNCTION PLUS)
ARRAY AXIS RESULT (EARRAY-ELEMENT-TYPE ARRAY])
(EARRAY-PLUS-SCAN-FN
[LAMBDA (VECTOR RESULT) (* jop: "17-Jun-86 16:48")
(* *)
(if (AND (EQ (EARRAY-ELEMENT-TYPE VECTOR)
(QUOTE SINGLE-FLOAT))
(EQ (EARRAY-ELEMENT-TYPE RESULT)
(QUOTE SINGLE-FLOAT)))
then (EARRAY-FLOAT-PLUS-SCAN VECTOR RESULT)
else (EARRAY-GENERIC-VECTOR-SCAN (QUOTE PLUS)
VECTOR RESULT])
(EARRAY-PLUS-SWEEP
[LAMBDA (ARRAY1 ARRAY2 AXIS RESULT) (* jop: "17-Jun-86 21:17")
(* *)
(EARRAY-SWEEP (FUNCTION PLUS)
ARRAY1 ARRAY2 AXIS RESULT (EARRAY-ARITH-TYPE (EARRAY-ELEMENT-TYPE ARRAY1)
(EARRAY-ELEMENT-TYPE ARRAY2])
(EARRAY-QUOTIENT
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "13-Jun-86 12:30")
(* *)
(EARRAY-DYADIC-APPLY (FUNCTION QUOTIENT)
ARRAY1 ARRAY2 RESULT (EARRAY-ARITH-TYPE (EARRAY-ELEMENT-TYPE ARRAY1)
(EARRAY-ELEMENT-TYPE ARRAY2])
(EARRAY-QUOTIENT-FN
[LAMBDA (OP ARRAY1 ARRAY2 RESULT) (* jop: "13-Jun-86 12:24")
(* *)
(if (AND (USE-FLOAT-P ARRAY1 ARRAY2)
(EQ (EARRAY-ELEMENT-TYPE RESULT)
(QUOTE SINGLE-FLOAT)))
then (EARRAY-FLOAT-QUOTIENT ARRAY1 ARRAY2 RESULT)
else (EARRAY-GENERIC-QUOTIENT ARRAY1 ARRAY2 RESULT])
(EARRAY-QUOTIENT-SWEEP
[LAMBDA (ARRAY1 ARRAY2 AXIS RESULT) (* jop: "17-Jun-86 21:18")
(* *)
(EARRAY-SWEEP (FUNCTION QUOTIENT)
ARRAY1 ARRAY2 AXIS RESULT (EARRAY-ARITH-TYPE (EARRAY-ELEMENT-TYPE ARRAY1)
(EARRAY-ELEMENT-TYPE ARRAY2])
(EARRAY-RECIPROCAL
[LAMBDA (ARRAY RESULT) (* jop: "15-Jun-86 15:37")
(* *)
(EARRAY-MONADIC-APPLY (FUNCTION RECIPROCAL)
ARRAY RESULT (EARRAY-ELEMENT-TYPE ARRAY])
(EARRAY-RECIPROCAL-FN
[LAMBDA (OP ARRAY RESULT) (* jop: "13-Jun-86 11:45")
(* *)
(if (AND (EQ (EARRAY-ELEMENT-TYPE ARRAY)
(QUOTE SINGLE-FLOAT))
(EQ (EARRAY-ELEMENT-TYPE RESULT)
(QUOTE SINGLE-FLOAT)))
then (EARRAY-FLOAT-RECIPROCAL ARRAY RESULT)
else (EARRAY-GENERIC-MONADIC-APPLY (FUNCTION SCALAR-RECIPROCAL)
ARRAY RESULT])
(EARRAY-REMAINDER
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "13-Jun-86 12:31")
(* *)
(EARRAY-DYADIC-APPLY (FUNCTION REMAINDER)
ARRAY1 ARRAY2 RESULT (EARRAY-ARITH-TYPE (EARRAY-ELEMENT-TYPE ARRAY1)
(EARRAY-ELEMENT-TYPE ARRAY2])
(EARRAY-REMAINDER-FN
[LAMBDA (OP ARRAY1 ARRAY2 RESULT) (* jop: "13-Jun-86 12:25")
(* *)
(if (AND (USE-FLOAT-P ARRAY1 ARRAY2)
(EQ (EARRAY-ELEMENT-TYPE RESULT)
(QUOTE SINGLE-FLOAT)))
then (EARRAY-FLOAT-REMAINDER ARRAY1 ARRAY2 RESULT)
else (EARRAY-GENERIC-DYADIC-APPLY (FUNCTION REMAINDER)
ARRAY1 ARRAY2 RESULT])
(EARRAY-ROUND
[LAMBDA (ARRAY RESULT) (* jop: "15-Jun-86 15:42")
(* *)
(EARRAY-MONADIC-APPLY (FUNCTION ROUND)
ARRAY RESULT])
(EARRAY-ROUND-FN
[LAMBDA (OP ARRAY RESULT) (* jop: "23-Jun-86 12:05")
(* *)
(EARRAY-GENERIC-MONADIC-APPLY (FUNCTION SCALAR-ROUND)
ARRAY RESULT])
(EARRAY-SAMPLE-VARIANCE
[LAMBDA (VECTOR) (* jop: "25-Jun-86 09:33")
(* *)
(LET ((M (EARRAY-MEAN VECTOR))
(SS (EARRAY-MATRIX-TIMES VECTOR VECTOR)))
(FQUOTIENT (FDIFFERENCE SS (FTIMES M M))
(SUB1 (EARRAY-TOTAL-SIZE VECTOR])
(EARRAY-SAMPLE-VARIANCE-REDUCE
[LAMBDA (ARRAY AXIS RESULT) (* jop: "25-Jun-86 09:08")
(* *)
(EARRAY-REDUCE (FUNCTION SAMPLE-VARIANCE)
ARRAY AXIS RESULT (EARRAY-ELEMENT-TYPE ARRAY])
(EARRAY-TIMES
[LAMBDA (ARRAY1 ARRAY2 RESULT) (* jop: "13-Jun-86 12:30")
(* *)
(EARRAY-DYADIC-APPLY (FUNCTION TIMES)
ARRAY1 ARRAY2 RESULT (EARRAY-ARITH-TYPE (EARRAY-ELEMENT-TYPE ARRAY1)
(EARRAY-ELEMENT-TYPE ARRAY2])
(EARRAY-TIMES-FN
[LAMBDA (OP ARRAY1 ARRAY2 RESULT) (* jop: "13-Jun-86 12:26")
(* *)
(if (AND (USE-FLOAT-P ARRAY1 ARRAY2)
(EQ (EARRAY-ELEMENT-TYPE RESULT)
(QUOTE SINGLE-FLOAT)))
then (EARRAY-FLOAT-TIMES ARRAY1 ARRAY2 RESULT)
else (EARRAY-GENERIC-TIMES ARRAY1 ARRAY2 RESULT])
(EARRAY-TIMES-SCAN
[LAMBDA (ARRAY AXIS RESULT) (* jop: "12-Jun-86 22:56")
(* *)
(EARRAY-SCAN (FUNCTION TIMES)
ARRAY AXIS RESULT (EARRAY-ELEMENT-TYPE ARRAY])
(EARRAY-TIMES-SCAN-FN
[LAMBDA (VECTOR RESULT) (* jop: "17-Jun-86 16:48")
(* *)
(if (AND (EQ (EARRAY-ELEMENT-TYPE VECTOR)
(QUOTE SINGLE-FLOAT))
(EQ (EARRAY-ELEMENT-TYPE RESULT)
(QUOTE SINGLE-FLOAT)))
then (EARRAY-FLOAT-TIMES-SCAN VECTOR RESULT)
else (EARRAY-GENERIC-VECTOR-SCAN (FUNCTION TIMES)
VECTOR RESULT])
(EARRAY-TIMES-SWEEP
[LAMBDA (ARRAY1 ARRAY2 AXIS RESULT) (* jop: "17-Jun-86 21:18")
(* *)
(EARRAY-SWEEP (FUNCTION TIMES)
ARRAY1 ARRAY2 AXIS RESULT (EARRAY-ARITH-TYPE (EARRAY-ELEMENT-TYPE ARRAY1)
(EARRAY-ELEMENT-TYPE ARRAY2])
(EARRAY-VARIANCE
[LAMBDA (VECTOR) (* jop: "25-Jun-86 09:33")
(* *)
(LET ((M (EARRAY-MEAN VECTOR))
(SS (EARRAY-MATRIX-TIMES VECTOR VECTOR)))
(FQUOTIENT (FDIFFERENCE SS (FTIMES M M))
(EARRAY-TOTAL-SIZE VECTOR])
(EARRAY-VARIANCE-REDUCE
[LAMBDA (ARRAY AXIS RESULT) (* jop: "24-Jun-86 23:37")
(* *)
(EARRAY-REDUCE (FUNCTION VARIANCE)
ARRAY AXIS RESULT (EARRAY-ELEMENT-TYPE ARRAY])
)
(DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY
(DECLARE: DOEVAL@COMPILE DONTCOPY
(LOCALVARS . T)
)
)
(PUTPROPS EARRAY-ARITHFNS COPYRIGHT ("Xerox Corporation" 1986))
(DECLARE: DONTCOPY
(FILEMAP (NIL (2390 39605 (EARRAY-ABS 2400 . 2634) (EARRAY-ABS-FN 2636 . 3084) (EARRAY-CEILING 3086 .
3297) (EARRAY-CEILING-FN 3299 . 3527) (EARRAY-DIFFERENCE 3529 . 3851) (EARRAY-DIFFERENCE-FN 3853 .
4256) (EARRAY-DIFFERENCE-SWEEP 4258 . 4582) (EARRAY-FIX 4584 . 4787) (EARRAY-FIX-FN 4789 . 5141) (
EARRAY-FLOAT 5143 . 5374) (EARRAY-FLOAT-ABS 5376 . 5888) (EARRAY-FLOAT-DIFFERENCE 5890 . 7166) (
EARRAY-FLOAT-FIX 7168 . 7688) (EARRAY-FLOAT-FLOAT 7690 . 8198) (EARRAY-FLOAT-FN 8200 . 8559) (
EARRAY-FLOAT-MAX 8561 . 10423) (EARRAY-FLOAT-MAX-REDUCE 10425 . 10760) (EARRAY-FLOAT-MIN 10762 . 12615
) (EARRAY-FLOAT-MIN-REDUCE 12617 . 12952) (EARRAY-FLOAT-MINUS 12954 . 13472) (EARRAY-FLOAT-PLUS 13474
. 14710) (EARRAY-FLOAT-PLUS-REDUCE 14712 . 15032) (EARRAY-FLOAT-PLUS-SCAN 15034 . 15577) (
EARRAY-FLOAT-QUOTIENT 15579 . 17099) (EARRAY-FLOAT-RECIPROCAL 17101 . 17649) (EARRAY-FLOAT-REMAINDER
17651 . 19185) (EARRAY-FLOAT-TIMES 19187 . 20434) (EARRAY-FLOAT-TIMES-SCAN 20436 . 20976) (
EARRAY-FLOOR 20978 . 21185) (EARRAY-FLOOR-FN 21187 . 21411) (EARRAY-GENERIC-DIFFERENCE 21413 . 22911)
(EARRAY-GENERIC-PLUS 22913 . 24316) (EARRAY-GENERIC-PLUS-REDUCE 24318 . 24746) (
EARRAY-GENERIC-QUOTIENT 24748 . 26191) (EARRAY-GENERIC-TIMES 26193 . 27603) (EARRAY-MAX 27605 . 27915)
(EARRAY-MAX-FN 27917 . 28336) (EARRAY-MAX-REDUCE 28338 . 28577) (EARRAY-MAX-REDUCE-FN 28579 . 28936)
(EARRAY-MEAN 28938 . 29157) (EARRAY-MEAN-REDUCE 29159 . 29400) (EARRAY-MIN 29402 . 29712) (
EARRAY-MIN-FN 29714 . 30133) (EARRAY-MIN-REDUCE 30135 . 30374) (EARRAY-MIN-REDUCE-FN 30376 . 30733) (
EARRAY-MINUS 30735 . 30977) (EARRAY-MINUS-FN 30979 . 31437) (EARRAY-PLUS 31439 . 31749) (
EARRAY-PLUS-FN 31751 . 32136) (EARRAY-PLUS-REDUCE 32138 . 32379) (EARRAY-PLUS-REDUCE-FN 32381 . 32709)
(EARRAY-PLUS-SCAN 32711 . 32946) (EARRAY-PLUS-SCAN-FN 32948 . 33407) (EARRAY-PLUS-SWEEP 33409 . 33721
) (EARRAY-QUOTIENT 33723 . 34041) (EARRAY-QUOTIENT-FN 34043 . 34440) (EARRAY-QUOTIENT-SWEEP 34442 .
34762) (EARRAY-RECIPROCAL 34764 . 35012) (EARRAY-RECIPROCAL-FN 35014 . 35490) (EARRAY-REMAINDER 35492
. 35812) (EARRAY-REMAINDER-FN 35814 . 36251) (EARRAY-ROUND 36253 . 36460) (EARRAY-ROUND-FN 36462 .
36686) (EARRAY-SAMPLE-VARIANCE 36688 . 37032) (EARRAY-SAMPLE-VARIANCE-REDUCE 37034 . 37297) (
EARRAY-TIMES 37299 . 37611) (EARRAY-TIMES-FN 37613 . 38001) (EARRAY-TIMES-SCAN 38003 . 38240) (
EARRAY-TIMES-SCAN-FN 38242 . 38707) (EARRAY-TIMES-SWEEP 38709 . 39023) (EARRAY-VARIANCE 39025 . 39352)
(EARRAY-VARIANCE-REDUCE 39354 . 39603)))))
STOP