92

A fast fourier transform subroutine for ILLIAC IV

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: A fast fourier transform subroutine for ILLIAC IV
Page 2: A fast fourier transform subroutine for ILLIAC IV

LIBRARY OF THEUNIVERSITY OF ILLINOIS

AT URBANA-CHAMPAIGN

5\0.8^

IHG3c

ENfiTNLEflKfi-

Page 3: A fast fourier transform subroutine for ILLIAC IV

MJG ; v^The person charging this material is re-

sponsible for its return to the library fromwhich it was withdrawn on or before the

Latest Date stamped below.

Theft, mutilation, and underlining of books

are reasons for disciplinary action and mayresult in dismissal from the University.

LINOIS LIBRARY AT yRH3ANA£HAMPAIGN

16 \\

fsc>MJG.23

I!

L161— O-1096

Page 4: A fast fourier transform subroutine for ILLIAC IV
Page 5: A fast fourier transform subroutine for ILLIAC IV

IV lLUNOlS

enter for Advanced ComputatkIIVERSITY OF ILLINOIS AT URBANA-CHAMPAIGN

URBANA. ILLINOIS 61801

CAC Document No. 17

A FAST FOURIER TRANSFORM SUBROUTINE

FOR ILLIAC IV

by

James E. Stevens, Jr.

October 15, 1971

Page 6: A fast fourier transform subroutine for ILLIAC IV
Page 7: A fast fourier transform subroutine for ILLIAC IV

BIBLIOGRAPHIC VTA 1'• Kcporj No.

SHEET | UIUC-CAC-DN-71-172. 3. Recipient's Accession No.

4. I i! le and >ul-t it le

A FA3T FOURIER TRANSFORM SUBROUTINE FOR ILL IAC IV

5. Report 1 '.Me |

October 15, 19716. |

7. Author(s)

James E. Stevens, -Jr.

8. Performing Organization Kept.No.

CAC _179. Performing Organization Name and Address

Center for Advanced ComputationUniversity of Illinois at Urbana-ChampaignUrbana, Illinois 61801

10. Project/ I'ask/Work Unit No.

11. Contract Grant No.

DAHC0U-72-C-0001

12. Sponsoring Organization Name and Address

U. S. Army Research Office-DurhamDuke StationDurham, North Carolina

13. Type ot Report & PeriodCovered

Fe search14.

15. Supplementary Notes

16. Abstracts rQ^ report i s a description of a Fast Fourier Transform (FFT)subroutine written in assembly language for the ILLIAC IV computer. Thesubroutine uses the Cooley-Tukey algorithm for performing discrete Fouriertransforms. The parallel nature of the Cooley-Tukey method lends itself verywell to a highly parallel machine like ILLIAC IV. Timing- simulation results haveshown that this program will perform Fourier transforms faster than they are

being done on any existing computer system.

1

1

i

17. Key Uords and Document Analysis. 17o. Descriptors

Seismic Data ProcessingASKFast Fourier Transform (FFT)Discrete Fourier Transform (DFT)

Time SeriesFrequency Spectrum

17b. Idcntif icrs/Open-Ended Terms

17c. COSATI Field/Group

18. Avail.ibi lity St .it< memNo restriction on distribution.

Available from National Technical Information

Service, Springfield, Virginia 22151

19. Security ( lass (ThisReport)

IWI.ASSIFM-n

21. No. ot Pages

6720. Security ( lass (This

PageUNC1.ASSIEI1 n

22. Price

FOHM NTIli-15 IHI.V. J- / J I

Tins FORM MAY DIE REPRODUCED UjCOMM-DC I 4 5 2 P 7 2

Page 8: A fast fourier transform subroutine for ILLIAC IV

Digitized by the Internet Archive

in 2012 with funding from

University of Illinois Urbana-Champaign

http://archive.org/details/fastfouriertransOOstev

Page 9: A fast fourier transform subroutine for ILLIAC IV

CAC Document No. 17

A FAST FOURIER TRANSFORM SUBROUTINE

FOR ILLIAC IV

by

James E. Stevens, Jr.

Center for Advanced ComputationUniversity of Illinois at Urbana-Champaign

Urbana, Illinois 61801

October 15, 1971

This work was supported in part by the Advanced Research ProjectsAgency of the Department of Defense and was monitored by the

U.S. Army Research Office-Durham under Contract No. DAHC0I4 72-C-0001.

Page 10: A fast fourier transform subroutine for ILLIAC IV
Page 11: A fast fourier transform subroutine for ILLIAC IV

INGWEEWNG U»*»~

ABSTRACT

This report is a description of a Fast Fourier Transform (FFT)

subroutine written in assembly language for the ILLIAC IV computer. The

subroutine uses the Cooley-Tukey algorithm for performing discrete Fourier

transforms. The parallel nature of the Cooley-Tukey method lends itself

very well to a highly parallel machine like ILLIAC IV. Timing simulation

results have shown that this program will perform Fourier transforms faster

than they are being done on any existing computer system.

Page 12: A fast fourier transform subroutine for ILLIAC IV
Page 13: A fast fourier transform subroutine for ILLIAC IV

TABLE OF CONTENTS

Introduction 1

Subroutine Specifications 2

Implementation of the Cooley-Tukey Procedure 2

Scrambling 8

Future Considerations 15

ILLIAC IV Fast Fourier Transform Users Manual 17

APPENDIX A

APPENDIX B

APPENDIX C

APPENDIX D

References

Standard Subroutine Linking 19

Demonstration Run 20

Timing Summary 28

Subroutine Listing 29

63

Page 14: A fast fourier transform subroutine for ILLIAC IV
Page 15: A fast fourier transform subroutine for ILLIAC IV

Introduction

The Fourier transform is one of the most important mathematical

aids to signal processing. The basic property of the Fourier transform is

its ability to distinguish waves of different frequencies which have been

additively combined. The result of a Fourier transform on a complex func-

tion of time is a frequency spectrum of that function. This resulting fre-

quency spectrum is also a complex function. To facilitate processing on

digital machines, a method for transforming discrete functions of time into

discrete functions of frequency has been derived. The time function must

consist of evenly spaced samples of some interval^ T. A function of N samples

could be represented as f(nT) for < n < N - 1. The spectrum of the func-

tion would also consist of discrete values evenly spaced in frequency. If

the spectrum were composed of N points, the interval of frequency, q, would

be 2tt/NT. The spectrum F(koJ, < k < N - 1 would be given by

N-l

F(koJ = Z f(nT)e"jnTkn

(l)

n=o

This equation defines the discrete Fourier transform (DFT) of a

sequence of N samples. It follows directly that the DFT is linear since

DFT[f(nT) + g(nT)} = DFT{f(nT)} + DFT{g(nT)} (2)

and

DFT(c(f(nT))) = c[ DFT{f(nT)}

]

(3)

This follows quickly from the definition.

There exists an inverse DFT, a transform which maps a discrete

Fourier transform back into the sequence from which it was composed. It is

given by

f(nT) .| lfo FdB).*"" W

-1-

Page 16: A fast fourier transform subroutine for ILLIAC IV

which differs from the DFT equation 1, only by a scale factor and by the

sign of the exponential. The same procedure used for the DFT can thus be

applied to a frequency spectrum to perform the inverse Fourier Transform by

simply dividing the result by N.

2The above method for computing DFT requires N complex operations

to be performed in order to transform a function with N samples. The method

of Cooley and Tukey [1] eliminates redundant steps in that method resulting

in a procedure requiring only N logp

N complex operations. This method is

highly parallel and therefore very well suited for use on ILLIAC IV [2].

Subroutine Specifications

The ILLIAC IV fast Fourier subroutine accepts discrete input func-

tions composed of N complex samples where N is an even power of two between

8 and U096, inclusive. The output of the subroutine is a discrete frequency

spectrum composed of N complex samples as defined by equation (l). The out-

put is stored over the input in ascending sequence in a contiguous block of

memory. N words of storage are used, where each word contains the real

(outer) and imaginary (inner) portions of one sample in the 32-bit format.

Input to the subroutine must also be stored in this manner; therefore, all

values have 2^-bit significance and are represented in floating point.

Several functions can be input to the subroutine at one time as long as

they are stored contiguously and provided that they all are the same length.

If the transform of a function of M samples is desired where M is not a

power of two, N-M zero samples should be added to the function where N is

the smallest power of two greater than M. The result can be input to the

subroutine as a function of N samples. The output will be a frequency

spectrum equivalent to the transform of the original function of M samples

with a smaller frequency spacing.

Implementation of the Cooley-Tukey Procedure

The method of Cooley and Tukey [1] is illustrated in Figure 1.

Implementation of this method on ILLIAC IV has been discussed by G.M. Ackins

[3]- Ackins' methods have been refined and generalized for use in this sub-

routine. The following description gives the details of the final imple-

mentation.-2-

Page 17: A fast fourier transform subroutine for ILLIAC IV

vw\

Figure 1

In Figure 1, f represents f(nT) and F represents F(npJ. Also W

.2

is used to replace the constant e N. At each node in the diagram, a com-

plex multiply involving the lower of the two inputs to the mode and the

constant, W, raised to the appropriate power is performed. The result is

added to the upper of the two inputs giving an answer which is used as an

-3-

Page 18: A fast fourier transform subroutine for ILLIAC IV

input to the next iteration until the transform is completed. At each stage

in the process where an iteration is complete, the partial results are

stored into the initial locations so that the data is transformed in place.

Figure \ illustrates how this transform would be accomplished in parallel

on an eight PE ILLIAC IV.

Initial

_data_

f

First Second Third

iteration iteration iteration

Figure 2

-h-

Page 19: A fast fourier transform subroutine for ILLIAC IV

In Figure 2, the arrows represent routing of data between PE's

while the nodes represent the operations which take place within the PE's

as given for Figure 1. f(t), and all of the necessary powers of W are

stored in PE memory for use in the calculation. From Figures 1 and 2, it

is seen that the input data has been "shuffled" so that the output appears

in ascending sequence. This shuffling also causes the routing (arrow)

pattern to be very regular. The algorithm for ordering input data is ex-

plained in a later section of this report which describes the routine

called Scramble which performs the shuffling in ILLIAC IV.

The method described above and illustrated in Figure 2 can be

generalized to transform much larger functions. Careful examination of

Figure 1 reveals that after two iterations, two separate four point trans-

forms have been completed. A four point transform is depicted in Figure 3«

It should be noted that the value of W depends on the size of the function

being transformed.

^ &Z. /V^\y ^ 1

/ G -,w W2

/ >/ G3

w2 u 3

W

Figure 3

The eight point transform can now be represented in terms of the

four point transform as depicted in Figure h.

-5-

Page 20: A fast fourier transform subroutine for ILLIAC IV

go

V>

g2

o

DISCRETE

FOURIER

TRANSFORM(N=4)

DISCRETEFOURIER

TRANSFORM(N=4)

Figure h

-6-

Page 21: A fast fourier transform subroutine for ILLIAC IV

The equality of these two representations (Figure 1 and Figure k)

is important to the structure of the subroutine. In an eight point transform,

_.2 ^ _. _.2W = e B, so that W = e . In a four point transform, W = e ^, so that

W - e . Thus, an eight point transform can he accomplished by performing

two four point transforms and iterating once more. In the general case

any N point transform, where N is a power of two, can he accomplished by

performing two N/2 point transforms and combining those results with one

final iteration. One consequence of this is that the first step in per-

forming any size transform is to perform an eight point transform on each

group of eight points. The entire subroutine is built up from that basis.

The other consequence of this partitioning of the procedure is

that each stage is completely independent. When a function composed of

128 data samples is to be transformed on ILLIAC IV, it is simply stored in

two rows of PE memory. One row of PE memory consists of one word in each

PE. The first 6k samples are stored in one row (after proper scrambling)

and the second half are stored in the other row. This is referred to as

"folding" 128 words of data into two 6k word rows of memory. A 6k point

transform can now easily be performed on the first half of the data since

this operation is independent of the other half. This 6k point transform

is a simple extension of the eight point transform of Figure 2, using 6k

PE's. Another independent 6k point transform is then performed on the

second half of the data.

The results of these two 6k point transforms can be combined in

one simple iteration giving the final 128 point transform. Since the in-

put data was folded in PE memory, no routing is required to align the two

halves for this final iteration simplifying it even further. This can be

illustrated by observing that the final iteration of each transform re-

quires a route of N/2 positions. For a 128 point transform this would be

a route of 6k which is equal to a route of in a single quadrant ILLIAC

IV. Furthermore, every transform larger than 6k requires a final route

which is a multiple of 6k which means no routing is actually required.

Since there is a smaller proportion of time spent in routing, the largest

transform is actually the most efficient in its computation.

-7-

Page 22: A fast fourier transform subroutine for ILLIAC IV

The final generalization is that each larger 'transform above 6k

is simply accomplished by folding the function and treating the halves in-

dependently until the final iteration. The size of the function will de-

termine how many eight point transforms are done as the first step. Also

the number of functions to be transformed at a time can be taken into

account through proper loop control. For example, two 20U8 point transforms

could quite easily be done at the same time. They would each be scrambled

separately and then the transform would proceed as if the two functions com-

posed a single U096 point function—only, the final iteration would not be

performed.

Scrambling

The shuffling of data in the processing elements before perform-

ing the transform allows the computation to be done in place, that is, by

writing all intermediate results over the original data. This process will

be referred to as prescrambling and when it is applied the transform gen-

erates results which are sequentially ordered across PE's. The original

function is composed of discrete samples at even spaced time intervals.

They are assigned indices through N in order. Each index can be rep-

resented by a binary number with log N digits, KnK . . . K , where

n = log N - 1. The scrambling process requires that each sample having

index KAK. . . . K be interchanged with the sample having index K K , ... K^.1 n c n n-1

Thus by a simple "bit reversal" of each binary index the destination of each

sample in the scrambling process is determined. Note that in Figure 1 a

three digit bit reversal on the sequence 0,1,2,3A>5>6>7 yields the proper

sequence for input to the transform procedure, i.e., 0,^,2,6,1,5,3,7- Con-

sider the following example to see how the scrambling is accomplished within

ILLIAC IV. The input data is represented by indices only.

-8-

Page 23: A fast fourier transform subroutine for ILLIAC IV

PEo

Initialfunction 1 2 3 k 5 6 7 8 9 10 11 12 13

Bit reversedindices 8 k 12 2 10 6 lU 1 9 5 13 3 11

1stiteration 1 2 3 U 5 6 7 8 9 10 11 12 13

Route (7) * * t T~* t *

2nditeration 8

Route (2)

Properlyordered 8

PE15

lk 15

7 15

lk 15

2 10 J+ 12 6 li+ l 9 3 11 5 13 7 15

k 2 2 10 6 lU 1 9 5 13 3 11 7 15

This process can be generalized for scrambling N points in the

following manner. The odd numbered PE's less than N/2 send data to the

corresponding even numbered PE's greater than w/2 and receive data back

from them. The next iteration is the same except the first N/2 PE's and

the second N/2 PE's perform it independently and handle the data by pairs.

Note that only two routes are required for each iteration. By this method

ILLIAC IV can scramble a 6k point data set in three iterations requiring

only 6 routes. For larger data sets the data must be folded in storage and

a different scheme is used. The following example shows how a sixteen point

data set would be scrambled by a k PE ILLIAC IV.

PEo

PE PE2

PE3

L0C 1 2 3

L0C+1 k 5 6 7

LOC+2 8 9 10 11

L0C+3 12 13 lk 15

Proper reorderingdetermined by bit reversal

PEo

PE PE2

PE3

8 k 12

2 10 6 11+

1 9 5 13

3 11 7 15

-9-

Page 24: A fast fourier transform subroutine for ILLIAC IV

The underlined indices denote the positions that are unaffected

by scrambling since data in these positions does not need to be moved. The

location of these stationary positions within each PE is given by perform-

ing a bit reverse operation on the PE numbers. Each PE now loads a register

with data from the location corresponding to the stationary location in the

next higher numbered PE.

Register

Memory

L0C

Lyic+i

L0C+2

LOC+3

8..

^11+> 3>

PEo

PE1

PE2

PE3

k

12

1

5'

9

13

2

6

10

Ik"

3J

7

11

15

Each PE routes the data in its register to the next higher

numbered PE. The rightmost PE routes back to the first PE.

PEQ

PE PE2

PE

register Ik

K7—o—<cr

PEQ

PE1

PE2

PE3

register 3 8 5 Ik

Now the data in each register is exchanged with the data from the

location in the PE corresponding to the stationary location in the next

lower numbered PE.

-10-

Page 25: A fast fourier transform subroutine for ILLIAC IV

PEQ

PE1

PE2

PE

Register

Memory

L0C

L0C+1

L0C+2

L0C+3

12^ 1^ 101 V

8^ 2 3

k 5 6 1U^

8 9 !T 11.

3J

13 lU 15

The data in the registers is new routed hack one PE and stored

where the first data came from.

PE, PE1

PE2

PE

Register

Memory

L0C

L0C+1

L0C+2

L$C+3

In 10> K 12.

\

3

8

9

13

2

6

5

1J

12'

Ik

11

15

<

The transfers accomplished can he illustrated as shown below:

L0C

L0C+1

L0C+2

L0C+3

PEQ

PE]_

PE2

PE,

11-

Page 26: A fast fourier transform subroutine for ILLIAC IV

The transfers to complete the scrambling would be:

PE PE. PE, PE,

L0C 8 ^2 12

L0C+1 k~* 10 6 Ik

L0C+2 1 9 5 ^11L0C+3

.3 13-" "~T" 15

This final transfer is accomplished by only one route since each

data point moves exactly two PE's away (end around). Once again all PE's

are active. The following diagram shows how this final step is accomplished

PEQ

PE1

PE2

PE3

L0C

L0C+1

8.r 2/ 12

*ir ^LO 6 Ik

L0C+2 i 9 5^ ~±± — -

L0C+3 3, *-13r^ 7 15

1

Thus, after two iterations, the data has been properly ordered

for input to the transform routine.

PEo

PE1

PE2

PE3

L0C 8 k 12

L0C+1 2 10 6 Ik

L0C+2 1 9 5 13

L0C+3 3 11 7 15

-12-

Page 27: A fast fourier transform subroutine for ILLIAC IV

In the operations described above, each PE is always performing

some tasks and the data is never moved to an intermediate memory location

so that the scrambling is done in the minimum number of steps and with 100$

efficiency in the use of PE's. It can be seen that neither of these state-

ments is true about the scheme described at the beginning of this section

or the scheme described by Ackins [3]- Unfortunately this algorithm works2

only on data sets which have N points, where N is the number of PE's in

the array.

Since ILLIAC IV has 6k PE's it can scramble a folded data set

of U096 points 100$ efficiently. The algorithm has been extended to handle

small data sets.

Consider the following example of scrambling a 32 point data set

in an 8 PE ILLIAC. The initial state would be:

L0C

L0C+1

L0C+2

L0C+3

PE, PE. PE, PE. PE, PE, PE, PE.

1 2 V k 5 6 7 V

> 17

10 11

*19 V20 21

Ik

^22

15

'23

2k 25 26 27 28 29 30' 31

K_ \

Now perform the transfers indicated. It should be apparent that

these operations take four rather than two routes since each group of four

PE's cannot be treated separately in an end around fashion. Also these

transfers cannot be 100$ efficient since more than one routing distance is

involved.

The result of the transfers would be:

L0C

L0C+1

L0C+2

L0C+3

PE, PE. PE, PE. PE, PE rPE, PE,

16 ^2 2k k 20 ^r 6 28

8*-^T 10 26 12 <4- ^22 Ik 30

1 17 9 J* 1^ 5 21 13 JT 23

3 25*- "*"ii 27 7 29*- ""15 31

-13-

Page 28: A fast fourier transform subroutine for ILLIAC IV

Now only the above indicated transfers are required to complete

the scrambling process. Note that the process is simply two applications

of the previous method performed in parallel. The final result is:

L0C

L0C+1

L0C+2

L0C+3

PE, PE, PE, PE, PE, PE r PE, PE.

16 8 2k h 20 12 28

2 18 10'

26 6 22 1U 30

1 17 9 25 5 21 13 29

3 19 11 27 7 23 15 31

A generalized method for scrambling data which is folded in

memory can now be given. Data is first scrambled in groups which are com-

posed of as many FE's as there are rows of data by the method developed for2

"square" data sets (referring to N data points in N PE's). Finally, con-

sider these "squares" as units and scramble their position. One further

example will make this last step more clear. Consider 16 data points in an

8 PE array.

First iteration

PEr PE. PE, PE, PE, PE r PE, PE.

L0C

L0C+1

1 2 -3 h 5 6 ^18*-

9 10*"^* D

12 *-^13 Ik** 15

The heavy lines below indicate the second step which completes

the scrambling, giving the proper result.

L0C

L0C+1

PE PE. PE, PE, PE1+

PE, PE6

PE,7

8 2 10 k 12 6 1-4

1 9 3 11 5 13 7 15

•14-

Page 29: A fast fourier transform subroutine for ILLIAC IV

Result

L0C

L0C+1

PE, PE. PE, PE, PE, PE r PE, PE,

8 k 12 2 10 6

...

Ik

1 9 5 13 3 11- 7 15

Although the present implementation allows for only up to U096

data points, larger data sets could be handled and it is easily seen that

scrambling would be 100% efficient, but the core restrictions on the size

of the data set and the size of the program would eventually limit the pro-

gram. A short discussion of these restrictions is included under future

considerations -

Future Considerations

Various extensions to this subroutine have been explored. Some

of them seem impractical while others are quite worthy of further investi-

gation and perhaps implementation. There also has been a suggestion

that a separate subroutine be written to handle several parallel transforms,

each with all of its data within one PE. If all transforms could be done in

groups of 6k this would appear to be a very efficient method; however, if

groups of data are not even multiples of Gk, some PE's will be completely

idle during the whole process. It is this author's opinion that such a

subroutine would be very straightforward to code and would have enough value

to be worth programming at some future time.

The question of expanding the present subroutine to accept data

sets larger than U096 sample is largely decided by available core. There

does not seem to be too much demand for greater capability at this time and

the program itself already consumes approximately 2,500 words of memory,

mostly composed of stored constants. Each increase of a power of two in

the size of data sets transformable will increase the size of the subroutine

by almost a factor of two. Such increases can only be justified by a large

demand for that capability. If and when expansion is warranted, the process

would be straightforward with the possible restrictions of a 6kK limit on

-15-

Page 30: A fast fourier transform subroutine for ILLIAC IV

the size of the data set so that it could be completely core contained.

Problems with formatting and accessing disk files tend to be formidable.

It has been shown by Robinson [h] that two real data sets can be

handled simultaneously as if they composed one complex -data set of the same

size. It was suggested that capability be added for handling real data in

this manner, with hopes of a factor of two increase in efficiency. The

algorithm was studied and appears simple enough but applying it to a

parallel structure like ILLIAC IV, does not seem feasible at this time.

-16-

Page 31: A fast fourier transform subroutine for ILLIAC IV

ILLIAC IV FAST FOURIER TRANSFORM

USERS MANUAL

This report is intended to be a description of how to use the

Fast Fourier Transform subroutine and exactly -what it can do. An explanation

of the Fourier Transform and of how the subroutine works on ILLIAC IV is given

in ILLIAC IV Report #226 entitled "A Fast Fourier Transform Subroutine for

ILLIAC IV. " Also, copies of the assembly language listing of the subroutine are

available from the Center for Advanced Computation and the University of Illinois.

The Fast Fourier Transform is used to transform a discrete time series

of data points into a discrete frequency spectrum. Both input and output data

values are represented as complex numbers in the following way: each number

occupies on 6U-bit word using the 32-bit floating point configuration where the

real part of each number occupies the inner 32 bits. When the input series con-

sists of only real numbers the numbers should be stored only in the outer por-

tion of each word and the inner portions should be set to zero. In any case the

output will always consist of complex numbers and will be stored in the same

locations as the input, thus "overwriting" the input.

Due to the structure of the Fast Fourier Transform algorithm all input

sequences must contain a number of data points which is an even power of two.

The sizes of data sets which can be transformed by the ILLIAC IV subroutine are:

8, 16, 32, 6k, 128, 256, 512, 102^, 20^8, ^096. Other sizes of data sets can

be transformed by "padding" them with zeros on the end until their size is in an

even power of two between 8 and U096 inclusive. The result of such a transform

will be correct with only the frequency spacing of the result being effected.

This subroutine uses the standard subroutine linking conventions as

described in "The ILLIAC IV Software Reference Manual. " When referenced from a

GLYPNIR program, a standard subroutine call statement can be used. When refer-

enced from an assembly language program, the standard call macro can be used.

This macro and an example of its use is listed in Appendix A. The Fast Fourier

Transform subroutine requires three parameters named size, number, and pointer.

These parameters have the following significance.

SIZE

Size gives the number of data points present in each input time

series. Size must be an integer and should be an even power of two between 8

and U096 inclusive. If it is not an even power of two, the next greatest power

-17-

Page 32: A fast fourier transform subroutine for ILLIAC IV

of two will be assumed and will determine the size of the transform and the

number of results returned. Note that the data must still be "padded" with

zeros for the result to be meaningful. If the size specified is zero or greater

than 4096, an error condition will be indicated and no transform will be per-

formed. An error is indicated by filling ACAR2 with all ones.

NUMBER

Number must also be an integer specifying the number of transforms

to be performed during this call to the subroutine. Any number of transforms

can be performed as long as they are all the same size and as long as all of the

input data ia available in one continuous block of memory. If number is set to

zero, no transform will be performed and ACAR2 will be set to all ones.

POINTER

Pointer is a 2^-bit CU address giving the location of the first word

of a continuous block of memory which contains all of the input data for this

call of the transform subroutine. Pointer will also address the first word of

the resulting frequency spectrum(s) when the subroutine is exited. This pointer

is automatically set up by the calling macro which is exhibited in Appendix A.

The actual subroutine is contained in a file called FASTFOURIER/

TRANSFORM which is available on a system tape of the subroutine library. This

file must be properly linked to the calling program. The subroutine is called

by using the entry identifier FFT.

INVERSE TRANSFORM

For performing inverse transforms the only change required is to call

by using the entry identifier FFTINV.

-18-

Page 33: A fast fourier transform subroutine for ILLIAC IV

APPENDIX A

Standard call macro from "The ILLIAC IV Software Reference Manual"

DEFINE CALL &NAME(&PARAMETERS)=

&IF &SIGN(&MFIELD (&NAME)

)

&THEN EXTERNAL &NAME; &FI

BEGIN BLOCK

BEGIN USE 63

LIST: DATA &PARAMETERS;

END;

CLC(2);

SLIT(2) LIST;

END;

clc(3);

SLIT(3) &NAME;

EXCHL(3) $ICR; ##;

Sample calling sequence to execute two I38 point transforms.

CALL FFT(HOWBIG,HOWMANY, WHERE);

WHERE: DATA [128 words of data];

HOWBIG: DATA 6k;

HOWMANY: DATA 2;

19-

Page 34: A fast fourier transform subroutine for ILLIAC IV

APPENDIX B

Demonstration Run

This appendix compares a Fourier Transform performed on a Univac

1108 and the same transform performed on the ILLIAC IV Simulator. The infor-

mation is presented in the form of actual computer listing including the

following: l) A listing of the 256 real input data points. 2) The results of

the Univac run (real part first followed by imaginary part). 3) The main

program used to call the FFT routine for the ILLIAC IV simulation run.

k) The results of the simulation run. Differences in the two results are due

primarily to the difference of the word size used in each case.

-20-

Page 35: A fast fourier transform subroutine for ILLIAC IV

Input Data

o. 0. -5b. -24. 4822. -13007. -9326. 5835.171.67. 1 2 D 4 7 , 3. -696. -1676. 77 34. -2215. -7602.1 21

1

. lo5. -17335. 9888. -12968. 2744. 14245. 10537.11^*1 3. l'WW, 4049. <069. ) 7389. 6574. 18416. 507.|C625. 2 364. -3213. -36 09. -6436. -11208. 3291. 7014.-7/'<0. -3226. -16879. 1217 3. -684 8. -8584V 7979. 13897.12/3. - 1 5 1 B

.

1 1 723. 3/09. 768. -7109. 3905. -17075.17524. -6860. 8704. 1967. -4606. -11202. 16318. 3432.4807. -19886. -6603. -11205. -11151. 762. 7412. 951.31 1>7. 32 70. 11954. 3 3 . -1335. -14578. 17089. "-8457

-6505. -12545. 4537. 5618. -5144. -13695. 1017 0. -3683.-8/o2. -924. -2680. 4/16. -4320. -5671. -11186. 12147.-6bl . 1 1049. -12576. 3387. 1053. -12898. 5476. 1719.

-5 6 92. -9780. 611b. 4889. -15757." ""6186."

-1947. " -1902.9280. 40 03. -13438. 1 34 66. -14 7. -5415. 2584. -13501.4027. -41 76." 223b. -10937. 85 7 3. "-13987." "3345. -1129.

-530?. -9614. -64 15. -1 3410. 1344 7. 1673. -10575. -3613.]o5. -191. 499. 1514. -5063." "19279. "8 32. -5213.

12544. 49 /6. -17782. -H99fa. 10533. -5940. -2264. 7824.6105. -16655.

"

9 24/ 3 7666. 3006. -7317.

"

~ -8 118." 3976."5297. -109 75. 10 253. 16419. 2224. 12068. 392. 1382.~ - 3 1 2 . -238. 1088b. 1551. 2753." 6381 . "8903. -393.

14* ; 23. 11118. -9271. -7248. 1997. -1026. 809. 4387.-3143. 6325. -4 87 7. 195. -496. 17 32. 16910. -3611.-5082. -3918. -5548. -2748. 5597. 3206. -8721. -7531.ill?. 15922. 293b.

"- 4 695." -2051. 18 043. """2013. " -306.

-5539. -901 7, -18840. 10401. 3189. -18287. -3289. -4301.-2925. -3157. 10105. "3154. -7270. -.1 1441. """2041 7" "-374673139, -8121. -12835. 9925. 2178. -6024. -8531. 4158.

j-486] . -8923. 18110. 13781. "3 060/." 51297" 157877" 34287n-1069. -2 Ob 8.

2816.-12438.1816/.

1 2253.1954.

-7699.-279 7.

-10595.-6039.

6591.. -1159.-15/5. 17566. 2517.

-21-

Page 36: A fast fourier transform subroutine for ILLIAC IV

Real Univac 1108 Result

