(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "15-Jun-90 14:17:57" 
{DSK}<usr>local>lde>lispcore>internal>library>FLOAT-ARRAY-SUPPORT.;2 7381   

      changes to%:  (VARS FLOAT-ARRAY-SUPPORTCOMS)

      previous date%: " 5-Dec-86 18:23:44" 
{DSK}<usr>local>lde>lispcore>internal>library>FLOAT-ARRAY-SUPPORT.;1)


(* ; "
Copyright (c) 1986, 1990 by Venue & Xerox Corporation.  All rights reserved.
")

(PRETTYCOMPRINT FLOAT-ARRAY-SUPPORTCOMS)

(RPAQQ FLOAT-ARRAY-SUPPORTCOMS
       ((FILES (SYSLOAD FROM VALUEOF DIRECTORIES)
               UNBOXEDOPS)
        (FUNCTIONS %%BLKEXPONENT %%BLKFABSMAX %%BLKFABSMIN %%BLKFMAX %%BLKFMIN %%BLKFPLUS %%BLKFDIFF
               %%BLKFTIMES %%BLKPERM %%BLKSMALLP2FLOAT %%FLOATTOBYTE %%GET-FLOAT-ARRAY-BASE 
               %%INSURE-ARRAY %%MATMULT-133 %%MATMULT-144 %%MATMULT-331 %%MATMULT-333 %%MATMULT-441 
               %%MATMULT-444 %%MUL2 %%POLY-EVAL %%TEST-ARRAY MAKE-FLOAT-ARRAY MAKE-FLOAT-VECTOR 
               SINGLE-FLOAT-ARRAY-P SINGLE-FLOAT-VECTOR-P)
        (OPTIMIZERS %%POLY-EVAL %%MATMULT-133 %%MATMULT-144 %%MATMULT-331 %%MATMULT-333 %%MATMULT-441
               %%MATMULT-444)
        (PROP DOPVAL %%BLKEXPONENT %%BLKFABSMAX %%BLKFABSMIN %%BLKFDIFF %%BLKFMAX %%BLKFMIN 
              %%BLKFPLUS %%BLKFTIMES %%BLKPERM %%BLKSMALLP2FLOAT %%FLOATTOBYTE)
        (PROP FILETYPE FLOAT-ARRAY-SUPPORT)
        (DECLARE%: DONTCOPY DOEVAL@COMPILE DONTEVAL@LOAD (LOCALVARS . T))))

(FILESLOAD (SYSLOAD FROM VALUEOF DIRECTORIES)
       UNBOXEDOPS)

(CL:DEFUN %%BLKEXPONENT (SOURCE DEST SIZE)
   (\MISC3.UFN SOURCE DEST SIZE 0))

(CL:DEFUN %%BLKFABSMAX (BASE ZERO SIZE)
   (\MISC3.UFN BASE ZERO SIZE 6))

(CL:DEFUN %%BLKFABSMIN (BASE ZERO SIZE)
   (\MISC3.UFN BASE ZERO SIZE 7))

(CL:DEFUN %%BLKFMAX (BASE ZERO SIZE)
   (\MISC3.UFN BASE ZERO SIZE 4))

(CL:DEFUN %%BLKFMIN (BASE ZERO SIZE)
   (\MISC3.UFN BASE ZERO SIZE 5))

(CL:DEFUN %%BLKFPLUS (SOURCE1 SOURCE2 DEST SIZE)
   (\MISC4.UFN SOURCE1 SOURCE2 DEST SIZE 2))

(CL:DEFUN %%BLKFDIFF (SOURCE1 SOURCE2 DEST SIZE)
   (\MISC4.UFN SOURCE1 SOURCE2 DEST SIZE 3))

(CL:DEFUN %%BLKFTIMES (SOURCE1 SOURCE2 DEST SIZE)
   (\MISC4.UFN SOURCE1 SOURCE2 DEST SIZE 0))

(CL:DEFUN %%BLKPERM (SOURCE PERMUTATION DEST SIZE)
   (\MISC4.UFN SOURCE PERMUTATION DEST SIZE 1))

(CL:DEFUN %%BLKSMALLP2FLOAT (SOURCE DEST SIZE)
   (\MISC3.UFN SOURCE DEST SIZE 2))

(CL:DEFUN %%FLOATTOBYTE (SOURCE DEST SIZE)
   (\MISC3.UFN SOURCE DEST SIZE 8))

(DEFMACRO %%GET-FLOAT-ARRAY-BASE (FLOAT-ARRAY)
   `(\ADDBASE (%%ARRAY-BASE ,FLOAT-ARRAY)
           (LLSH (%%ARRAY-OFFSET ,FLOAT-ARRAY)
                 1)))

(DEFMACRO %%INSURE-ARRAY (RESULT TEST-DIMS &OPTIONAL (MAKE-DIMS (LIST 'QUOTE TEST-DIMS)))
   `(CL:IF ,RESULT
        (%%TEST-ARRAY ,RESULT ,TEST-DIMS)
        (CL:MAKE-ARRAY ,MAKE-DIMS :ELEMENT-TYPE 'CL:SINGLE-FLOAT)))

(CL:DEFUN %%MATMULT-133 (MATRIXABASE MATRIXBBASE MATRIXCBASE)
   (\UNBOXFLOAT3 MATRIXABASE MATRIXBBASE MATRIXCBASE 3))

(CL:DEFUN %%MATMULT-144 (MATRIXABASE MATRIXBBASE MATRIXCBASE)
   (\UNBOXFLOAT3 MATRIXABASE MATRIXBBASE MATRIXCBASE 5))

(CL:DEFUN %%MATMULT-331 (MATRIXABASE MATRIXBBASE MATRIXCBASE)
   (\UNBOXFLOAT3 MATRIXABASE MATRIXBBASE MATRIXCBASE 4))

(CL:DEFUN %%MATMULT-333 (MATRIXABASE MATRIXBBASE MATRIXCBASE)
   (\UNBOXFLOAT3 MATRIXABASE MATRIXBBASE MATRIXCBASE 1))

(CL:DEFUN %%MATMULT-441 (MATRIXABASE MATRIXBBASE MATRIXCBASE)
   (\UNBOXFLOAT3 MATRIXABASE MATRIXBBASE MATRIXCBASE 6))

(CL:DEFUN %%MATMULT-444 (MATRIXABASE MATRIXBBASE MATRIXCBASE)
   (\UNBOXFLOAT3 MATRIXABASE MATRIXBBASE MATRIXCBASE 2))

(DEFMACRO %%MUL2 (X)
   `(LLSH ,X 1))

(CL:DEFUN %%POLY-EVAL (X BASE SIZE)
   (\FLOATBOX (\UNBOXFLOAT3 (\FLOATUNBOX X)
                     BASE SIZE 0)))

(DEFMACRO %%TEST-ARRAY (ARRAY DIMS)
   `(CL:IF [TYPEP ,ARRAY '(CL:ARRAY CL:SINGLE-FLOAT ,DIMS]
        ,ARRAY
        (CL:ERROR "Array of incorrect type: ~S" ,ARRAY)))

(DEFMACRO MAKE-FLOAT-ARRAY (DIMS &KEY INITIAL-ELEMENT)
   (CL:IF INITIAL-ELEMENT
       `(CL:MAKE-ARRAY ,DIMS :ELEMENT-TYPE 'CL:SINGLE-FLOAT :INITIAL-ELEMENT ,INITIAL-ELEMENT)
       `(CL:MAKE-ARRAY ,DIMS :ELEMENT-TYPE 'CL:SINGLE-FLOAT)))

(DEFMACRO MAKE-FLOAT-VECTOR (SIZE &KEY INITIAL-ELEMENT)
   (CL:IF INITIAL-ELEMENT
       `(MAKE-VECTOR ,SIZE :ELEMENT-TYPE 'CL:SINGLE-FLOAT :INITIAL-ELEMENT ,INITIAL-ELEMENT)
       `(MAKE-VECTOR ,SIZE :ELEMENT-TYPE 'CL:SINGLE-FLOAT)))

(DEFMACRO SINGLE-FLOAT-ARRAY-P (ARRAY)
   `(TYPEP ,ARRAY '(CL:ARRAY CL:SINGLE-FLOAT)))

(DEFMACRO SINGLE-FLOAT-VECTOR-P (ARRAY)
   `[TYPEP ,ARRAY '(CL:ARRAY CL:SINGLE-FLOAT (CL:*])

(DEFOPTIMIZER %%POLY-EVAL (X BASE SIZE)
                              `(\FLOATBOX ((OPCODES UBFLOAT3 0)
                                           (\FLOATUNBOX ,X)
                                           ,BASE
                                           ,SIZE)))

(DEFOPTIMIZER %%MATMULT-133 (MATRIXABASE MATRIXBBASE MATRIXCBASE)
                                `((OPCODES UBFLOAT3 3)
                                  ,MATRIXABASE
                                  ,MATRIXBBASE
                                  ,MATRIXCBASE))

(DEFOPTIMIZER %%MATMULT-144 (MATRIXABASE MATRIXBBASE MATRIXCBASE)
                                `((OPCODES UBFLOAT3 5)
                                  ,MATRIXABASE
                                  ,MATRIXBBASE
                                  ,MATRIXCBASE))

(DEFOPTIMIZER %%MATMULT-331 (MATRIXABASE MATRIXBBASE MATRIXCBASE)
                                `((OPCODES UBFLOAT3 4)
                                  ,MATRIXABASE
                                  ,MATRIXBBASE
                                  ,MATRIXCBASE))

(DEFOPTIMIZER %%MATMULT-333 (MATRIXABASE MATRIXBBASE MATRIXCBASE)
                                `((OPCODES UBFLOAT3 1)
                                  ,MATRIXABASE
                                  ,MATRIXBBASE
                                  ,MATRIXCBASE))

(DEFOPTIMIZER %%MATMULT-441 (MATRIXABASE MATRIXBBASE MATRIXCBASE)
                                `((OPCODES UBFLOAT3 6)
                                  ,MATRIXABASE
                                  ,MATRIXBBASE
                                  ,MATRIXCBASE))

(DEFOPTIMIZER %%MATMULT-444 (MATRIXABASE MATRIXBBASE MATRIXCBASE)
                                `((OPCODES UBFLOAT3 2)
                                  ,MATRIXABASE
                                  ,MATRIXBBASE
                                  ,MATRIXCBASE))

(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))

(PUTPROPS FLOAT-ARRAY-SUPPORT FILETYPE CL:COMPILE-FILE)
(DECLARE%: DONTCOPY DOEVAL@COMPILE DONTEVAL@LOAD 
(DECLARE%: DOEVAL@COMPILE DONTCOPY

(LOCALVARS . T)
)
)
(PUTPROPS FLOAT-ARRAY-SUPPORT COPYRIGHT ("Venue & Xerox Corporation" 1986 1990))
(DECLARE%: DONTCOPY
  (FILEMAP (NIL)))
STOP
