The FloatArray Package written by Herb Jellinek filed on {Eris}Harmony>Library>FloatArray.TEdit FloatArray is a package that implements high-speed operations on floating-point arrays. Though FloatArray will take advantage of the special capabilities of the DandeTiger (Xerox 1108X), it can be run on any of the machines in the 1100 series. The major functions in the FloatArray package are FFTSTEP and MAPELT. (FFTSTEP FFTTABLE) - performs one of the log2n stages of Fast Fourier Transform on the data represented by FFTTABLE. (MAPELT RESULT MAPFN ARRAY1 ... ARRAYn) - applies MAPFN, an n-ary function, to each element of the ARRAYs, and places the result in the corresponding element of RESULT. Returns RESULT. MAPFN can be an arbitrary n-ary Lisp function. MAPELT deals with the cases of one or two input arrays specially, deferring to the functions MAPELT1 and MAPELT2, described below. (MAPELT RESULT MAPFN ARRAY) - applies MAPELT to each element of ARRAY, and places the result in the corresponding element of RESULT. MAPFN can be any unary function or one of a group of distinguished pseudo-functions, each of which is realized on the DandeTiger as a machine instruction: EXPONENT extract the EXPONENT field of each FLOATP in ARRAY. MAGNITUDE treats the ARRAY argument as an array of complex numbers, alternating real/imaginary; computes the "magnitude squared" of each complex number and places each in successive elements of RESULT. FLOATSMALLP floats each SMALLP in ARRAY. COMPLEXIFYFLOATP moves the contents of a FLOATP array into a "complex" array (as in MAGNITUDE); sets imaginary part to 0. SEPARATE performs "even-odd" separation of data from a Fast Fourier Transform (as done by FFTSTEP). (See Rabiner & Gold, Theory and Application of Digital Signal Processing, Prentice-Hall, 1975, page 59). (MAPELT2 RESULT MAPFN ARRAY1 ARRAY2) - applies MAPFN to corresponding elements of ARRAY1 and ARRAY2, placing the results in RESULT. MAPFN can be any binary Lisp function, though the following pseudo-functions are specially recognized and run as single DandeTiger instructions: FTIMES as the name implies, multiplies elements of ARRAY1 and ARRAY2. PERMUTE RESULT[n] _ ARRAY1[ARRAY2[n]]. In other words, permutes the elements of ARRAY1 according to indices stored in ARRAY2. ELT Alternative name for PERMUTE; so called because PERMUTE can be viewed as mapping ELT across ARRAY1, using the values contained in ARRAY2 as indices. FPLUS Adds elements of ARRAY1 and ARRAY2. FDIFF Subtracts elements of ARRAY1 and ARRAY2. N.B. In the Harmony release of Interlisp-D, you must load the library files CMLSPECIALFORMS and FPOPSPATCH in order to use the FloatArray package. NILNIL TIMESROMANNILNIL TIMESROMANNILNIL TIMESROMAN NILNIL TIMESROMAN NILNIL6 TIMESROMAN NILNIL TIMESROMAN NILNIL TIMESROMAN NILNIL TIMESROMAN NILNIL TIMESROMAN NILNIL2 TIMESROMAN GACHA  TIMESROMAN GACHA  TIMESROMAN NILNIL TIMESROMAN NILNILGACHA  TIMESROMAN  TIMESROMAN> TIMESROMAN GACHA  TIMESROMAN NILNILGACHA NILNILGACHA  TIMESROMAN GACHA  TIMESROMAN GACHA  TIMESROMAN GACHA ) TIMESROMAN GACHA 8 TIMESROMAN GACHA TIMESROMAN GACHA  TIMESROMAN GACHA * TIMESROMAN GACHA W TIMESROMAN GACHA  TIMESROMAN GACHA  TIMESROMAN NILNIL TIMESROMAN NILNILGACHA TIMESROMAN GACHA  TIMESROMAN GACHA 8 TIMESROMAN GACHA  TIMESROMAN GACHA TIMESROMAN NILNIL TIMESROMAN $NILNIL GACHA TIMESROMAN GACHA  TIMESROMAN GACHA  TIMESROMAN GACHA  TIMESROMAN $NILNIL TIMESROMAN $NILNIL GACHA TIMESROMAN GACHA TIMESROMAN GACHA  TIMESROMAN $NILNIL TIMESROMAN $NILNIL GACHA TIMESROMAN GACHA  TIMESROMAN GACHA  TIMESROMAN $NILNIL TIMESROMAN $NILNILGACHA  TIMESROMAN GACHA % TIMESROMAN GACHA  TIMESROMAN $NILNIL TIMESROMAN $NILNILGACHA R TIMESROMAN GACHA  TIMESROMAN 3 TIMESROMAN ! TIMESROMAN $NILNILGACHA NILNIL$GACHA . TIMESROMAN GACHA  TIMESROMAN GACHA  TIMESROMAN GACHA  TIMESROMAN GACHA TIMESROMAN GACHA NILNILGACHA $NILNILGACHA - TIMESROMAN GACHA  TIMESROMAN GACHA  TIMESROMAN $NILNILGACHA $NILNILGACHA  TIMESROMAN GACHA  TIMESROMAN GACHA  TIMESROMAN GACHA 0 TIMESROMAN GACHA TIMESROMAN GACHA  TIMESROMAN $NILNIL TIMESROMAN $NILNILGACHA  TIMESROMAN GACHA  TIMESROMAN GACHA  TIMESROMAN GACHA  TIMESROMAN GACHA TIMESROMAN GACHA TIMESROMAN $NILNIL TIMESROMAN $NILNILGACHA  TIMESROMAN GACHA  TIMESROMAN GACHA  TIMESROMAN $NILNIL TIMESROMAN $NILNILGACHA  TIMESROMAN GACHA  TIMESROMAN GACHA  TIMESROMAN NILNIL TIMESROMAN z