.85580000*04-.23935650*05

. 10475777*06

.40882889*05-.79964560*04

. 16432617*06-.H81901?6*05

. 12018498*06-.928207(12*05-.213009^2*05."3661 06P6.05.601555^6*05. 10175 7^4*06.23466077*05. 126766O5.06

-.50596355*05.11267843*06.576140)0*05.28340147*05.930267^9*05

-.12314756*06.21500096*06

-.195869?4*06.39295759*05.17858835*05.123053h9*06

.30633514+05-.79698125+05-.89308050+05-.11257891+05.11725652+05

.19196831*06-.88314708*05

.12051347+06-.29508836+05

.54568208*05

.50177875*05-.81431963+04-.65641566+05

.62304680*05-.75575159*05.36708912*04.86965552*05

.95429297*04-.94544403+05-. 17295822+06.17787883+06

.54710958*05-.72483458*05

-.28900264+06-.42655679+05

-.66131058*05.11841725*06

-.40119934+05.13246392+06

.41877700*05-.10685043*06

.35511073+05-.34118988+05

.10627192*06

.25315634*05-.61932731+05-.93928612+05

.28277265*05-.86787733*05

-.1 13600 16*06.63162532*05.62923921*05

-.19840547*04-.44793332*05-.35014947*05

. 19538353*06

.6791216R+04-.86787713*05.28277265*05

-"738144223*05-.84544034*05

.67912168*04

.19538353*06

-.22494207*06

.59866334+05-.35014947*05-.44793332*05

.32308614*04

.19907523*06-. 19840547*04.62923921*05

.59887308*05-.25588855*05

.63162532*05-.11360036*06

-.24503150+05.75343836+05

.12305369*06

.17858835*05.25315634+05.106271^2*06

-.11576040+06-.56760156+05

.39295759*05-.19586924*06

-.10685043*06.41877700*05

-.49808327+05-.12489943+06

.21500096*06-.12314756*06

.11841725*06-.66131058*05-.72483458*05.54710958*05

-.35125625+05.55541602+05

.93026729*05

.28340147*05.95541438*05

-.10801400*06.57614010*05.11267843*06

.86965552*05

.36708912*04.18504945*05

-.11136791+06-.50596355*05.12676695*06

-.75575159*05.62304680*05.50177875*05.545682(18*05

-.88314708+05.19196831+06

-.79964560+04.40882889+05.10475777+06

-.23935650+05

-.12558822+00-.12877611+06

.23466077*05

.10175734*06

.60155586*05

.36610626*05-.21300992*05-.92820702*05

.59602295+02

.62851 124+05-.14447113+05.68437002+04

-.12452422+06-.18619060+04

.12018498*06-.88190126*05

.12423822+06-.43274833+05

.12878585+06•.32208377*05•.31424301*05-.14610218*05•.11268548+06.46726594+05.10651084*06-.35035923*04-.1 1844547*06•.22496512*05.23490922*05.24522155+05-.13490052+06-.70621265*05-.87760739*05.63107815*05

_L18619414*05_.fB944333*06^87388329*05.48S61633*05-.35586001*05_-.20365177*05.14108025*06.12"12353b"*06~"

^.42466545*05.11306600*06"^.42466545*05.12123530*06.14108025*06•.20365177*05

L.255R6001*05.48561633*05^87388329*05•."18944333*06^18619414*05.63107815*05^87760739^05•.70621265^05"••13490052*06".24522 155*05^23490922*05•.22496512*05..11844547*06••35035923*04.10651084*06.46726594*05

•.1J268548*L06_••14610218*05L.J 1424 30 1_*05.32208377*05.12878585*06

-.43274833*05.12423822*06-.18619060*04-.12452422*06.68437002*04-.144471 1 3*05.62851 124*05.59602295*02-.12877611*06-. 12558822*06.11136791*06.18504945*05-.10801400*06.95541433*05.55541602*05-.35125625*05-. 12489943*06-.4980832"7*05-.56760156*05-.11576040*06.75343836*05-.24503150*05-.25588855*05".S"988730S*05

.19907523*06

.32308614*04

.5986633^*05-.22494207*06-.84544034*05-.38144223*05-.93928612*05-.61932731*05^.341 18988*05.35511073*05.13246392*06

r.46119934*05-.^2655679*05r. 28900264*06.17787883+06

:. 17295822*06-.94544403*05.95429297*04-.65641566*05-.61431963*04-.29508836*05.12051347*06.11725652*05-.11257891*05-.89308050*05-.79698125*05.30633514*05

.16432637*06

-22-

Page 37: A fast fourier transform subroutine for ILLIAC IV

Imaginary Univac 1108 Result

.00000000

. 12539 7-+9 + 05-,71297144+OS

. 18855b8b+06

.17435297*06

.35799352*05-.626712 31*05-. 1 1224Qb9*06-.92065512*04-.83311300*05-.21239087*05-.78648c>52*04-.11474280*06.10789059*06

-.57622153*05.18087399*05

-.17384096*06-.97109678*05-.38454852*05-.48075970+05_.30471259*05.11034351*06.56991673*05

-.731532/7*05-.14147976*06-.20342460*06.34484995*05

-.75169292+05

.73496373*05~.54843035+05~_ .16088750*05.10316574*06.22981703*06

-.20013107*06-.15650693*06-.50385053+05-.88054139*05.44369014+05

_ .33982734+05-.10571027+06-.12952341*06.13493994+04

_ .72885594+05.88596548*05

-.46812337*05-. 14840 741 +06.12412578+05

-.21966100*05-.299284)9*06.15715059*06

-.94287190+05.32348535*03

-.32348535+03.942H71'<0*05

-. 15715054+06.2992H4 19+06.21966100*05

-. 12412578+05. 1484074] +06.46812337+05

-.8859b54M+05-.72885544+05-. 1 3493994+04.12952341 +06.10571027*06

-.33982734+05-.4^369019+05.880541 19+05.50385053+05.15650693*06.20013107+06

-.22981703+06-.10316574+06-.16088750+05-.54843035*05-.73496373+05.751892'-'2 + 05

-.34484995+05.20342460+06.14147976+06

.73153277+05-.56991673+05-.11034351+06-.30471259+05.48075970+05

~ .38454 852+ 05.97109678+05. 17384046+06

-. 18087399*05.57622153+05

_-, 10789059+06. 1 1474200 + 06^.78648652 + 04.21239087+05.83311300+05.92065512+04.11224059+06.626 71231+05"

-.35799352+05"-.17435297 + 06-.188556«6 + 06^.71297144+05

-.12539749+05

-.15282431+06.34464606+05

-.96626729+05.47544088+05

-.10578316+06-.48ifl9366 + 05.649649/7+05

-. 10760260+06.44764577+05.95072141*05.19846301*06.93203335*05.23333460+05

-.15458620+05.35402116+05. 15852791+06.23991060+05

-.79624333+05-.25320520+05-.14226242 + 06"

^36430140+05.11887141+06

-.74552653+05.188907)8+06

-.92939891+05.12785482+06.33364525+05.19050124+05

. 12846535+06

.44 664971 +04"

-.54591791+05-.74105499+05.48101416+04

" ."19423950 + 05.63503576+05.47605405+04"

-_. 17098704+05-.2843124605

~

-.23472000+06-. 10436177+06_-.44790«95 + 05_."72368868 + 05

-.94768170+05-.45146798+05.21326760+05

-.36626935+05.32980707+05.76239434+05.20518874+05

-.60283592+05"_-,.79 2 34 054 05.

-.27383049+05-.41893763+05.51 172803 + 05.49064532+05.1 1941343 + 05"."4696 7453 + 05-.17344318+06-.13977412+06.47270071 +05.24357188+06.31240915+05.14410096+06-.322141 13+05-.24044316+06-.31654141+06-.22730289+06-.13077045+06". 10901463 + 06-.47217832+05.32640422+05-.12036483+06.405873 19< 05-.11836559+06.12702667+06. 10989458+06-.00000000•. 10989458+06. 12702667 + 06

.11836559+06-"."40587319 + 05.12036483+06

-.32640422+05.47217832+05

-.10901463+06"^13077045+06.22730289+06.31654141+06.24644316+06.322141 13+05

-. 14410096 + 06"

-.31240915+05-.24357188+06-.47270071+05

. 13977412 + 06_. 17344318 + 06-.46967453+05^.11941393 + 05-.49069532+05-^51172803+05.41893783+05.._J_7383049_+05

.79234054*05

.60283592*05-.20518874+05-.76239434+05^32980707 + 05.36626435+05-.21326760+05.45146798+05.947681 70+05-.72368868+05.44790895+05.104361 77*06_.23472000 + 06.28431246+05. 17098704 + 05-.47605405+04-.63503576+05"." 19423950*05-.48101416+04.74105499+05.54591791*05-.44664971+04-. 12846535*06-.19050124+05-.33364525+05-.12785482+06.92939891+05-.18890718+06

.74552653+05-.11887141+06-.36430140+05

. 14226242 + 06

.25320520+05,79624333+05

-.239Q1060+05-. 15852791 + 06-.354021 16+05.15458620+05

-.23333460+05-.93203335+05-. 19846301+06-.95072141+05-.44764577+05.10760260+06

-.64964977+05.48219366+05.10578316+06

-.47544088+05.96626729+05

-.34464606+05..15282431 + 06

-23-

Page 38: A fast fourier transform subroutine for ILLIAC IV

Main Program of ILLIAC IV Simulation

(Data stored in external file referenced by ABC)

BEGIN

EXTERNAL FFT,ABC;

SIZE: DATA 256;

NU: DATA i;

MAIN:

:

SETE E.OR.-E;

SETE1 E.OR.-E;

SLIT(2) ARGLIST;

CLC(3)

SLIT(3) FFT;

EXCHL(3) $ICR;

lit(o) I.ABC+6OO .ABC

DISPLAYR $C0.20:8;

HALT;

ARGLIST: DATA SIZE, NU, ABC;

2k-

Page 39: A fast fourier transform subroutine for ILLIAC IV

Illiac IV Simulation Results

(Outer = Real, Inner = Imaginary)

<4> in •r m -* o in *> sT IT -o m •C m m >*n m *> c\ *nO O o o o o o o o O O O O o o o o o O o oo + + 4 *o a m a a • a a ft a • a X 1 t* a a a n a <CK. p*. K- *- IT- — w~ rn rv rv a. ir *. tr < X iT o <r e

0D «y —• -- O o r> r> rv» rv <» c* *T k. ao n O J-i rv n.

m o .,-.*> cr o x> >o o <T iT« no m m in f^. — O m -*^.

r-« m x> o x in r\j tn OJ O tr~ — «— o in c x J —

t

•*r

CK X cr ^r •— •-. CT IT m c <c 9 lf> — m < *c r\ — CTi-it5 n *> <r O N„ n n -T •VJ N» > c> rv -• c n v O —

'

9- rv *. *> «T r\j lT- o •c CM >r —. —

rv T* o ^T cr -- r> m<s —

.

rv *- n •- «— cr «-* - k- — — — cr <c •- LT — IT CT

CIT 9HMT4 o <r m o nc m -*" mooooooooooo ooo4 499 a aaaaaaaa a « aIT iTff IT C O O « --<(C O (MT3 j^ ^ rvj (v r t * -c k ? Oinoooo rvj^o^oc (CO OO-WOrCnM^on^^on^*»rM>r»•- K. in '^ C*> « TT O"! rv T to

ir »n ir m m O in O IT «n m < ^r ino o o o o O o o o o o o o o+ 4 4 +* (i o <* a a i a i m a 3 a 'o *v o «; •- r> c m ^ <» «" or ~- <v-^ o *^-l O 5* -fj —

«

a- o <» n O > CJx

•^ o o T ^ ^r CT o o n K- --• -^ ^>c t> -— k. tn m O K. —

*

-^ tn »»1 ^ inf\ >& m <r *\ c •— f<w •— f\ o ^> rvi r^

o *> ^-« o — o o o n O M Z> « o«n rf ^c- T) LP •^. TT r*> m o- *r o o -of> ^ >f —• (^» ^7 — — m t^ r* rw — =»

_j n n n h h t* ii M m n ii ii h h ii h ii ii n n ft h n n n ii n h u n ii n m n n h n ii it n u n n it n it n

o ct t nr rr at a or t or t o- or rr i rt

1J U UJUJUiUi Uw>J UJ IJU U U UuJIl-7l-ZI-7»-rt-?»- ^—^_

jfi-^iia'y.trff^o'arafri'O'j r ft a- tt r i i I ti t ff t t rrU uJ U 'J aJ W Ul Id UJ iJ LI U LiJ IjJ '-i.' U' U) U U U Ul U U Uf UJ uJ .J lJ i-U i.J U U!

c^c»»cmc»-c»-c .~cT~(r^-c:H-c^cr^c»-cr»-cr^-c-»-c»~c *-c?»-cr ^-c^-c»-c- i-e»-cr»-

CMO

in 'OooooO X 10<? DC• ^ tM

in «*

c m «c•-«.© rv»- o m

i m

m m <o ino o c oa a. a a,fy -- K- i*>

o-^ n- m-HfM p^ —

CK |f KO* V K. O-— r\j ^ c\i

<o o o —•o o ^^ t*w

'M «-- TOo er

•o in

+a ». it,

c* ^c »— — cwin -oc c m— ^ cv*C O Kcr <r ——- ^r --

<^> ^>cr c»*- •-

in n£>

o <c

't. « 9O. <*> «^-

X> O -^

in K- fvr\i « —

(ft a

in m— -< m k. — «*

— — *~ ir t\ en t*. o^fo m *o(NJ fiC ru— ay >c

CJ

•emmm-c inm>c >cininininin inooooooooocooooo• •• +a a a « x a. *• ». a x a a a- a xo rv<r^cc»-'C>^oivi*N o--»o<ooxo^coorworo^nrnm^)^ d•o 'O — ok. co*-o^>« —«k. ^-*.n^ IT IT O <£ C c\" C fv. C"C<\'f^<V —K-tCK-^r^oCv.— a-farCfCCXOoD lrtviHMrcf^fn'n> ty<> j-i

(\J(Min«-, '^'^'«»<TK-**1«, mr\jK >/\

•-t»s.K. CM-^cffVi— —•r\jf\irr**^ir in

in in ^ -c m -o «c >« ir, m -S

o o o o o c o o o c o+ * + + + + 4- +X X c* t x a- X X X a -»

*** r> or o m rn — — rv rv Cf

o *o c CO n "m > 3 /I .n i-V

K- N* ev rn o <> n o cr ^-* rn<I K. c < *- »c C m =T c •—O C r^ cr C* CC IT a ir •c cc -* K_ M r> in •a >o » v. VIk. m rv m m o. in o a: c m*- o rv ^ ry *-* ^. "-• rr iT CT

C**tl«-»f*tl«—tin nnnnnnnHn * f i » • I

n n ii ii n h ii n n n n n r ii n h n n ii h ii ii ii ii ii ii n n u n n n r ii h

tj or or y or at 0"rtrff'rffQ:T3'r'r!i:o:a»(i:QrT»iQ(rfrTttrori cr r t t era ct ff or 1 orrraracTy U UL. DUI Ul'^' L' liJ Ui UU UU UJ y L/UU. UJU U'UlJk'UUjU.' LJU UU L 1 UJIl"J U.'UJk'UUtiJ liJU L' uwt— ^t— 2»— Z»-T>— ^»— ^»— Z»— £»— ^f-^t— '7t-2>-^>—^»--'>—?l— z^-^l— ^»— 7 I- ^»— ^t— T»— -r

<• n m m -c m m ir IT ir ITo o <^> o o c c o c c O oo + + + + 4- * + + +o a i a a a at a a 9 T «en >< c o. c 'C o cv •— O o• rn m * NO rvi 3^ O N. iT- h. X,

o -n *) K- r in -^ <; tn o o^CsJ K- in o m c- cr rv r--. «r cOn ^r rn n rv rr rv« k. m ^7 c•- jt *n •y- -n * rvi » —

^NJ n rn1— <( (\j rn rv rv c -^ ^^ w« K. F-R

«X -^ m <v •- — < r^i in -- ^T f\

it < (Tir «* tf^sj'Ciriririr^iririr^irir »cOOOOOCOOCCOOCOCOOCOOO-#• + ++ + + •••- +a<iaao<ifrxaaaa9(va<pa'*. a& acrccf\-*'a:c?'^;e*-c\.'f^inac\in — <c<r<rc(C>t\irw»-(r^if\i^D*k- rvi*^=r o«-«r\iooor -nro^orn—*rvjoinrnoj-ox3> i9>^«nooi«< , a*«c^*wc<-o-'? vxxccir*n5T —

.

^cc* ^^j rvin ? n < ^ o c — m < c* ^t c — k>»-K.^^^n«v^in^'nin'nTr\j*\j(M o^n 1

^?^3*OK-*Cnorvl(n\l N(*, -*K.r'K. o

& i <* a a a am <v er

cr rvi »-w

^-. — oi cr rn ^>n -r k-ITU Kr> rv x

c* ir >rm a in— cr k.cowm — m-O -H t?-— •£> innc •

r

< inirc c c

•*- +& <\ am k co cr -co o -o

C X„ k.

.n rn r--^ o —cv in *

a a a 9 aC *** iT OC c?

tx> •— \T\ <c —*&(*•)}>—&o x m x n-o c rv x —— T3 cr *n rvk- ^ <r n. k-

4 I + I

n ii h n ii n ti m ii ii n m II II It u04-+II + I II II II +11 I *+l + + + + ! •* + ! I

j ii n ii ii h ii ii ii ii ii ii ii it ii ii n ii it ii it it it it ti it n it ti ii

u cr or a a- a: orfftrcrTaTa'aftQ'attia-a.rrriYO'nro'tTffrfTttcrT'rft rr rrrrrra-cra: a:rrcr;rcrU U L.I U' U W Li UJ UI U U. 1,1 U U Li I, u. Ii iJ u I,! IJ U' Lj aJ L U U- U U Ui U. k, L' U, U UJ Lu L. L, L. (J L UJU.UJU-UJr-7»-Zr-TI-7'-''l--ri-7, t-T»~.'l-7»-":HZ»-ZK7k-T»- ? »- *7 \- ? \- T »_ -y I— ^ *- 31—^1—7t^ i -z. ^i-p. — ^ t^t^'dt zrrr ^ z r:z rT ^ z ~ t* ~ zr o^r-^"^ r»z- 3 73-^ r^^trrzr:^

(^ 11

U' I*- 10

7 *:UlvO:>i/>

c» ir>ip if it ir ^ ir >c c***r ctir.ninirin>ninm ^ <^ m ir •fir-f'f'fif, '*?-C'C, if>cifiifvfifi'f'C'rLr<'pif:o oooc^ooooo^r-ooooorsoo^oo^ooo^o^ooo'C'Oooc'oooooooC'

++4.*4. + + + + *+*+* + + + 4 + + + + 4+ + ****** + + *-+**+-» + + 4. 4, + +9 9 ** 9 T r» 's* ™ 'f T t « "* i* » ."* 'v v a -e re f J .* >• ."9 f» ri •» » t t -? r« -r '«. 3 *w "fl a 'd r* ft X 3» ft

o cvn-k-'t n-N.-^)^ c =n "j^nv. r. ?t r; /» m ?* t ^ cr r:'r^r-.lnn'~'"5r, ',^ r-j^n — -r/jn—» c: -* n -r

o ncr *r. ir "i \ c »- vft>vf*om?r"i-,3rvifCfl"T'?' o *-t t ^ k. o o n — cf\i/i^(\)t>-JN.'*i-c ,r"> ^> rc^^v. r>v.N-;? n ,\ "3 « o '3' rr->v_-nxrnO'^n—•*n"\Jx;*,nnrv*T ~~>

~\i *n -n — v. « >v o t n^^T'.zc crdornrc^- cr cj> m- k c-cK-rc-rirrvN-iTN-x^ s- cr ^N-rvir — ^-rv — ? ir a 7 ^ - err rr cr — xCx Krrcc>conONfr'r'rrr\>rr^r^^j><K^c> if'c^c'srir.fK.'". Kcvc-iTT—-m^rxejocc--—in rnorv-— r»-^rvrr j-N-xrv^- C">*occ<V(\!*\3 7 o - t\i o — r^c?'Mir(\T-» *v. rv n x o cr 1

«ax ?kr3fof>(\|,».'- iC',r:-'' r^^-3l/c»^-'>(\(\Or-'-^-r---r^|^^7',*-t -^-o^•-'T,,

o»» ••.•••••.•••••••«••••>•••••>•• ••••••••••••••••C + O I I I 4-1411 I I + « 1 t I + I + + I III! »!+ + » I l*l I ( 1 + + t +11 I

_J It It II II tt tl II If tl II If II II ft It II II II tl II II It II M It II It It 'I tl II II It II It It tt It It II If II II II II If II

o^rtorn-O'criYCrctrrrrrrrrr-rrrrn/rrnrarrrn'Ul I,' LjL U 1 I. Liu U' U' Ul U. Ui U UJ U U- U ii- U LjJ U 1 UJ U lu U I4J » U U. U.' U lil U Ui U' UJ U. U UJ UJ U U. UJ UJ UJ UJ !

x r i' - p- — - t 2- -r-Tzri--^' -tt,z-ift:7 — z~--'~-4T. ~7~z-ir-r7~7 ~ r* r z- r z1 z*— •3»-< O •-< O •-• T3 •— "2 •- O •-« O «-• T' —« 3t^O»-^0»-*0»-*0»-«0»-<'D»-«0»-iO»--«a«-»O l-«0»^ rnC? hOm 1; 1

tDOcTT* * ^cfOcT ^-TO^OCTO 1* OT r> t 1> -3 Orj•—

o

o»— -< (V (\j <»i n cr cr inino*o»»^ k O o —••— rvrv rn rn

*x-4 ,-^_, — ..*^-, M —.w — ^ — « — — — rvirvirvrvirvrvi cvicvi00 00 OOOOOOOOOOOOOOOOOOOOOorvj cmcvi r\jr\icvjr\ii>jruCvrsjr\i<\jrvi(Njcvj rvrvrvrvicvrvicvcvj—JO OOOOOOOOOOOOOOOOOOOOOOO

25-

Page 40: A fast fourier transform subroutine for ILLIAC IV

OOOOO oooo O O O OOOO OOOOOOOOOOOO OOOOOOO O O o o o oo oo ooo oo o o • • o ooooo o O

o m in »«? «* k. oj f"» «*•*•» k. c <© o « io « *voo« o «* « <n »n *. • m *c f\- *c *. >*w •© <^k * oip o> n o » —•—•o»'^> — ir»^ioooc; * «-• o <i(\j»v- c * ^ o «- «c « — ir tfiroi c*. -*<?•*.•> o c «•"» c *c tv r»i c ~ r*t cv « ~ c a k t c e —*/-**-**»—•«;—*. o c <* * *n < c — *c o> #">

A^rtO^S^X)> —• « O » > *** *»- Olt>-^» © — © .A O M O I •! > X *» "V t JP-n"i-n^#/\»v^#/>-g-y#\^^-n-n» n »v< 9 kAN if ,** m 9 *- « (> "> (\; O (V (M 'f. C> IT "Nl C 3 «-• 9 OO—< ?W C -« O *»». N. (> ^ -* *v •— O * lT V •« |A T » OKiOk'r ^-'W N^W ft* •*•

»«k r ^ n *- * ir < *»- m — <r ^m — r-. <\j ~* *w r\j ^.,-.^-<\j a tv — — — <~t>«« — «o>c\j4r«~-«;r^e>t\,tf* — * — -* » cm »»* — k -c a* cm crI I » 4-411*411 14*44 4 11 4 4 4 4 4 f 4 1*414 I

a itriti (T« iff or t c- t or ir " t caraocotr'srTroaroraraa^O'xir iitp itr » ff j j or a orn;t nr-rfa a* t .1 (rU U U) U U U Ui J ^-' U' 'i.J a.' U jj Ul U J U.' U U J '^J U1 U UJ U.' U Ui UJ U Ui U) UJ U U UJ '.iJ UJ UJ UJ UJU'UIJUJUiJUuJUJ UJ W UJ UJ UJ'aJU'i*--2*-y*- ?•—?*- ;*»-?»— ^»- 2 *-?»— Z»— 7>- 7H7). ^t- 3K ?_-?»_ Z »- 7 *- Z •- 7 t- 7 K 7 h- Z *- f W ? *• Z W Z -D ZD7 r T 7J 7T 7 77 —TT r^ TT-^ZOZ— ^^Zr-?" 27?7?Z?2r7D2 S^^^SX^Ty^SX^XSyD

i^in»n^«ininiPu^«**i/^»rirttninu^iAu^^^ir.^in©ooooooooooooooocooooocooooooooooooooooooeooooooooooooooooo o o4> 4 + 4444*** 4 + ++ + + 44444*t444444444444*44444*444444444444 4-

•* o <m us m O" » IT "C IT c >c •c «• «D IM

* o © r»* |H n > rs) m n •*> ei > r-> >•O "V -o — o K. k- *c -O n m >o m * M >—• o «c o c x ^ — e < (« <s •c » *^ »© o (si f < tr « » X « «v c C <») O Xifi«»«n o *~ o in -D •— K- ro » P*~ »«Mn<i ^ -o >r> « m ro rsi (v. 0> (Si » T* m r> *n ~* — <o in (Si — —

• ~* in o» n

—>c>f*>o'*»'orNj'*>'*»>fnirt o^»W»i/>*<Oi/\K O O K. s©f^ # >c o-m fvc <•**- — c. a «cocc^**><\io«r«4C»<cc ex.

K. »tOO— *wir.X>**-t>c»*»00««C*tMCMCMir.*M-©^—t*>»,n

in — c cv « — «\J *^ —• o in i> « e <»i <-• • r^ c o ^- ft- «* « 'n u^ r« « n >v » « in • -o cs o • • rn fn « y^ -h e-~- -o » V4 m o •e > * -i » ^ f\J m •» • -» — K. M » ^ oc — c c p" ir • < c -c — K~ c — c «^ «\ c r^- k. f »v e" « ^r -C c ^ in t IT » » O |T| « » « <s * « « r* fl M» m 41 K- " -t> » in * rj 9- —

»-- x» o * • -*1 » k- m jy *<6 «c ro * «c c >o » m m *«n m CV in »^ fsi (^ c m >. r^ <» *m « 'n IT • -* fn r* — -« OJ -c (\J m — - m rv I»l w4 ru rv •*

e •- <r « • «a- «•• » • -<5 » 0««K « -oo *ys< C IT* <lf »-^ » K *^ f^ « w»« k. in <m « » o— * if — rv «vim-« • ». (V — fc. -•

till I * • I « I I I I »!• • I • I • I 4 »

or»a:«att»rtnrrrii'»iriff»rririt'£ra:iririira:i»nrri(rirtta:TTitiTt'j:rii[0[»ir»5r'iii»««iiTit«r«r»rUJ UJ UJ l*. U' I*-' l^J L*-' l*J UJ U- LJ UJ UJ UJ UJ U U Ui UJ UJ UJ UJ UJ UJ UJ UJ U.' U.) Lt. UJ '*J UJ U.' LJ ' iJ 'i

1

l^j UJ :*J l^J l». L»J UJ UUJU.^uJUU^UU.li.U.^Uli 1-tUJ-^4-TH- ]!»-7>-r'-7>-TK3l-7K?r- ^t- Zl- Z t- Zt-Z>-T»-?»--Tl-y>--»f-Z>-^l-^>-^t-^>-?t-Zt-"»»-I»-"?»-r>y"rar=>i a t t- i ^^ — t r -* ~ ? ~ -z — » — ~z =!*=> ? 27, 3Tr~z3 7 r ? 37 — 3ry — z — irsy 3ZS2 :"» r 7 r t-^

m <e <. <c mc o o o o«. a a j <»

lu «-r cc*« -ok it. Mmi/i w1*1 <Vi o — r^f> (M m m r\i

'h * N C D

occccococ OOCCOCCCOOOOCOOOCOOOOCOOOCCO'•• + 4-*****-4--* 4 *a. ao rr <c ino « o eg-n —• ^y o

r* c t^ Co in -o -4— <»<»«

«<i<iaa<«.ii-(i>riii<iak 1 ff w c aX X 3 —

in c- -^ r>

fl IMS. "1IMO Of

X> & « "O — O "Oc x o x x m

of, «n.» — (vc^x— f\.xx*«»-«r.-0'0«rr><v»m«:P— <.ffffco — -4i/^^ i>x^*«f>(7*j^ o-o ^:>f> 9 *n o •- ooin» o^sk-co^rmcKr"^rp^m>C'Cir. ^inm*^ — «j>-ciTin— K.<c*cxc4j«^cx-4in>c<r^X)«f>f^Cf\Pwf>.— »-cs.-«K.fv cmxjf\^CiTf>— cr»io»a* —» « -c ^- -n /> Oi/i -4 -o o ry Oi/i ^-c o -4^ ~4<o o»n > * ^ ry n ^k. op^r^m^cc^inrx' —•«ro«f>oinf>x)'r>inr^^(t>#n»xm'*>csjfco.cx)

C- C O IT IT IT (T

F^ O — fV » Ti fVm Ln (v *4 *n o m*C *V & (V' « o ^«^ r> «s >* » f»* —s\ 9 » O X) 'v oo f* in m — *^

1 4 4 4 11« II II W It M II W II II H U

4I4I4II4III4niiiiiiiaiiiiii 11

I III 4 4 4 1 1 1 *

ilHnwnHiipiilinffttfff/tttto'nrtiffrriTttttafcr/crB'TQraQrar/arattriiiirDrarriQraririrQra'aiaaaoraicrirffia-ir/iita nrerUUULJUJUJl^'UJlL'UUjU.UJUJU:L.UU.UUyL]UUU>UlL,'lJL.UiUJUJUUUJU.> li:Ll L.tiJU.'UyUlU:L'4lUIU'LJLJUJUjyUUJUUlUJUJU>-3>-Z*-^»— ^fc- ?l-r h?K ^4-^-4-^1— ^4-^4- e»-ZK-*7;4~"7;»— ^»- T*-7P-7*-7l-7l-4>_z t_7 t_z (_^4.?K44. -T»_z>zo^^e^)70^-'r? — ? r? ~>:r~z~ — ~zr?^3 ^2rzrzr>zz>zrz Ti^r'zozozr^z ^z — z~z~zr>z~

l/> ^* itn tr-

ir \r m r' .r- ir lp ir c < -r lT < -T ir- -C sT U^ ir IT m u"* IT lT LT m r IT sT000 r- c~ *3 O O n c O O O e O O O O c O O O c O4- 4- 4- 4- 4- 4 4 4- 4 * 4 4- * 4 4 f •«• 4 4 + 4 4 * 4- 4 4 4 4 * 4<% <« ^ (*> C? t • T ^ -* i 1 f 11 f n ^ 1 X i V a t# * ft « t 1 * 4 <* r* a *?

O rv — r> -^ > n »<_ -r » -^ "M f^l r\i c "5 'W c r\i r»- * -TV f. r> r>- J". O *w ^1 T fV1 O fNJ*^ *N 9 » «^ 5 P —• TT ^ •^ r\. -* O rvi — r K. — C r» .n T X' t> r\j •^ -T

r ^ « rg n •^ 4~. ^ -0 > m n T n n -o r\ r. *> > > *n O ~« n r> ^w O -M T ^(T — IT — m «- ir r^ IJ rv ^ ^ r *w f^ =j << fw Sf re K. f»" t ^ rv in k r" 4— tr w T~ —IT tt —

K

— (* < T a u- rv 0- C*1 c c f c c 4: c- ^ r\ © ^T tr st X ^T (> •- *^ ir aCC t> *^ -* m ir |W iT -r .r O- ZX ,r% ,— P rr rw t> r— J- — rr ^ in 4T «^~ j" r^ in sr< & (T Of^ <X i/N O O ^ -> c -j ^ <*\J I*' T ^ *> •^ -> m T « Csj pn •^ u c u-. ^ Ifl "Z K. tx

^ (V. (M f^ »*- IT ^. -r a ^ *C K. — — — -i --» — r^ — ** < K. cr ** C\' ^T K. ir fM rr-, — <v

+ 4>4*4>4-4>4-4>++4>4>4>? 1 <fl 1 'J » *» * .t *» » tt ^wro^o-cnn«-»^n»crr c»*t^.\">ir>s»DN^>/i"**^>n«^ "V4 h« hmX <"r-—loci^.-tssirfv^*-<\C<r«C--»a •- |T IT C (V

c -f sf \r r r •t LT -r n nC ^ m lT

O O C e cr O4 + 4 4. 4 * 4 4 4 4- 4 +T » x # <t 1 -4 t9 q t » >» 1r^ O -3 r n t*> — C « -r >o ^ X n— O O ir> r^ s» ^> ^ f> O a> *r --T v.

-n ^ O n XJ •O -n n •NJ n -• —

Ac 4— f\ m 9 K- r\ 3 ~C c IW r^ T f^

<rr c *v < K * u- « V r \T *w < *w

T T 9 n- ^ e\. m « a m i» *- •—

O c r^ vm wm f\) 7 O Ov » r\j 9CN. — (X n •- — ^« t> — r\j (V — O in

I • f I 4(41I ! I II «-4-4*04-l4l*l II I -II •• !11 <i it « m n m n n 11 n m 11 11 11 n 11 11 11 11 11 11 11 11 11 11 11 11 11 11 h 11 11 11 11 n 11 n 11 11 b n ri pi « 11 n 11 11 h n • 11 11 n n » « 11 11

or r/ t rr « rra TO" rr a: rr Trcrorfr'r Taorcr 'r-x era 'x or or or a t t t rr rr t rr or rr rr rr rr t ft rr a rr apr orrr o: rr 1 rr rr » Tar r>arUJU.UJU.UJU UU.UUJU.1 UJ'^U'UJUJU' UIUJUJUJUIUJUJUJU.UIU.UJU r U. UU'UUUJUJU.l*JUiUJU;UJUUjUJUiU.UJU*UIUJUJU.UJU.UJU'U.' u. u.p-t«-z»-z4-t4-.?>-t>- zi-zi- ?i-z>-7i>zp-7i-:i-Z4.z>-zi>:i-zi-:i-':).zi-zi-z4,7k7i-7ht>-7p-;i-^zr'zozz? ~;» rz tz rr» rz^zTTzr-ZTzr? — zrrzr'zr?z~zrz — t-rz r;zrz~zrzrzTzrrT — z —o-p-?—10—• c-«r=-40->-r-<o— ^«34-Cfc-.--rj—o-.o— c— o— 3-4 3fc_o«o«-^-.o—• 3-c5~2~>-;«c-iO-"'3-<rr ^o

«9 >4. >V. — — — — (SI

-26-

Page 41: A fast fourier transform subroutine for ILLIAC IV

OO OOO OO OO O O O O O ~4

• 9»t9»9«9»— *» nfCctjccevc-^ — «r — ci o <•O CO •-• O i"n f\J in £*> O ON- O O N «(NJO ^ — O eomoOoOO^N-cOino — tj ^ sc o o c < k. « ff wm n<«? in « <r 0. o o c*Cin«<VN-fVicr*~ o *o :» -o -* v. -<n > m n •» —• ;r rvoo«»». rr © o •/%•-* «* *-»k» -- —• ru o~- .-• ^-^-m ~- ni oj cm — 3 c*> if «-• 'f

c <v

lT O

ll n II II H M H II H II H n n N H H H II n

itriiiiTfYta rr c* a. 'r a- :r a n rr cruj '_j ujuiuj lu j j u. j y >•) u ii) ui uj uj ij ur- r* t r* z r^rr^zorrz-zrz•- C ^- C ~ C •- C »- tT •- C •- C ^-C^-C»-

^c in m ir ir> in tr m •<> in in «» in »© in in iri in *»oo ooo oooooocooooooo+++ +

<* 1 1 1 t 1 1 (1 <* l f¥ 9. 9 9, 9 9 1 1 1OCT O <*> — — C iJOO^*-i KN-^-<\.'*-'**

w —« k> k. c\> -o^<Hf\jin-*tk'*^(Mir»k —< *: «j—»ccvircr c o> Miinkckw\K IT' f\ r- k «~«-*{vK-—<'£»v«-K. O0« *^<0OX m ^ o «^kio>oC'Oin^ n •» cm ^) n—• >c cv x -£ m-^^^^^-^-^fu--N.toom^

It • I 4 1 I 4h m ii n n n n n u » h n n

I * t» ll i I

<r <r a- or T rro-rrrttrtrtxcrararcrcrora.UJUUUU UJUJL;L.L!LJUJUJU)L.,

L.' U U UT t— "? I- :? I— Z" I- "T >— Z »— Z I— 31— Z f- Zzd7^2 r;^, rz' — z T>^oz"r;7 r z~o»-c:»-:=, »-c~c •-* c •- c: •- c *- o •-

• < *; in *r ir -c in tn < >£ >c it it -omc coccooooc cccco

+ 4*4-4*(19 9 CE 3 T X <X >< .T T « CO 1 T 9 9 *

c r, 9 < < <iftirrir—rir-KKC3n- «— in x, f**1 -3- »*. oo~-ooxo>o — -* o **i

N-23 O rf^ N- f,^r^ i/-*'*l^m-oo^T O — -O in k.*c n. ol"C — ;y ir — c\ o c\j tr tr in x ^j cm=j >c fv in =r in —• ^ o i/*rr a" in — •-« o >c n- x— in r\j — d 0M*y>?f\iTa30N.« ? -o **»

Ift5 — O^T C\J X — — fM <> O <C CM /l (> ^5 (V K.*? IT — -O — •- O .- ^- _ *. — , - ^- _~ r^ f-. — CV

4 I + I I + I t + + + | | 4 4 1n ii ii ii ii u n n ii ii ii h it n it n h n n

or » a tr ? o Tiir'ryaQ'T^ttTria:UU.li.UU. U. UJ L UJ Ul UJ Li. U U U y U.' UJUJ2-1— Z »— Z »- IT I- Z »— Z - Z I— Z I— 21— Z3- — z r? z ^e r- -^ r z :r z ;d z o z r-z~ ;= .- c ~ c — r: — :r-»e~cr-.c — c: *-

\ in in 'S\ & '*f> *3 -c ir «o IT if. IT ifDOOOOOOOOO

* + + +9 :« & T ,* T f¥ i* *? -r c ,f 3 3 a t 9 <5

*M ^ 3 1 ^ r> N« ~ m 7; n •^ c ^ N. K. > OO S-m —> <T T Y" c r K r> K O •; H r^- tv n X in =»^ v. "n x- > c o c f. n ~v V* T o v. n s. © oir r f\ <r C %C K- K. <r c- J- O X X •r cr rr o -r

<. n •- c *r r\ Nf »*• •i vf c f\ t> c t\ c a k fc »- T" IT o K. ^ <• > o o fT O f- ^r <\ T CV (VCM C -T r> o 4> <: fT CN. o K. (V r> t> C C\» •>•« n^ oC^ —

.

O ev ^r 3 ^ *f n- K — r* cv cr O m O O K.

1 4 i * 1 • + I + l I t 1 1

II II II H n ir it II ll M II ii n II II it M h n

trrra-arT'x'rtoarn'xarr'xaraecaU.L'U LL. UiL LLU)l*'JUIUJLUL.UJU— — .t r r- r>" rr - z-

_ ? r i =» ? r?

-27-

Page 42: A fast fourier transform subroutine for ILLIAC IV

APPENDIX C

Timing Sunmary t

SIZE OFDATA SET

1+096

201+8

102*+

512

256

128

6k

2 x 32

1+ x 16

8x8

Overhead

TIME FORSCRAMBLING

75«0 ju sec

kS.h u sec

53*1 u sec

23.2 \i sec

17.^ /u sec

10.5 u sec

I+.65 ju sec

2.80 in sec

2.1+0 u sec

1.75 jLi sec

TIME FOR'FFT

2233.6 (U sec

IO38. k u sec

1+80.0 ju sec

220.1+ ju sec

100.1+ u Sec

1+5-35 u sec

20.6 ju sec

15.65 ju sec

11.10 in sec

6.75 U- sec

TOTAL

2308.6 n sec

IO96.8 ju sec

533»1 u sec

2I+3.I+ ju sec

II7.8 ju sec

55.85 u sec

25.25 /i sec

18.1+5 u sec

13.50 ju sec

8.50 ju sec|i

13 i± sec

3+x ^

2301+ ju sec

1056 ju sec

1+80 a sec

216 ju sec

96 u sec

1+2 ^ sec

18 ju sec

15 ju sec

12 ju sec

9 u sec

This formula gives a rough estimate of the time required to do the FFTportion where each complex multiply operation takes 3 U sec.

t All times base on 50 n sec clock.

-28-

Page 43: A fast fourier transform subroutine for ILLIAC IV

APPENDIX D

SUBROUTINE LISTINGLISTED nM 0H/1J/71 AM OV » 14

<E'-IN CljMMtNT

THE FAST rnijHIFW Ihansfdhm SUBROUTINE IS COMPOSED OF FOURSL ARATE LUAD MiiOULtS. THE FIRST IS THE MAIM PROGRAM HlCH HANDLESTMr SUBROUTINE |

IN ' h f i F AN|l SFIS UP ThE C'l REGISTERS. ^F -T COMESTMt SCRAMBLING ROUTINE HlCH REORDERS THF lM»Uf nATrt SO TmAT ITrAm .;E TMANSFH 1T|). THEN CUflES THE TmANSfJRM routine whichCU- PLETLS THF TRANSFORM, PERFORMS AM IN'FRSF IF DESEED, ANDrEtURNS rUNTROL TU T HE CALLING UROGRAM. FINALLY ALL UF ThEC,U STANTS USED ri|K ThE TRANrflHM ARE COMPILED IN A SE»ARATF HATAEll E.

THREE HARA»«FIEkS AHE RF-'UIPEO HY THIS PRUliRAM, THEY ARELi?TFU HELO* IN THE riRUF'R Im ''HTCH THEY MUST HE SUPPLIED.

1) ST^F - THF HiimHEH UF HA I A POINTS PER DATA SET.?) NUMUFR " THF NUM-.F.H OF DATA SETS T<J HF TRANSFORMF D .

3) POINTER - ThF CU(? a hTT) AoorFSS OF TmE FIRST LOrATTnN Or DATA,

A USERS MAMijAL rUR THlS ill ROUTINE HAS »EtN PUtL.I$HEO AMI) ISTItLFU ?THE ILLTAC IV FAST FOURJFH TRhNSFURM SU«HUUT I NE USEPSMA- UAL" HY JAMF*; E STEVENS It.

ThF main pur 1 1 on jy ThE pwoc.ram FOLLOWS ANn SETS Up ^uRt^i.sTERS VITH CONIRIIL INFORMATION As SHO*N HE LH j •

LUrAL DATA riUEFrR CL'>M OR AO )

DUf PATTERN)In the scramble sErrhH or Tmf p^nr.RA 1 This REgIstEr ts

UbrU F'lR SAy/ING MODE PATTERNS

1 r F L A G

1

this register is dwioe.j into three i-ifl'>s. tme ftpst. hitnu >er is. is used ro indicate -hETher an inverse transform hasFJtFN RE'JUESTFi), IF -'IT 15 IS SET TU ONE AN INVERSE TRANSFORM wTl.LmE PFKFORMEO, THE SFCOMM FTELO OSES THF NEXT in HITS A m i> Is SIMPL*A rUPY UF THF FjwST PARAMETER Sl'E, WHTCH GIVES THF NUMHFR OF OAT«PllTNTS IN EACH TNHiJI DATA SET. ThE VARIABLE. SI/E, MUST «E AN EVE'PU Ep f)F T«U, TF THE PARAMETER, SI/E. PASSED TCI THF SUBROUTINE ISNUt A PH.iER HE T"iU IT ^ I L L h' ASSUMED THAI TmE NFXT LARgEsT PUwEPOK JO IS UESIRFD A-i) THE PROHf;n VALllE IS THEN GFNEpATEd. ThEFI'AL 2H *ll FKLL) UF THE r'L'A" REGISTER TS LOADED <"JTH THF PFAU'XFSS OF THE rlRSF LJCATiUn IK T AV DATA SET Tl) HE TRANSFORMED.THfS AnnRESS IS E^OAL M THE THTRI) paRAMFIEw. PniNTFR. OlVlDEO BY

b* SO IT IS A PF ADDRESS.LATER* IN THE TRANSFORM SECTION U^ THIS PROGRAM, ThE.

INrllRMATIUN In REGISTER DlULATo IS LOAOFU INTU ACAwO AkjD RFfEREDTU ny THF NAME <U/F.

D*(KFT(IRN)THIS KE^ISTFH IS USED T ' SA>'E ThE RETURN ADDRESS EniiND TN

AC-R1 ^HFN THE SIMRuUTIvE iS ENTERED, THE ACTUAL RFTU»M ALsn USFSAC/>Hl, AN ERROQ KETiIKN 15 FLAG^FU '^Y FILLING ACAR? WITH ALL UNES.

DJ AND D4SAVE AREA niH ACARD AND AC.ARl.

AC f RO( ST 71 . INDFV )

IN THE MAIN SECTION UE THE SOmRdUTInE THIS REGISTER IS L"ADEOWItH ThE VALUE ST^E «. THF FIpSI PARAMFTER). AFTER T hF ST/F TS USED

-29-

Page 44: A fast fourier transform subroutine for ILLIAC IV

TU 1AKE a CH If'! t in Jul .-UA-JCh I -ITS HtfilSTTN IS USED Tfl ^HLD TNOExIN'.I»Nt UHMATIDN i)URT''<i Ink. 5 C rt A -i i- L I •', RPilCESS* AS NOTEn A*n»/F» FOPTur TRANSFORM St C I I N ' Till', pP.MiRAM TuTS RFGlsTtR TS |I)AUF'> FROMRt'.l5TF.R i)1(FLAi;) Aid Pt MIKF.i ! i AmATN PY TMF NAME SI*F,

AC « P1 ( Mi).it )

ThTS Hrr,ISTn< I S NIT MlLFn vITh AMY INITIAL »/ALUF AnU TS USE'THnOljdHflilT TmP ^iiHridijT I-iF f W S'WlNfi MOI)F PATTERNS FHP FNAU|.IN(, p E 5

ac » w?( l hop J

TMTS KF'ilSTf.'K IS '" IT MLLFn /'I T H AMY I N T T I A |_ VALUF Am() TS USETH'j JOl>Hni|I THE S'l^.lijTI ^ Mi'< U riP CONTROL iNriiUMATTliN.

A C ' k i ( c n 1 1 n T )

TMTS PF .TSTf^ CiNTaTNb 4 PufNTFp M THE RU* OF fl A T 4 ML I mG

CU. M Ut'RFH* AS FLL AS i\ PUHIEP Ti) THE LAST PU* C j f- OATa (A L I ^ I T ) ."

IT Is IJSFD TO I'ii)t< p L " 1UPV A'.» M OF. Trp M T NE riHEN THE ToAnjsFuPMTS COMPLFTt. TmTS RFi, IsU'P. ]5 sf T up py THE m ATn SFCTlnN Or ThF

SU 'NlTUTT'lE AS FniLH.SS (1) Tut T'CmFmENT FTFlO IS SFT T n nNF .

(2 Tnf L 1 " 11 r' r L'i TS s 1" T Tn TJ AonWEsS Of T HF FlwSl ph.. nr -iATA

PL S ThE TUfAL l'10-H-.H t'F P' 1 <S S'IPPLTFO (sTpF Sl^F fir T^f nATA SETS1 I ,ts THF NLT1 •*• w UF 1)6 t

(LAST 2 " HITS) t <; s L I T

.SET-. :iT./IOE|) MY 64). ID Tpr AnOoESS FJFL'>Trif i'F APDPFSS Of TMF FTPST HOW 0? nATA:

t X T F R N A

1

-EPt :

fill. 1 '1

.

FFT r FN K Yi » SLT T ( n 1 1)

:

SKIP . 1 s

FFTINV/UNTKYI : Sl.TT(nj l ;

STL(O) h"i;

STL( 1 ) •i;'J;

STL( n '•-) ?. 1

LUAOC2) h C J

:

LOAif * ) *C 1

:

Ai.iT(.n -1 ;

CSHI. ( i ) 1'

LFA.XK J) •

CTSMF I 3 j'> !"> t F m P

c p p r n S 4

! J

SLITC1 ) * H 5

C$IIH( 1 ) %C ^ :

SL.IT(J) = 1 ;

CSHI_(-<) ( l >;

CSHL(O) py

:

CA')O(U) «, c « ••

ALTT(^) 1 ;

LUAi)( <> ) s c .*

;

LOAU J ) sC iJ

L E P < T ( 3 ) » t W P !

CSml( i ) -<5( 1 )

;

A 1 I T ( I ) 1

;

LGAn(? I * C 2

:

C S H R ( 2 1 * »

CSHI. (<>> ^^;CAOO(O) ^C2:S T L f ) ,1)1 s

CSHP( U )? a ;

CAOO( j) sCd:

A(_TT( J) «-l ;

C M H T P ( n ?n ',

SLIT( n = 1 :

I , .i.KNI FUtsE*SK*SEi'SA

'SAASA<FEZFi.

*rl*r,H:

* 4 H

i!F

tFP

«FLMil«pE*h Y

*SH<AU<TN<FL? F- EMF<

•' ! I

MN*FE.1,1

ASH«. a n

*SA'LEASEA rji»

*pil

*SE

P M E X

T FLA1^ til

T FLAvE Ar

VF ACV F k E

tt.m f

TCH F

no ThEATEPAT Pfl

ZFPOASF L

SE. S

V T Nil

C'JNSTSHlF

IFT F

I) si/C^fmETCP S

TTH S

/FPULT iMIl

CPF..ETfH T

V MYIFT F

I) PL) I

V F F L

avf sT f;U|l

E LISSI Till

T TMC

T Thr, FuXT S

d F1

J

A PO,A»l .

T ' 1 P N

iwsrTPST

F SHTHA

WFR. PL

EAOIHTRTMFRlirT

TIN«j

LAG.

E TUNT A

F C ONFCllNPET«Y

MT A

HTRU6 '4 •

I. AT,

HTEKAii P

T^FNT L

S FUN I

N

prMt

iv F L sTATTmFNTs.P Nl) INwFRsE.T ATE^FNT .

R INWEKSF.

ADDMFSS.A P d 11 M E n T A D D P E S S .

A«G"M£NT *ST'/F-*.

ALLEST Pp.;FH OF TWON UP FQilAL TO SIZF.TS IT.T11HN ANl) P L A F, EpRflP.

HnE FLAG .

ACT PIT nr From 63PRUPFP Pn.-R.Sl/F

FLAm HFC, ISTFR.Pr, pnlNTFP.i) APr,i!MF H T AnnRESS.

APr,i|HFMT * N 11 M h E R * .

URN AND FLAG FHPUR.SIZE AN, i fiTV PY 64.P li P n I N T E P .

ARGUMENT *PTTNTEP*.CMau'E PF AOORES?).

RFGlSTfcP.TU rLAli PFGISTER.

FuISTFR.IM AnOK FLO HF kCO.1 M I T .

P LOOP CONTROL.c.pEmfmT rjrLn.i»T T n U n f .

-30-

Page 45: A fast fourier transform subroutine for ILLIAC IV

CROTRC 3) i<>;

SLIT CO »o;

CADDO) SC25SETE F.Un.-t,SETFl E • R • • k- i

C H W S 64?Jump HEHR J

CLCC2)••

compc(? i•

Lntr O) %03;

Lt)L( i ) %\j*\

LOL( 3) *02:EXCHLC 3) * I C -?

'

End FFT.

*PUSIT1HN AODRESS EIFLH.*ZERH OUT ADDRESS F"!£Ln.*set a dress FiELn to pointer.*TIJRN UN

* ALL Pt-S.

*WlJHr> SIZF TO 64,*<iO TO SCRAMHLING RiliiTlNF

*frrhr (no si?E r,TVEi.*SET AGAR ? TO A| L OnES*^RESTORE APARO,RESTORE AcARltSFETCH RFTDRN ADORES*,* wE T

'

ipix To CALLING ^Por,R&H.

-31-

Page 46: A fast fourier transform subroutine for ILLIAC IV

LISTED nNI 08/ 1 J/ / 1 ul * 09 »H

* it

v x

h f:r,

i n

X

<;THA ImL 1 • i SECTION4 ****** X X * X

X X

X *

X X

SIZE

INOE

^ODE

lohp

COUN

*

%

*

%

%

t

%

%

I

Xl

I

I

T:

EXTERNAL

Eqi.

Edll

HFf'CEqii

kEi,c

ECUHEf,C

EOUHEGC

M'TI .PElfvUF.Xl

K S

1

1 1 4 C ') l

n

;

M ,4 1 1 F x s % (1 |

o [ l•» e * C 1

:

i ;

* L i ) ! ) f* s * r 5

irlJU jT »>r a

«

J i

THE PE MF.MnpY L'lCATllHM PH^nlX CONTAINS A SET <1F STX ImoECESFUh FACH PL PACKED MTU flfit «MR<i(SI X BITS PER INOE*. 3A TOTAL).Tnr nEF^t NA M Fp pETr.HlNuE,, „HI*H FOLLOWS mASkS OFF qTTS f«UmpEtnhLx ANU STORES ThE uFSULl I >i REGISTER X AND REGISTER fit ThEPARAMETER TO THf DEFINE UFTERMIUFS "HlCH HITS UF PElNOE* ARF TOHE KTCHEU.

OEFINi FETCHlNOE X

LOASHAHRCLPAShAhLLDSLOX

' STARTSahOwvIANYJPEI ii)FX:

A 4 - n S 1 A K r

'

ff

s a ;

*FETCH PACKED iNnFCEs.*ALIGN TO STARTING MJT POSlTTDN.*7ERii REGISTER A.

JrEcovEr rt T TS OF INTEREST.«]NnFX Til REG S ANU DFr, x.

FKnMANr

STaKIN A

TlnNj [n, H

A A

THrTHr

CU P

I N.-

St q A

OUrU

DEFINc

LACMft ST

hETORTlN(,

LL PF

. RE

LUCAY THAC,U MHONE I

usingOATAMHLIMmLNT

dpEkatAKTlNf,N 1 N G T m

LUC ATT n

S S T "11

1

1

G I S T E R s

T 1 (1 N S R

T THFYL>E Pf G

NPUT Pa

THF nASETS LAG DFAI.T

UF SEPT

I UN i)F ThF ,rKAM,>Ll Nf,

L DC A T 1 Uii IN '" F >E Tfi

r PhF VI IUIS C INTF NTS ilF

M. I N irfHA .j ,L IS AL) E

TAJfcJJUSLY JHfH <1iIPPLTE

X ANU S C tl g T A T t INDFCFbPLf. 1 1 'Fly. i. if thanr«M it T rEHATLn hy sinlb ASbtJ iF Til C. inTaTnRAHE.TEK RE njIWE f

l I S THTA St- T . THIS DFFlNE *

Ri'iErf THA -i 1;'- » A NO IT

Nli .% II H S JUArtt ^ARTTTlFM-FP 1^0. uLL ''FS AH

H'lilTlNE

A ')LSTITMF_ l)F

FTmE fMI) "JlTH

ES KIJH

SFFHS A

PLY PHI)

THF PPMF NUMHFILL DNLCriMPLE

ONS ASE ASSU*

INvOLVNATIONSTINA1 J

ICH ACCTHE FOLS T A R T I m

RL PATTTING ThPER ENAH DF HOY HE USTES THF»ESCRI~EU FNA

Es pnii

IN AMDiin jnomplisluringd AM)ER' J FnF TnDF•<LlNG•tS OFFi) INPtlRTI

EU TN

LEn.

T T n G DATsTuFR pE.TufHFS THTSTNFORMA-

DTSTINA-IN SUCHCFS.PATTERN.STDRAGFScpAh^l-(JM OFTHF FFT

OLOOPi

I N T F R C H A m < , r

BFGTN r^LUC^STL(MUDE)LI Tf LOOP)LIT( INUFX 1

RTLLOSHTLLOX

PATTERN

:

1 »KNiU1/2»l . 1 ;

' 31

t~ s . 1 :

• w;

sx»-l ;

THE SYmmdL DLOOP MUST Rr LOCAL.*SA\/F H(JDF PATTERN.XLUUP COUNTER,XPOUTTNQ TNUEXCLOUP COUNT).<iiESTTNATinN INDFX.tCOMPLETE S TO S TRANSFER.iSlAWTlNG INDEX.^COMPLETE X TD X TRAigSFEP.

-32-

Page 47: A fast fourier transform subroutine for ILLIAC IV

LOR

ldaHTLLnEElLljA

SETESETE1LORSTAHTLLOAKTLCROTR(mOdE)LOEE1LOASETESETFlSTAALITC INDEX)CROTLC MODE)COR(MUnE)TXLTM(LOUP)RTLLOSLnRHTLLOAHTLLoEElLnASETESETFlSTA

ENO

*0(COUNT) \

-4NOH1KiOoEi,:<RI

E.UR.-UE.Oa.-fci«0( C Onwt)i*0(cOUUT) t

0(lMOE*>*SRIrNIMJ*NIJ i( lNnEA) I

«mooe»>bH*

E.UP.-LlE.Or.-Ej*O(0DU U ) I

-1I*NUM( IN0£X)|SPATTERS j

.ULOOPJ* S » 1

1

«0((-nijNT >;

&nu ••/?;

*RJ-&NUMJsmUoE i

- R;

E.O-'.-tiF.n-.-t:»0 ( ("JOINT ) S

> t* :

*FETCH STAJR'JljTE.

XSAVE STAR*FAK£ ENDJENO AROUN

IFILL IN S

HNAHLt AL

*FET CH nES*STORE STAx R0UTF OES*SAVF OEST*FAKE END*FNn AROUN%

*FILL IN*F.NABLE AL

*STQRF OEsKINCRFHFNT^RESTORE M

kmOoIfy MO•RETURN TOXoESTINATI'COMPLETE<FETCH STAXF*CHAN(iF*SAVE.tFAKF LNO*ENn AHOMN<FILL In n

«ENARLE AL

iSTORE E*XC

RTING DATA,

TING DATA,AROUND ROUTE (RIGHT).

BY IROM pES.TARTING DATA.L.

TINATION DATA.RTING DATA in OFST»TINATION DATA rack,INATIUN DATA.AROUND ROUTE (LEFT).

BY UNijM pEs»

ESTINATION - )A TA.L.

T. OATA IN (;TART LO'".

index (- L uop count),ooe pattern (almost).Dt PATTERN,LOCAL DLOnPflNC LOOP>

ON INDFX.S TO S TRANSFER.RT AND OEST. DATA.START AND DEST. DATA.

AROUND ROUTF Or 4NUM/?D BY 4NUM PES.ESTINATION DATA.L.

hAnrEo start And dEsT.

FOR THF SMALLER DAT/. 6FTS (*>'* Akd) S-iALLFR) 'SCRAMBLING CAN HEACtUmRLT ShE{) v ITm UNly HNE ACCFSS TO ONT K<\ m Of sTOpA(;F, Tu|F

INTERCHANGE OPEpAUHN CAN BE UflNE USING ONLY REGISTER TpANSrFRSAN-, RUljTINvi, E/CHAmuE IS A OtFTME «hICM PERFORMS ONE TnTFRCHANgFON UATA FOUND In Kt,ISTFK A, THE DISTANCE SEPARATING ThF TWO wORD.S

TU BE InTERCHANgFD IS T nt UNLY PARAMETER. A proper mudf patternMUcT BE SUPPLIED IN THE CD nlUE REGISTER.

D E F T N r EXCHANGE t Nil i J »

LnR <*A;

RTL -,uu <;

LDEEt ».modf;

lds «.a;

Li>A VR?RTL AS. ->c 1

1 DM}

CSHL(MI)OE) C.NIJMl

LDEF1 htU'jUti

Lda »ii i it

m

<<nATA TO REGISTER R.M<OUTF STARTING DATA,*SELFCT ELEMENTS TU RF EXCHANGE'^PERFORM THE^EXCHANGE .

«ROl|TE RACK TO ThF STArT,^POSITION MUDF PATTERN TO* F ILL IN DESTINATION DATA,

%

HERE t E N T R Y 1 : «

CTSHT(ST/F) <SO»X«;CTSRT(ST/Fi VV#A)6SCTSRT(SIZE) bd.xi^;CTSRKSI/F) Sf.xisn;

33-

Page 48: A fast fourier transform subroutine for ILLIAC IV

Xfil

M6«X 3 2»

X6a«^128X256X512X10?X2oai

x

%

\

i

i

4 I

8t

CTSHT(SIZE)CTSHT(ST^F)CTSrT(SIzE)CTSRT(SIZE>CTSRT<SIZE)CTSBT(SUE)CLC(2)CC1MPC(2)LDL(O)LDL(1

)

LnL( 3)

LXCHLO)JumpJumpj u m p

jumpJumpjumpJumpjumpJump

<>6. < 1 2 C3 »

53*X1024)52#X?04H>Si #440*61;

j

SD J 5

SO 4 I

M)2,T icr?a« J

A 1 6 »

ft 32*u64 :

A128'a2b(S 5

Abl? »

a1 o?a

J

A204HI

tERRHRt DATA SlZT Tun L A *r,E.

*SET ACAR? Tl) ALL ONES.*RESTDkE ACARO.^RESTORE ACArtl.X F LT CM RETURN AonRESs.KRETHRN*

this portion uf th^ pkogkah reorders <scramrles> The data in

surm a way that the results uf the toansfurm routine will come outst°ufntially stored in or mfmury. df'ly one of the follo-mng tenstrhuns uf codf "ill he executed depending on the sl*e of the dataSEtS. THE SCRAMHLlNG PROCESS IS PURELY A DATA TRANSFER PoOrlEMAN<x TS ACCOMPLISHED HJICKLWA FRACTION OF THE TRANSFORM TlMF). THF.pRT MAR Y OptRATInNS ARE MLHUrt v ArcESS A,Nn HOuTlNr,, T hE oThEr IN-

S'dUCTION SET UP INDEXING Ami) L"DP CONTROL.

i409MI FFTCHlNOE* 5f»*SLIT(LUOP) 1»J1.1»LIT(IndEx) * b *l

LUOPIj MTL *SM!LDS *RSRTL M.-l

j

Lox &R!

LOR *0( COUNT)RTL O(LUOP);LDA *0(C r»UNT)STR *0( cDUNT

)

RTL *A»0(I* )F.

STR *0(rOUNT^ALIT( IN >FX) s-1 !

TXLTM(LODP> »ludp1;R T I. i S . 1 J

Los « R

;

LOR i ( n O I » N T )

RTL 12:STR *0< COUNT >

ALIT(COIINT) r*3jTXLTMfC'IIMT ) ,A409h;JUMP FFTl!

A2046 t t FETCHINDEX S 1 J 6 :

LIT(MIJUF) .100 0000lNTERCHAMr,r 32;

ALITCCOUNT) =31!TXLTM(COUriT) »A2f)«a?

J

<0E<L0srU•<dE

*CU*ST*c'J

*FL•<H0

*FE1ST*R0

'' *STXIN*rEadE*co

J *fE*R0

I *ST%\H*r,o

*JUSUE

ooopoooooxoE*IN

ST

l)E

oE>EN

FINE (

np cnuut I nc,

STINATMPLETEARTINGMPl ETETCH STUTF«TCH DEORFUTEORECRF'TURN T

STINATMPLtTETCH ST

DTE ENORF EX

CRF.'ENRACK

MP TDFINE (

OOOOOlFINE (

CRFMENHACK

FETCHNTER.INDEXION I

S TOINDFX TO

ARTINEND A

STINAARTINSTINAST. n

T INDLDO

ION I

S TOART A

D AROCHANGT COUFOR N

TRANSFETCHHI

LARGET COUFOR N

FROM PEINOFX).

(-LUNDFX.S TR

X.

X TR

G OATROUNDTIONG OATTIOMATA I

EX (P.lf IN

NDEX.S TR

NO OEUNO b

ED STNT.EXT DFORMFROM

Dp fUUNT),

ansfEr.

ansfEr.A.

RY 64OATA.A In oFST.data rack.n start loc.-loop cuunt),c loup count)

AnsfEr.ST. DATA.

ART ANO DEST.

ATA SFT.ROUTlNEtPEINOF*).

).

NT.EXT DATA SFT.

-3m-

Page 49: A fast fourier transform subroutine for ILLIAC IV

A 1 2 4 I I

L00P2I

A512I I

L00P3t

A256|

i

L00pa t

Al2«l I

loopsj

jumpFETCHlNOEXLIT(MODE)iNTERCHANr.FLIT(LUOP)LDALIT(MUDE)t-xCHANGE

SETESETElSTAALIT(CI)IJNT)TXlTMCLOnP}TXLT(COUNT)JUMPFETCMINUFXLIT(MUI)E)iNTFRCHAN^rLIT(LOOP)LDALIT(MOl)E)EXCHANGESETESFTF1STAALIT(COUNT)TXLTMCLHUP>TXLT(COUNT)JUMPFETCHlNOEXLITCMODE)INTERCHANGFLIT(LUnP)LOALIT(MOOF)EXTHAN'iFLIT(MQOE)EXCHANGESFTESETElSTAALIT(COUNT)TXLTMCUHJPiTXLT ( CHIINT ^

JUMPFETCHINOEXRTLLOSLOALIT(MUi»F )

EXCHANGESETESETElSTALIT(LOUP)LOALIT(MUDE)E X C H A N r, r

LI T( -iUDDEXCHANGESFTE

FFTU XJUMP TO TRANSFORM ROUTINE.4t>»*> XDEFINE (FETCH FROM PElNnFX).1000004000020 OOOl OOOOO'M16| ^DEFINE (LARr.E).1 » 1 5 • * *LOOP COUNTER.O(CnUNT)! *FETCH DATA.iU/fftoOOUOO'B'

toEriNt..

«ENARLL ALL**

*STORE RESULT.^INCREMENT COUNT.XGU RACK FOR NEXT ROW.*GO RACK FOR NEXT OATA SFT.*JUHP TO TRANSFORM ROUTINE.'UnEFINE (FETCH FROM PETNnFX).

* 10 02 00a 01 00200'! 01 0200 IB I

rti *DEFINE (LARGE).1 »f #01 *LUOP COUNTER.OlCOUNMJ XTETCH OATA.

E.UR."ElE.U'v.-t *

(KCOUNT ) l

*\i

L00P2IXCUUNT. A10?/4 :

FFT1 i

39IOJ

24 J

F.Uw.-LJF.U^.-ElOiCUiNl ) ;

si;.LGllPJJ

$CUUNT» A^l?lFFTl i

33IM

*0EFI,ME."

*ENAR|.t ALL.%

iSTORE RESULT.MNCWFMENT COUNT.*G0 RACK Ff)R NEXT RllW.

*G0 PACK FOR NEXT DATA SFT.<JUMP TO TRANSFUWM RriilTlNE.

'fcuEFINE (FETCH F»nM pElNOF.X).104 21 04^104 21 0«2lO«2lOl«la; XOEFINE (LARGE).t.J.Oi *LUOP COUNTER.0CCHUN1 ) I *FETCH OATA.* 3 h o ( a 1 7 , i J », o } 8 ;

2«J KfiEFTNt.a f f ^ 00 00 Ot> ot 77 a On » 8*

E.U7."LJF.i I .'.-LI

o( coun r i

;

= i;

• LUfiPa ;

ftCUiluT. A/»b6 1

F K T 1 :

?f'.t :

* S . II

*h;*o( rmiNT )

;

SOEFTNE,<F.NAhll ALL.t

* ST ORE RESULT.%\HC.»r ME NT CO'iNT,%r,[) BACK FUR nFaT ROW.*G0 H ACK FUR NEXT UATA SFT.*JUMP Til TRANSFORM »0UTlNF..<i>EFIwE (FETCH FROM pFTNnFX).*KOUTF INDEX.^COMPLLTF S Til

*FETCH OATA.S TRANSFER.

= 5 2S2S2«S2t>? ,S?5? ,3252 e>2t)l«l

1 ; '.OLFHL.F.Hy.-LI *ENARLt ALL,E . U * . • 1 1 *

tO(cOUNT)! *ST0RF RESULT.1 . 1 »o; <t UOP CflUNTER.0(CHUNF ) I *FETCH OATA.s3la(SJl4o3iaiBI30: inEFINE.s?41ff41^n01703770360*Bj1?; SOF.FTNK.

L.U'.-t.s iFiMARLL ALL.

-35-

Page 50: A fast fourier transform subroutine for ILLIAC IV

AMI i

A32» »

A16>>

ABl I

SETE1STA

ALIT(COUNT)TXLTM(LOOP)TxLT(CtHJNT)JUMPLDALlT(MOnE)ExchangeLIT(MOOE)EXCHANGELIT(MUOE)ExchangeSETESETE1STATXLTM(COUNT)JUMPLDALIT(MODE)ExchangeLlT(MOnE)EXCHANGESETESETE1STAtxltm(count)jumpLDALIT(MODE)EXCHANGELIT(MUDE)EXCHANGESETESETE1STA

TXLTM(COUNT)JUMPLDALIT(MODE)EXCHANGESETESETE1STA

TXLTM(COUNT)

E.OR.-0(C°U N

II.L0DP5SCUiJNT

FFT1 I

0(CfJUN•2525231163146M»360004j

E.OR."E.Op.-occoun. A64j

FFUl0(CfiUN•5252515j314006»

E.UR.-e.o*.-0(C0UN.A32>FFT1*0(CUUN252007}

601402>

E.UP.-E 1 s •

"

0(cnnN,A16JTFTl »

0(C 1UN

501203;

E.Utf."E . n .

-

0(cf'dN

»A*t

I

»AUH

T) I

52525

ooooo

17000

L»LI

1 H

T)lOOOOO

U600

LI

ElT)l

T)J12500

30060

El

LiT)l

24050

LIElTil

*STOrE R E

XINCRCMENXftO BACK

I XGO back*JUMP TOXFETCH DA

?I8IXOEFINE,

1463141*1XqEFINE.

0740003601b'XDEFlNE,XENABLE A

X

*STORE REXGO BACKXJUMP TOXFETCH DA

12525?I8I*o£finl,

0630003141b!xdefinl.xenable a%

«TORE REXf,0 RACKXJUMP TOXFETCH DA

052400252ltt|XOEFINE.

1403006014«8IXnEFlNE.XENABLE A

X

XSTQRF RE

Xf,U BACKXjUMP TOXFETCH DA

1202405012181XOEFINE.XENABLE A%

USTORE RE

XGO BACK

SuL T .

T COUNT.FOR OTHER RflW.FOR NEXT DATA |FT.TRANSFORM RQUTlNE*TA.

LL.

SULT.FOH NEXT ()ATA SET.TRANSFORM ROUTINE*TA.

LL.

SULT.FOR NEXT 2 DATA SETS.TRANSFORM ROUTINE.TA.

LL.

SULT.FOR NEXT 4 DATA SETS.TRANSFORM ROUTINE.TA.

LL.

SULT.FOR NEXT » DATA SETS

END HERE.

-36-

Page 51: A fast fourier transform subroutine for ILLIAC IV

ilSTEO nfy { 06/13/71 Ait 09U

% i

% %

% i

sm«

MGDEs

LCOPj

COUNT t

BEGIN* ?. * x x * x

TRANSFORM% % % % %

EXTERNAL

KE6CEQUKrr.c

R?GCEQi.J

REGCTHE FOLLOWING

S 8

SEC ION% %

S I W |

01

SSIZE**C0*1 J

SMlJf)E«*Cl *

?' I

RLOOP«*C'3?

*cnijNT B sriiOEFImE is a

X %

% %

% '&

STANDARD transfer operation used tn

Trtr fU irIEn TRANSFORM ROUTINE. THE dARTTAl RESULTS OF EAcH ITERA-TirN ARE USED In THE PL .mHLRE THEY *ERE CUMPIlTED AS WELL AS IN A

PL SRME OlSTANCF AWAY FnR 1 hL NF'T ITERATION. THE FUNCTION nF THISntp-lNt IS TO MOwE THESE PARTIAL RE SULT S

(

FOUND IN REGISTER A) TO THFpHopER pES uoIST IS A NumhEP TELLlN f, H Ovg F A R). T hF pROpFR hOqEpA T TFRN MUST BE SUPPLIED IN THE CU REGI STER .MODE ( AC A R 1 ) . NnU ThATRL-IsTER MODE (ACAR1) IS NUT CHANGED BY THIS DEFINE,

DEFINr TRANSFERRTLCOMPC(MODE)LDEE1LDSRTLCOMPC(MW>E>L0EE1LDSLDASETESETE1

*DIST»»S A , X D I S T I

I

$ mUoEisr;SA»-4DIST>

t

RMUnE}<a;$rjE.UR.-ElE.Ow,-Ei*»i

*ROUTF REGISTER A RlfiMT.^COMPLIMENT MODE PATTERN.IENARLE PES.<LOAD REGISTER S IN nESlREO PES.*ROUTE RFGISTER A LEFT.^COMPLIMENT MODE PATTFPN.XENARI.E PES.XLOAD REGISTER S IN oFSlRED PES.*LOAD REGISTER A IN SAME PES.^ENABLE ALL PES.

PAGE I

THE following define pehfoms THE COMPLEv multiplicationOPrRATlON ON Two UPERANdS. EACH OPERAND IS ON wORO COMpQsEn OpT*n 32-BIT FLOATING PUlNT NUMBERS* THE OUTER OF wHlCH Is THE REALpApT AND THE INNER IS THE IMAGINARY PART. THE TwO OPERANDS MUSTRE In THE A AND S REGISTERS IN ALL PESt THE RESULT IS |_EfT INRE-.IsTER A. THE RESULTS IN TErvS OR RKREAL PART OF FIRST OPERAND)RiJ.Il.ANn 12 ARF AS FOLLOWS,

R«R1*R2-I 1 *\'i

l«Rl*I2+R2*Il

DEFINr COMPLEXMULTMLRNLORSETECHSASETELOSLOSLDASWAPAM(_RN

LDB

it W H "l I *

%Sl* WHQ I

E.Aij ».-El

E.O..-L:

SA;SH{

I

SRS

SSI

^MULTIPLY REALS AND IMAGINARIES.*WEL0AU SFCOND OPERAND.

*CHANr,E SIGN OF INNEp (I**2*-l).*

triNE OPERAND TO R REGISTER.*SAVE PARTIAL RESuLT.*FIRST OPERAND Tn A REGISTER.XIMAG TO OUTER* REAL To INNER.XMULTlPLY R1*T2 AND R2*Il.^POSITION PARTIAL RESULTS

-37-

Page 52: A fast fourier transform subroutine for ILLIAC IV

IN HEATr m

SHnULG I M E N

MUi Tl

CUmSTTMr p

TlrN.ALl UWTlnNON CO

SWAPXAONTHE FUgIstErEmoryo re e

ITERATHE BARLlCATANTS (

REVIOUTHE

S HALFTO THEMPLEX

OEFINr M

L

C

L

L

A

S

I

S

sT

ANn COCUf'STAwAc TAOF AnGOF ThOFIpST

1

THFM I

OEc InESTnKEOTU BERErUfH

ULTADDAOMPLEOROSONTAOARNTAHE CUsinesNTS R

KENLES I

SE OFOlJADR

HE FUNTO T

ARECONS

THE A

ED IN

LLO*IS An

LOCATQUAlTION.sic nION rW S).S ITrSYMETTHEOTHF

MIJLTI

OSUR

XMULT

I

SB)N<i DEFID PRODUIUNS.TU HALF

THE S

PERATIOETwEEN

THISRATIONRY OF T

OPEHAT1R HALF.PLY UNE

##>NE HEUUICES T ,U

THE OFFSTHE NUMIGNIFICAN OF THEthe resij

new «uAnTU PRUOUHE CALCtj

ONS Tl) R

THUS A

AIJU AND

XFOR FINAL ADDITION,

»ES PRRESULTFT USEPER OFNCE OFFAST

LTS OfTITY I

CE RESLATIONF ELIMSTANDONE S

OPER CONS AND $T

Tn FINROWS BETHIS OE

FOURIERONE ITE

s Then a

ULTS FORS AS «FLINATEO R

ARD OEFIURTRACT

STANTI TO R

OREs T hCm I

TMC FIRITING ORCRATfFINE FOLLOWTRANSFORM I

RATION ANDODEO TO THfTHE PRESEn

L AS THATY ADOINQ ONNE WHICH ACAND PRODUCE

t FnuN ApRORCROn

IN B

1 A C

A SETrEsu

T ITEF TheE SlJB

CnNPLS Two

ndOprI-ANOIN A

RIEF.OMPLE*OF

LTS OFRA-w S

TRAC-ISHESRES*

NSTAnRATh

EoUlPF THEN ANYANGL

ANT S

LLOWTHE PRLEFTTANTsODREsTHE

*

&

*,

S

s

$

&

THTORET

ES IN

I WESNG OEOPERIN REARE

S UFCURHF

TSEHEUIKUF

OFFSEOFFSEUFFSE(CniJN

A;R»(CHUNR;

SJ

OFFSES) F

AN EXBE S

GULARHE FOTHE

AND C

FINESECONGISTENOT U

THF M

NT TT

TlaI CCUil

KCUUI ))

r>»

T(CUUUR THHONLig

TOHEf)iTv A

UR 'JU

FIRSTUSINELUAUSU >UA

h S A

ISTUREMOKYERATI

NT)|«fETch first opErano,NT)»*MULTTPLY BY CONSTANT

XFETCH SECOND QPERANn*SAVE PARTIAL RESULT,*ADD ?ND OPERANO TO PXSTORE ONE RESULT,X?No OPERAND TO RfGlstSUBTRACT PARTIAL RES

NT)»tfl ISTORE THE OTHERTS PROGRAM ARE REpRESENTeTIALS. TO DECREASE THE n

AS PART OF THE PROGRAM a

MO SYMETRY* THE sines orAORANTS ARE SIMPLE TRANSFOUADRANT, FOR THIS REAs

S ARE STORED.A SET OF CONSTANTS ANO T

nRANT VALUES. ThE RESULTND THE MEMURY LOCATIONSRED. THE INPUT PARAMETERLOCATION CONTAINING THE

ON. THE TRANSFORMATION j

(W) IN RQS.

ARTIAL RES.

TER A.

ULT.RESULT,

n As SINESUMBER OFDvANTAGECOSINESormationON ONLY

RANSFORMSS Or ThISF THFTS ASSUMED

CONSTANTSS DEFINED!

KEAL(UUAO ?)»-lMAGINANY(UUAO 1)IMAGINARY(QIIA0 2 ) »PE AL( vJUAn 1)

DEFINr CHANGEUtlAI)LDASWAPASETE1CHSASETE1LOS

<,CUMHLLXNUM1ICCUMPLEXNUMI

;

E#ANO."EI

E.UR.-Ej

XFETCH CONSTANTS.KSWAP HEAL AND IMAGINARY PARTS*%

*CHAMGE SIGN OF REAL PART.I

*LEAVE RESULT IN REGISTER S.

THE FULLOWTNb DEFINE RESLTS THE TRUE-FALSE FLIP-FLOP (TFFF)WHtCH IS USED TO COWTRUL A SMALL LOOP.

OEFINr RESETFF =

CACRB **l XRESET ACR HEfllSTEH -R I T CTFFF)I

* THE FOLLOWING DEFINE SETS ThE TpUE-fAlSE FLIP"FLOP wrICH 15

* USrU TU CONTROL A SMALL LOUo.

OEFINr SETFF a

-38-

Page 53: A fast fourier transform subroutine for ILLIAC IV

CAAT

MUsT BEOF ElGHSUrCEEDIN EACHSk-T IScunE isTHaT SECUmP L ETFUcM ISEArHqa t a

ST

SE

X

%

%

%

%

%

%

I

t

%

%

%

%

EIFFTHENtRY] J

SESE

CHCALDSLCA

F8» LOLI

HTCOLfl

LnHT

CHCOLOLDLO

SESEAnLI

RTCOLnLOHTCHCOLOLOLnLI

LnswSECHSESEAnLI

TRMLLI

CR8THIS

GIN.T DATING S

ITERUSEDLABECTIONED WHnUNE

EP IS

T(S>

POIMTHF

A PniTEP T

ATInNFOR T

LED B

(ONEICH CAMnCHMP

RElNG

LLi

TE

TE1

WSCRBL(SIZE)IT(COIINT)DOCCOUNT )

A

T(MODE)LMPCCMRDE)EE1S

L

SAMPC(MODE^EE1SA

TETE1NT(MOOE)L

MPC(MnOE)EE1S

L

SAMPC( MnOElEE1S

A

T(HODE)EE1APATE1SA

TETE1N

TCMOHE)ANSFERRNT(MOOE)

200T SCRArRANSFNTS COWICE T

. THIHE rINY THESTEP

UHRFSPTHE RELETELYTRANS

16»

IB ##lMBLINGORM ALNTAlNEHE PRES PHOCAL STENUMBEROF THEONDS T

MAIN C

INDEPFORMFil

HASGORITD INviousESS C

•»• T

OF D

TRANU THEUDE I

ENT

XSETBEEN C

HM BEGEIGHTNUHBE

ONTlNUHE BEGATA POSFURM)SIZE

S SKIPF THE

ACR R

nMPLEINS R

CONSER OFFS UNININGTNTS, WWOF THPED.SIZE

EGISTERTED ANDY WORKICUTIVEDATA POTIL THEOF EAC

IN A GREN THEE DATAIT IS

OR THE

THENG WTPES.INTsENTI

H SECOUP USTEPSET T

IMPpRNUMq£

(TFFF).REAL WORKTH GROUPSIN EACH

ARE USEDRE DATATlON OFSEO IN

HAS BEENu|E TRANS-tant thatR OF THE

*align to b pe bounory.

E.Ow.-LjE.Oq.-Ei325211 IBISOl j

01ssize;O(CQUNT).1252525*A» 1 J

J

RHODE*SRISA.-l |

J

I

SMUnE»** A

;

SR)

E»UR»"EiE .Ow.-E»SSI»14631<*6SA,?;

I

SMODEJSRISA ,-2 ;

irtODEI*. a ;

jH !

.5252525SMOOEJ

I

E.am >.-r

i

E.JR."EiE.Q4.-E:«s;*lf03f>07

SINI.5252525

*ENARLE ALL PES.X

15

i

%

%

25252525%%

%

%

%

%

%

%

t

«

%

i,

31463146%

%

%

%

%

%

%

%

*

%

2*252525i

r.

I %

*

%

%

4l7n3607%

%

25252525

CHANGTURNFETCHRESETSET T

LOAD2525?ROUTECUMPLenablLOAnROUTECHANGCOMPLENA3LLOAnLOAnENARL

PARTI31463ROUTECUMPI.FNARLLOAnROUTECHANGCOMPLENABLLOADLOAn25252

E TOOFF U

SIZECOJJN

U STAdata.52lB»REGIIMENTE PESREGISREGl

E SIGIMENTE PESREGISREGISE ALL

32-BIT HODE.NDERFLOW.INFO.

T.

RTING POINTER.

STER A RIGHT*MODE PATTERN.

TER S IN DESIRED PES.STER A LEfT.N OF A IN DFSTRED PESMODE PATTERN.

*

TER S IN QEslRED PES.TER A IN S AmE pts.PES.

AL RESULT.14|fl|

REGISTER A

IMENT MODEE PES.REGISTER S

REGISTER A

E SIGN OF A

IMENT MODEE PES.REGISTER S

KEiISTER a

5H|

RIGHT.PATTERN.

IN DESIRED PES.LEfT.IN DESIRED PES

PATTERN.

IN DESIRED PES.IN SAmE pEs.

FAKESINESA moCOSINES.

PARTIAL RESULT./ll70360l«lROUTING DEFINE.MULTIPLY BY CONSTANT.25?525«8»

•39-

Page 54: A fast fourier transform subroutine for ILLIAC IV

NE8l

Fl6l

NE16I

F32I

NE32:

F64I

LDEE1LDRSWAPASETE1

CHSASETElADMLIT(MLnEElSWAPAcshr(loeiSETECHSASETESETElAONSTATXLTMCTSRFLIT(2JUMPSLIT(CAOD(LIT(MLOATRANSSTSLnsLnACOMPLAONSTATXLTMCTSBFLIT(2JUMPSLIT(CADO(LIT(MLOATRANSSTSLOSLDACOMPLAONSTATXLTMCTSBFLIT(2JUHPSLIT(cado(LITCMLDARTLLOSLDEElLQSLOA

*MOUE!$ A I

F.ANO.-Eil

UOE)

MORE)

(COUNT)(SIZE))

COUNT)COUNT)ODE)

FER

EXMULT

(COUNT)(SIZE))

COUNT)COUNT)ODE)

FE»

EXMULT

(COUNT)(SIZE))

COUNT)COUNT)ODF)

E.OR.SR>• 2104smUoe

J

1*

*MqoeE.ANO

1

E.OR.E.OR.SSI0(COU• F«»36. NEPAIR(OUT)01

8SI7E»1774o(cnu

0(COUSA»SIN+ISIN + 1

0(COU0(COU• F16>35. mEPAIR(OUT I

tSIzE• 1777

( C Ulb?o(cnusa ;

SIN + 2

SIN*20(COU0(COU.F32J34, mEPAIR(OUT*

ssizt*\7770(COUSA.32sr;smuqe&aj

*R J

21042I

I

.-E»

-Li-Et

NT)|

s;4.0.4

I

00776NT ) I

NT)I

I

I

NT)|NT)I

16,8 . o » 8

I

77000Nl U

NT ) J

1

I

Nl ) I

NT) I

32,16.0.

I

7(!7(NT)II

»

«

XX

I

II

I

104210I

I

*

I

%

X

%

%

X

X

t

X

.0)1 X

%

%

X

003770%

X

X

X

%

%

X

%

i

%

.0)) X

X

X

X

003777X

X

I

X

*

I

X

X

X

X

16.0)1X

X

X

77«000X

X

X

X

%

X

FAKECUMPLC X

MULTIpLyBYTAKINGADVANTAGE

421042lAfOFTHESfMETRYor

SINESANOCOSINES,

PARTIALENO OFITERATEGO ON I

SET UPQUIT IF

ZERO COSTART W

0177*00RESULTSROUTINGSAVE UTSAVE FIFETCH C

DEFINEADO OTHFNO OFITERATEGO ON I

SET UKQUIT IFZERO COSTART w

7600000RESULTSROUTINGSAVE UTSAVE FI

FETCH C

DEFINEADD OTHEND OFITERATEGO ON I

XSET UPQUIT IFZERO COSTART «

0000000RESULTSROUTE E

SAVE INENABLEINTERCHANO REG

RESULITERATONCE

F NOTEXPQNESUE*

UNT.ITH FI181FROMOEFIN

HER OPRSTOAPONSTAN(RGS*SER OPEITERATONCE

F NOTEXPQNESUE-

UNT.ITH Fli a i

FROMOEFIN

HER OPRSTOAPONSTAN(RGS*SER OPEITERATONCE

F NOTEXPONSUE*

UNT.ITH FI

181

FROMNO AROREGIS

PESANGE R

ISTER

T,ION.FOR EACH RON.DONE.NT FOR INVERSE.a.

RST ROw OF DATA.

PREVIOUS STEP.E.ERANO,ERANO.TS (W S).IN).

RANO*ION,PER ROW,DONE.NT FOR INVERSE.16,

RST R0 W OF DATA,

PREVIOUS STEP.E

ERAND.ERANO.TS (* S).IN),RANO.ION.PER ROW.DONE.ENT FOR INVERSE.32.

RST ROW OF DATA,

PREVIOUS STEP.UNO 32,TER S,THRU 3l,EGISTER %A.

-1+0-

Page 55: A fast fourier transform subroutine for ILLIAC IV

NE64I

F128|

NE128l

P256I

F256j

SKIP1 I

NE256»

P512I

F512,

SKIP2J

NE512I

P1024J

F1024I

SETESETE1STSLDSLDACOMPLAONSTATXLTMCTS8FLIT(2Jumpsutccaoo(

LDSMULTAAUTCTXLTMCTSBFLIT(2JUMPSUTCCADO(RESETLOSMULTAALITfSKIPTCHANGSETFFSKIPALIT(TXLTMCTSBFLIT(2JUMPSLIT(CADO(LIT(LRESETLOSMULTAALIT(SKIPTCHANGSETFFSKIPALIT(TXLTMALIT(ALIT(TXLTMCTSBFLIT(2JUMPSLIT(CADDCLIT(LKESETLOSMULTA

EXMULT

(COUNT)(SIZE))

COUNT)COUNT)

QDSURCOUNT)(COUNT)(SIZE))

COUNT)COUNT)FF

ODSUBCOUNT)

EQUAO

COUNT)(COUNT)(SIZE))

COUNT)COUNT)OOP)FF

ODSUBCOUNT)

EQUAD

COUNT)(LOOP)LOOP)COUNT)(COUNT )

(SIZE))

CUUNT)COUNT)OOP)FF

ODSUR

E.OR.E'OR*0<COUSAJSIN*3SIN+30(COU0(COU.F64»33.MEPAIR(nuT>01

SSIZESlN + 4

1 »

.11• Fl?R32. NEPAIR(OUT l

.0;SSTZE

J

SIN + 5

2;

11

.SKIPSIN + 5

I

»F256II

.P25631»nEPAIR(UUTlo;

SSIZE1*1.0

;

6 + SIN4|

-2).SKIP6 + SIN

1

.F51?a-3J»PS12-2;

*5l»PSl230. NtPAIr?(

OUT;01

SSIZE1.3,0

i

8 S I N

HI

-El"ElNT)I

I

I

NT)!NT)I

64,32.U»3?.0

I

uai64,0*64.0

UI

I

I

2b6;12«.u»i2*

i

(LOOP) l

(LOOP) I

I

I

I

512:2bft. J,?56

;

I

(LUUP)I

IENAX

»SAV*SAVXFETIDEFXADD*END«ITEXfiO

)IXSEXQuiXZERXSTA

XFETXOEF*GU«ITEXQU

) JXSEXQUIXZERXSTAXoEFXFETxnEr*INC»CHE*OEFXDEFIINNXINCXlTEXGO.0)1**QUI*ZER*STA

*l_00XoEFXFETxoEf*INC*CHE*DEFxoEf*INN*INC<G0XRESXSET*r,o

xr,u

.0)11xquiXZERXSTAXLUOXDEFXFETXDEF

BLE ALL PES.

E UTHERE FIRSTCH CONSINE (RGOTHEROF ITE

RATE ONON IF n

T UP EXT IF SI

COUNTRT WITHCH CONSINE (DBY PAIRRATE HNON IF N

T UP EXT IF SIn countRT WITHINE (TFCH CONSINE (oA

REMENTCK INNEiNt-MODINE (TFER LOOPRFMENTRATE ONON IF N

SFT UPT IF SI

COUNTRT WITHP COUNTINE (TFCH CONSINE (DA

RFMENTCK INNEInE-MOOINE (TFER LOUPREMENTBACK FQET LOOPCOUNT

RACK FOON IF N

SET UPT IF SI

COUNTRT WITHP COUNTiNt (TFCH CONSINE (OA

OPERAND.UAPERAND.TANTS (W S).S#SIN),OPERAND*RATION.CE PER ROW,OT DONE.PONENT FOR INVERSE.*E-64.

FIRST RU W OF DATA.

TANTS (W S).ATA + 1 )*SlN +ANO- DATAS OF ROWS,CE PEp PAIR Of ROWS*OT DONE.PONENT FOP INVERSE.ZE-12B..

FIRST RUw OF DATA.FF«0) LOOP CONTROL.TANTS (* S).TA*2)*slN «.ANn- DATA,COUNT.R LOOP.IFY CONSTANTS.FF«1) LEAVE NEXT TIME.

COUNT.CE FOR EACH 4 ROWS.OT DONE.EXPONENT FOR INVERSE.ZE-256.

VlRST ROw OF DATA.ER.FF«0) LOOP CONTROL.TANTS (W S).TA*4)*SIN +AND- DATA.COUNT.R LOOP,IFY CONSTANTS.FF-1) LEAVE NEXT TIME.

COUNT.R NEXT PAIR OF ROWS.COUNTER.

FOR NEXT OATA SET.R NEXT DATA SET.OT DONE.EXPONENT FOR INVERSE,ZE-512..

FIRST ROW OF DATA.ER.FF«0) LOOP CONTROL.TANTS (W s).TA+8)*SIN +ANn- DATA.

-1+1-

Page 56: A fast fourier transform subroutine for ILLIAC IV

S*IP3«

NE1024»

P204BI

F2048i

SKIP4I

NE2048'

Pa096i

SKIP5I

OuTl I

A|_IT(CSKIPTCHANGEsetffskipALIT<CT*LTM(*LIT(LALIT(CTX|_TM<ctsbfcLIT(2)

JUMPSLITCCCADOCCLIT(LUHF.SETF

LOSMULTAUALITCCSKIPTCHANGESETFFSKIPALITCCTXLTM<ALIT(LALITCCTXLTMCCTSBFCLIT(2)JUMPSLITCCCADOCCLIT(LORESETFLOSMULTADAlIT(3SkIPTCHANGESETFFSKIPALITCCTXLTM<ALIT(LALITCCTXLTMCLIT(2)CTSBFC

OUNT)

Quad

HUNT )

LOOP)OOp)

OUNT)COUNT)SIZE)

OUNT)OUNT)OP)F

OSUROUNT)

QUAD

OUNT)LOOP)OOP)OUNT)COUNT)SIZE)

OUNT)OUNT)OP)F

dsur)

QUAO

OUNT)LOOP)OOP)OUNT)COUNT)

SIZE)

• 41.SKIP8*SIN

I

• F102— 7»

,Pl02.-«!

-in#P1()229»nEpAI^(

OUTi01

SSIZE1 p 7 ,

( LOUP) I

4)

41

INCREMENT COUNT.*CHECK INNER LOOP,IdEFINE-NODIFV CONSTANTS,tntriwi (Trrr«l) lia vc NtxT time

1024»512.0.5

41

NCLOOP)

i8|

81

.8»

:2U4rt»1U24.Q.

12+SINCL00P)!161ubl.SKIP12*SI

I

• F204-IS)»P204•8|

23|.P20428.NEPAI^((JUT,•01

SSI ZE i

1*15.0}.

20*SINClOUP)»32l16}

SKIP5J204-SINCLnUP)

I

»F4o96i-31 J

.P4096J«-l6l47,.P4096JPAIR(2U48.0.15.RETURN1

1INNER L00P»•INCREMENT COUNT,XGQ RACK FOR NEXT PAjR OF HOWS.fPtSET LOO? cOuNTEH.XSET COUNT TOR NEXT DAT* SET.*G0 RACK FOR NEXT OATA SET.«G0 ON IF NOT OONE.

!2.0)hset up Exponent f or inverse,IQUIT IF DONE CSIZt»l024),XZERO COUNT,XSTART WITH FIRST ROW 0^ DATA.XLOOP COUNTER,DINNER LOOP CONTROL, CTFFF"0>,XFETCH CONSTANTS (N $>.XDEFINE (DATA*16)*SIN *AND- DAT*^INCREMENT COUNT,ICHECK INNER LOOP,

» SQEFINE-MODIFY CONSTANTS,XnEFlNt (TFFF.l) LEAvE NEXT TIMEtlNNER LOOP.INCREMENT COUNT,XGQ RACK FOR NEXT PAIR OF ROWS.XRESET LOOP COUNTER,XSET COUNT FOR NEXT DATA SET,*G0 RACK FOR NEXT DATA SET.*GU ON IF NOT DONE.

1024,0)1 XSET UP EXPONENT.XQUIT IF DONE <SIZE»?0a8).XZERO COUNT,*START WITH FIRST HOW nF DATA,XLOOP COUNTER,XDEFINE (TFFF-O) LOOP CONTROL.XFETCH CONSTANTS CW S ),XDEFINE (DATA+32)#SIn *AND- DATAXINCRFMENT COUNT,ICHECK INNER LOOP,

I *DEFlNE-MnOIFY CONSTANTS.XnEFlNE (TFFF«i) LEAVE NEXT TIMEIINNER LOOP.*INCRFMENT COUNT,XGO RACK FOR NEXT PAIR OF ROWS.XRESET LOOP COUNTER.XSET COUNT FOR NEXT DATA SET.XgO RACK FOR NEXT DATA SET..

2048,0)1 XSET UP EXPONENT.XI.EAVE IF NOT INVERSE pFT,

THE FOLLOWING COUE IS EXECUTED IF AN INVERSE TRANSFORM ISREQUESTED. THE ONLY OPERATION REQUIRED IS THAT EACH ELEMENT OFTHF SOLUTION M 1

1 s T BE UlVIUEn BY N(SIZE). THE NUMBER OF DATA POINTSIN T M E FUNCTION, SINCE N Is A ROWER OF TWO THIS CAN BE DONE BY

SUBTRACTING LOG(RASE 2)^i FHQH EACH FXPONFNT. THE PROPER EXPONENTSAHr CREATED AT A 1 I HE WHEN NCSIZE) IS KNOW EXACTLY AND THE* AREPUT IN ACAR2CLHHP) JUST HEFORt EXECUTION IS TRANSFEREO TO OUT.

SLITCCOUNT) aQJCADDCCOUNT) SIZE»

XZERO COUNT.XSTART WITH FIRST ROW OF DATA.

-1+2-

Page 57: A fast fourier transform subroutine for ILLIAC IV

INVERSE LOA O(COUNT) J

SBEX SC2ITXLTM(COUNT) .INVERSE!

RETURN! LDL(3) *02|LOL(O) *D3lLOKl) $04>EXCHL(3) SlCRjENO FFT1.

XFETCH DATA.XDIVIDE BY SIZE (NO uNnERFLOW).XDO FOR ALL ROWS OF DATA.* F ET CH RETURN AqdRESs.IRESTORE ACARO.^RESTORE ACAR1,XRETURN TO CALLING PROGRAM.

43-

Page 58: A fast fourier transform subroutine for ILLIAC IV

812)

S pESt-T LIST!BEr,lN

FILL l28tSIwUnTRYHiDATA ( PA IRC 1.0* 1, )• PA IR(, 707 10678 12..707 1067

PAIR( 1.0* -1.0). PA I R<-. 70710678 12*. 707 1067812)*PAIR(-1.0»-1.0).PAIR( -.707 10678 12. -.707 1067812),PA I R( -1.0»l,n), P A IRC. 7071067812.-. 707 10 A78t 2 ))8.

( ^A I R( 1, 0» 0.0), PA IR<« 9238795 325 », 38268 3 A 324).PMR( 0.707106T8i?» 0. 7071 0678 1 2) . PA IRC 0. 3826834324, 0,9238795325)*PMR(0»0» 1. 0) »

P

At R<"« 38268 34 324*.92 38795325)*PAIR( -0,70 7106781 2* 0. 707106781 2), PA I R( -0,9238795325,PAlR(-l,0»0.0),PAlR(".9238795 3?5»-*38268 34 324).

PA I R^ -. 7 o7 t06 78l 2, -.7 07 10678 12). PA IRC 3826834 324* -.9238PAIR<0.0» - 1«0).P A TH(» 3826834 324»-,923875 325).

PaIPI 0,707l0678l?»-0.707l0678l2)»PAIR( . 923879532s, -0

,

( KA I R( 1. 0» 0«0). pa I R(» 9807852804* .19509 0322)*

0.382683432M*

795325).

382 6834124))4.

PAIR( 0,923879s??5» 0.38?68343?4PaIr( 0.70710678!?. 0.7o7lo678i2PAIR( 0,38268343?4» 0. 9238795 3 ?5KAIhfO.O* 1.0), PAIRC 195090322*

PAlR(-0.38?683/l3?a» 0.92387953?5PAlR(-0.7o7lo6T8i?» 0.7o710678i2PAlR(-0,923879s3?5» 0,38268343?4KAlRf-l.O,0.0).PAlR(-. 980785 280

PAlR(-0, 923879s? ?5»"0. 38 268343?4PaIr(-0.7o710678i2' - 0.7o710678i2PAlR(-0,3a2 683«3?A»-0,92 38795 3 ?5HAIR(0,0»-1.0)»PAlRC 195 09 0322*

PAIr( 0.38 2683a 3 ?4#-0. 92 38 795325PaIrC 0,7o7lo^r8i2*-o.7o7lo678i2

PaIR^ 0,<?23 8795 3? s»- n » 3 82 6834 324),p^AIR(1,0»0.0),PAIR(*9951847267»

PAIr( 0,980^85?8 4» 0.1950903220PAIe,( 0.92387953 ? 5» 0.38?68343?4PAIR( 0.83l4 6 9^1?3, 0,5555702330PAIR( 0,707l067fli?» 0.7071067812PAIr( 0.55557o?3io» 0. 8314696123PaIr( 0,3fl2683/j3?a» 0. 9 2387953?5PAIR( 0, l95090^2?0» 0,9807852804>*AI«f0,0»1.0).PATR(". 0980171403

PAIrC-O. 1950903220* 0.98o78528o4PaIr(-0.38 26B3«3?4» 0.9 2 38 795 3?5PAIR(«0,555570?3?0, O.B^H^l? 3

PAIR(-0.707106781?. 0,70710678i2pAI»(-0.83l46961?3» u. 5555702330PairC-0.92 38 79s 3? s» 0.38 268 34 3 ?4PMR( -0,980 785? 804. 0,1 9 50 903220KAIR("1.0*0.0)*PAIR( - *9951847 26

PAIR(-O.9 8o78 5p8o4»"0. 195 09 03220p AlR(- 0.9

2

3»79S3?5 '"0.38 268 34 324PA I R( -0,831 a 69A| i ?3.-0, 5555 70233PAIRC- 0,7071 0^78 12* -0.707 10678 12PA I r( - 0. 55557 o?330»" 0.83 14696123

)»PAIR< 0.8314696123).PAIR( 0.5555702330).PAIR{ 0,1950903220.9807852804)*)»PAlR(-0. 5555702330).PAlR(-0. 8314696123),PAlR(-0, 98078528044.-. 195090322).).PAIR("0. 8314696123)*PAlR(-0. 5555702330).PAlR(-0. 1950903220-.9807852804).)»PAIR< 0.5555702330)*PAIr( 0.8314696123AIR( 0.980785?804,-0.0980171403)»).PAIR( 0.9569403357).PAIR( 0.8819212644).PAIR( 0,7730l04 5 34

).PATR( 0.6343932842)iPAlR( 0.4713967368)»PAIR< 0.29028467^3).PAIR( 0,0980171403..9951847267),)* PAlR<-0, 2902846773)»PaIr<-0. 4713967368).PAlR(-0, 63439328*2).PAIR("0. 7730104534).pAlR(-0. 8819212644).PAIr(-0. 9569403357)»PAlR(-0, 995184 72677.-. 0980171404 ).

)»PAIR("0. 9569403357).PAIR("0. 8819212644),PAlR(-0, 7730104^34). PAIRCO. 6343932842)»PAlP(-0. 4713967368)»PAlR<-0. 2902846773P AIr(-0. 38 ?68 343->4»- 0.9 238795 325

PA IR^-.l 950903220,-, 080^852804 ),PAIR( -.09801 7l*03.-.995lKAlR(0.0*-1.0).PAlRC.0980l7l403»-# 9951847267).

pair( 0, I950903??0»"0.98o78528o4), PAIR( 0,290284677 3,

0.5555702330)0.8314696123)0.9807R52 804)

0.8314696123)0.55557n2330)0,l9 S0903220)

•0.5555702330)•0.8314696123)-0,9807A5 2 804)

-0.8314696123)-0.5555702330)1V50903220))2,

0.29o2846773)0.4713967368)0, 6 343 9 32842)0.7730104534)0.88l9?i2644)0.9569403357)0.995M47267)

0.9569403357)0.88l92l2644)0,7730104 534)0.6343932842)0.4713967368)0.2902846773)0,0980171403)

-0.2902846773)-0. 4713967368)-0, 6343932842)-0.7730104534)-0.8819212644)-0.9569403357)8 4 7267)»

•0.9569403357).

0000009000000100000001100000020000000300000004000000050000000600000007000000080000000900000010000000110O000012000000130000001400

•00001500• 00001600.00001700OOOOlROO

•00001900•00002000.0000210000002200•00002300» 00002400•00002^0000002600

• 00002700• 00002*000000290000003000

• 00003100• 00003200.00003300• 00003400• 00003SOO• 00003600»00003r0000003800

» 00003900• 00004000#00004100.00004200» 00004300• 00004400.00004^0000004*00

• 0000470O• 00004A0O.00004Q00• 00005000• 00005100• 000052000000 s 300

0000540000005500

-kh-

Page 59: A fast fourier transform subroutine for ILLIAC IV

IR I o.

lR< o.

IR< 0.lR< o.

IRI 0.

IR< 0.

Alt<( 1.IRI °.IR [ 0,

IR< . 0.

IR I o.

IR ', 0,In ( o.

Ir c 0.

IR - 0.IR ' 0.IR ( o.

IR 1 o.

I R £ o.I R : o

#

IR ! 0.

IR [ 0.AI <f0.I R (-0,

IR [-0.

I R :-o.IR r-o.

IR (-0,

I W< -o.IR >0.f W( -o.

I R r-0.

I R< -0.Ip ( "0.IR ' -0.IR (*UiI R •o.

I R t-o.Ap<f l

.

I R c o.

lR< 0.

I P » 0.

IR ' °.IR [ 0,

I R • 0.

1 => 0.IRI 0.

I R o.

IP< 0.

I R £ o«IR 0,

I R ' o.

IR o.I R . 0.

IR : o.

IR [ o.

IR' 0.

3*2 6 8343?4»-55557o?330»-

83l469*t23»-9238795325*"98o785?8o4-0.0.0) .PftTRt99sl8«7?*r98o785?8o49569 4 03 3s

7

923«79s3?S881 v?i?^'4«3l 4696 1 337 7 3 1 4 5 i 4

7o7l067«i?*

3

4393? 84?55557o?330a7l39673(S838?683/j3?429028^^77319S09 32?O09801^1 4n3-0.1 ,0) .PA'rtC

09801 7

]

4n319809(n2?0?9o284*7»33 8 ? /S H 3 /j 3 o ^

47 \ 39673* 8

55557o?330A 3ai9358/,?70 7l Of, /Hi 2

773 010 'i 5 3 4

83l469M ?38 8 l

9 2 1 ? 6 4 4

9?3b79 s 3? s9S89^oi3«;798o785?8vi99M*'»f?*7

. . ) , P A I R (

99879b /, S * ?

9951847267989178SIO0980785?804°70031 ">532

95ft9a033s794i54 4 n 6s?923 8f9^3? s9 03989 ?9 3 1

88l9?lp6aaR577?6Mno8 3 1 4 6 9 * 1 ? 3

8 3 2 7 «; 3i s

7 7 3 1 /I 5 3 4

7<U)95l 1 2S4707l0*r81 ?

67t55805/»86 ^393-?8/i ?

0.92387953?50.B3146961?30.70710678J20.55557023300.38268343240, 19509032?0.9987954562*0.09801 7H030. 19509032200.29028467730.38268343940.47l3967 3 *A0.55557023300.63439328420.70710678120. 773010a 5 34

0.83146961230.88192126440.923 R 7953?5°.9569^033 S 7

0.98Q7852H040.9951847267-.04906767^30. 995184 72*70.980785?8n40.9569403357(>,9238795 i ?5j.88i92126/j40.831469*1230. 77301045340. 707l0 6 78l?0.63439328420.55557023300.47i 39673*80. 382^8343240. 29028467730. 19509032200. 09*oi7i4o3.99969881 87»0. 049 06 76 7 /j 3

0. 098 01 7ian30. J467304745U. 1 9S09032?00, 24298017990.29D28467730. 33688985340.3826834394J, 42755509340.47J 39673680.514 102 744 2

0.55557 23300.595*9930450.63439328420.67iS5d95480. 70710^781

2

0.74095H2S40.773 104534

).PA [R(

).PA][R<).PA] R<),PA1 RC

).PA][R().PA][RC.049()67).PA] RC

).PA][R()»PA':r().PA [r(),PA [R(

). PA [R(

) » PA [R().PA'IR<).PA][R()»PA [RC).PA rR().PA [R<).pa:[R(

).PA [R().pa [R<

», 99879).PA [R(). PA [RC).PA [R(),PA'[R(). PA [R(). PAi

f R(

).PA :R(),PA1 R(

).PA tR(

).PA] [ rC).PA ;R (

) .PA][R(

). PA [R() . PA [RC

).PA fR(,024«j4l)• PA [RC). PA [R().Pfl Ir(

)»PA [R(

). PA [ RC

) . PA ;r(

).P A !R<) .PAI.PC)»PA][R (

). PA [R(

).PA R<).PA1[R().PA [RC).PA !RC).PA :rc

).PA [RC

).PA [RC

).PA [RC

0.47139673684393284230104534192126^4

0,630.770.880.88192126^40.95694033570.9951847267i743) »67430.98917651000.9'

J8917651001.9700312532). 9415440652). 9039892931

0.42755509J40. 33688985340,2429801799,0.1467304745i0.049n676743,

-0.9039892931-0,941 S<"*0652-0.9700312532-0.9891765100-0.998795456222r S ),0.99729045670.9924795 3 46

0.98527764240.97570213000.96377606580.94952818060.93299279880,91420975570.89322430120.87008699110.844«5356530.817s848l320. 78834642 7'6,

0.75720884650.7242470830*0. 68954054^7:0.65317284300.6152315906

'0.8819212644'0,77301045340.63439328420,47139673680.2902846773'0.09A01 71403

0.14 6 7

0.24290.33680.4275U, 5 14l0.5956

).67l50.74090,80320.85770,9 39

, 9 4 1 5

0,97000,98910,9987

3n4?4s80179989853455093402744299304558954851 1254

7 5*152861 0089293144065?312 S 32

7651009S4562

0.980.97Uj940.900.8 5

0,800.7 4lJ .670.590.510.420.330,240.140. 04

0.070. 1?0, 17

0.210, ?60.310. 350,40.4 4

0,490.5 3

0.S70.6 1

0.650.680,720. 750.78

917651003125 3 2

1 5 a 4 06 5 2

3989293177?86]0032n7531509 5 1 125 4

1 558954856993045410274427585093468898^3429«ol I'!'*

*7^n4745906 76 74 3

3564241)9m91016712368198955241''6 11

98984 99 7

S8085231317?9540424772088346

5636675288 88240?75 7 5

7 4 0403653140329719226J99191459()6

8430544708308u654 2 7 6

00005^0000005*0000005«0O000059") •

0000600''000061 0^

0000620^00006 3 0^0000640000006SOO0000660O00006700000068 0^

O000690 A

0000700oooono^0000720 o

00 7.300

00007'tO 1

f) 7 s "•

00007<,0'^

0000 7 7 000000/80'^000079 i

0000800 i

01)08 1 oo,J 2 o

0000830 1

0008 4 ')

00 08^000000 8 60'-'

00008 '() 'I

08 8 0)00008900

9 )

000 09 1 0000009 ?on000 09 loo

9 % 1

00009s 0000009*0000 009 7 O"1

000 9 iOO

009900 01 on oo00010100

i ?. '

)

000103 0'-'

0001 04 oo

000108000010*00

000107001 ^

000109000001 10000001 1 100

1 1 2 r'

A5-

Page 60: A fast fourier transform subroutine for ILLIAC IV

PAIR : o.PAIR< o.

PAI R < 0.PAIR! 0,PAIR! : o.

PAlRl 0.PAjRl : o.

PAIR( 0,PAIRI 0.PAJR( 0.

Pair( 0.PAIR( 0,

PAJRI 0.

KAIFtc t •

PAIR( 0.PAIR< 0,PAIR [ o.

PAlRl o.PAlRl : o.PAIR ; o

#

PAIR ( o.

PAlRl 0.PAIR( 0.PAIRI 0,PAIRI : o.

PAIR< 0.

Pair( 0.

PAIRI• °.

PAIR : o.

PAIR< o.PAIR< 0.PAIRI : o.

PAIRI : o.

PAlRl 0.PAIR< 0.PAIR : o.

PAIR : o.

PAlRl 0.PAIR! 0.PAIR ' o.

PAIR [ o.

PAIR< 0.

P*l$\c 0.

#

PAIR t o.

PAIR) 0.PAlRl . 0.PAIRI ' o.

PAIR I o.

PAIR< 0.Pair! • 0.PAIR [ 0,PAIR ( o.

PAIR" : o.

Pair t 0.

PAIR t 0,PAIR C 0.

595699101555557023305l4l0274«2«7t 3 967 3 «A427555o9l43826«3«3?A336889*534290284^7732A298017091950903220U673oa74509fl0i71<»03049067*7430»0.0>,PAT999698*1*799879*545^299729 <»567

995184726799247953469891 76s ,n0985277A4?498o^85?8nA975^02l3n097003l? 5 3?963f76 n65A9569ao33s7949528^0694l54a 6s2932 9 9?7988923879539591420975S79039892911893224101288i921?6aa87o08699 1 \

857728^1008aa853s6s3831469ai?38i7584*i 72803207 S 31«.

78834642767 7 3 I 0/4 5 147572o8*4A«S7409 5 112 S

4

724247 n8lo7071067^126895405447671 5589 S4A653172A430634393?8426l523l59 n 6

59^699304^57580Hl9i455557o?3lO534997^1905l4l02 7442492898!9 ? p

0.80320753150.83146961230.85772861Q00.88l9212 6440.90398929310.92387953250,94154406520,95694033570. 97Q03125320. 98o78528o40.98917651000.995U472670.9987954562

(.9999247018.0.02454122850.04 9 6 767430.0^356456360.098oi7l4 3

0.12241067520.14 6 730474 50. 17096188880. 19509032200.21910124 20.2429801 7990.26671275750.29Q284A7730.31368174 4

0.33 6 88985340.35989503650.382^8343240.40524131400.42755509340.44961132970.47139673680.492898i9 ? 20,51410274420. 53499^61990.55557023300.5758o8i9i40. 5 9 S699304 50.61523159 6

0.63439328420.6531^284300.67155895480.68954054470.707l0678i20. 7242470^300.74095112^40.75720884650.77301045340.78834642760,803207531

5

0.81758481320.83l46961?30.84485356530.85772861000.87008699i

1

PAIRPAIRPairPAIRPAIRPAIRPairPAIRPAIRPAIRpairPAIRPAIR1227pairpairPAIRPAIRpairPAIRPAIRPAIRPairPAIRPAIRPAIRpairPAIRPAIRPAIRPairpairPAIRPAIRpairPAIRPAIRPAIRpairPAIRpairPAIRP AIrPAIR

PAIRPAIRPairPAIRPAIRPAIRpairPAIRPAIRPAIRpairPAIRPAIR

0.57560819140.53499761990.49289819220,44 96 1132970.40524131*00.35989503650.31368174040,26671275750.21910124020.17096188880.12241067520.07356456 3 60.0245412285

5383).0.99932238460.998ll8H 2 9

0.99631261220.99390697000.99090263540.98730141820.98310548740.97831737070.97293995220,96697647100.96043051940.95330604040, 9456o732&40,93733901190.92850608050.919H385170.90916798310.89867446570.88763962040. 87607009420.86397285610.85135519310. 8382247Q560.82458930280. 81045719830.79 583 6904 60.78073722860.76516726560.749i3639450.7 3 2 6542 7 l7

0.71573082530.69837624940.68060099780.662 41 5 77760.64383154290.624A5948810.6Q551104140.58579785750.56573181080.54532498840.52458968270, 503,3838370.4821837721

0,81758481320,84465356530.87008699110,89322430120.91420975570.93299279880.94952818060.96377606580.97570213000.98527764240.99247953460,9972904 5 670.9996988187

0.0368o72229# 613207363

0.08579731230. 11022220730. 13458o7o850,l 5 88, 814330. 18303988800.20711137620.23105810830.25486565960.27851968940.30200594930. 3253io29220.34841868020. 37131719400.39399204010.41642956010.43A61623850.4605387U00.48218377210.50353838370.52458968270.54532498840.56573181080.58579785750, 6 55 1104140.62485948810.64383154290.66?4i57776°.680600 99780.69837624940.71573082530.73265427170. 749l3*394 50.76516726560.78o73722860.7958369 460.8l04 5 7l9830.82458930280, 8382247o560.85135519310.86397285610,8760700942

•00011300'00011400•00011500.00011*00•00011700•00011800•00011900.00012000•00012100•00012200•00012300.00012400•0001250000012600

» 00012700.00012aOO• 000129QO•00013000•00013100.00013200•00013300• 00013400» 00013500•00013*00• 00013700• 00013*00•00013900•00014000» 00014100• 00014200• 00014300.00014400•00014500• 00014600•00014700•00014*0^• 00014900• 00015000•000151 00»0001 5 200•00015300• 00015400• 00015500.0001 ,*00• 00015700•00015*00» 000159QO.0001*000• 00016100• 00016200• 00016300.0001*400'00016500•00016600• 00016700.00016*00» 00016900

-I46-

Page 61: A fast fourier transform subroutine for ILLIAC IV

IRC 0,

IR ( o.

IR< 0.IR< 0.

IR( 0.IR : o.

lR< 0.IR< 0.

IR( 0,

IR : o.

IR< o.

lR< 0.IR( 0.

IR o.

IR< o.

I w

'

0.IRI o

f

IR 0.

I »< n.

IR< 0.Ap«(1.IRI ; o.

IR< o.

lR< 0.IR< 0,

I R L 0.

IR< o.

lR< o.

IRI 0,IR 0.

IR< 0,

IR ( 0.

IR •o.

I R r o.

IR ( o.

I ^ * 0.IR : o.

1 R [ o.

IR< 0.

lR ( 0.

IR [ 0,

IR : o.

I R< 0.

I R< o.IRI 0,

IR 0.

IR 0.

Ir' 0.

IR I 0.I 9 ' o.

IR [ 0,

IR t o.IR [ 0,

I R c o.

IR ' 0.

IR < o.

IR ( 0,

47t 396736844961 l 1297427555 n9344o524ni4o3 82 68 34 3 ?4359895n365336889853431368l74o4290284*77326671275752429801 799219101?4o21 9s°903??n1 7 o' 6 1*88 8

I a 6 7 3 o n 7 4 5

1 22410675?09fi0l7i4ol073564^636049067*743024541 ?2«*0,0,0) .PAT999924701

8

999698ft 1879993223*4*99879s'J 56?9981 t«1 1?999729(U5*799631261?299slH4/2^ jr

993906Q70099?479s3a6R9o9o?6 3S4989^ 7(S^1 009 8 7 3 01 'i 1 « ?

9852776 4-9 4

9831054874980785?*O'i07A J1737 7

«7570?1 loo97 ?9 39^5229700 3 1?s32966976

4

7tO96 3776 65H9 6 0^105 1949s*94033 s 7

95 3 3o* 4o49495?8i

8

6

9456o732S49«l544r, 6q; ?

9 ^7339o1 199329927^8892«5o6 n8o59?3a790?s91911 38S1 7

91420975S7909 16 798 3 1

903989? 9 "U

0.8819212644)0.89322430120.90398929310.91420975570,92387953250.93299279880.94 154406S20.949528i8 6

0,9569^033^70.96377606S80.97003125320, 975702l3oO0,98078528040.98527764240.98917651000,99 ? 4795346U.995l8^72 A 7

0,99729045670.99879545620.9996988187

( .999981 1753#0.01227153830.02454122850.03680722290.04 9 O 6 7 6 7430. 06132073630. 07356456360.08S79731230.09801 7Hn30.

1

1022220730. 12241067520. 13458070850.1 4 A f304 74

5

0. 15885814330. l7o°6l88880. 16303986800.19^09032200.2071 1 137620. 219 10124020.23105810830.2429801 7990.254*6565960. 26671275750.27851968940.29028^67730. 30200594930.31368174 4

0, 32531029^20.3 3*88985340. 3484l66«n20. 3598950365

. 3 7 1 3 1 7 1 9 4

0.38268343?40. 39 399204010.4 0524 13 1400.4l642956nl0.^275550934

).PA'[R()»PA][R().PA1 R<).PA1 R<).PA] R()»PA1 R(

)»PA] R<).PA] R<),PA1 R(

) # PA 1[R(

)»PA] r().PA][r().PA1 R(

)»PA][R()#PA] R(

).pai R<).PA1 R(

). PA 1 R(

)»PA1 r().PA] Rf

.0061 35>• PA1 R().PA] r(

).pa [R<).PA] R(

)# PA][R(

).PA]fR().PA1 R().PA1 R(). PA1 R(). PA] R().PA][r(),PA] R(

).PA1[R() . PA [r(

).PA] r().PA][R()«PA][R() . PA [R<).PA tR(),PA'[R(). PA 1[R()» PA [r(

).PA1!r().PA1'R()»PA][R(). PA [RC).P A r r (

).PA [R(

).PA [R(

).PA [R<).PA IR<),PA [R(

). PA [R(

). PA IR().PA [R<).PA [R(

0.4605387U00.43861623850.41642956010.39399204010.37131719*00,34841868020.32531029220.30200594930.27851968940.25486565960.23105810830.20711 137620.l83o3988H00. 15885814330,13458070850.11022220730.08579731230.06132073630.03680722290.0122715383

8846)*0.99983058180.99952941750.999 7772780.998475S8060,99772306660.99682029930,99576741450,99456457070,99321194920.99170975370,990058?1030.988257 Sft 770.98630809720.98421009240.98l963«69l0.97956976570.97702814270.97433938290.97150389100.9685 ? 209 4 3

0.96539444170.96212140*30.95870347490.955HH6830.95143502100.94758559100.94359345820.939459223 6

0.935l83S 99

0.93076696110.92621024210.92UH03930.91667905990.9H70603200.9 65957 45

0.9013488^70

0,8876398204)0.89867446570.90916798310.919H385170.92850608050,93733901190, 9456o732540.95330604040.960*3051940.96697647100. 97293995220,97831737070.983105*8740.9873ol4l820.99090263540.9939o697000.99631261220.99811611290.99932238460.9999?47ol8

0.01840672990.03067480320. 04^93825690,0 5519 524 4 3

0.06744391960.07968243800. 0919089565O,104l?l 6 3390. 1 1631863090. 12849811080, 14065823930.1 5?797l85 3

0. 1649 j 312050, 17700422040. 18906866410,201 104 ft 3480.21311031990,22508391140.23702360600.24892760570,2607941 1790.272*2l355S0.28440753720.296U088820. 30784964000.319502030«0.33llo63o580.34266071730, 35416352540. 36561299780.37700741020.38834504670. 39962419980.4 1084 317110. 42200027080.4330938189

00017000000171000001720000017 lot)

000174000001750O00017600000177000001 78000001790000018 0000001810OOOOi 820000018 30 1

018 4

00018S0O00 018*000001870'*00013*0°

1 8 9

1 9

00019]019 2

0001930^1 9 4

1 9 =S

0001960000019700000l9*0">0001990000020000000201 000002 0? On

0002030000204000002 05 On00020^.0''

00020 7 000002 08 000002090T

21O0O00021 1000002120O

021 3002142 1

s' n

000216OO0002170"0002] 800000219000002200000022100000222000O0223OO0022400

0002250000022^00

-kl-

Page 62: A fast fourier transform subroutine for ILLIAC IV

PA] R( 0,

PA] R : o.PA] R( o.PA] R< 0.PA] R I o

#

PA] R : o.

PA] R< o.PA] R ( 0.pA] R( 0,PA] R : o.

PA] R< o.PA] R< 0.PA] R( o.

PA] R : o.

PA] R< o.Pa] R< 0.PA] Rl °.PA][R t o.

PA][R< 0.PA] R< . 0.PA] R< 0,PA] Rl : o.

PA] R< 0.PA] R< 0,PA] R( 0,PA] Rl : o.PA] R< o.PA] R< . 0.PA] Rl

• °.PA] R [ o.PA] R< 0.PA] R< 0.PA j R( 0.PA] R [ o.

PA] R< 0.PA][R< . 0.PA] Rl : o.

PA] R : o.

PA] Rl 0.PA].Rl 0.PA] R I o.PA][R c o.

PA] Rl 0.PA][R t o.pa; R : o.

PA [R ( 0.

PA][R« ' o.Pa [R : o.pa; R I o.

PA [R < 0.PA [R 0.Pa [R ' 0.PA [R [ 0,PA [R ( o.

PA IP 1 o.PA IP f 0.PAj[R [ 0,

898674a6578932243012887639620488l 9 21?6/»4876°7°094?87008699]

t

8639728561857728610085l 3 551911844853565383822470568314696123824589302A817584A13?8l0457i9A38o320^S3i5r9 58369046788346^27678o737??A67730ln't5-U765l6^?656757208A46574913639^574095112547326542717724247f>«307l5^30«25 3

707106781269ft37 624g4689540S4fl768 600997867i558o54866? a U7776653172«4^643«31S4?9634393?8a?624fl596Afll615231^9 6

6055llo4ia595699^045585^97«575575808i9i4565^31Rlo«55557o?3in5 4 s 324 fl fl a

53499761995245B9*8?751410274^2503^383837492898 i9?248?18377?147139673^84605 3 8 7H044961 1129743«616?385427555o9^441^429^601

0,4386162385)0t44961132970.4605387U00.47139673680.48218377210.49289819220.50353838370.51410274420.S2458968270.53499761990.54532498840.55557023300.56573181080.575808l9j40.58579785750.59569930450.60551104140.61523159 6

0.62485948810.63439328420.64383154290.65317284300.66241577760.67155895480.68060099780.68954054470.69837624940.707l0678i20.7l573082 S 3

0.72424708300.73265427^70. 74095112540.7 a 9l3 6 394 50.75720884650.76516726560.77301045340.78073722^60.78834642760.79583690460.80320753150.8104 5 719830.81758481320.82458930280. 83l46961?30.83822470 S60.84485356530.85135519310.85772861000,86397285610.870086991 1

0.87607009420.88192126440.8876 3 962040.89322430120.89867446570.90398929310.9091679831

).PA] R(

>-PA][R(J. PA] R().PA] RC)*PA][R()»PA][R().PA] r R().PA][R<>.PA1 R()*PA]:r(

).PA1[RC)»PA1tR<)»PA] R()• PA],R(). PA][Rt).PA1[R<).PA] R(

).PA'[R().PA'[R<).PA][R<>,PA] R(

). PA][R(

)»PA][R<).PA][R<).PA] R(

).PA][R().PA][R<).PA [R<)»PA]!R(>. PA 1fR()• PA][R<).PA]:r(

).PA] R(

)»PA][R()»PA1[R<).pa [R<).PA] R(

)»PA]IRC)#PA][R<).PA [R<).PA][R()»PA [R() • PA 1[Rf

).pa [R<).PA1[RC).PA [RC). PA [R<

).pa [R<).PA1[RC

1. PA [RC) . PA [RC

).pa [r().PA [RC

)»PA [RC

).PA IRC).PA IR<).PA [RC

0.8959662^980.89044872320.88479709840.879oi222640,87 3 094978*0.86704624550,86086693860.85455798840,848120344s0,84155497740,83486287500.828o4504530,82U02 5 1500.81403632970.80684755350.79953726910.79210657730,78455659720,77688846570.76910333760.76120238550.75318679900.74505778540.73681656890.72846439040.72000250^00.71143219570.70275474450.69397146090. 68508366780.676o927o360. 66699992230.65780669330.64851440100.63912444490.629^3823890.62005721180. 6103828o630.60061647940.5907597 19

0.58081395810.57078074590.56066157620.55045797290.54017147270.52980362470.51935599020.50883014250.49822766700.48755016010.47679923010.46597649580.4 55083 5 87l0.44412214460.43309381890.42200027080.4108431711

0.444122U46)0.45508358710,46597649580,4767992301°.*87550l 6°l0,49822766700.50883014250.51935599020.52980362470.54017147270.55045797290.56Q66157620.57078074590. 58081395810.59o7597oi90.600*1647940,6l03 8280630.62005721180.62963823890.63912444490.64851440100.65780669330.66699992230.67609270360.68508366780.69397146090.702754744^0.71143219570,72000250800.72846439040.7368i656890.74505778540.753U679900.76120238550.76910333760.77688846570.78455659720.79210657730.79953726910.80684755350.8l403 6 32970.82110251500.82804504530.83486287500.84155497740.84812034480.85455798840.86Q86693860.86704 624 5 5

0.87309497840.87901222640.88 479 7 098 4

0,89044872320.89596624980.90134884700.90659570450.9117060320

000227000002280000022900000230000002310000023200000233000002340000023500000236000002370000023800000239000002400000024100000242000002430O0002440000024500000246000002470000024800000249000002500000025100000252000002530000025400OOO255OO0002560000025700000258000002 5900000260000002610000026200000263000002640000026500000266000002 6 70000026800000269000002700000027100000272000002730O00027400OOO275OO000276000002770000027800000279000002800000028100"1002320000028300

-48-

Page 63: A fast fourier transform subroutine for ILLIAC IV

P*PAPAPAPA

PAPAPAPAPAPAPaPA

PAPAPaPAPAPAPaPA

PAPAPaPA

PA

PAPaPAPAPAPaPAPA

r1

PaPA

PAPAPaPAPA

PAPa

PAPAPAPaPA

PAPAPaPAPA

PAPA

PA

I R < : o.

IRI o.

IR< o.

Ir( o.

IR( 0,

IR( o.

I r( o.

Ir< o.

IR( 0.IRI ; o.

lR< o.

IR< • 0.IRI 0,

IR : o.

IR< 0.

IK'' 0,

IR [ ot

IR ( 0.

IR< . 0,

IR t 0.

IR [ 0,

IR C 0.

IR< 0.

Ir< 0.

IR [ 0,

IP [ o.'

IR ' o.

IR ' o.

IR 0,IR I o.

lR (: 0.

IR 1 0.

IR ' °.IR ! 0,

Alt<( 1.

I R ( 0.

IRI 0,

IP [ o.

IR< o.

IR ' 0.

IR : o.

IP : o.

IR< • o.

IR 1 0.

IR ; o.

IR ' o.

I R< o.

Ir< 0.Iwi o

#

IR ; o.

IR< o.

Ip< 0.IR

• °.IRI o.

IR< 0.IR c o.

I R< - o.

.005201 il 40

.393V92oAnl, 3fl?683a3?'i.3M3l7i9ao.359895^65,3O*01868n2. 336889*530.3253107922.3136817^04, 30200590Q3.2902806773.2785196894,7 6 *?12757S. 2508656596.2029801 /Q9,23l05»i0M,2l9l01?4o7.20/1113/62. 19^09032?0. 183039a8«o,170961 n*fl*

. I5*858i033, 106/30 '4 /05. 13o58o70*5,127A10^ 7s 2

. 110222P073

.09A0171 403,0*5/9731?3.073«j6«s636. 0613207363, 049067*7/13. 036«or???9,024t,4l22ftcS

.0172715 3*3

, 0» 0* 0)

.

PAT.999981 ^7S3

#9Q997U 7 o\ a

.999830S81P,999698m«7, 999529 a 1 7 5

,9993273*0*. 9^90777278,998/95 4 5*7.998075s8 6

,99*1 1*1 1 ?9.9977230666,9972904567,996H?o?9Q3,996 3 1 2 61??.995/67/, |(S,9951807267,99o560S7p7,9939n h o700,99321 1Q40?,992479s3'i6,991 7097^^7,99o9o?*3<>0

0.9U20975570.91911385170.92387953750t928506o8o50.93299279R80.9373390H90.94J54406520.94560732540,94952818060.95330604040.95694033570.96043051940.96377606580.9669764710.97003125320.97293995220.97570213000.9783l737o70.98078528040.98310548740.9852776^?^0.98730141820.98917651000.99 90263540.9924 7 9 53o 60.99390697000.99518072670.99631261220,99729045*70.99811811290.99879505620.99932238460.999*9881*70.9999207018

( .9999952938.0.00613588/(60.01227153r30.01840672990.02050122850. 03067080320.03 6 h0722290.00293825690.009o67h7o30. 05519520430,06132073*30. 06700391960.07356056360.07968203*00.08S79731230.0919089565U.09801/14030. 100 12163390.11022220730. 11631863090. 12201067520. 1280981 1080. 13458070R5

PAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRpairPAIRPAIRPAIRpairPAIRPAIRPAIRpairPAIRPAIRPAIRPairPAIRPAIRPAIRPairPAIRPAIRPAIRPAIRPAIRPAIR

00306pairPAIRPAIRPAIRpairPAIRPAIRPAIRpairPAIRPAIRPAIRpairPAIRPAIRPAIRpairPAIRPAIRPAIRPAIRPAIR

0. 39962419980,38834504670.37700741020.36561299/80.354163525*0.34266071730.33110630580.31950203080.307A4964000.29615088820.28440/53/20.2/262135550.2*079411790.248927605/0. 23702360600.225n839ll40.21311031990.20110463480. 18906866410. 17/00422040,16491312050. 15279718530. 14065823930. 12809811080.U631863090. 10412163390.09190895650.0/968243800.06744391960.05519524430.04293825690.0306748o320,01840 6 72990.0061358846

9568).0,99995/60460.99988230750.99976940530.99961882250.99943060460.99920475860.99890129320.99860021820.99830150490,99792s28620.9975U05610.99706007030.9965/110580,996044/0090.995480/5550.99487933080.99420000950.99356413550,992*5001450.99209931310.99131085980.9900850803

0.91667905990,92151403930.92621024210.930/6696110,935l *350990.93945922360.94359345820.94758559100.95143502100.95514116830.9587n347490.96217140430.9653 9444170.96*52209030.97150389100.9743393828O.977O28IO270.97956"76570.98196386910,98421009200.986 3 0R09720.98825756770.99005821030.99i7o975370.9932U94920.99056457070.99576741450.99682029930.9977?30 6 660,99*47558060.999077727A0.99957941750.99983058180.99998U753

0.00920.01530.02140.02760.03370.03980.04600.05210.05820.06430.0/050.0/660.082/0.08880.09090. 10100.10/10,11320. 1 193

0. 12540.13150.1376

03/50*39206370080308105*01 1719729276031821317007582605R26309045730738610002605S3552663095369862*72025070952265210*54 93 34000287701216

00028400000285000002860")0002870O00028*00

2 * 9 '>

0002900O0002910^00029200000293000002940^0002950^00029*0000 029 7 0''

00029A.OO0002990000030000000301 OO

000307000003030000030000000305000003060O0003070-1

00030a0O0003090' 1

310 0000031 10-5

000312000003130O0003100000 315

00031 6 000003170O

31*000319

000320000003210O0003220O00032300000320000003250O000326000003270000032*0000032900

3 3

000331 000003370000033300000334000003350O00033*0000033700000338000003390000030

-k9-

Page 64: A fast fourier transform subroutine for ILLIAC IV

PA] Rl : o.PA] R< o.PA] R< 0.pA] R< 0.PA] Rl 0.PA] R< 0.PA] R< 0.PA] R< 0,PA] R( 0.PA] R< 0.PA] R< 0.PA] R( 0,pA] Rl o.

PA] R< 0,PA] R< 0.PAJ R( 0,PA] Rl 0.PA][R ( 0.PA][R< 0.PA] R( 0,pA][R 0.PA]lR 1 0.P A] R ( 0.PA] Rl 0,PA] Rl 0,

PA]IR 1 0.PA][R< 0.PA][R t °.PA][Rl : o.

PA][R ( 0.PA][r< 0*PA] Rl 0,PA][Rl [ o.PA][R< 0.PA] ;r ( 0.PA][R : o.

PA] Rl ; o.PAj :r< o.PA][r< 0.PA] Rl : o.

PA][R : o.

PA] :r' 0.PA :r< 0.PA][R ; o.

PA [R c o.

PA :r< [ 0.Pa [R (

: o.PA][R [ o.

PA [R ( o.

PA [R< 0.Pa [R ' 0.PA [R c °.PA IR ( o.

PA IR f 0.Pa [R t 0.PA [R c 0,PA [R I 0.

99005fl?lo39891765100988257*67798730U1A2986308n97298527764?49842l00 9 ?4983l05aer«981963A6Q1980785?8n«97956976579783173707977028i4?7975702130097433938*8972939g«5?297l5o3A9 1097o03l?5l29685?2 9 a3966'76«7109653944417963776 6S896?1214043960«30 s l<j4

95Bro3u7n99569ftn3^S7955HH6839533060 a oa9514350210949528jflo6947585s9 109^560732 s a

943593a5A29ai544n6S2939459 ? 23A937339^119935183S0O9932"27 ,'A8930 7 6* <»61 1

9285°6080592621024?!923879S3?592l5Ho39391 Ql 1 3

fl f5l 7916679 S09<'ia20975«»79 ll 7 o6n3?n909l<s7Q83190659570459039«9p9M9ot348«47o89867**6*789S966?40«893224301289o44«723?887639*204884797o9A4

0,14065823930.14673047450.15279718330.15885814330. 16491312050. 17096188880.1?700422o40,18303988800. 18906866410.19509032200.20110463480,20711137620.21311031990.21910124020.2250839H40.23105810b30.23702360600. 24298017990.24892760570.25486565960.26079411790.26671275750.27262135550.278519689^0.28440753720.29028467730.29615088A20.30200594930.307849640. 31368174040.31950203080,32531029220.33110630580.336A8985340. 34266071730.34BM86H020.35416352540.35989503650.36561299780,37131719400.3770074l 2

0.38268343940.38834504670,39399204010. 39962419Q80.40524131400.4i 843l7il0.41*42956^10.42200027o80.42755509340.43309381890.438 6 l62 3 850.44412214460.4496H32970.45508358710.4605387M00.4659764958

PAIRPAIRpairPAIRPAIRPAIRpairPAIRPAIRPAIRpairPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPairPAIRPAIRPAIRPairPAIRPAIRPAIRpairPAIRPAIRPAIRPairPAIRPAIRPAIRPairPAIRPAIRpairpairpairPAIRPAIRpairPAIRPAIRPAIRpairPAIRPAIRPAIRPAIRPAIRPAIR

0.98962201^50,98872169200.98778414160.98660940180,98579750'20,98474850180,98366241920,96233930230.98137919330.98018213600.97894817530,97767733780.97636973130,97502534510,97364424970,97222649710,97077214070.96928123540.96775383710.96619000340.96458979330.96295326690.96128048580.95957151 31

0.95782641300.95604525130.95422809510.95237501270.95046607390.94856134990. 94660091310,9^*60483730.94257319760.94050607060.9384Q353410,93626566720,93409255040.93188426560.92964089580,9273*252560.92504924080.92270112830.92031827670,91790077560.91544871610,91296219040.91044129230.907886H650.90529675930.90267331820.90001589200,897324 58070.89459948560.89l84o7o940. 889o4835580,88622253010.8833633387

0. 14369503320. 14976453470.13582839770,16188639360.16793829500.17398387340. 180022901*O.I86O55I5I70.19208039700,19809841070,20410896610,21011183690,21610679710.22209362100.22807208320,23404195860.24000302240.24595505030.25l8978i820,2 5783110220.26375467900.2696*832560.27557l8i930.281*6493790.28734745950.29321916270.29907982630.30492922970.3107*715270.31659337560.32?4o767880,32820984360.33399965140. 33977688440.34554132500,35129275610.35703096120.36275572440.36846683000.3741*40*300.37984720890.38551605380.391 17038430.39*809987*0.40243465090.40804416290.41363831220,41921*88840.42477968120.43032648130.43585707990,4413712*870.44686884020.45234958720. 45781330360,4 632q978360.4686888220

0003410000034200000343000003440000034500000346000003470000034^00000349000003500000035100000352000003530000035400000355000003 5 6000003570000035800000359000003 6O0O00036100000362000003630000036*0000036500000366000003670O00036800000369000003700H0003710O0003720O00037300000374000003750O00037*00000377000003780000037900000380000003810000038200000383000003840000038500000386000003870000038AOO00038QOO0003900000039l0n0003920000039300000394000003950O00039*0000039700

-50-

Page 65: A fast fourier transform subroutine for ILLIAC IV

IRC 0,

IR c o.

IR< 0.iRl 0.

IR o.

IR [ o.

IR< 0.

IRl k o.

IR ; o,

IR ' 0.

IR< 0.

I R ( 0.

IRI • 0,

IR [ o.

IRl . 0.

lR< 0.IRI o

,

IR ! o.

IR' . 0.

1 R< 0.IR [ 0,

IRl ; o.

IR< 0.

lR< 0.IR 1 0,IR [ o.

§

IRI 0*

lR ( 0.IR( o.

IRI 0.

IR< 0.

lR< 0.

IRI> °.

IRI ' o.

lH< o.

I ('< 0.

IRI 0,

IRI o.

I t?< 0.

I P< 0.

IRI 0,IR : o.

I P< 0.

Ir< 0.

IRI ot

1 Rl o.

lR< 0,

I R ( 0.

IRI#

IR ' o.

lR< 0.

lR ( c.

I R ' 0.

IR ; o.

IRl 0.

lR< 0.

IR( 0,

881 92126448790129264876070o942873094978487008*991186704694S586397285618608669386857(r?8*10n854557QB8485135519^164812014488«4«53s6s384j5549774838224705683486?«75n83l«6Q 6 l?3fl?8o45o453824589io?H821 102M*081 7584*1 12814036129781 o457 1 9«i8 6tt47c,5l5

803207^31 S799537t>69179S8369046792106^7717883^ ft42767R4556597976o7379?86776888 /j 65 7

7730104^14769103137676 5 167?6*676l20?l8s57 5 7208<^6S7531867990749 136i9/m7450577854740951 1 ?s a

7368 16568973?65a27i7r?8464l9 n 4

724247n8lo72000^50807 15' 30*2*37ll432l9c;770/10*781

2

702^54744^698376^49469 397l46o9689S40 S 44 7

6850*336678680600997^6760927036671 55895^8

0.4713967368)0.47679923ol0.48218377210.48755016010.49289819220.49822766700.50353tt3«370.50883014250.5U10274420.51935599020.52458968270.52980362470.53499761990.5401M47270.54532498840.55045797290.55557023300. 56066157620.565731810B0.57 78o74590,57580819140.580^1395810,58579785750.59 7597 19

°. 595699304 50.60061647940.60551104140. 61038280630. 6 l S231 59O60.62005721180.62485948810.62963823H90.63439328420.6 39 1 24 4 4 490.6438315499U. 6485144 0100.6531 7284300.65780669130.6624157776U, 66699992230.67155895480, 676 09 27 0160.68060099780.68508366780.6895^054470. 69397146090.69837624940.70275474450.70710 6 78120.71 143219570. 71573082530.72000250800.72424/08300.72»46439o40.73265427t70.73681656890.74095H2e;4

>»PA [R( 0.

)»PA1[R : 0.

).PA][R< 0.).PA][R< : 0.).PA][Rl: 0,)»PA][R [ 0.

)• PA][R< 0*).PA [R< : 0.).PA] Rl : 0,)»PA][R [ 0.). PA][R< 0.

).pa [R ( 0.).PA] Rl : 0,

>• PA ][R ; 0.

).PA][R< : 0.).PA][R< : 0.) .PA][Rl ' 0,).PA][R : 0.). PA tRl : 0.

).pa [R< 0.).PA][Rl: 0,

>»PA][R : 0.) . PA [Rl ' 0.).PA :r< 0.),PA [R : 0,

)» PA][R [ 0.

) . PA [R< ' 0.).PA][R< . 0.).PA] R( 0,)»PA] Rl

r 0.) . PA'[Rl 0.).PA] f R< 0.

).PA][Rl : 0.)»PA]'Rl : 0.

) . PA 1[R( 0.).PA] r

R< 0.).PA] Rl : 0,

). PA]'Rl :o.

) . PA][R< 0.

).pai[R< 0.

).PA][Rl [ 0.).PA][R : 0.) .PA [R< 0.).PA [R<

' 0.

) .PA][Rl : 0,).PA][R : 0.). PA][R< 0.).PA :r< 0.

).PA] r RI [ 0,

)• PA][R [ 0.

) . PA [Rl ' 0,).PA][R< 0.).PA][R [ 0.

)• PAj[R : 0.

).PA][R< . 0.).pa [R< 0.

) .PA] PI: °.

880470889187754529028745866523871595086786857070608655136241862423956185930181848561*732848529606049849741768084649q93888432082396839893794283654772^28331^0164782976123388263210628822849781481934752018158144108812250586680865618168o5o3l33U80l37 6 l7l779769084097939754776790230221478645521 3 6

78265059627788165124774953106677106052437671 3891 19

76318841 73759209l8975S?013769751165131974710060607430079521738887324^734738878173056276^272635915517221281939717870045171358486887092728264704q34080470056879396961771315691759258468731534096828455464678350043167382900046692825883

0,4741002146)U. 47949375770,48486924800.4902264833U. 49556526180.50088538260.50618664530.51146885040, 5l673l79900,52197529290.52719913480.5324o312790.5375*707630.542^5078490.54769405920. 5530l67o560.55811853120.56319934400,56825895270.57329716670.57831379640. 58330865290.5882R154820.59323229500,59Rl6 n 70700.60306659850.60794978500.61281008240.61764730790.6224612794U. 62725181550,63201873590,63676186120,6 4 148 101280,64617601300.65o84666500.65549285300.66011434210.6647io97820.66928258830,67382900040.67835004310. 68?84554640.68731534090.69175925840,69617713150.70056879390.70493408040.70927282640,71358486880. 71787004510.72212M9390,72635915510.730562^6920.73473887810.73888732450,7430079521

00039800000399000004000^000401000004020000040300000404000004050O00040*0^000407000004080^0004090O000410 00

000411000004120"000413000004140c000415000004160O

0417000004 1 ^0"0004190C.00042000

4 2 1 *

04 22042300

000424000004250O0004260000042700

04 ?8 0o00042900004 300

o

0004310004 3 2

004 33 000004340O0004350O0004360000043700

4 3 q 1

'

000439QOO0044O0O0004 4 1 00004 4 2 00

0004430

n

0004440''0004450O00044 f.

On

0004470000044800000449000004500000045100OOOC520O0004530000045400

-51-

Page 66: A fast fourier transform subroutine for ILLIAC IV

PA] RC

PA][RCP A] r(PA] R<PA] R(

PA][R(PA] R<

PA] R<PA] R(

PA]tR(PA] R(Pa]iR (

PAI R(PA] R(

PA].RCPA] R<PA] R(

PA][R(PA][R<PA] R<PA] R(

PA];r(PA][R<PA].R<PA] R(

PA][RCpA] r RCPA][R<PA]lR(

PA-[RCPA]:r<PA R (

PA][R(PA][RCPA [R<Pa [R (

PA][R(

PA [R(PA [R<Pa :r<PA][R(

PA [R(

PA ;r(PA [R<PA [R(

PA [R(PA :r<Pa lR<PA [R(

PA [R(PA [RCPa [R<PA [R(

PA IR(pA [R<PA IRCPA IRC

0.66699992 2 3

0.66241577760.65780669^30.653172AA300.6*851*40100.64383154?90.63912^44490t634393?B42°.6 2 96 3 «2 3 A90,624859a8Al0.6200572H80.61«523159 6

0.61038280^30.6055llo4140.60061647940.595699^0450,59075970190.585f97857S0.58081395810. 575808^,40,57078074^90.565f3lMo80,56066is76?0.55557o?3300.55045797200,54532498840.540l7ur?70.53499761990,529803^2470.524589*8?70,5l935599n20.51410274420,508830142 50,50353838^70.49822766700, 492898^20,48755016010.48218377210,476799?3010.47i3967368°.4 6S976"9 S 8

0.46053871100.455083S8710.4496in2970,44412214460.438616?3850.43309381890.427555 n9340, 42200027080.416429s6nl0.4l0843l7u0.405241 31400,3996^419980.393992n4ol0, 388345o4A70.38268343?40,3770074102

0,74505778540.74913639450.75318679900.75720884650.76120238550.76516726560.76910333760.^^301045340.77688846570.78073722860.78455659720.78834642760.79210657730.79583690460.79953726910.8o320 7 53i50.80684755350.81045719830.81403632970.8175848132O.82HO25I5O0.8245893o?80.82804504530.83146961230,83486287800.83822470860.84155497740.84485356530.8*8l20344 80.85135519310.85455798840.85772861000.86086693« 60.86397285810.86704624550.87oo8699u0.873094978*0.8760^009420.87901222640.8819212&440.88479709840.88763962040.89044872320.89322430120,89596624980,89867446570.90134884700.9Q398929310.906595704 50.90916798310.91170603200.91420975570.9l66790 5990.91911385170.92151403930.92387953250,9262102421

PAIRPAIRPAIRpairPAIRPAIRPAIRPairPAIRpairPAIRpairPAIRPAIRPAIRPairPAIRPAIRPAIRPairpairPAIRPAIRpairPAIRPAIRPAIRPairPAIRPAIRPAIRpairPAIRPAIRPAIRpairPAIRPAIRPAIRPairPAIRPAIRPAIRpairPAIRPAIRPAIRPairPAIRPAIRPAIRpairPAIRPAIRPAIRPAIRPAIR

0.66471097620,66011434210.65549265300.65064668500.64 6l760l300.64146101280.63676186120.63201673590.62725l8l550.62246127940,61764730^90.61261006240,60794976500.60306659850. 59816070^00.59323229500,58828154820.58330865290.57831379640.57329716670.56825895270,56319934400.558H853120. 5530167Q560,54789405920.54275078490.53758707630.53240312790,527l99l34 8

0.52197529290,51673179900.51146885040.506186645 3

0.50088538260.49556526180.49022648330.48486924800.47949375770.47410021460,46868882200.4 6 32 5978360.45781330360.45234958720.44686884020.44137126870.43585707990.43032648130.42477968120.4192U88840.41363831220.40804416290.40243465090,396809987*0.39117036430,38551605380.37984720890.37416*0630

0,74710060600.75116513190,75520137690, 7592q9189o0. 763l88*l730,76713891190,77106052430,7749531066°. 77881651240,76265059620.78645521360.79o23o22140.793975*7760.79769084090,80137617170.80503133110.808656l8l60,81225058660,81581441080,81934752010.82284978140.82632106280.82976123380.83317016470,83654772720,83989379420.84320823960. 84649o93880.8*97*176800.85296060490.85614732840.8593ol8l840.86242395610.86551362410.86-8570^0600.87159508670.87458665230,87754529020,88047088910.88336333670, 8 86222 53010.88904835580.89l84070940.89459948560,89732458070.90001589200.90267331820.90529675930.90788611650.91044129230.91296219040.91544871610.91790077560.92031827670. 922^0112830.92504924080.9273625256

000455000004560O0004570000045800OOO459OO0004600000046100000462000004 6 3000004640000046500000466000004 6 70O0004680000046900000470000004710000047200000473000004740000047^000004760000047700000478QO0004790000048000000481QO000482000004q300000484000004850000048600000487000004880000048900000490000004910000049200000493000004940000049^00000496000004970000049*0000499000050000005010000502000050300005040000505000050600OO5O7OO005080000509000051000OO5IIOO

01

0(

0(

0i

-52-

Page 67: A fast fourier transform subroutine for ILLIAC IV

IRI o.

IR( 0.

IR< 0.IR( 0.

IR( 0,IR( 0.

IR< 0.

lR< 0,

IR< 0.IR < o.

IR< 0.

lR ( 0.IRI 0,

IR . o.

IR< 0,

lR< 0.IR( 0,

IR [ 0.

IR< 0.

IR . o.

IR : o.

IR [ o.

IR< 0,

I rI 0.IR ; o.

IR : o.

IR< o.

IR [ o.IRI ' 0.IR [ o.

IR ( 0.

Ir< 0.IR : o.

IR [ o.

IRI . 0.

Ir : o.

IRI ' o.

IR ( o.

IR< o.

I R*' 0.

IR : ot

IR { o.

I R< : o.

I P f o.Ik [ o

t

IR c o!

IR< ' 0.

I w ' 0.

IR [ 0,

IR ( o.

I R [ 0.

IR ( 0.IR 1 °.IK ( o.

IR t o.

IR ( 0.

IR [ 0,

371 3171 9^03656129978359895o3653541635254348413*80?3426607173336889*534331 1 06 30Sft

3253109922319502n3o83136817^043078496430200c

s q4q329615088*2?9o284*77328«4o7S3722785*9*8942726213SSS26*712757526o79au79^5^656596248927*0^724?98oi 799237023606023lOs8lO«32 25 08 30 1 14

219101240?2 13110 319 9

20711137*2201 104* 3 4

8

19509032?01*9068*6411 83039«8R0177004?204l7()96188Rfl1649131 2o51588581433152797,8531 4 6 7 3 1\ 7 n 51«065*239-*134 bH o

7.O fls

1 28498, \ 0*122410675?116318*3091 102???0 7 3

1041216339098017140309i9q8q5*s08s79731?307968243ftO073564s6^6067443919606l320 7 3 f 3

0551952443049067*7a3042 y 38?56903*807?2?9

0511

8899

193652

0.928506080.930766960.932992790.935183500,937339010.939459220.94154406,0.94359345820.94560732540.94758559100.949528l8 6

0.95i435o2lO0.95330604040.95514U6830.95694033570.95870347490.9 604 30«jl9<»

0.96212140430.96377606580. 96539444170. 966976^7100.96H52209430.97003125320.97i50389 100,97293995220.97433938280.97570213000.97702814270.97831737070.97956976570.98o78528o40.98196386910.983105487^0.98421009240.98527764240.9863080^720.98730141 8 2

0.98825756770,98917651000.99 05821n30.990902*3^40.99170975370.99247953460.99321 194920. 99390*97000.99456457o70.99518472670.99576741450.99631261220.99682029930.99729045670.99772306*60.998H811290.99847558o60.99879545620.999 7772780.9993223846

PAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRP AIRPAIRPAIRPAIRpairPAIRPAIRPAIRPAIRPAIRPAIRPAIRPairPAIRPAIRPAIRpairPAIRPAIRPAIRpairpairPAIRPAIRpairPAIRPAIRPAIRpairPAIRpairPAIRpairPAIRPAIRPAIRpairPAIRPAIRPAIRPairPAIRPAIRPAIRpairPAIR

0, 36846683000.36275572440.35703096120.35129275610.3455*132500.33977688440.33399965140.32820984360,32240767860.31659337560,31076715270.30492922970,29907982 630.29321916270,28734745950.28146493790.27557181930.26966832560.26375467900.25783110220.2 5 l8978l820.24595505030.24000302240.23404195860,22807208 3 2

0.22209362100.21610679710.21011183690.20410896610. 19809841070.19208039700.186 5515170.18002290140.17398387340.16793829500. 16188639380.15582839770. 14976453470. 14369503320. 13762012160,131^4002870. 12545498340.11936521480.11327095220,10717242500. 10106986280.09496349530.08885355260.08274026 4 50.07662386140.07050457340.06438263090.058?58?6450. 05213170470.04600318210.03987292760.0337411719

0.92964089580,93188426560,93409255040.93626566720,93840353410,94050607060.94257319760,9446o483730,94660091310,94856134990,95048607390.95237501270.95422809510.95604525130.95782641300.95957151310,96128048580,96295326690.96458979330.96619000340.96775383710.96928123540. 97077214070.97222649710.97364424970,97502534510.97636973130.97767735780,97894817530.98018213600.98137919330.98253930230.98366241920.98474850180.98579750920.9868o94ol80.98778414160.98872169200.98962201750.99048508430,991 31085980.99209931310.99285041450.99356413550,99424044950.99487933080. 99548075550.99604470090.99657114580.99706007030,99751 145610.99792528620.99830154490.99864021820.9989ai29320.99920475860.999430604*

)»00051?00)»00051300)» 00051400)»00051500).0005l600)»0005170n)»00051800)'00051900)#00052000)»00052l0n)» 0005220O)» 00052 3 00)#00052400)»0005250O)» 00052600)«000527QO)»000 52rOO)» 0005290C) • 0005300U)• 0005 3100)»00053200)» 00053300)» 00053400) * 00053500) .00053*00)»0005370o) '00053800) » 0005390'1) #0005400^)» 00054100)» 00054200) * 00054300) .000544 00)» 00054500) » 000546 00)• 00054700) .00054^00)» 0005490O)» 00055000) » 00055100). 000 55200)• 00055300)» 00055U0O)»00055500)»00055*00)» 0005570O)»00055800)• 00055900) .0005*000)» 00056100)»0005620O)*00056300) .00056400)»00056500)» 00056600)» 00056700)«00056800

Page 68: A fast fourier transform subroutine for ILLIAC IV

PA] R( 0,PA] R( 0.

PA] R< o.PA] R ( 0.PA] R( 0,HUS (1.ft\\R ( .9

PA] r( 0.PA] R( 0,

PA][R( 0.

pAJ r< 0,PA] R ( 0.PA] R( 0,PA] R( 0.PA]iR< 0.PA] R< 0.PA] R( 0,PA] R( 0.

PA [r( 0.PA][R C 0.PA] R(

#

PA] R( 0,

PA] R ( 0.PA][R ( 0.PA][R( 0,PA] R( 0*

PA][r( 0.Pa] R< 0.PA] R( 0.PA] R( 0.

PA] RC 0.Pa] r< 0,PA [R( 0,PA] R( 0.

Ki[R< 0.R< 0.

PA] R( 0,

PA]tR( 0.

PA] rC 0.PA]Lr ( 0.PA] R( 0,PA [R( 0.pA];r( 0.P A] R ( 0.PA][R( 0,PA [R( 0.

PA :r< 0.Pa :r ( 0.PA][R( 0,PA [R( 0.

PA [R< 0.Pa [R ( 0*PA [R( 0,

PA [R( o.

PA IR< 0.PA [r< 0,PA [R( 0,

030674*032024541228501840672990122^1538300 6 13 5flfl 4 60»0»0). PAI999952938.999989ft! \

\

999970^8*499994234979999Q4701

1

999857*410999801 1 6<J999973528*399965999*799957529m999 4 8ll 870999377*7 4

999264747399Q1424187999010^859998869S4999987l9 0l ?2998559 n 7/4 2

998 3 897374998211n034998022«73899782535049976l843 s l

997402129999717643*7996941 357899*69*fl9^299*443o5l499*1 79p?«*9959o7?29499 S 625?5* fl

99533391?!995033199a99^7231 21

1

994403^801994074^793993^367219993389 ?11199303?3 s n2

992666i4?599?29059i3^919057004991 5IH73399H07913799o695o25499 272«1?4989841?7859894004278988950?A<|5

98849o79?998802?nl7l

0.99952941750.999*9881870.99983058180. 99992470180, 99998117s 3

R(. 9999988235*0030679568).0.00460192610.00766982870.01073765920.01380538850.01687298790.0199*042860.02300768150.0260^471780.02914150880.03220802 54

0.03527423890.03834012Q40. 04140564100,04447077190.04753548^20.05059974900.05366353770.05672682120.05978957o70.06285175760.06591335?80.0 6897*32 760.07203465320.07509430080.078l5324i60.08121144^80.08426888760.08732553520.0 9 038l36oV0.09343*33 S 8

0.09649043140.099543*1870.10259586900.10^*471 S 370. 10869744400.1117467U20. 11479492660, 1178*206150. 12088808720. 12393297510.12697669650.13001922?70. 13306052520.13610057S20, 13913934420.H2176803 50. 14521292470. 14824767900.15128103800,1543129730

• PAIR• PAIR• PAIR» p AlR.PAIR00153

0.0276061456.0.0214740603.0.0153392063.0.00920375*8.0.0030679568.

39802).

•PAI.PAI

.PAI• PAI.PAI.PAI»PAI.PAI•PAI.PAI.PAI. PAI.PAI.PAI.PAI• PAI.PAI.PAI.PAI.PAI.PAI.PAI»PAI.PAI.PAI.PAI.PAI

:ti\.PAI

.PAI»PAI.PAI.PAI.PAI. PAI.PAI.PAI. PAI. PAI.pai.PAI. PAI»PAI.PAI.PAI

»PAI. PAI.PAI.PAI

0,99131085980.99090263540.99048508430.99005821030,98962201750.98917651000.98872169200.98825756770.9877841416

0,9996188225)0.9997694053)0.9996823475)0.9999576446)0.9999952938)

0*00613588460,00920375*80.01227153830.01533920630.01840672990,021*7*08030.02*54122850.02760814580.03o6748o320, 0337*117190. 0368o722290.03987292760.0*293825690, 04*00318210.0490*767430.052l3l7o470.05519524430.05825826*50.06132073630.06438263090.06744391960,07050457340.07356456360.07662386140.07968243800,0827402 6 450,08579731230,08885355260.09l9o895650,0949*349530.09801714030.0.0.

0.

0.

0.

0.

0.

0.

0.

0.

0.

0.

0.

0.

0.

0.

0.

0.

1010*986281041216339107172*25011022220731132709522116318630^1193*52148122*106752125*549834128498H08131540028713458o7o851376201216140658239314369 50332146730*745149764534715279718531558283977

.00056900» 00057000» 00057100•00057200.00057300000574000005750000057600OOO577OO000578000005790000058000OOO58IOO000582000005830000058400OOO585OO0005860000058700000588000005890H00059000000591000005920000059300000594000005950000059600OOO597OO000598000005990^0006000000060tOO000602000006030000060400OOO6O5OO000606000006070000060800000*090000061000000611000006120000061300000614000006150000061600000*1700000618000006190000062000000621000006220O0006230O0006240000062500

-5U-

Page 69: A fast fourier transform subroutine for ILLIAC IV

IR ( o.

IR [ o.

lR< . 0.

lR< : o.IR 0,

IR [ o.

IR< • o.

lR< 0.IP ' °.IR : o.

IR 1 o.

lR ( 0.

IR [ 0,

IR ; o.

lR< o.

lR< o.

IRI 0,IR [ o.

IR< o.

lR< 0.IR

: °.IR : o.

IR< 0.I R< 0,IRI : o.

IR : o.

IR< o.

lR< 0.IRI [ 0.

iRl 0.

IR< 0.

I R< 0.

IR 0,IR ;

o.

IR< 0.

IR< 0.

IR : o.

IR : o.

IR< o.

lR< 0.IR' 0,IR : o.

IR< 0.

IR< o.

IR( 0,IRI o.

IR 1 0.

lR< o.

IRI ' °.IR : o.

I R< o.

I B< 0,

IR [ 0,

IR : o.

IR< 0.

Ir ( 0.

I Rl 0,

98 754 39418987056S713986559910398605396339855 3 «73 s 3

985014?3l09844804554983937<M349833851 1 03982823S512982252741

4

98i672A8*298108339129804848618979877

1 03^9792601 226978633q24 4

977998^14997735390019767000*M97*0370790975364R8S1974683Sln797399?96?2973293?4

ftl

972584368997l866337«597i 139i5«S970^02(^3^7969657i8si9689o?«048968139, 047967 3 66?9?2966b84l7aS965^933589964993?5?996^1840^40963365799896?538468o961 fo?o7*5960856^,3319600021 457959138a2?5958266 ^14957384 s 00«95649301«9955594^34195468575/j9

953^681 809952841 A47A951^061 3*8950 9 61*6A3950008'4 s n

949045881

9

948074sHc,994709436*49**10 5? 3?

4

0.214608f»1100.2l7604274 60,220^9769010.22358902920.22657826380.229565 3 6580.23255030700.23553305940.23851359480.241491885 3

0.24446790270.24744161920.25041300660,25338203/0'.2563486895

0.26819085710.27U4515950.2^409690990,27704 6 08i

0.279992640.282936570. 28587^80.2888U40. 2917522'0.29468530.29761570.300s430.303467'0. 3063890. 309308rftOJ0.312224H1390.31513792880.31804807740.32095523?4

3238593665

990331

053470826 32722074

2414946679547603

0.

PAPAPAPAPA

PAPApaPAPAPApaPAPAPApaPAPAPApaPAPAPAPAPAPA

PAPAPAPA

PAPAPAPAPAPAPA

PA

PAPAPAPAPAPAPAPAPAPAPAPA

PApaPAPAPApaPA

0.98730U1820.98680940180.98630809720.98579750*20.98527764240.98474850180.98421009240.98366241920.98310548740.98253930230.98196386910.98137919330.98078528040.98018213600.97956976570.97894817530.97831737070.97767735780.977Q2814270.97636973130,97570213000.97502534510.97433938280.97364424970.9729399^220.97222649710.97150389100.97077214070.9700312 S 320.96928123540.96852209430.96775383710.96697647100.96619000340.96539444170.96458979330.96377606580.96295326690.9621214Q430.96128048580,96043051940.95957151310.95870347490.95782641300,95694033570.956o4525130.95514H6830.95422809510,95330 6 04040.95237501270.95143502100,95048607390,94952818060.94856134990.94758559100.94660091310,94 5 607325*

0.15885814330, 16188639380.16491312050.16793829500.17096188880. 17398387340.17700422040. 18002290140.18303988800. 18605515170. 18906866410. 19208039700.19509032200.19809841070.201 10463480. 20410896610.20711137620.21011183690. 21311031990.21610679710,21910124020.22209362100.2250839H40.22807208320.2310^810830.23404195860.23702360600.24000302240,24298017990.24595505030.24892760570.25189781820. 25486565'60.25783110220.2607941 1790.26375467900.26671275750.26966832560.27262135550.27557l8i930.27851968940.28146493790.28440753720.28734745950.29028467730.29321916270.2961SO88820.29907982630.30200^94930. 30492922970.30784964000.31076715270.31368174040.31659337560.31950203080.3224 n 767880.3253102922

)»00062600)» 00062700)• 00062800)»000629Q0)»000630OO)»0006310*)»0006320^)• 00063300)»0006340O)» 0006350O)» 00063600)» 00063700)»00063a00)»00063900) • 00064O0 r

>

)»000641Qrt)»0006420O)»00064300)»0006440O)» 0006450O)»0006460O)» 0006470^)» 000648 00). 00064900)»0006500^)» 00065100)• 00065 2 00)»00065300)»0006540O)' 0006550O)»0006560O) » 00065700)»00065800)» 0006590O) » 0006600'i) • 0006610O)» 000 66? 00)» 00066300)• 00 06 6 4

)• 00066S0O)»00066*0O)» 00066700)• 0006680O)• 00066900)»00067000)»00067100>» 00067200)• 00067300)»0006740)»00067500) t 00067600)»0006770O). 00067800)» 00067900) * 00068000)• 000681OO) » 000 68200

Page 70: A fast fourier transform subroutine for ILLIAC IV

PA] R( o.PA] Rl ' 0.

PA] PJ 0.PAJ R ( 0,PA] R( 0,PA][Rl ; o.PA] R< o.

PA] R< 0.PA] R( 0,PA][R [ o.

PA][R< 0.PA][R (

. 0.pA] R( 0,PA][R I

o.

PA][R< 0.Pa; R< 0.PA] R( 0,PA] R : o.pA][R ( 0.

PA] R< 0.PA][Rl : o.

PA] Rl : o.

PA] R 1 0.PA] R< 0.PA] R( 0.PA],RI . 0.PA][R 1 0.PA] R< 0.PA][R I o.PA] Rl : o.

PA][R 1 0,PA][R< 0.PA] R( o.

PA][R : o.

PA][R( 0.Pa [R< 0.PA][R [ 0,PA [R ( o.

PA [R< • 0.Pa :r< [ 0.PA][R f °.PA [R ( o.

PA [R< 0.Pa [R : o.PA [R ( 0,

PA IR ( 0.

PA IR I 0.pa [R : o.pa [R [ 0,

PA [R ( 0.

PA [R [ 0.Pa IR t 0.PA [R : o.

PA IR ( o.

PA [R ' 0.PA IR t 0.PA [R

< °.

94510^193394410025859430844375942059739A9*102 6 1 75 1

9399837510938932483593787237 6 4

93 6 80344i79357256895934639i2989335437730932*3962939313267091930205o2?9929074s8i39279353948926787a743925630«3n592446547439232914167922108A687920 9 l7?4i59l97i7 ! 4639185083943917290997Q916064965891483031229135870*79912335184491J07473419o98o570«l9085281 1879072419779905947?97«904644o9o6903332368590201214399oo683a292899346?37o898000 S 797896646a7o?89528392108939i29«5l892533 sS ^tt

89 l 14576<i8889749^864888345o3338869321 1*8885510A56188408l?5A788 ? 64334 0088l 1 9 71 1^587974259?887827979i

7

87680872388753294031

0.3267604523)0.32965846250.33255336990.33544514710.33 8 333 7670.34121920230. 34410142A0.34698041080.34985612980.35272855580.35559766170.35846342060.3 6 132580 560.36418478960.3670403*570.36989244710,3727*106700.37558617850.37842775480.38i26576920.38*10019500.38693100550.38975817410.39258167410.395*0147890.39821756220.40102989720**0383845760.*0 66*32l690.40944414870.*122*122670.*l5o3442450.*l7B237l S 80.420609074*0.42339047410.*2616788870,*289*129210.*3l7l065800.43447596n60.*3^237i7370.43999*2/130.44274722760.**5496ol650.**82*061230,4 5098098900.*537l7l2l00. 4564489824U. 45917654750.*6l89979070.46461868630**6733320870**^00*333250,472 7*903200.47545028170.47814705640.48083933060.4835270789

PAIRPAIRPAIRp AlRPAIRPAIRPAIRPAIRPAIRPAIRPAIRpairPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPairPAIRPAIRPAIRpairpairPAIRPAIRpairPAIRPAIRPAIRpairPAIRPAIRPAIRPairpairpairPAIRPairPAIRPAIRPAIRpairPAIRPAIRPAIRPairPAIRPAIRPAIRPAIRPAIR

0.94460483730.94359345820.94257319760.94154406520.940,0 6070 60.93945922360.93840353410.93733901190,93626566720.93518350990.93409255040.93299279880.93188426560.93076696U0.92964089580.92850608050,92736252560.92621024210.92504924080.92387953250,92270112830.92151403930.92031827670.919H385170.91790077560.916679Q5990.91544871610.91420975570.91296219040.9U70603200.91044129230.909l67983l0.907886H650.90659570450.90529675930.90398929310.90267331820.90134884700.90001589200.89867446570.897324 5 8070.89596624980.89459948560.89322430120. 89184070940.89044872320.889 4835580.887639620*0.88622253010.88479709840.88336333870.88192126*40.880^7088910.87901222640.87754529020.87607009420.8745866523

0,32620984360. 33110630580.33399965140,33688985340.33977688440,342660^1730,34554132500,34641868020.3 5 l292756l0,35416352540.35703096120,35989503650,3 627 5 572440.36561299780,36846683000,37131719400.374l640 6 300.37700741020.37984720890.382683432*0,38551605380.38834504670.39117038430.39399204010,39680998740.39962419980,40243465090.4Q524131400.4080441 6290.41084317110.41363831220.41642956010,419216888*0.42-200027080.42477968120.42755509340.430326*8130.43309381890.43585707990.43861623850.4413 7 126870.44412214460.44686884020.44961 132970,4 5234958720.45508358710.45781330360.46053871100.4 632 S978360.46597649580.46868882200.47t39673680.474100214*0.47679923010,47949375770.48218377210,48*8692480

•0006830O» 00068400•00068500•00068600.000 6 8700» 00068800• 00068900• 00069000»00069100» 00069200•00069300»00069400.00069500» 00069 6 00•00069700» 000698OO•00069900»00070000• 00070100•000^0200.00070300»0007040O» 00070500•00070600•00070700•00070800•00070900•oooMooo.00071100•00071200» 00071300• 000M400.OOO7I5OO» 00071600• 00071700•00071800.OOO7I9OO•00072000•0007210O• 00072200.00072300• 00072400• 00072500» 00072*00.00072/00' 00072800• 00072900» 00073000.00073100•00073200• 00073300•000^34 00.OOO735OO• 00073600• 00073700•00 07 38 00.00073900

-56-

Page 71: A fast fourier transform subroutine for ILLIAC IV

IR [ 0,

IR c 0.

IR ' o.

IR : o.IRI 0,IR : o.

IR< o.

lR< I o.IRI ' o.

IR ; o.

IR< 0.

IR< : o.IRI 0,

IR : o.

IR< o.

IR< : o.

IRI 0,IR : o.

IR 1 o.

IR ( 0.IR [ 0,

IR [ o.

IR< 0.

lR< 0.IRI 0,

IR t o.

IR 1 0.

IR< 0.

IRI 0,IRI : o.

IR< 0.

IR< 0.

IRI 0,IR : o.

IR( 0.

lR ( 0.

IRI °.IRI : o.

lR< 0.

lR ( : o.IRI 0,

IR ; o.

IR< 0.

IR (: o.

IR( 0,

IRI : o.

IR< o.

lR< 0.IRI 0,

IR : o.

IR< o.

IR' : o.IRI 0,IR : o.

IR< o.

IR< : o.IRI 0,

8738418435872346o5S987()842o6358693298^148^780909^88662809540864744*57586319942178616*64611860085390485851622438569389774855 3 5366*78537603011852158901685054948|384893205528473066387845673?47084403189558423a2 s9968407253750839060?37l837387 ?0 1683 s ?06?844834017501

1

8323208678830*164003828V0411488271840273825456j54082372051128219771 I5382022598?68l8467i296816700*7998l492,s32ol8l3l44al4881 1354B470809557ft4?48 7 7 52 8 1 7 <}

80S9403 9 0680412037748022927955800*57*62*79861499^67967648102794907^2*3793041 960 5

79H69330?789289 ? 53?7874017470785506*296783604518678l694A3?l77977778797778534042

0.48621027610.48868889690.49J56291610.49423230650.49689704900.499557H250*50221247400.50486310850,50750899110.51015009670.51278640060.5154178780O.5I8O445O4I0.52066625410.52328310350.52589502750.52850200150.53110400120.53370100180.53629297910.53887990Q50.54146176590.54403852670.5466101669°.54 9l7666?20.55173798840.55429412150.55684503730.5593907H90.56193112120,56446624150.56699604880.56952051930.57203962930.57455335500.57706167290.57956*55910. 58206199 3

0.56455394300.58704039350.58952131860.59199669500.59446649920.59693070810,599389298*0.60184224710.60428953090.60673112700.60916701230,61159716390,61402155890,61644017450,6l88s298800.62125997650.62366U1750.62605638840,6284457666

PAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRpairPAIRPAIRPAIRpairPAIRPAIRPAIRPairPAIRPAIRPAIRPAIRPAIRPAIRPAIRpairPAIRPAIRPAIRpairPAIRPAIRPAIRpairPAIRPAIRPAIRpairPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIR

0.87309497840.87159508670.87008699110.66857o7o6o0,8670*62*550.86551362*10.66397285610.86242395610,66066693860.85930181840.85772861000.856147328*0.85*557966*0.85296060*90,85135519310.84974176800,6*812034*80.64649093880.64485356530.64320823960,8*155*977*0.83989379420. 83822470560.83654772720,83*862875°0.83317016*70.63146961230.82976123380,8280450*530,82632106280.82458930280.82284978140,82110251500.81934752010.81758481320.81581441080,8l*03 632970.81225058660,810*5719830.80865618160.8068*7553 50.80503133110.80320753150.80137617170.7995372 6 91

0.79769o84090.79583690460.79397547760,79210657730.79023022140.78834642760.7864552136°. 78*55659720.78265059620.78073722860.778816512*0.776888*657

0.48755016010.490226*8330,49289819220,49556526180,49822766700,50086536260,50353838370,50618664530,50883014250.51146885040.51410274420.5167317990°»5l935599020.52197529290.52458968270.52719913480,52980362470,532*0312790,53499761990,53758707630,54017147270.54275078490.54532498840.54789405920, 5504,797290.5530167Q560.55557023300.5581185312°. 56066157620.56319934400.56573181080.56825895270.57078074590.57329716670.57580819140.57831379640,58081395810.58330865290.58579785750.58828154820,59075970190.59323229500.59569930450.59816070700,600616*7940.60306659850.60551104140.60794978500.6l03 8280 63

0.61281008240.61523159060.61764730790. 62005721180.62246127940.62485948810.62725181550.62963B2389

.00074000•00074100•00074200•00074300•00074400•00074500» 00074600•00074700•00074800•00074900•00075000•00075100•00075200•00075300•00075400•00075500•00075600•0007570O•00075800•00075900•00076000•00076100» 00076200• 00076300»0007 6«0O•00076500• 00076600» 00076700•00076800•00076900•00077000•00077100•00077200•00077300•00077400» 00077500•0007760°•00077700•00077800•00077900•00078000•00078100•00078200•00078300•00078400•00078500•00078600•00078700•00078800•00078900•00079000•00079100•00079200•00079300•00079400» 0079 5 00•00079600

Page 72: A fast fourier transform subroutine for ILLIAC IV

PA]PA]

R(

Rl : o.

PA]PA]PA]PA]

R<

^R<R(

Rl

o,

0.0,

:o.

PA]PA]PA]

R<

.R<

R<

o.

0,

0,PA]PA]PA]

Rl

Rl

R<

0,

0.0*

PA] R( 0.PA]:r : o.

PA]Pa;p*;

.R<

[Rl

0.0.

. 0,pA][R [ o.

PAPaPA]

[Rl

:r|

Rl

[ 0.

o.

o.

PA]PA]PA]PA]

r R

[R (

[rI

Rl

: o.

0.

0.

0.PA]PA]PA]PA]

;r

[R<

[R (

[Rl

: o,

0.

0.: o.

PA][R : o.

p«:pa]PA]

R<

[R<

R(

0.

0.o.

PA][Rl 0.

PA]PA]PA]

[R<

R<

Rl

o.0.

0,PA]

PA]Pa]pa;

[R

[R<

[R (

[Rl

: o.

0.

o.0,

PA][R [ o.

PA]PaPA]

;r'

[r (

[Rl

0.0.

: o.

PA][R ' 0.

PAPaPA]

[R1

[R 1

[Rl

• 0.[ 0.: o.

PA [R co.

PAPaPA]

[R

[r|

Rl

: o.

0.

0,

PAPAPaPA

[R

:r

[R[R

: o.

; o.I 0.[

o.

75921699073'8269 /S

72036197170082A37068 122 02«56615399 2

6417874Q*62l96?9*t60206*8165820990985620600145419497535?l76*50450151*458481l9^8o546080o 7 3544033 744241980411739920095537852*148

3s778s80?3369743813160918!?29514038127*12*2**2530397?423188489321066, 9q3Ifl937i22«168012^8514658*8791250937 O 6

I0353l4 6 g

08190*37006021?6i403»45?4o570l662s9^7699473344669727751HA6950^5,1406928661 7«8690650714168842875?868620031 1?

683965*11868l724 742679476^1096772221^0167«9 6V„167?694769i67o«2156o4668l42o4t4665«56? 33 7

663564, 5A6661265*37865896lo9^o656650 S *57

0,63082922960.63320675500.63557832050.63794390360. 6403034 8220.64265703400.64500453680.64734596860,6*968130740.65201053H0.65433361780.65665054570.65896129300.66126583780.66356415860.665856233^0.6681*204140. 67042156040.67269476910.67496164610, 6 77222l70l0.67947631990.68i72407420.68396541180,68620031170.68842875280.69065071410. 69286617480.695075U400.69727751080.69947334460.

0.

0,

0.0.o.

0.

0,

0»o.

0,

o.o.

0.

o.0»o.

0.

0.

o.o.

0.

0,

0.o.

016625947038452405060212614081906370103533469125093706146586879168012785189371224210 66 19932318848932530397?427412628629 5 1443 fl l

3160938,233697438135778589237852el4839920095541980411744033744246080073 5

48119380550151645852l7685o4541949753

).PA] R()» PA][R()»PA] R<).PA][R<)»PA] R(

)» PA] RC).PA][R(>.pai[RC).PA] R(

)»PA].RC).PA][RC)»PA][R<),PA] R(

)»PA][R(>»PA][R<).PA][R<),PA][R()»PA][R(>»PA [R<).P A [R (

).PA][R()»PA][RC>»PA][R (

)»PA][R<).PA][R()»PA [RC)»PA][R<).PAi[R<),PA][RC)»PA][RC)»PA][R().pai[R<).PA] r RC

)»PA][RC)»PA][R<).PA1[R<).PA][RC)»PA [RC).PA [R().P A [R<).PA][RC)»PA [RC

)»PA [R<)»PA [r{).PA][RC)»PA][RC). PA [R<>.P A [R (

).PA][RC

)» PA [RC)• PA [R<).PA [R (

).PA][RC).PA [RC) . PA [R().PA [RC).PA [RC

74953106673010453471060524369103337667H89U96516726566318841736120238555920918905720884655520137695318679905116513194913639454710060*045o577854430079521409511254388873245368165689347388781326542717305627692284643904263591551242470830221281939200025fl8o178700451157308253135848688114321957092728264071067812049340804027547445

0,70056879390.69837624940.69617713150.69397146090. 69l759258 a

0.68954054470.68731534090.685o8366780.68284554640.68060099780.67835004310.676o927o360. 6 7 3 82900040.67155895480.66928258830.6669999?230.66*71097820.66241577760.66011434210.65780669330,6554928530

0.0.

0.0.0.0.

0.0.

0.

0.

0.0.

0.0.

0.0.0.0.

0,

0.

0.

0.0.

0.

0.0.

0.

0.0.0.

0.

0.

0.

0.

0.

0.63201873590.63439328420,63676186120.63912444490..414 8 1012 80,64383154290.64617601300.64851440100.65084668500.65317284300.65549285300.6578o669330,66011434210,66241577760,6647io97820.6669999223°. 66928258830,67155895480.6738?900040.67609270360.6783^004310,68060099780.68284554640.68508366780.687 3 l534090.68954054470.69175925840.69397146090.696l77l3l50.69837624940.70056879390.70275474450,70493408040.70-710678120.70927282640.71143219570.71358486880.71573082530.71787004510.72o0o25o8o0. 722128l9390.72424708300.72635915510.72846439040,7305*276920.73265427170. 7347^887810.73681656890.738887 3 24,0,74095112540.74300795210.74505778540.747l00 6 6

0.74913639450.75116513190.75318679900.7552013769

00079700000798000007990000080000OOOaOlOO000802000008030000080400OOO8O5OO00080600000807000008 080000080900000810000008110000081200oooai3on00081400000815000008l6on0008170000081800000819000008200000082100000822000008230000082400OOOB2«50000082*0000082700000828000008290O00083000000831000008320000083300000834000008350000083600OOO837O00008380000083900000840000008*100000842000008430O0008440O00084 s000008460O00084700000848000008490000085000000851000008520000085300

-58-

Page 73: A fast fourier transform subroutine for ILLIAC IV

!R C 0,

IR t o.

IR c 0.

IR ( : o.IRI ' °.

IR [ o.

IR< : o*

lR< 0,

IRI : o.

IR [ o.

IR : o.

IR< 0.IRI ; o.

IR : o.

IR< . o.

IR< 0.

IR [ 0,IR : o.

IR< : o.

IR< o.

IR ' o.

IR ; o.

IR< ' o.IR< 0.

IRI 0,

IR : o.

IR< o.

I« ( 0.

IR [ 0,IRI : o.

IR' o.

Ir< 0.IRI o

#

IRI o.

IR 1 o.

lR< o.

IRI o.

IRI ; o.

IR< o.

Ir( 0.IRI 0,IRI 0.

IR< 0.IP< 0.IRI 0,IRI 0.

IR< 0.

lR< 0.IRI ; o.

IR : o.

IR« o.

lR< o.IRI : o.

IR : o.

IR' o.

lR ( 0.IRI 0,

.6543336178

.6320105311

.6496813074,6473459686.6*500 *5 3 68.642657 34064030348?2

.6379439036

.6355783205,6332067550,630829?296.6284457666.62605638R4.623661U75,6212599765.6188529880.616**017^5.61402155A9.6115971639,609167 n l23,60 6 F31l270,60428953o9,6018422471,599389 ? 9fla

,596930 7 08l,594466a9q?.59199669^0.58952131*6, 5 8 70403935,5845539430,5820619903,5795645591,577°6l^729.5745533550.57?0396?93.5695205193,56699604 fl «

,5644662415.5619311212.5593907119t5 56«*50373,5542941215,55l73798ftA,54917646?2,5^66101669,544038^2*7,5414617659,5388799085, 536292q791,533^010018.531 1040012,528502o0l5.5258950275.5232831035,5206662541.5180445041,5l 54l7 R 7 fl o

0.75620600140.75820990980.76020668160#762l96298l0,76*1787*050.76615399 2

0.76812202850.77 08283700,77203639710.77398269 6

0.77592169900.77785340420.77977778790.78169483210.78360451860.78550682960,787*017*700.78928925320.79H6933020.79304196050.79490712630.79676481020.79861499«60.80045766220,80229279550.80412037740.80594039o60.80775281790.8095576*2*0,81135484700.81314441480.81492632910.8167005^290. 81846712960.82022598260.821977H530,82372051120.82545615400.827184Q2730.82890411480.830616*0030.83232086780.83401750110.83570628440,83738720160,83906023710.84072537500.84238259960,8*403189550.84567324700.84730663870.84893205520,8505*948130.85215890160.85376030110.85535366470.856938977*

PAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRpairPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRpairPAIRPAIRPAIRpairPAIRPAIRPAIRPairPAIRPAIRPAIRpairPAIRPAIRPAIRPAIRPAIRPAIRPAIRpairPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIRPAIR

0,65317284300,65084668500,64851440100,64617601300,64383154290,64148101260,63912444490,63676186120, 63439328*20.63201873390.62963823890,62725181550,62485948810,62246127940.62005721180.61764730790.61523159060,61261008240,61036280630,60794978500.60531104140,60306659850,60061647940, 59816070^00.59569930*50.59323229500,59075970190,58828154820.58579785750.58330865290.58081395810.57831379640.575808191*0.57329716670.57078074590.56825895270,56573181080,56319934400,56066157620.55811853120.55557023300.55301670560.55045797290.54789405920,5*532498840,54275078490.54017147270.53758707630,53499761990,53240312^90.52980362*70.52719913480,52458968270.52197529290.51935599020.5167317990, 5 141027442

0,75720884650,75920918900.76120238550,7631884173°. 765*6726560,76713891190,76910333760,77106052430,773010*5340,77495310660,77688846570,77881651240.78073722860,78265059620,78455659720,78645521360,788346*2760,790230221*0.79210657730.793975*7760,79583690460,79769084090,79953726910,80137617170,80320753150,80503133110,80684755350,80865618160, 8 l04 5 7l9830.81225058660.81403632970.81581441080.81758481320.81934752010.82110251500.82284978140.82*58930280.82632106280.82804504530.82976123380.8314 6 961230.83317016470.83486287500.83654772720,83822470560.83989379420.84155497740.84320823960,8**85356530.84649093880.84812034480.84974176800. 85135519310.85296060490.85455798840.85614732840,8577286100

•00085400•00085500•00085600•00085700•OOO856OO•0008590O•00086000•00086100•00086200•00086300• 00086400•00086500•0008660H•0008670H•00086800•00086900•00087000•00087100•00087200•00087300•00087400•00087500•00087600» 00087700•00087800•00087900» G008800O•00088100•00088200•00088300•00088400• 0008850O•00068600•00088700•00088800» 00088900•0008900H• 00089100•00089200•00089300•00089400» 00089500•00089600•00089700•00089800» 00089900•00090000» 0009Q100»00090200•00090300•0009 04 00•00090500•00090600•00090700•00090800• 0009090O.00091000

Page 74: A fast fourier transform subroutine for ILLIAC IV

PA

PAPAPAPA

PAPAPAPA

PAPAPAPA

PAPAPaPA

PAPAPaPAPAPAPaPA

PAPAPapaPAPAPaPAPAPAPaPAPAPAPaPAPAPAPaPA

PAPAPaPA

PAPAPaPA

PAPAPaPA

IR ! 0.

IR : o.

IR< 0.IR< 0.IR( 0,

IR : o.IR< o.

IR< 0.IR< 0,

IRI . 0.

IR< 0.

IR< 0.IRI 0,

IR ' 0.

IR 1 0.

IR< 0.IRI

> °.

IRI : o.

IR< 0.

IP< 0.IRI 0,

IR ; o.

IR ( 0.IR< 0.

IRI o.

IRI 0.

IR< 0.

IR< 0.

IRI 0,IRI 0.

IP 1 0.

IR< 0.

IRI 0.

IRI : o.

IR< 0.

Ir< 0.

IRI ; o.

IR ; o.

IR 1 o.

lR ( 0.

IR : o.

IR : o.

IR 1: o.

IR : o.IR ' o.

IR c o.

lR (> 0.

IR ' 0.

IRt

IR ( o.

IR 1 0.

IR '> 0.IR t 0,

IR ( 0.

IR ( 0.

IR c 0.

IR ( 0.

512^86^006510150096750?50899t 1

50486310855022l2fl740

499557H25496897n4904942321085«9l5629l6l488888A9694862102^61483527r)7894808393306478147 5644754509817/|72749 n 3?o4 7004333? s467333?0*7464618686346l89979 7

459l76s^«7545644898^44537l7i2io45o98o989o448240^1?34454960165442 7 47?276439994?7"i343 7 237173743447596064 3 1 7 1065*042894l?9?i4?6U7888742339oa^414?o6o9o 7 44417823MS*41cj034a24^41?24l2?f,740944414A74o6643?16R40383a<i S7(S401029*97?39A217S6??3954014^*9392581 *741389/'58

1 7ai38693i oS5384l00l9*3 8l 2 65769?3784277548375586^7*5372^4l 673 6 989244 7 l

36704034S73641847896361325*0*635R4 6 34206

8585162243)8600853904861646461 1

863199421786474*25758662809540867809496886932987148708*206358723460589873841843587532940318768087238878279791787974259?8881197H35882 64334oO884081258788551085618869321 1888883450333889749586489i 145764889253355548939129451895283921089664647o289800057978993462370900683429290201214399033323685904644090690594729789072419779908528118790980570*19110^4734191233518469l3587o479914*3031229160649658917290997091850839439l97l7l<*6 3

92091^241592210«668792329141679244 654 743925630830592678747439279353948929074 5 8l39302050229931326709193243962939335437730

).PA1[R()*PA][R().PA] R().PA][RC).PA] R(

)»PA1[R().PA][RC).PA1[r().PA] R(

)»PA]tR(>.PA] r().PA][R<).PA] R(

)»PA1[R().PA][R(X.PA][R<).PA][R()»PA1[R() • PA ][R<).PA][R<).PA1[R()»PA][R()»PA][R<).PA][R<).PA] R(

)»PA][R().PA][R().PA1 r

R<).PA] r R().PA][R()»PA][R<)»PA][R<)»PA][R(>»PA1[R()»PA1[R<).pai[R<).PA1[R<)»PA [R(

)»PA R().PA [r<).PA [R(

1»PA [R(

)»PA rRt).P A IR (

).PA IR(

)»PA IR()• PA I rC

).PA IR (

).PA][R(

).PA IR(). PA rp().PA IR<),PA [R(

).PA IR(

)»PA IR().PA lR<),PA IR(

0.51U6885040,50883014250*50618664330.50353838370.50088538260.49822766700.49556526180.49289819220,49022 6 4 fl

33

0.48755016010.48486924800.48218377210,47949375770.47679923010.47410021460.47139673680.46868882200.46597649580.46325978360.46053871100.45781330360.45508358710.45234958720.44961132970,44686884020.44412214460.44137126870.43861623850.43585707990. 43309381890.43032648130.42755509340.42477968120.42200027080.41921688840.41642956010.413*3831220.41084317110.40804416290.40524131400.402434 65090.39962419980.39680998740.39399204010,39117038430. 38834504670.38551605380.38268343240.37984 720890.37700741020. 37416406300.37l3l7l94o0.3 6 84 6 683000.36561299780.36275572440.35989503650.3570309612

0.8593018184)0.86086693860.86242395610.86397285610.8655l 3 62410.86704624550.86857070600.87008699U0.87159508670.87309497840.87458665230.87607009420.87754529020.87901222640.88047088910. 88192126440.8833*333870.88479709840.88622253010.88763962040,88904835580,89044872320,89l84o7o940,89322430120,89459948560.89596624980.8973?458070.89867446570.90001589200,90134884700.90267331820.90398929310.90529675930.90659570450.90788611650.9Q916798310.91044129230.91 i7q603200.91296219040. 91420975570.9l 54487l6l0.91667905990.9l79oo77560.919H385170.9203l 827670.92t5l403930. 9227oll2830.92387953250,92 504924080.92621024210.92736252560.9285o6o8o50.92964089580.93076696110.93188426560.93299279880,9340925504

.00091100•00091200•00091300•00091400.OOO9I5OO•00091600•00091700•00091800•00091900• 00092000•00092100•00092200•00092300» 0009240*•00092500•00092600.00092700» 00092800•00092900•00093000.00093100• 00093200•00093300•00093400•00093*0*•00093600•00093700•00093800•0009390*» 00094000•00094100» 0009420*.00094300. 0009440O•00094500• 00094600.00094r00• 00094*00» 00094900•00095000•OOO95IOO•00095200•0009530O» 00095400.00095500» 00095600•00095700•00095*00.00095900• 00096000• 0009610H• 0009620*.0009*300•00096400• 00096500•00096600.00096700

-60-

Page 75: A fast fourier transform subroutine for ILLIAC IV

IK C 0,

IR : o.

IRI : o.

lR< : o.IR [ o

t

IR : 0.

IR< 0.

IR< 0.

IR( 0,IR : o.

IR< • o.

IR* ' 0.IRI ' °.

IR ; o.

IR< o.

lR ( 0.

IRI ! 0,

IR : o.

IRI • o.

IR< 0.IRI ; o.

IRI ; o.

IR 1 0.

IR< 0.

IRI 0,

IR : o.

IR 1 0.Ir( 0,

IR< 0,IRI 0,

IR< 0.

IR ( 0.

IR( 0,IRI 0.

IR< 0.

lR ( 0.

IRI 0,

IRI 0.

IR< 0,lR< 0.

IRI 0,IR< 0.

IR< 0.lR ( 0.

IRI 0,IR v 0.

IR( 0.

lR ( 0.IRI 0,

IRI 0.

IR< 0.

lR< 0.

IRI o.

IRI 0.

IR< 0.

lR ( 0.

IRI o.

355597 6 617352^285558349856i29A34698o41ofl3441014260?4 121920333383337*703354451471332553369932965*46?53267604593323859366532095^2324318048o77431513792R*312224*139309308760330638979543034679466300543?4l429761570742946853^2229l752?6322888i640«?2*5877*3472829365/052799926431277046 8 3

27409690Q9271 1451595268190*571265234 3n32 6?274 70702593129151256348r>8?5253382 37o250413(10^62474416192244467Q0?7241491*85323a5l3 S 94*235533o5942325503070229565365822657896^82235R9o29222o59769ol2l7604?7a621460**1 10

21161 1327420861 1*590205610413120260703**1996017576I96594«i9r719358558731905747548

0.93463912980.93572568950.93680344170.93787237640.93893248350.93998375300.94102617510.94205973980.94308443750.94410025850.94510719330.94610523240.9^7094366*0.94807458590.94904588190. 95000824500.95096166630.95190613680.95284164760.95376818990.95468575490.95559433410.95649391*90.95738450080.95826607140.95913862250.960002145/0.96o85663310.96170207650.96253846800.96336579980.96418406400.96«99325?90.96579335890.96658437450.96736629220.968l 3 9l0470.96890280480.96965738510.9/040283*70,97113915850.9/186633750.97258436890.97329324610.97399296220.97468351070.9/536488510.97603/0/900.97670008610.97/35390010.9/799851490.9/863392440,9/926012260.9/987/103/0.980484*6180.98i 8339i20.9816/26862

).PA [R(

)#PA tR<

>.PA [R().pa [R(),PA]tR()»PA][R().PA,[R<).PA][R<).PA][R()»PA![R().PA [R<).PA [R<).PA][R().PA1[R().PA [R().PA [R (

)#PA][R().PA tR().PA IR(>.PA'[R<).PA][R()»PA]IRC)» PA [R().pa [r().PA][R()»PA1[R()»PA][R<).pa [R<

).PA1 r

R()»PA][R().PA] R<).PA [R (

).PA][R()»PA][R().PA]:r<).P A lR<).PA][R()»PA] R().PA [R().PAi[r().PA][R(5»PA][R()'PA] R().pai R<).PA][RC). PA][R(). PA][R<).pai[R (

).PA][R()»PA][R().PA [R<).pa tR<).PA][R()»PA][R().PA [R()»PA][R<).PA1[R(

0,33416352540.35129275610.34841868020.34554132500.342 66071730.33977688440.33688985340.33399965140.33110630580.32820984360.32531029220.32240767880,31950203080.31659337560.31368174040.31076715270,3078*964000.30492922970.30200594930. 299o7982630.29615088820.29321916270.29028467/30.28734745950,28440753 72

0.28146493790.27851968940.27557l8i930.2726213 5 550.26966832560.266712/5750.26375467900.26079411790.25783110220.25486565960.25l8978i820.24892760570.24595505030.24298017990.24000302240,23702360600.23404195860.23105810830.22807208320,22508391140.22209362100.21910124020.21610679710.21311031990.21011183690.20711137620.20410896610.20110463480. 198098410/0.19509032200.19208039700.189Q686641

0,93518350990.93626566720.93733901190.93840353410.939*5922360.94050607060.94154406520.94257319760.94359345820.94460483730.9456Q732540.9466oo9l3l0.94758559100.94856134990.94952818060.95048607390.951*3502100.95237501270.95330604040.95422809510.955l*H6830.95604525130.95694033570.95782641300,95870347490,95957151310,96043051940.961280485*0,96212140430.96295326690.96377606580.96458979330.965 3 9444l70.96619000340.96697647100.96775383710.96852209430.96928123540.97003125320.9/077214070.97150389100.9/222649710.97293995220.97364424970,97433938280,97502534510.975/0213000.97636973130.97702814270,977677357*0,97831/37070.97894817530.979569/6570.98018213600.98078528040.98137919330.9819638691

)»00096800)»00096900)»00097000)»00097l00)» 0009/200)»00097300)»00097400)»00097500)»00097600)»00097700)»00097*on)»0009/900>»0009800n)»00098100)»00098200)»00098300)»00098400)*00098500)» 000986 00)»0009870O) .00098*00)* 00098900)• 00099000)• 00099J 00)» 000 992 00)»00099300)»00099400)»00099500>»00099*00)»00099700)» 00 09 9 8 00)» 000999Q0) .00100000)»00100100)• 00100200>» 00100300). 00100400)»00100500)»0010060O)' 00100700)»00100*00)»00100900)»ooioiooo)* 00101100). 00101200)»00i0130O)»00101400)• 00101500)» 00101600>»00101700)»00101800)»00101900). 00102000V00102100)»00102200)• 00102300)'00102400

Page 76: A fast fourier transform subroutine for ILLIAC IV

PA] R< 0,PA][R [ o.PA] R< 0.PA] R< 0,pA] Rl 0.

PA] R< 0.PA] R< 0.PAI R( 0,PA] R< 0.

pA] R< 0.PA] R< 0.PA] R( 0,PA] R( 0.

PA] R< 0.PA] R< 0.PA] R( 0,pA] R [ o.

PA] R 1 0.PA][R< 0.

PA] R{ . 0,

PA]LR : o.

pA] W 1 0.P A] R< 0.PA] Rl 0,PA] R ; o.

PA] R< 0.PA]iR< 0.PA] R : o

f

PA] Rl 0.

PA] R 1 0.PA][R ( 0.PA] Rl 0,

PA] Rl : o.

PA] R< 0.PA][R< o.PA] Rl 0,PA][R : o.

PA][R< o.

PA][Rl o.PA] R ( 0.PA [R ( 0,PA][R [ o.

PA][R< 0.P A][R< 0.PA][R [ 0,

PA [R : o.

PA R< 0.Pa [R ' 0.PA].R

;o.

PA [R ( o.

PA [R I 0.PA [R c o.Pa [R I 0.PA [R t 0,PA [R ( 0.

PA [R c 0.Pa [R t 0.

I87562i28618454773691Bi531*0*3l785l3 7 709175*9*253*l72*73o«*0169*5029121 6 442 5 q01 S1633999*9*16037245721573*3*55615*312073015128103*01*82*7*7901*52129247H2l76A0^5139139^44?13M0OS7*?1330^0S2S2I300l9?2?712697669*5123932<3751120 8fl 8o 8 72Il78*?06l51 14/949266111746711210869744401056*715^7102595fl6o0995436187o9649o<j314093*3 6 33 S A

09o38M6n9087325S3S208426HR876081211*4*8078153?4l A

075094100A07203**532068974327C6 59l33 s ? fl

06?851757*059^895707056/26A?t ?

05366 3 537705059974900*7535484204447o77i9041*05^*10383401 2n*03527a?3890322o«o2sa029141S0AA02 607«7l7A023007*8^501994042860168729879

0,98225274140.98282355120.983385ll 3

0.983937*1340. 984480*55*0.98501*23100.98553873530.98605 3 96330.98655991030.98705657130.9875*39*180.98802201710,988*9079290.98895026*50.989*00*2780.9898*127850. 990272812*0.990695025*0. 99H0791370.991511*7330. 991905700*0.99229o59i30.9926661*250, 99303235020.99338921110. 99373672190,99407*87930.99**03*8010.99*72312110.995033199*0.99533391210.99562525ft*0.995907229*0.99617982860.996**3051*0.99669689520.9969*135780.99717643670.99740212990.99761843510.99782 5 35n*0.99A 2287380.998211003*0.998389737*0.99855907*20.99871901220. 99886954990.99901060590.9991*2*1870.99926*7*730.999377670*0.999*8118700.99957529610.99965999*70.99973528830.999801 16990.9998576*10

) .PA][R(> • PA ][R().PA][R<).PA] R(

)• PAI R().PA]!R().PA] R().PA] R(

)» PA] R().PA] R().PAj[R<).PA] R(

)»PA] R(

)»PA] R().PA] R<).PA] R(

)• PA][R()• PA][R<).P A [R (

).PA1[R()»pa:[R(>»PA][R<)»PA][R<).PA][R()»PA tR(>» PA][R<).PA [R<).PA][R()»PA][R()»PA1tR<).PA'[R<).PA][R(

>• PA ][R()»PA [R<).PA [R<).PA][R()»PA][R().PA [R<).PA :r(

).pa [R (

).PA [R(

)• PA [R(). PA [R<).PA [R<).PA [R(

)» PA [R()» PA [R<).PA [R<).PA [R(

)»PA IR(

)»PA IR<) * PA IR().pa IR<).PA [R(

)» PA IRC).PA IR().PA [R(

0.18605515170. 18303988800.1»00229ol*0,17700*220*0. 173983873*0. 17096188860.1679382950

. 1 6 *9l 31 20 5

0. 16188639380.1588581*330.15582839770,15279718530.1*976*53*70.1*6730*7*50.1*369503320.1*065823930. 13762012160.l3*58o7o850. 1315*002 8 7

0,128*9811080.125*5*983*0.122*1067520.11936521*80,11631863090.11327095220. 11022220730.107172*2500,10*12163390. 10106986280.0980171*030.09*963*9530,09190895650.08885355260.08579731230.0827*026*50.079*82*3800.076623861*0.07356*56360.07050*573*0.0*7**391960.0**382*3090.06132073630.05825826*50.0551952**30.0 52l3l70*70.0*906767*30.0*600318210.0*293825690.03987292760.03680722290.0337*117190. 03067*80320. 0276081*580.02*5*122850.021*7*08030.01840672990.0153392063

0,98253930230.983105*87*0.983662*1920,96*210092*0.98*7*850180.985277642*0,98579750920.986 3 0809720.9866o94ol*0. 98730141820.98778*1*160,98825756770,98872169200.98917651000.98962201750,99005821030.99048508*30.99o9o263540.99i3io 8 598

0.99170975370.99209931310.992*7953*60.992850*1*50,9932119*920.99356*13550.99390697000.99*2*0**950.99*56*57070.99*87933080.99518*72670.995*8o75550.995767*1*50,9960**70090. 99631261220.9965711*580,99682029930.99706007030.997290*5670.99751 1*5610.99772306660, 9 9792 528620.99811811290.9983ol5**9U. 998*7558060.9986*021820.998795*5620.99894129320.99907772780,99920*75860.99932238460.999*3060*60.999529*1750.99961882250,99*69881870.999769*0530.99983058180.9998823*75

)»00102500)»00102600)»00102700). 00102800)»00102900)»00103000)»00103100). 00103200)»00103300)»00103*00)• 00103500)»00103*00)»00103700)» 00103800)• 00103900)»00104000)»0010*100)»0010*200)• 0010*300) .0010**00)»0010*500>»0010*600)»0010*700)»0010*800)• 0010*900)• 00105000)»00l05l0n).00105200)»00105300)»00105400)»00105500)»00105600)»00l057on) » 00105800)• 001059Q0)»0010*00O)»00106100)» 00106200)»O01063OO)

001064QO)»00106s00)• 00106600)» 00106700)

»

0010680O)»0010 6 900)» 00107000)» 00107100)

0010720^)»00107300)• 00107400)» 00107500)• 00107600)

»

00107700)»00107800)» 00107900)• 00108000)'001081QO

-62-

Page 77: A fast fourier transform subroutine for ILLIAC IV

PAPAPApMPAFl

PETNDtDA

ln20*»,03U

l03\0r»05i

10l06ilr,203

ln2(Pin20*»\r\3(l f

ln3o'fn; si

IR( 0.0138053IR( 0. 0107376IRC 0, 007669flIRC 0.0046019IRC 0.0015339LI 128.X [ F. N T « Y 1 1 I

TA 0» 102 0'i

1 0?05l224Sll2?4a |8. l02o7l634,8» 10307143i6? ,8. I02r>6,8, 1020^112132^56 ,8. 1030?43061 |8. 10204«8. 107041 1?2«13265? t 8, 103nH23i8» to30M163573 {8. lo3o17 ,A. 1020513?N.

885» 0.9999047011)»PAIR(5Q2» 0. 9999423497). PAIR(2ft7# 0,9999705064 )» PA I"<

26l» 0.9999894111)»PAIRC802» 0.9999988235),

0.0122715383.0.0092037348.0.006l35884 6»0.0030679568.

0.999924701R0.99995764460,99998117530.9999952938

1 02 04 o |8

»

102 04 1020 |8. 1030614306 0|8. 1020* 10 l«»

0j6#i03 06l430j8. 10307lft347 0|8» 10204 18.

5i224|fl. 10306153264 |8. 1030614 |8. 10205132654,8,1 r 36 74 i 8. 102 j8. 10204 10? 142 |8. 102041 122,8.5i2 j8. 10205122552 |8. 1 0306 1532 |8# 1 0307 163572 ,8

.

46,8. 102051326,8. lo3o6 153366,8.1 o3o 7 16 ,8.

17 36,8, 103 0717 3776, 8.1, 10204102041 ,8. 102041021 |8.

1 1i e. 10205122451 , 8 . 1 03o6 143 1 1 8, 1 o30? 16 347 l |8

.

5, 8. I 0205 1225, 8, 103 06 15 3263, 8. 1030615,8*7 i 635 |8, 1 0307 1 7 3675 |8.1 03 |8. 10204102 143 l«.

4 3 163, 8. 102 05 13,8. 10205 12255 3 ,8. 103 06 15 33,8.7, 8. 10204 11 234 7, 8. 10205 1327 1 8. 10306 153367, 8.7^7 |8. 10307 1737,8 ,103071 73777 |8,

)'001)• 001)»00t)» 001

001001001001001001001001001001001001001001001001001

08200083008400

0850008600087000880^089000900009100092000930009 4 000950960009700098 000990010000101010200

£o

Page 78: A fast fourier transform subroutine for ILLIAC IV

REFERENCES

[l] Cooley, J. W., Lewis, P. A. W., Welch, P. D., "The Fast Fourier TransformAlgorithm and its Application," IBM Watson Research Center, Yorktown Heights,New York, February, 1967.

[2] Barnes, G. H., Brown, R. M., Kato, M. , Kuck, D. J., Slotnick, D. L., Stokes,R. A., "The ILLIAC IV Computer," IEEE Transactions on Computers C-17, No. 87U6 (1968).

[3] Ackins, G. M., "Fast Fourier Transform via ILLIAC IV," ILLIAC IV Document.

No. 198, July 12, I968.

[U] Robinson, E. A., Multichannel Time Series Analysis with Digital ComputerPrograms, Holden-Day (1967), p. 290.

-6k-

Page 79: A fast fourier transform subroutine for ILLIAC IV
Page 80: A fast fourier transform subroutine for ILLIAC IV
Page 81: A fast fourier transform subroutine for ILLIAC IV

UNCLASSIFIEDSecuritirClaaaification

DOCUMENT CONTROL DATA -RIO(Security elaaalllcallon of till*, body of itiWt) and Indomhtg annotation muat ba xiMwj mhan Ifcg orarall tapott la clatalUad)

I, ORIGIN A TINC AC Tl VI T Y (Corporata author)

Center for Advanced ComputationUniversity of Illinois at Urbana-ChampaignUrbana, Illinois 61801

am. REPORT ICCURITY CLASSIFICATION

UNCLASSIFIED2b. CROUP

3. REPORT TITLE

A FAST FOURIER TRANSFORM SUBROUTINE FOR ILLIAC IV

4. descriptive MOTH (Typa ot rmpmrl and htclualra mwtmm)

Research Report5. AUTHOR(S) (Firat mm, mlddla Initial. Imat nmma)

James E. Stevens, Jr.

8 REPORT DATE

October 15, 1971

fa. TOTAL NO. OF PACE*

67

76. NO. OF REP*

•a. CONTRACT OR 6RANT NO.

DAHC01+-72-C-0001b. PROJECT NO.

ARPA Order 1899

•a. ORieiNATOR** REPORT NUMBCR(S)

CAC Document No. 17

»fc. OTHER REPORT NOlil (Any othar number* that may ba maalfnad(hi* raport)

10. DISTRIBUTION STATEMENT

Copies may be obtained from the address given in (l) above.

II. SUPPLEMENTARY NOTES

None,

12. SPONSORING MILITARY ACTIVITY

U.S. Army Research Office-DurhamDuke^-Station ....

Durham, North jgarolina13. ABSTRACT

This report is a description of a Fast Fourier Transform (FFT)

subroutine written in assembly language for the ILLIAC IV computer. The

subroutine uses the Cooley-Tukey algorithm for performing discrete Fourier

transforms. The parallel nature of the Cooley-Tukey method lends itself

very well to a highly parallel machine like ILLIAC IV. 'Timing simulation

results have shown that this program will perform Fourier transforms

faster than they are being done on any existing computer system.

DD ,'°<,?..1473 UNCLASSIFIEDSecurity Classification

Page 82: A fast fourier transform subroutine for ILLIAC IV

UNCLASSIFIEDSecurity Clasmification

key worn o%

Seismic Data Processing

ASK

Fast Fourier Transform (FFT)

Discrete Fourier Transform (DFT)

Time Series

Frequency Spectrum

UNCLASSIFIEDSecurity Classification

Page 83: A fast fourier transform subroutine for ILLIAC IV
Page 84: A fast fourier transform subroutine for ILLIAC IV
Page 85: A fast fourier transform subroutine for ILLIAC IV
Page 86: A fast fourier transform subroutine for ILLIAC IV
Page 87: A fast fourier transform subroutine for ILLIAC IV
Page 88: A fast fourier transform subroutine for ILLIAC IV
Page 89: A fast fourier transform subroutine for ILLIAC IV
Page 90: A fast fourier transform subroutine for ILLIAC IV
Page 91: A fast fourier transform subroutine for ILLIAC IV
Page 92: A fast fourier transform subroutine for ILLIAC IV