*IF DEF,C91_2A FOURIE3A.2
C ******************************COPYRIGHT****************************** FOURIE3A.3
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. FOURIE3A.4
C FOURIE3A.5
C Use, duplication or disclosure of this code is subject to the FOURIE3A.6
C restrictions as set forth in the contract. FOURIE3A.7
C FOURIE3A.8
C Meteorological Office FOURIE3A.9
C London Road FOURIE3A.10
C BRACKNELL FOURIE3A.11
C Berkshire UK FOURIE3A.12
C RG12 2SZ FOURIE3A.13
C FOURIE3A.14
C If no contract has been raised with this copy of the code, the use, FOURIE3A.15
C duplication or disclosure of it is strictly prohibited. Permission FOURIE3A.16
C to do so must first be obtained in writing from the Head of Numerical FOURIE3A.17
C Modelling at the the above address. FOURIE3A.18
C ******************************COPYRIGHT****************************** FOURIE3A.19
C FOURIE3A.20
C $Header: /u/um1/vn4.1/mods/source/RCS/anf1f401,v 1.2 1996/06/21 10:13: FOURIE3A.21
!+ Perform multiple fast fourier transforms by calling FTRANS FOURIE3A.22
! Subroutine Interface: FOURIE3A.23
SUBROUTINE FOURIER(A,TRIGS,IFAX,INC,JUMP,N,LOT,ISIGN) 8,6FOURIE3A.24
FOURIE3A.25
IMPLICIT NONE FOURIE3A.26
! Description: FOURIE3A.27
! FOURIE3A.28
! SUBROUTINE 'FOURIER' - MULTIPLE FAST REAL PERIODIC TRANSFORM FOURIE3A.29
! UNIFIED MODEL RE-WRITE OF ECMWF ROUTINE FFT991 FOURIE3A.30
! FOURIE3A.31
! REAL TRANSFORM OF LENGTH N PERFORMED BY REMOVING REDUNDANT FOURIE3A.32
! OPERATIONS FROM COMPLEX TRANSFORM OF LENGTH N FOURIE3A.33
! FOURIE3A.34
! INPUT INFORMATION: FOURIE3A.35
! A IS THE ARRAY CONTAINING INPUT & OUTPUT DATA FOURIE3A.36
! TRIGS IS A PREVIOUSLY PREPARED LIST OF TRIG FUNCTION VALUES FOURIE3A.37
! IFAX IS A PREVIOUSLY PREPARED LIST OF FACTORS OF N FOURIE3A.38
! INC IS THE INCREMENT WITHIN EACH DATA 'VECTOR' FOURIE3A.39
! (E.G. INC=1 FOR CONSECUTIVELY STORED DATA) FOURIE3A.40
! JUMP IS THE INCREMENT BETWEEN THE START OF EACH DATA VECTOR FOURIE3A.41
! N IS THE LENGTH OF THE DATA VECTORS FOURIE3A.42
! LOT IS THE NUMBER OF DATA VECTORS FOURIE3A.43
! ISIGN = +1 FOR TRANSFORM FROM SPECTRAL TO GRIDPOINT FOURIE3A.44
! = -1 FOR TRANSFORM FROM GRIDPOINT TO SPECTRAL FOURIE3A.45
! FOURIE3A.46
! ORDERING OF COEFFICIENTS: FOURIE3A.47
! A(0),B(0),A(1),B(1),A(2),B(2),...,A(N/2),B(N/2) FOURIE3A.48
! WHERE B(0)=B(N/2)=0; (N+2) LOCATIONS REQUIRED FOURIE3A.49
! FOURIE3A.50
! ORDERING OF DATA: FOURIE3A.51
! X(0),X(1),X(2),...,X(N-1), 0 , 0 ; (N+2) LOCATIONS REQUIRED FOURIE3A.52
! FOURIE3A.53
! N MUST BE COMPOSED OF FACTORS 2,3 & 5 BUT DOES NOT HAVE TO BE EVEN FOURIE3A.54
! FOURIE3A.55
! DEFINITION OF TRANSFORMS: FOURIE3A.56
! FOURIE3A.57
! ISIGN=+1: X(J)=SUM(K=0,...,N-1)(C(K)*EXP(2*I*J*K*PI/N)) FOURIE3A.58
! WHERE C(K)=A(K)+I*B(K) AND C(N-K)=A(K)-I*B(K) FOURIE3A.59
! FOURIE3A.60
! ISIGN=-1: A(K)=(1/N)*SUM(J=0,...,N-1)(X(J)*COS(2*J*K*PI/N)) FOURIE3A.61
! B(K)=-(1/N)*SUM(J=0,...,N-1)(X(J)*SIN(2*J*K*PI/N)) FOURIE3A.62
!--------------------------------------------------------------------- FOURIE3A.63
! FOURIE3A.64
! Current code owner: M.H.Mawson FOURIE3A.65
! FOURIE3A.66
! History: FOURIE3A.67
! Version Date Comment FOURIE3A.68
! ======= ==== ======= FOURIE3A.69
! 4.1 June '96 Original code at 4.1. Based on modifications by FOURIE3A.70
! Ken Hawick on public domain provided software. FOURIE3A.71
! This is primarily for workstation usage. FOURIE3A.72
! 4.5 07/05/98 Blocking size increased from 64 to 512 to give GRB1F405.92
! much better vector performance on Fujitsu VPP700 GRB1F405.93
! RBarnes@ecmwf.int GRB1F405.94
! FOURIE3A.73
! Code description: FOURIE3A.74
! FORTRAN 77 + common Fortran 90 extensions. FOURIE3A.75
! Written to UM programming standards version 7. FOURIE3A.76
! DOCUMENTATION: NIL. FOURIE3A.77
!END------------------------------------------------------------------ FOURIE3A.78
FOURIE3A.79
! Subroutine arguments FOURIE3A.80
! FOURIE3A.81
! Scaler arguments with intent(in): FOURIE3A.82
INTEGER FOURIE3A.83
& INC, ! IN Increment between elements of data vector FOURIE3A.84
& JUMP, ! IN Increment between start of each data vector FOURIE3A.85
& N, ! IN Length of data vector in grid-point space FOURIE3A.86
& ! without extra zeroes FOURIE3A.87
& LOT, ! IN Number of data vectors FOURIE3A.88
& ISIGN, ! IN Determines type of transform FOURIE3A.89
& IFAX(10) ! IN List of factors of n FOURIE3A.90
FOURIE3A.91
! Array arguments with intent(in): FOURIE3A.92
REAL TRIGS(N) ! IN Trigonometrical functions FOURIE3A.93
FOURIE3A.94
! Array arguments with intent(out): FOURIE3A.95
REAL A(JUMP*LOT) ! INOUT Data FOURIE3A.96
FOURIE3A.97
FOURIE3A.98
*IF -DEF,FUJITSU GRB1F405.95
REAL WORK((N+2)*64) ! General workspace FOURIE3A.99
*ELSE GRB1F405.96
REAL WORK((N+2)*512) ! General workspace GRB1F405.97
*ENDIF GRB1F405.98
FOURIE3A.100
! local scalers: FOURIE3A.101
INTEGER NFAX, ! NUMBER OF FACTORS FOURIE3A.102
& NX, ! N+1 EXCEPT WHERE N IS ODD THEN HOLDS N FOURIE3A.103
& NBLOX, ! NUMBER OF BLOCKS LOT IS SPLIT INTO FOURIE3A.104
& NB, ! DO LOOP COUNTER FOURIE3A.105
& ISTART, ! START ADDRESS FOR A BLOCK FOURIE3A.106
& NVEX, ! NUMBER OF ELEMENTS IN VECTOR FOURIE3A.107
& IA, ! USED TO PASS ISTART TO FTRANS FOURIE3A.108
& IX, ! VARIABLE USED FOR ADDRESSING FOURIE3A.109
& LA, ! VARIABLE USED FOR ADDRESSING FOURIE3A.110
& IGO, ! A CONTROL VARIABLE FOURIE3A.111
& K, ! DO LOOP COUNTER FOURIE3A.112
& IFAC, ! HOLDS CURRENT FACTOR FOURIE3A.113
& IERR ! HOLDS ERROR STATUS FOURIE3A.114
FOURIE3A.115
INTEGER I,J,II,IZ,JJ,IBASE,JBASE ! loop/indexing variables. FOURIE3A.116
FOURIE3A.117
FOURIE3A.118
! Function and subroutine calls: FOURIE3A.119
EXTERNAL FTRANS FOURIE3A.120
FOURIE3A.121
!- End of Header -------------------------------------------------- FOURIE3A.122
FOURIE3A.123
C------------------------------------------------------ FOURIE3A.124
C Section 1. Set up information for sections 2 and 3: FOURIE3A.125
C------------------------------------------------------ FOURIE3A.126
FOURIE3A.127
C Set number of factors and NX: FOURIE3A.128
NFAX=IFAX(1) FOURIE3A.129
NX=N+1 FOURIE3A.130
IF (MOD(N,2).EQ.1) NX=N FOURIE3A.131
FOURIE3A.132
*IF -DEF,FUJITSU GRB1F405.99
C Calculate number of blocks of 64 data vectors are to be FOURIE3A.133
*ELSE GRB1F405.100
C Calculate number of blocks of 512, data vectors are to be GRB1F405.101
*ENDIF GRB1F405.102
C split into: FOURIE3A.134
*IF -DEF,FUJITSU GRB1F405.103
NBLOX=1+(LOT-1)/64 FOURIE3A.135
NVEX=LOT-(NBLOX-1)*64 FOURIE3A.136
*ELSE GRB1F405.104
NBLOX=1+(LOT-1)/512 GRB1F405.105
NVEX=LOT-(NBLOX-1)*512 GRB1F405.106
*ENDIF GRB1F405.107
FOURIE3A.137
C------------------------------------------------------ FOURIE3A.138
C Section 2. ISIGN=+1, spectral to gridpoint transformation FOURIE3A.139
C------------------------------------------------------ FOURIE3A.140
FOURIE3A.141
IF (ISIGN.EQ.1) THEN ! spectral-to-gridpoint transform: FOURIE3A.142
ISTART=1 FOURIE3A.143
DO NB=1,NBLOX FOURIE3A.144
IA=ISTART FOURIE3A.145
I=ISTART FOURIE3A.146
DO J=1,NVEX FOURIE3A.147
A(I+INC)=0.5*A(I) FOURIE3A.148
I=I+JUMP FOURIE3A.149
ENDDO FOURIE3A.150
IF (MOD(N,2).NE.1) THEN FOURIE3A.151
I=ISTART+N*INC FOURIE3A.152
DO J=1,NVEX FOURIE3A.153
A(I)=0.5*A(I) FOURIE3A.154
I=I+JUMP FOURIE3A.155
ENDDO FOURIE3A.156
END IF FOURIE3A.157
IA=ISTART+INC FOURIE3A.158
LA=1 FOURIE3A.159
IGO=1 FOURIE3A.160
FOURIE3A.161
DO K=1,NFAX FOURIE3A.162
IFAC=IFAX(K+1) FOURIE3A.163
IERR=-1 FOURIE3A.164
IF (IGO.EQ.1) THEN ! Invoke Fourier Synthesis pass FOURIE3A.165
CALL FTRANS
(-1,A(IA),A(IA+LA*INC),WORK(1),WORK(IFAC*LA+1), FOURIE3A.166
& TRIGS,INC,1,JUMP,NX,NVEX,N,IFAC,LA,IERR) FOURIE3A.167
ELSE FOURIE3A.168
CALL FTRANS
(-1,WORK(1),WORK(LA+1),A(IA),A(IA+IFAC*LA*INC), FOURIE3A.169
& TRIGS,1,INC,NX,JUMP,NVEX,N,IFAC,LA,IERR) FOURIE3A.170
END IF FOURIE3A.171
C IF (IERR.NE.0) GO TO 400 FOURIE3A.172
LA=IFAC*LA FOURIE3A.173
IGO=-IGO FOURIE3A.174
IA=ISTART FOURIE3A.175
ENDDO FOURIE3A.176
FOURIE3A.177
C If necessary, copy results back to A: FOURIE3A.178
IF (MOD(NFAX,2).NE.0) THEN FOURIE3A.179
IBASE=1 FOURIE3A.180
JBASE=IA FOURIE3A.181
DO JJ=1,NVEX FOURIE3A.182
I=IBASE FOURIE3A.183
J=JBASE FOURIE3A.184
DO II=1,N FOURIE3A.185
A(J)=WORK(I) FOURIE3A.186
I=I+1 FOURIE3A.187
J=J+INC FOURIE3A.188
ENDDO FOURIE3A.189
IBASE=IBASE+NX FOURIE3A.190
JBASE=JBASE+JUMP FOURIE3A.191
ENDDO FOURIE3A.192
END IF FOURIE3A.193
FOURIE3A.194
C Fill in zeros at end: FOURIE3A.195
IX=ISTART+N*INC FOURIE3A.196
DO J=1,NVEX FOURIE3A.197
A(IX)=0.0 FOURIE3A.198
A(IX+INC)=0.0 FOURIE3A.199
IX=IX+JUMP FOURIE3A.200
ENDDO FOURIE3A.201
ISTART=ISTART+NVEX*JUMP FOURIE3A.202
*IF -DEF,FUJITSU GRB1F405.108
NVEX=64 FOURIE3A.203
*ELSE GRB1F405.109
NVEX=512 GRB1F405.110
*ENDIF GRB1F405.111
ENDDO FOURIE3A.204
FOURIE3A.205
FOURIE3A.206
ELSE ! isign=-1, gridpoint-to-spectral transform FOURIE3A.207
FOURIE3A.208
C------------------------------------------------------ FOURIE3A.209
C Section 3: ISIGN=-1, gridpoint to spectral transform FOURIE3A.210
C------------------------------------------------------ FOURIE3A.211
FOURIE3A.212
ISTART=1 FOURIE3A.213
DO NB=1,NBLOX FOURIE3A.214
IA=ISTART FOURIE3A.215
LA=N FOURIE3A.216
IGO=+1 FOURIE3A.217
FOURIE3A.218
DO K=1,NFAX FOURIE3A.219
IFAC=IFAX(NFAX+2-K) FOURIE3A.220
LA=LA/IFAC FOURIE3A.221
IERR=-1 FOURIE3A.222
IF (IGO.EQ.1) THEN ! Invoke Fourier analysis pass FOURIE3A.223
CALL FTRANS
(1,A(IA),A(IA+IFAC*LA*INC),WORK(1),WORK(LA+1), FOURIE3A.224
& TRIGS,INC,1,JUMP,NX,NVEX,N,IFAC,LA,IERR) FOURIE3A.225
ELSE FOURIE3A.226
CALL FTRANS
(1,WORK(1),WORK(IFAC*LA+1),A(IA),A(IA+LA*INC), FOURIE3A.227
& TRIGS,1,INC,NX,JUMP,NVEX,N,IFAC,LA,IERR) FOURIE3A.228
END IF FOURIE3A.229
C IF (IERR.NE.0) GO TO 500 FOURIE3A.230
IGO=-IGO FOURIE3A.231
IA=ISTART+INC FOURIE3A.232
ENDDO FOURIE3A.233
FOURIE3A.234
C If necessary, copy results back to A: FOURIE3A.235
IF (MOD(NFAX,2).NE.0) THEN FOURIE3A.236
IBASE=1 FOURIE3A.237
JBASE=IA FOURIE3A.238
DO JJ=1,NVEX FOURIE3A.239
I=IBASE FOURIE3A.240
J=JBASE FOURIE3A.241
DO II=1,N FOURIE3A.242
A(J)=WORK(I) FOURIE3A.243
I=I+1 FOURIE3A.244
J=J+INC FOURIE3A.245
ENDDO FOURIE3A.246
IBASE=IBASE+NX FOURIE3A.247
JBASE=JBASE+JUMP FOURIE3A.248
ENDDO FOURIE3A.249
END IF FOURIE3A.250
FOURIE3A.251
C Shift A(0) and fill in zero imaginary parts: FOURIE3A.252
IX=ISTART FOURIE3A.253
DO J=1,NVEX FOURIE3A.254
A(IX)=A(IX+INC) FOURIE3A.255
A(IX+INC)=0.0 FOURIE3A.256
IX=IX+JUMP FOURIE3A.257
ENDDO FOURIE3A.258
IF (MOD(N,2).NE.1) THEN FOURIE3A.259
IZ=ISTART+(N+1)*INC FOURIE3A.260
DO J=1,NVEX FOURIE3A.261
A(IZ)=0.0 FOURIE3A.262
IZ=IZ+JUMP FOURIE3A.263
ENDDO FOURIE3A.264
END IF FOURIE3A.265
FOURIE3A.266
ISTART=ISTART+NVEX*JUMP FOURIE3A.267
*IF -DEF,FUJITSU GRB1F405.112
NVEX=64 FOURIE3A.268
*ELSE GRB1F405.113
NVEX=512 GRB1F405.114
*ENDIF GRB1F405.115
ENDDO FOURIE3A.269
END IF FOURIE3A.270
FOURIE3A.271
C Error messages: FOURIE3A.272
C 400 CONTINUE FOURIE3A.273
C IF(IERR.NE.0) THEN FOURIE3A.274
C IF(IERR.EQ.1) THEN FOURIE3A.275
C WRITE(6,410) NVEX FOURIE3A.276
*IF -DEF,FUJITSU GRB1F405.116
C 410 FORMAT(16H1VECTOR LENGTH =,I4,17H, GREATER THAN 64) FOURIE3A.277
*ELSE GRB1F405.117
C 410 FORMAT(16H1VECTOR LENGTH =,I4,17H, GREATER THAN 512) GRB1F405.118
*ENDIF GRB1F405.119
C ELSE IF(IERR.EQ.2) THEN FOURIE3A.278
C WRITE(6,420) IFAC FOURIE3A.279
C 420 FORMAT( 9H1FACTOR =,I3,17H, NOT CATERED FOR) FOURIE3A.280
C ELSE IF(IERR.EQ.3) THEN FOURIE3A.281
C WRITE(6,430) IFAC FOURIE3A.282
C 430 FORMAT(9H1FACTOR =,I3,31H, ONLY CATERED FOR IF LA*IFAC=N) FOURIE3A.283
C ELSE FOURIE3A.284
C WRITE(4,440) IFAC FOURIE3A.285
C 440 FORMAT(' UNRECOGNISED ERROR MESSAGE, CODE ',I3) FOURIE3A.286
C END IF FOURIE3A.287
C END IF FOURIE3A.288
FOURIE3A.289
C End of routine FOURIER FOURIE3A.290
FOURIE3A.291
RETURN FOURIE3A.292
END FOURIE3A.293
FOURIE3A.294
!- End of subroutine code----------------------------------------- FOURIE3A.295
FOURIE3A.296
C----------------------------------------------------------------------- FOURIE3A.297
C Subroutine FTRANS FOURIE3A.298
C FOURIE3A.299
C $Header: /u/um1/vn4.1/mods/source/RCS/anf1f401,v 1.2 1996/06/21 10:13: FOURIE3A.300
C----------------------------------------------------------------------- FOURIE3A.301
C Fourier transform: FOURIE3A.302
C FOURIE3A.303
!+ Public Domain provided Fourier transform routine. FOURIE3A.304
! Subroutine Interface: FOURIE3A.305
SUBROUTINE FTRANS(ICTL,A,B,C,D,TRIGS,INC1,INC2,INC3,INC4,LOT,N, 4FOURIE3A.306
& IFAC, LA,IERR) FOURIE3A.307
! Description: FOURIE3A.308
! Calculates Fourier Transforms. FOURIE3A.309
! FOURIE3A.310
! Current code owner: Public Domain. FOURIE3A.311
! FOURIE3A.312
! History: FOURIE3A.313
! Version Date Comment FOURIE3A.314
! ======= ==== ======= FOURIE3A.315
! 4.1 June '96 Original code at 4.1. FOURIE3A.316
! Public domain provided software. FOURIE3A.317
! This is primarily for workstation usage. FOURIE3A.318
! FOURIE3A.319
! Code description: FOURIE3A.320
! FORTRAN 77 + common Fortran 90 extensions. FOURIE3A.321
! Written to UM programming standards version 7. FOURIE3A.322
! DOCUMENTATION: NIL. FOURIE3A.323
!END------------------------------------------------------------------ FOURIE3A.324
FOURIE3A.325
IMPLICIT NONE FOURIE3A.326
! FOURIE3A.327
! Subroutine arguments FOURIE3A.328
FOURIE3A.329
INTEGER ICTL ! Control: 1 = analysis; -1 = synthesis FOURIE3A.330
FOURIE3A.331
FOURIE3A.337
INTEGER INC1, ! ADDRESSING INCREMENT FOR A FOURIE3A.338
& INC2, ! ADDRESSING INCREMENT FOR C FOURIE3A.339
& INC3, ! INCREMENT BETWEEN INPUT VECTORS A FOURIE3A.340
& INC4, ! INCREMENT BETWEEN INPUT VECTORS C FOURIE3A.341
& LOT, ! NUMBER OF VECTORS FOURIE3A.342
& N, ! LENGTH OF THE VECTORS FOURIE3A.343
& IFAC, ! CURRENT FACTOR OF N FOURIE3A.344
& LA, ! N/(PRODUCT OF FACTORS USED SO FAR) FOURIE3A.345
& IERR ! Error INDICATOR: FOURIE3A.346
! 0 - PASS COMPLETED WITHOUT ERROR FOURIE3A.347
*IF -DEF,FUJITSU GRB1F405.120
! 1 - LOT GREATER THAN 64 FOURIE3A.348
*ELSE GRB1F405.121
! 1 - LOT GREATER THAN 512 GRB1F405.122
*ENDIF GRB1F405.123
! 2 - IFAC NOT CATERED FOR FOURIE3A.349
! 3 - IFAC ONLY CATERED FOR IF LA=N/IFAC FOURIE3A.350
REAL A(N), ! First real input vector PXORDER.17
& B(N), PXORDER.18
& C(N), ! First real output vector PXORDER.19
& D(N), PXORDER.20
& TRIGS(N) ! Precalculated list of sines & cosines PXORDER.21
FOURIE3A.351
C for Fourier analysis: FOURIE3A.352
C A IS FIRST REAL INPUT VECTOR FOURIE3A.353
C EQUIVALENCE B(1) WITH A(IFAC*LA*INC1+1) FOURIE3A.354
C C IS FIRST REAL OUTPUT VECTOR FOURIE3A.355
C EQUIVALENCE D(1) WITH C(LA*INC2+1) FOURIE3A.356
C FOURIE3A.357
C or for synthesis: FOURIE3A.358
C A IS FIRST REAL INPUT VECTOR FOURIE3A.359
C EQUIVALENCE B(1) WITH A (LA*INC1+1) FOURIE3A.360
C C IS FIRST REAL OUTPUT VECTOR FOURIE3A.361
C EQUIVALENCE D(1) WITH C(IFAC*LA*INC2+1) FOURIE3A.362
FOURIE3A.363
C----------------------------------------------------------------------- FOURIE3A.364
FOURIE3A.365
INTEGER IINK, FOURIE3A.366
& JINK, FOURIE3A.367
& IJUMP, JUMP, FOURIE3A.368
& KSTOP, FOURIE3A.369
& IBASE, FOURIE3A.370
& JBASE, FOURIE3A.371
& IBAD, FOURIE3A.372
& IGO, FOURIE3A.373
& I, J, K, L, M, FOURIE3A.374
& KB, KC, KD, KE, KF, FOURIE3A.375
& IA, IB, IC, ID, IE, IF, IG, IH, FOURIE3A.376
& JA, JB, JC, JD, JE, JF, JG, JH, FOURIE3A.377
& IJK FOURIE3A.378
FOURIE3A.379
REAL A0, A1, A2, A3, A4, A5, A6 FOURIE3A.380
REAL A10, A11 FOURIE3A.381
REAL A20, A21 FOURIE3A.382
FOURIE3A.383
REAL B0, B1, B2, B3, B4, B5, B6 FOURIE3A.384
REAL B10, B11 FOURIE3A.385
REAL B20, B21 FOURIE3A.386
FOURIE3A.387
REAL C1, C2, C3, C4, C5 FOURIE3A.388
REAL S1, S2, S3, S4, S5 FOURIE3A.389
FOURIE3A.390
REAL Z, ZQRT5, ZSIN36, ZSIN45, ZSIN60, ZSIN72 FOURIE3A.391
REAL QQRT5, SSIN36, SSIN45, SSIN60, SSIN72 FOURIE3A.392
FOURIE3A.393
*IF -DEF,FUJITSU GRB1F405.124
REAL AA10(64),AA11(64),AA20(64),AA21(64), FOURIE3A.394
& BB10(64),BB11(64),BB20(64),BB21(64) FOURIE3A.395
*ELSE GRB1F405.125
REAL AA10(512),AA11(512),AA20(512),AA21(512), GRB1F405.126
& BB10(512),BB11(512),BB20(512),BB21(512) GRB1F405.127
*ENDIF GRB1F405.128
FOURIE3A.396
! DOUBLE PRECISION SIN36, SIN45, SIN72, SIN60, QRT5 FOURIE3A.397
REAL SIN36, SIN45, SIN72, SIN60, QRT5 FOURIE3A.398
FOURIE3A.399
DATA SIN36/0.587785252292473/,SIN72/0.951056516295154/, FOURIE3A.400
& QRT5/0.559016994374947/,SIN60/0.866025403784437/ FOURIE3A.401
FOURIE3A.402
!- End of Header -------------------------------------------------- FOURIE3A.403
FOURIE3A.404
IF( ICTL .EQ. 1 )THEN ! Do Fourier Analysis: FOURIE3A.405
FOURIE3A.406
FOURIE3A.407
M=N/IFAC FOURIE3A.408
IINK=LA*INC1 FOURIE3A.409
JINK=LA*INC2 FOURIE3A.410
IJUMP=(IFAC-1)*IINK FOURIE3A.411
KSTOP=(N-IFAC)/(2*IFAC) FOURIE3A.412
FOURIE3A.413
IBAD=1 FOURIE3A.414
*IF -DEF,FUJITSU GRB1F405.129
IF (LOT.GT.64) GO TO 910 FOURIE3A.415
*ELSE GRB1F405.130
IF (LOT.GT.512) GO TO 910 GRB1F405.131
*ENDIF GRB1F405.132
IBASE=0 FOURIE3A.416
JBASE=0 FOURIE3A.417
IGO=IFAC-1 FOURIE3A.418
IF (IGO.EQ.7) IGO=6 FOURIE3A.419
IBAD=2 FOURIE3A.420
IF (IGO.LT.1.OR.IGO.GT.6) GO TO 910 FOURIE3A.421
GO TO (200,300,400,500,600,800),IGO FOURIE3A.422
FOURIE3A.423
FOURIE3A.424
C CODING FOR FACTOR 2 FOURIE3A.425
200 CONTINUE FOURIE3A.426
IA=1 FOURIE3A.427
IB=IA+IINK FOURIE3A.428
JA=1 FOURIE3A.429
JB=JA+(2*M-LA)*INC2 FOURIE3A.430
FOURIE3A.431
IF (LA.EQ.M) GO TO 290 FOURIE3A.432
FOURIE3A.433
DO 220 L=1,LA FOURIE3A.434
I=IBASE FOURIE3A.435
J=JBASE FOURIE3A.436
CDIR$ IVDEP FOURIE3A.437
! Fujitsu vectorization directive GRB0F405.231
!OCL NOVREC GRB0F405.232
DO 210 IJK=1,LOT FOURIE3A.438
C(JA+J)=A(IA+I)+A(IB+I) FOURIE3A.439
C(JB+J)=A(IA+I)-A(IB+I) FOURIE3A.440
I=I+INC3 FOURIE3A.441
J=J+INC4 FOURIE3A.442
210 CONTINUE FOURIE3A.443
IBASE=IBASE+INC1 FOURIE3A.444
JBASE=JBASE+INC2 FOURIE3A.445
220 CONTINUE FOURIE3A.446
JA=JA+JINK FOURIE3A.447
JINK=2*JINK FOURIE3A.448
JB=JB-JINK FOURIE3A.449
IBASE=IBASE+IJUMP FOURIE3A.450
IJUMP=2*IJUMP+IINK FOURIE3A.451
IF (JA.EQ.JB) GO TO 260 FOURIE3A.452
DO 250 K=LA,KSTOP,LA FOURIE3A.453
KB=K+K FOURIE3A.454
C1=TRIGS(KB+1) FOURIE3A.455
S1=TRIGS(KB+2) FOURIE3A.456
JBASE=0 FOURIE3A.457
DO 240 L=1,LA FOURIE3A.458
I=IBASE FOURIE3A.459
J=JBASE FOURIE3A.460
CDIR$ IVDEP FOURIE3A.461
! Fujitsu vectorization directive GRB0F405.233
!OCL NOVREC GRB0F405.234
DO 230 IJK=1,LOT FOURIE3A.462
C(JA+J)=A(IA+I)+(C1*A(IB+I)+S1*B(IB+I)) FOURIE3A.463
C(JB+J)=A(IA+I)-(C1*A(IB+I)+S1*B(IB+I)) FOURIE3A.464
D(JA+J)=(C1*B(IB+I)-S1*A(IB+I))+B(IA+I) FOURIE3A.465
D(JB+J)=(C1*B(IB+I)-S1*A(IB+I))-B(IA+I) FOURIE3A.466
I=I+INC3 FOURIE3A.467
J=J+INC4 FOURIE3A.468
230 CONTINUE FOURIE3A.469
IBASE=IBASE+INC1 FOURIE3A.470
JBASE=JBASE+INC2 FOURIE3A.471
240 CONTINUE FOURIE3A.472
IBASE=IBASE+IJUMP FOURIE3A.473
JA=JA+JINK FOURIE3A.474
JB=JB-JINK FOURIE3A.475
250 CONTINUE FOURIE3A.476
IF (JA.GT.JB) GO TO 900 FOURIE3A.477
260 CONTINUE FOURIE3A.478
JBASE=0 FOURIE3A.479
DO 280 L=1,LA FOURIE3A.480
I=IBASE FOURIE3A.481
J=JBASE FOURIE3A.482
CDIR$ IVDEP FOURIE3A.483
! Fujitsu vectorization directive GRB0F405.235
!OCL NOVREC GRB0F405.236
DO 270 IJK=1,LOT FOURIE3A.484
C(JA+J)=A(IA+I) FOURIE3A.485
D(JA+J)=-A(IB+I) FOURIE3A.486
I=I+INC3 FOURIE3A.487
J=J+INC4 FOURIE3A.488
270 CONTINUE FOURIE3A.489
IBASE=IBASE+INC1 FOURIE3A.490
JBASE=JBASE+INC2 FOURIE3A.491
280 CONTINUE FOURIE3A.492
GO TO 900 FOURIE3A.493
FOURIE3A.494
290 CONTINUE FOURIE3A.495
Z=1.0/FLOAT(N) FOURIE3A.496
DO 294 L=1,LA FOURIE3A.497
I=IBASE FOURIE3A.498
J=JBASE FOURIE3A.499
CDIR$ IVDEP FOURIE3A.500
! Fujitsu vectorization directive GRB0F405.237
!OCL NOVREC GRB0F405.238
DO 292 IJK=1,LOT FOURIE3A.501
C(JA+J)=Z*(A(IA+I)+A(IB+I)) FOURIE3A.502
C(JB+J)=Z*(A(IA+I)-A(IB+I)) FOURIE3A.503
I=I+INC3 FOURIE3A.504
J=J+INC4 FOURIE3A.505
292 CONTINUE FOURIE3A.506
IBASE=IBASE+INC1 FOURIE3A.507
JBASE=JBASE+INC2 FOURIE3A.508
294 CONTINUE FOURIE3A.509
GO TO 900 FOURIE3A.510
FOURIE3A.511
C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FOURIE3A.512
C Coding for factor 3: FOURIE3A.513
300 CONTINUE FOURIE3A.514
IA=1 FOURIE3A.515
IB=IA+IINK FOURIE3A.516
IC=IB+IINK FOURIE3A.517
JA=1 FOURIE3A.518
JB=JA+(2*M-LA)*INC2 FOURIE3A.519
JC=JB FOURIE3A.520
FOURIE3A.521
IF (LA.EQ.M) GO TO 390 FOURIE3A.522
FOURIE3A.523
DO 320 L=1,LA FOURIE3A.524
I=IBASE FOURIE3A.525
J=JBASE FOURIE3A.526
CDIR$ IVDEP FOURIE3A.527
! Fujitsu vectorization directive GRB0F405.239
!OCL NOVREC GRB0F405.240
DO 310 IJK=1,LOT FOURIE3A.528
C(JA+J)=A(IA+I)+(A(IB+I)+A(IC+I)) FOURIE3A.529
C(JB+J)=A(IA+I)-0.5*(A(IB+I)+A(IC+I)) FOURIE3A.530
D(JB+J)=SIN60*(A(IC+I)-A(IB+I)) FOURIE3A.531
I=I+INC3 FOURIE3A.532
J=J+INC4 FOURIE3A.533
310 CONTINUE FOURIE3A.534
IBASE=IBASE+INC1 FOURIE3A.535
JBASE=JBASE+INC2 FOURIE3A.536
320 CONTINUE FOURIE3A.537
JA=JA+JINK FOURIE3A.538
JINK=2*JINK FOURIE3A.539
JB=JB+JINK FOURIE3A.540
JC=JC-JINK FOURIE3A.541
IBASE=IBASE+IJUMP FOURIE3A.542
IJUMP=2*IJUMP+IINK FOURIE3A.543
IF (JA.EQ.JC) GO TO 360 FOURIE3A.544
DO 350 K=LA,KSTOP,LA FOURIE3A.545
KB=K+K FOURIE3A.546
KC=KB+KB FOURIE3A.547
C1=TRIGS(KB+1) FOURIE3A.548
S1=TRIGS(KB+2) FOURIE3A.549
C2=TRIGS(KC+1) FOURIE3A.550
S2=TRIGS(KC+2) FOURIE3A.551
JBASE=0 FOURIE3A.552
DO 340 L=1,LA FOURIE3A.553
I=IBASE FOURIE3A.554
J=JBASE FOURIE3A.555
CDIR$ IVDEP FOURIE3A.556
! Fujitsu vectorization directive GRB0F405.241
!OCL NOVREC GRB0F405.242
DO 330 IJK=1,LOT FOURIE3A.557
A1=(C1*A(IB+I)+S1*B(IB+I))+(C2*A(IC+I)+S2*B(IC+I)) FOURIE3A.558
B1=(C1*B(IB+I)-S1*A(IB+I))+(C2*B(IC+I)-S2*A(IC+I)) FOURIE3A.559
A2=A(IA+I)-0.5*A1 FOURIE3A.560
B2=B(IA+I)-0.5*B1 FOURIE3A.561
A3=SIN60* FOURIE3A.562
$ ((C1*A(IB+I)+S1*B(IB+I))-(C2*A(IC+I)+S2*B(IC+I))) FOURIE3A.563
B3=SIN60* FOURIE3A.564
$ ((C1*B(IB+I)-S1*A(IB+I))-(C2*B(IC+I)-S2*A(IC+I))) FOURIE3A.565
C(JA+J)=A(IA+I)+A1 FOURIE3A.566
D(JA+J)=B(IA+I)+B1 FOURIE3A.567
C(JB+J)=A2+B3 FOURIE3A.568
D(JB+J)=B2-A3 FOURIE3A.569
C(JC+J)=A2-B3 FOURIE3A.570
D(JC+J)=-(B2+A3) FOURIE3A.571
I=I+INC3 FOURIE3A.572
J=J+INC4 FOURIE3A.573
330 CONTINUE FOURIE3A.574
IBASE=IBASE+INC1 FOURIE3A.575
JBASE=JBASE+INC2 FOURIE3A.576
340 CONTINUE FOURIE3A.577
IBASE=IBASE+IJUMP FOURIE3A.578
JA=JA+JINK FOURIE3A.579
JB=JB+JINK FOURIE3A.580
JC=JC-JINK FOURIE3A.581
350 CONTINUE FOURIE3A.582
IF (JA.GT.JC) GO TO 900 FOURIE3A.583
360 CONTINUE FOURIE3A.584
JBASE=0 FOURIE3A.585
DO 380 L=1,LA FOURIE3A.586
I=IBASE FOURIE3A.587
J=JBASE FOURIE3A.588
CDIR$ IVDEP FOURIE3A.589
! Fujitsu vectorization directive GRB0F405.243
!OCL NOVREC GRB0F405.244
DO 370 IJK=1,LOT FOURIE3A.590
C(JA+J)=A(IA+I)+0.5*(A(IB+I)-A(IC+I)) FOURIE3A.591
D(JA+J)=-SIN60*(A(IB+I)+A(IC+I)) FOURIE3A.592
C(JB+J)=A(IA+I)-(A(IB+I)-A(IC+I)) FOURIE3A.593
I=I+INC3 FOURIE3A.594
J=J+INC4 FOURIE3A.595
370 CONTINUE FOURIE3A.596
IBASE=IBASE+INC1 FOURIE3A.597
JBASE=JBASE+INC2 FOURIE3A.598
380 CONTINUE FOURIE3A.599
GO TO 900 FOURIE3A.600
FOURIE3A.601
390 CONTINUE FOURIE3A.602
Z=1.0/FLOAT(N) FOURIE3A.603
ZSIN60=Z*SIN60 FOURIE3A.604
DO 394 L=1,LA FOURIE3A.605
I=IBASE FOURIE3A.606
J=JBASE FOURIE3A.607
CDIR$ IVDEP FOURIE3A.608
! Fujitsu vectorization directive GRB0F405.245
!OCL NOVREC GRB0F405.246
DO 392 IJK=1,LOT FOURIE3A.609
C(JA+J)=Z*(A(IA+I)+(A(IB+I)+A(IC+I))) FOURIE3A.610
C(JB+J)=Z*(A(IA+I)-0.5*(A(IB+I)+A(IC+I))) FOURIE3A.611
D(JB+J)=ZSIN60*(A(IC+I)-A(IB+I)) FOURIE3A.612
I=I+INC3 FOURIE3A.613
J=J+INC4 FOURIE3A.614
392 CONTINUE FOURIE3A.615
IBASE=IBASE+INC1 FOURIE3A.616
JBASE=JBASE+INC2 FOURIE3A.617
394 CONTINUE FOURIE3A.618
GO TO 900 FOURIE3A.619
FOURIE3A.620
C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FOURIE3A.621
C Coding for factor 4 FOURIE3A.622
400 CONTINUE FOURIE3A.623
IA=1 FOURIE3A.624
IB=IA+IINK FOURIE3A.625
IC=IB+IINK FOURIE3A.626
ID=IC+IINK FOURIE3A.627
JA=1 FOURIE3A.628
JB=JA+(2*M-LA)*INC2 FOURIE3A.629
JC=JB+2*M*INC2 FOURIE3A.630
JD=JB FOURIE3A.631
FOURIE3A.632
IF (LA.EQ.M) GO TO 490 FOURIE3A.633
FOURIE3A.634
DO 420 L=1,LA FOURIE3A.635
I=IBASE FOURIE3A.636
J=JBASE FOURIE3A.637
CDIR$ IVDEP FOURIE3A.638
! Fujitsu vectorization directive GRB0F405.247
!OCL NOVREC GRB0F405.248
DO 410 IJK=1,LOT FOURIE3A.639
C(JA+J)=(A(IA+I)+A(IC+I))+(A(IB+I)+A(ID+I)) FOURIE3A.640
C(JC+J)=(A(IA+I)+A(IC+I))-(A(IB+I)+A(ID+I)) FOURIE3A.641
C(JB+J)=A(IA+I)-A(IC+I) FOURIE3A.642
D(JB+J)=A(ID+I)-A(IB+I) FOURIE3A.643
I=I+INC3 FOURIE3A.644
J=J+INC4 FOURIE3A.645
410 CONTINUE FOURIE3A.646
IBASE=IBASE+INC1 FOURIE3A.647
JBASE=JBASE+INC2 FOURIE3A.648
420 CONTINUE FOURIE3A.649
JA=JA+JINK FOURIE3A.650
JINK=2*JINK FOURIE3A.651
JB=JB+JINK FOURIE3A.652
JC=JC-JINK FOURIE3A.653
JD=JD-JINK FOURIE3A.654
IBASE=IBASE+IJUMP FOURIE3A.655
IJUMP=2*IJUMP+IINK FOURIE3A.656
IF (JB.EQ.JC) GO TO 460 FOURIE3A.657
DO 450 K=LA,KSTOP,LA FOURIE3A.658
KB=K+K FOURIE3A.659
KC=KB+KB FOURIE3A.660
KD=KC+KB FOURIE3A.661
C1=TRIGS(KB+1) FOURIE3A.662
S1=TRIGS(KB+2) FOURIE3A.663
C2=TRIGS(KC+1) FOURIE3A.664
S2=TRIGS(KC+2) FOURIE3A.665
C3=TRIGS(KD+1) FOURIE3A.666
S3=TRIGS(KD+2) FOURIE3A.667
JBASE=0 FOURIE3A.668
DO 440 L=1,LA FOURIE3A.669
I=IBASE FOURIE3A.670
J=JBASE FOURIE3A.671
CDIR$ IVDEP FOURIE3A.672
! Fujitsu vectorization directive GRB0F405.249
!OCL NOVREC GRB0F405.250
DO 430 IJK=1,LOT FOURIE3A.673
A0=A(IA+I)+(C2*A(IC+I)+S2*B(IC+I)) FOURIE3A.674
A2=A(IA+I)-(C2*A(IC+I)+S2*B(IC+I)) FOURIE3A.675
A1=(C1*A(IB+I)+S1*B(IB+I))+(C3*A(ID+I)+S3*B(ID+I)) FOURIE3A.676
A3=(C1*A(IB+I)+S1*B(IB+I))-(C3*A(ID+I)+S3*B(ID+I)) FOURIE3A.677
B0=B(IA+I)+(C2*B(IC+I)-S2*A(IC+I)) FOURIE3A.678
B2=B(IA+I)-(C2*B(IC+I)-S2*A(IC+I)) FOURIE3A.679
B1=(C1*B(IB+I)-S1*A(IB+I))+(C3*B(ID+I)-S3*A(ID+I)) FOURIE3A.680
B3=(C1*B(IB+I)-S1*A(IB+I))-(C3*B(ID+I)-S3*A(ID+I)) FOURIE3A.681
C(JA+J)=A0+A1 FOURIE3A.682
C(JC+J)=A0-A1 FOURIE3A.683
D(JA+J)=B0+B1 FOURIE3A.684
D(JC+J)=B1-B0 FOURIE3A.685
C(JB+J)=A2+B3 FOURIE3A.686
C(JD+J)=A2-B3 FOURIE3A.687
D(JB+J)=B2-A3 FOURIE3A.688
D(JD+J)=-(B2+A3) FOURIE3A.689
I=I+INC3 FOURIE3A.690
J=J+INC4 FOURIE3A.691
430 CONTINUE FOURIE3A.692
IBASE=IBASE+INC1 FOURIE3A.693
JBASE=JBASE+INC2 FOURIE3A.694
440 CONTINUE FOURIE3A.695
IBASE=IBASE+IJUMP FOURIE3A.696
JA=JA+JINK FOURIE3A.697
JB=JB+JINK FOURIE3A.698
JC=JC-JINK FOURIE3A.699
JD=JD-JINK FOURIE3A.700
450 CONTINUE FOURIE3A.701
IF (JB.GT.JC) GO TO 900 FOURIE3A.702
460 CONTINUE FOURIE3A.703
SIN45=SQRT(0.5) FOURIE3A.704
JBASE=0 FOURIE3A.705
DO 480 L=1,LA FOURIE3A.706
I=IBASE FOURIE3A.707
J=JBASE FOURIE3A.708
CDIR$ IVDEP FOURIE3A.709
! Fujitsu vectorization directive GRB0F405.251
!OCL NOVREC GRB0F405.252
DO 470 IJK=1,LOT FOURIE3A.710
C(JA+J)=A(IA+I)+SIN45*(A(IB+I)-A(ID+I)) FOURIE3A.711
C(JB+J)=A(IA+I)-SIN45*(A(IB+I)-A(ID+I)) FOURIE3A.712
D(JA+J)=-A(IC+I)-SIN45*(A(IB+I)+A(ID+I)) FOURIE3A.713
D(JB+J)=A(IC+I)-SIN45*(A(IB+I)+A(ID+I)) FOURIE3A.714
I=I+INC3 FOURIE3A.715
J=J+INC4 FOURIE3A.716
470 CONTINUE FOURIE3A.717
IBASE=IBASE+INC1 FOURIE3A.718
JBASE=JBASE+INC2 FOURIE3A.719
480 CONTINUE FOURIE3A.720
GO TO 900 FOURIE3A.721
C FOURIE3A.722
490 CONTINUE FOURIE3A.723
Z=1.0/FLOAT(N) FOURIE3A.724
DO 494 L=1,LA FOURIE3A.725
I=IBASE FOURIE3A.726
J=JBASE FOURIE3A.727
CDIR$ IVDEP FOURIE3A.728
! Fujitsu vectorization directive GRB0F405.253
!OCL NOVREC GRB0F405.254
DO 492 IJK=1,LOT FOURIE3A.729
C(JA+J)=Z*((A(IA+I)+A(IC+I))+(A(IB+I)+A(ID+I))) FOURIE3A.730
C(JC+J)=Z*((A(IA+I)+A(IC+I))-(A(IB+I)+A(ID+I))) FOURIE3A.731
C(JB+J)=Z*(A(IA+I)-A(IC+I)) FOURIE3A.732
D(JB+J)=Z*(A(ID+I)-A(IB+I)) FOURIE3A.733
I=I+INC3 FOURIE3A.734
J=J+INC4 FOURIE3A.735
492 CONTINUE FOURIE3A.736
IBASE=IBASE+INC1 FOURIE3A.737
JBASE=JBASE+INC2 FOURIE3A.738
494 CONTINUE FOURIE3A.739
GO TO 900 FOURIE3A.740
FOURIE3A.741
C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FOURIE3A.742
C Coding for factor 5 FOURIE3A.743
500 CONTINUE FOURIE3A.744
IA=1 FOURIE3A.745
IB=IA+IINK FOURIE3A.746
IC=IB+IINK FOURIE3A.747
ID=IC+IINK FOURIE3A.748
IE=ID+IINK FOURIE3A.749
JA=1 FOURIE3A.750
JB=JA+(2*M-LA)*INC2 FOURIE3A.751
JC=JB+2*M*INC2 FOURIE3A.752
JD=JC FOURIE3A.753
JE=JB FOURIE3A.754
FOURIE3A.755
IF (LA.EQ.M) GO TO 590 FOURIE3A.756
FOURIE3A.757
DO 520 L=1,LA FOURIE3A.758
I=IBASE FOURIE3A.759
J=JBASE FOURIE3A.760
CDIR$ IVDEP FOURIE3A.761
! Fujitsu vectorization directive GRB0F405.255
!OCL NOVREC GRB0F405.256
DO 510 IJK=1,LOT FOURIE3A.762
A1=A(IB+I)+A(IE+I) FOURIE3A.763
A3=A(IB+I)-A(IE+I) FOURIE3A.764
A2=A(IC+I)+A(ID+I) FOURIE3A.765
A4=A(IC+I)-A(ID+I) FOURIE3A.766
A5=A(IA+I)-0.25*(A1+A2) FOURIE3A.767
A6=QRT5*(A1-A2) FOURIE3A.768
C(JA+J)=A(IA+I)+(A1+A2) FOURIE3A.769
C(JB+J)=A5+A6 FOURIE3A.770
C(JC+J)=A5-A6 FOURIE3A.771
D(JB+J)=-SIN72*A3-SIN36*A4 FOURIE3A.772
D(JC+J)=-SIN36*A3+SIN72*A4 FOURIE3A.773
I=I+INC3 FOURIE3A.774
J=J+INC4 FOURIE3A.775
510 CONTINUE FOURIE3A.776
IBASE=IBASE+INC1 FOURIE3A.777
JBASE=JBASE+INC2 FOURIE3A.778
520 CONTINUE FOURIE3A.779
JA=JA+JINK FOURIE3A.780
JINK=2*JINK FOURIE3A.781
JB=JB+JINK FOURIE3A.782
JC=JC+JINK FOURIE3A.783
JD=JD-JINK FOURIE3A.784
JE=JE-JINK FOURIE3A.785
IBASE=IBASE+IJUMP FOURIE3A.786
IJUMP=2*IJUMP+IINK FOURIE3A.787
IF (JB.EQ.JD) GO TO 560 FOURIE3A.788
DO 550 K=LA,KSTOP,LA FOURIE3A.789
KB=K+K FOURIE3A.790
KC=KB+KB FOURIE3A.791
KD=KC+KB FOURIE3A.792
KE=KD+KB FOURIE3A.793
C1=TRIGS(KB+1) FOURIE3A.794
S1=TRIGS(KB+2) FOURIE3A.795
C2=TRIGS(KC+1) FOURIE3A.796
S2=TRIGS(KC+2) FOURIE3A.797
C3=TRIGS(KD+1) FOURIE3A.798
S3=TRIGS(KD+2) FOURIE3A.799
C4=TRIGS(KE+1) FOURIE3A.800
S4=TRIGS(KE+2) FOURIE3A.801
JBASE=0 FOURIE3A.802
DO 540 L=1,LA FOURIE3A.803
I=IBASE FOURIE3A.804
J=JBASE FOURIE3A.805
CDIR$ IVDEP FOURIE3A.806
! Fujitsu vectorization directive GRB0F405.257
!OCL NOVREC GRB0F405.258
DO 530 IJK=1,LOT FOURIE3A.807
A1=(C1*A(IB+I)+S1*B(IB+I))+(C4*A(IE+I)+S4*B(IE+I)) FOURIE3A.808
A3=(C1*A(IB+I)+S1*B(IB+I))-(C4*A(IE+I)+S4*B(IE+I)) FOURIE3A.809
A2=(C2*A(IC+I)+S2*B(IC+I))+(C3*A(ID+I)+S3*B(ID+I)) FOURIE3A.810
A4=(C2*A(IC+I)+S2*B(IC+I))-(C3*A(ID+I)+S3*B(ID+I)) FOURIE3A.811
B1=(C1*B(IB+I)-S1*A(IB+I))+(C4*B(IE+I)-S4*A(IE+I)) FOURIE3A.812
B3=(C1*B(IB+I)-S1*A(IB+I))-(C4*B(IE+I)-S4*A(IE+I)) FOURIE3A.813
B2=(C2*B(IC+I)-S2*A(IC+I))+(C3*B(ID+I)-S3*A(ID+I)) FOURIE3A.814
B4=(C2*B(IC+I)-S2*A(IC+I))-(C3*B(ID+I)-S3*A(ID+I)) FOURIE3A.815
A5=A(IA+I)-0.25*(A1+A2) FOURIE3A.816
A6=QRT5*(A1-A2) FOURIE3A.817
B5=B(IA+I)-0.25*(B1+B2) FOURIE3A.818
B6=QRT5*(B1-B2) FOURIE3A.819
A10=A5+A6 FOURIE3A.820
A20=A5-A6 FOURIE3A.821
B10=B5+B6 FOURIE3A.822
B20=B5-B6 FOURIE3A.823
A11=SIN72*B3+SIN36*B4 FOURIE3A.824
A21=SIN36*B3-SIN72*B4 FOURIE3A.825
B11=SIN72*A3+SIN36*A4 FOURIE3A.826
B21=SIN36*A3-SIN72*A4 FOURIE3A.827
C(JA+J)=A(IA+I)+(A1+A2) FOURIE3A.828
C(JB+J)=A10+A11 FOURIE3A.829
C(JE+J)=A10-A11 FOURIE3A.830
C(JC+J)=A20+A21 FOURIE3A.831
C(JD+J)=A20-A21 FOURIE3A.832
D(JA+J)=B(IA+I)+(B1+B2) FOURIE3A.833
D(JB+J)=B10-B11 FOURIE3A.834
D(JE+J)=-(B10+B11) FOURIE3A.835
D(JC+J)=B20-B21 FOURIE3A.836
D(JD+J)=-(B20+B21) FOURIE3A.837
I=I+INC3 FOURIE3A.838
J=J+INC4 FOURIE3A.839
530 CONTINUE FOURIE3A.840
IBASE=IBASE+INC1 FOURIE3A.841
JBASE=JBASE+INC2 FOURIE3A.842
540 CONTINUE FOURIE3A.843
IBASE=IBASE+IJUMP FOURIE3A.844
JA=JA+JINK FOURIE3A.845
JB=JB+JINK FOURIE3A.846
JC=JC+JINK FOURIE3A.847
JD=JD-JINK FOURIE3A.848
JE=JE-JINK FOURIE3A.849
550 CONTINUE FOURIE3A.850
IF (JB.GT.JD) GO TO 900 FOURIE3A.851
560 CONTINUE FOURIE3A.852
JBASE=0 FOURIE3A.853
DO 580 L=1,LA FOURIE3A.854
I=IBASE FOURIE3A.855
J=JBASE FOURIE3A.856
CDIR$ IVDEP FOURIE3A.857
! Fujitsu vectorization directive GRB0F405.259
!OCL NOVREC GRB0F405.260
DO 570 IJK=1,LOT FOURIE3A.858
A1=A(IB+I)+A(IE+I) FOURIE3A.859
A3=A(IB+I)-A(IE+I) FOURIE3A.860
A2=A(IC+I)+A(ID+I) FOURIE3A.861
A4=A(IC+I)-A(ID+I) FOURIE3A.862
A5=A(IA+I)+0.25*(A3-A4) FOURIE3A.863
A6=QRT5*(A3+A4) FOURIE3A.864
C(JA+J)=A5+A6 FOURIE3A.865
C(JB+J)=A5-A6 FOURIE3A.866
C(JC+J)=A(IA+I)-(A3-A4) FOURIE3A.867
D(JA+J)=-SIN36*A1-SIN72*A2 FOURIE3A.868
D(JB+J)=-SIN72*A1+SIN36*A2 FOURIE3A.869
I=I+INC3 FOURIE3A.870
J=J+INC4 FOURIE3A.871
570 CONTINUE FOURIE3A.872
IBASE=IBASE+INC1 FOURIE3A.873
JBASE=JBASE+INC2 FOURIE3A.874
580 CONTINUE FOURIE3A.875
GO TO 900 FOURIE3A.876
C FOURIE3A.877
590 CONTINUE FOURIE3A.878
Z=1.0/FLOAT(N) FOURIE3A.879
ZQRT5=Z*QRT5 FOURIE3A.880
ZSIN36=Z*SIN36 FOURIE3A.881
ZSIN72=Z*SIN72 FOURIE3A.882
DO 594 L=1,LA FOURIE3A.883
I=IBASE FOURIE3A.884
J=JBASE FOURIE3A.885
CDIR$ IVDEP FOURIE3A.886
! Fujitsu vectorization directive GRB0F405.261
!OCL NOVREC GRB0F405.262
DO 592 IJK=1,LOT FOURIE3A.887
A1=A(IB+I)+A(IE+I) FOURIE3A.888
A3=A(IB+I)-A(IE+I) FOURIE3A.889
A2=A(IC+I)+A(ID+I) FOURIE3A.890
A4=A(IC+I)-A(ID+I) FOURIE3A.891
A5=Z*(A(IA+I)-0.25*(A1+A2)) FOURIE3A.892
A6=ZQRT5*(A1-A2) FOURIE3A.893
C(JA+J)=Z*(A(IA+I)+(A1+A2)) FOURIE3A.894
C(JB+J)=A5+A6 FOURIE3A.895
C(JC+J)=A5-A6 FOURIE3A.896
D(JB+J)=-ZSIN72*A3-ZSIN36*A4 FOURIE3A.897
D(JC+J)=-ZSIN36*A3+ZSIN72*A4 FOURIE3A.898
I=I+INC3 FOURIE3A.899
J=J+INC4 FOURIE3A.900
592 CONTINUE FOURIE3A.901
IBASE=IBASE+INC1 FOURIE3A.902
JBASE=JBASE+INC2 FOURIE3A.903
594 CONTINUE FOURIE3A.904
GO TO 900 FOURIE3A.905
FOURIE3A.906
C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FOURIE3A.907
C Coding for factor 6 FOURIE3A.908
600 CONTINUE FOURIE3A.909
IA=1 FOURIE3A.910
IB=IA+IINK FOURIE3A.911
IC=IB+IINK FOURIE3A.912
ID=IC+IINK FOURIE3A.913
IE=ID+IINK FOURIE3A.914
IF=IE+IINK FOURIE3A.915
JA=1 FOURIE3A.916
JB=JA+(2*M-LA)*INC2 FOURIE3A.917
JC=JB+2*M*INC2 FOURIE3A.918
JD=JC+2*M*INC2 FOURIE3A.919
JE=JC FOURIE3A.920
JF=JB FOURIE3A.921
C FOURIE3A.922
IF (LA.EQ.M) GO TO 690 FOURIE3A.923
C FOURIE3A.924
DO 620 L=1,LA FOURIE3A.925
I=IBASE FOURIE3A.926
J=JBASE FOURIE3A.927
CDIR$ IVDEP FOURIE3A.928
! Fujitsu vectorization directive GRB0F405.263
!OCL NOVREC GRB0F405.264
DO 610 IJK=1,LOT FOURIE3A.929
A11=(A(IC+I)+A(IF+I))+(A(IB+I)+A(IE+I)) FOURIE3A.930
C(JA+J)=(A(IA+I)+A(ID+I))+A11 FOURIE3A.931
C(JC+J)=(A(IA+I)+A(ID+I)-0.5*A11) FOURIE3A.932
D(JC+J)=SIN60*((A(IC+I)+A(IF+I))-(A(IB+I)+A(IE+I))) FOURIE3A.933
A11=(A(IC+I)-A(IF+I))+(A(IE+I)-A(IB+I)) FOURIE3A.934
C(JB+J)=(A(IA+I)-A(ID+I))-0.5*A11 FOURIE3A.935
D(JB+J)=SIN60*((A(IE+I)-A(IB+I))-(A(IC+I)-A(IF+I))) FOURIE3A.936
C(JD+J)=(A(IA+I)-A(ID+I))+A11 FOURIE3A.937
I=I+INC3 FOURIE3A.938
J=J+INC4 FOURIE3A.939
610 CONTINUE FOURIE3A.940
IBASE=IBASE+INC1 FOURIE3A.941
JBASE=JBASE+INC2 FOURIE3A.942
620 CONTINUE FOURIE3A.943
JA=JA+JINK FOURIE3A.944
JINK=2*JINK FOURIE3A.945
JB=JB+JINK FOURIE3A.946
JC=JC+JINK FOURIE3A.947
JD=JD-JINK FOURIE3A.948
JE=JE-JINK FOURIE3A.949
JF=JF-JINK FOURIE3A.950
IBASE=IBASE+IJUMP FOURIE3A.951
IJUMP=2*IJUMP+IINK FOURIE3A.952
IF (JC.EQ.JD) GO TO 660 FOURIE3A.953
DO 650 K=LA,KSTOP,LA FOURIE3A.954
KB=K+K FOURIE3A.955
KC=KB+KB FOURIE3A.956
KD=KC+KB FOURIE3A.957
KE=KD+KB FOURIE3A.958
KF=KE+KB FOURIE3A.959
C1=TRIGS(KB+1) FOURIE3A.960
S1=TRIGS(KB+2) FOURIE3A.961
C2=TRIGS(KC+1) FOURIE3A.962
S2=TRIGS(KC+2) FOURIE3A.963
C3=TRIGS(KD+1) FOURIE3A.964
S3=TRIGS(KD+2) FOURIE3A.965
C4=TRIGS(KE+1) FOURIE3A.966
S4=TRIGS(KE+2) FOURIE3A.967
C5=TRIGS(KF+1) FOURIE3A.968
S5=TRIGS(KF+2) FOURIE3A.969
JBASE=0 FOURIE3A.970
DO 640 L=1,LA FOURIE3A.971
I=IBASE FOURIE3A.972
J=JBASE FOURIE3A.973
CDIR$ IVDEP FOURIE3A.974
! Fujitsu vectorization directive GRB0F405.265
!OCL NOVREC GRB0F405.266
DO 630 IJK=1,LOT FOURIE3A.975
A1=C1*A(IB+I)+S1*B(IB+I) FOURIE3A.976
B1=C1*B(IB+I)-S1*A(IB+I) FOURIE3A.977
A2=C2*A(IC+I)+S2*B(IC+I) FOURIE3A.978
B2=C2*B(IC+I)-S2*A(IC+I) FOURIE3A.979
A3=C3*A(ID+I)+S3*B(ID+I) FOURIE3A.980
B3=C3*B(ID+I)-S3*A(ID+I) FOURIE3A.981
A4=C4*A(IE+I)+S4*B(IE+I) FOURIE3A.982
B4=C4*B(IE+I)-S4*A(IE+I) FOURIE3A.983
A5=C5*A(IF+I)+S5*B(IF+I) FOURIE3A.984
B5=C5*B(IF+I)-S5*A(IF+I) FOURIE3A.985
A11=(A2+A5)+(A1+A4) FOURIE3A.986
A20=(A(IA+I)+A3)-0.5*A11 FOURIE3A.987
A21=SIN60*((A2+A5)-(A1+A4)) FOURIE3A.988
B11=(B2+B5)+(B1+B4) FOURIE3A.989
B20=(B(IA+I)+B3)-0.5*B11 FOURIE3A.990
B21=SIN60*((B2+B5)-(B1+B4)) FOURIE3A.991
C(JA+J)=(A(IA+I)+A3)+A11 FOURIE3A.992
D(JA+J)=(B(IA+I)+B3)+B11 FOURIE3A.993
C(JC+J)=A20-B21 FOURIE3A.994
D(JC+J)=A21+B20 FOURIE3A.995
C(JE+J)=A20+B21 FOURIE3A.996
D(JE+J)=A21-B20 FOURIE3A.997
A11=(A2-A5)+(A4-A1) FOURIE3A.998
A20=(A(IA+I)-A3)-0.5*A11 FOURIE3A.999
A21=SIN60*((A4-A1)-(A2-A5)) FOURIE3A.1000
B11=(B5-B2)-(B4-B1) FOURIE3A.1001
B20=(B3-B(IA+I))-0.5*B11 FOURIE3A.1002
B21=SIN60*((B5-B2)+(B4-B1)) FOURIE3A.1003
C(JB+J)=A20-B21 FOURIE3A.1004
D(JB+J)=A21-B20 FOURIE3A.1005
C(JD+J)=A11+(A(IA+I)-A3) FOURIE3A.1006
D(JD+J)=B11+(B3-B(IA+I)) FOURIE3A.1007
C(JF+J)=A20+B21 FOURIE3A.1008
D(JF+J)=A21+B20 FOURIE3A.1009
I=I+INC3 FOURIE3A.1010
J=J+INC4 FOURIE3A.1011
630 CONTINUE FOURIE3A.1012
IBASE=IBASE+INC1 FOURIE3A.1013
JBASE=JBASE+INC2 FOURIE3A.1014
640 CONTINUE FOURIE3A.1015
IBASE=IBASE+IJUMP FOURIE3A.1016
JA=JA+JINK FOURIE3A.1017
JB=JB+JINK FOURIE3A.1018
JC=JC+JINK FOURIE3A.1019
JD=JD-JINK FOURIE3A.1020
JE=JE-JINK FOURIE3A.1021
JF=JF-JINK FOURIE3A.1022
650 CONTINUE FOURIE3A.1023
IF (JC.GT.JD) GO TO 900 FOURIE3A.1024
660 CONTINUE FOURIE3A.1025
JBASE=0 FOURIE3A.1026
DO 680 L=1,LA FOURIE3A.1027
I=IBASE FOURIE3A.1028
J=JBASE FOURIE3A.1029
CDIR$ IVDEP FOURIE3A.1030
! Fujitsu vectorization directive GRB0F405.267
!OCL NOVREC GRB0F405.268
DO 670 IJK=1,LOT FOURIE3A.1031
C(JA+J)=(A(IA+I)+0.5*(A(IC+I)-A(IE+I))) + FOURIE3A.1032
$ SIN60*(A(IB+I)-A(IF+I)) FOURIE3A.1033
D(JA+J)=-(A(ID+I)+0.5*(A(IB+I)+A(IF+I))) - FOURIE3A.1034
$ SIN60*(A(IC+I)+A(IE+I)) FOURIE3A.1035
C(JB+J)=A(IA+I)-(A(IC+I)-A(IE+I)) FOURIE3A.1036
D(JB+J)=A(ID+I)-(A(IB+I)+A(IF+I)) FOURIE3A.1037
C(JC+J)=(A(IA+I)+0.5*(A(IC+I)-A(IE+I))) - FOURIE3A.1038
$ SIN60*(A(IB+I)-A(IF+I)) FOURIE3A.1039
D(JC+J)=-(A(ID+I)+0.5*(A(IB+I)+A(IF+I))) + FOURIE3A.1040
$ SIN60*(A(IC+I)+A(IE+I)) FOURIE3A.1041
I=I+INC3 FOURIE3A.1042
J=J+INC4 FOURIE3A.1043
670 CONTINUE FOURIE3A.1044
IBASE=IBASE+INC1 FOURIE3A.1045
JBASE=JBASE+INC2 FOURIE3A.1046
680 CONTINUE FOURIE3A.1047
GO TO 900 FOURIE3A.1048
C FOURIE3A.1049
690 CONTINUE FOURIE3A.1050
Z=1.0/FLOAT(N) FOURIE3A.1051
ZSIN60=Z*SIN60 FOURIE3A.1052
DO 694 L=1,LA FOURIE3A.1053
I=IBASE FOURIE3A.1054
J=JBASE FOURIE3A.1055
CDIR$ IVDEP FOURIE3A.1056
! Fujitsu vectorization directive GRB0F405.269
!OCL NOVREC GRB0F405.270
DO 692 IJK=1,LOT FOURIE3A.1057
A11=(A(IC+I)+A(IF+I))+(A(IB+I)+A(IE+I)) FOURIE3A.1058
C(JA+J)=Z*((A(IA+I)+A(ID+I))+A11) FOURIE3A.1059
C(JC+J)=Z*((A(IA+I)+A(ID+I))-0.5*A11) FOURIE3A.1060
D(JC+J)=ZSIN60*((A(IC+I)+A(IF+I))-(A(IB+I)+A(IE+I))) FOURIE3A.1061
A11=(A(IC+I)-A(IF+I))+(A(IE+I)-A(IB+I)) FOURIE3A.1062
C(JB+J)=Z*((A(IA+I)-A(ID+I))-0.5*A11) FOURIE3A.1063
D(JB+J)=ZSIN60*((A(IE+I)-A(IB+I))-(A(IC+I)-A(IF+I))) FOURIE3A.1064
C(JD+J)=Z*((A(IA+I)-A(ID+I))+A11) FOURIE3A.1065
I=I+INC3 FOURIE3A.1066
J=J+INC4 FOURIE3A.1067
692 CONTINUE FOURIE3A.1068
IBASE=IBASE+INC1 FOURIE3A.1069
JBASE=JBASE+INC2 FOURIE3A.1070
694 CONTINUE FOURIE3A.1071
GO TO 900 FOURIE3A.1072
FOURIE3A.1073
C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FOURIE3A.1074
C Coding for factor 8: FOURIE3A.1075
800 CONTINUE FOURIE3A.1076
IBAD=3 FOURIE3A.1077
IF (LA.NE.M) GO TO 910 FOURIE3A.1078
IA=1 FOURIE3A.1079
IB=IA+IINK FOURIE3A.1080
IC=IB+IINK FOURIE3A.1081
ID=IC+IINK FOURIE3A.1082
IE=ID+IINK FOURIE3A.1083
IF=IE+IINK FOURIE3A.1084
IG=IF+IINK FOURIE3A.1085
IH=IG+IINK FOURIE3A.1086
JA=1 FOURIE3A.1087
JB=JA+LA*INC2 FOURIE3A.1088
JC=JB+2*M*INC2 FOURIE3A.1089
JD=JC+2*M*INC2 FOURIE3A.1090
JE=JD+2*M*INC2 FOURIE3A.1091
Z=1.0/FLOAT(N) FOURIE3A.1092
ZSIN45=Z*SQRT(0.5) FOURIE3A.1093
FOURIE3A.1094
DO 820 L=1,LA FOURIE3A.1095
I=IBASE FOURIE3A.1096
J=JBASE FOURIE3A.1097
CDIR$ IVDEP FOURIE3A.1098
! Fujitsu vectorization directive GRB0F405.271
!OCL NOVREC GRB0F405.272
DO 810 IJK=1,LOT FOURIE3A.1099
C(JA+J)=Z*(((A(IA+I)+A(IE+I))+(A(IC+I)+A(IG+I)))+ FOURIE3A.1100
* ((A(ID+I)+A(IH+I))+(A(IB+I)+A(IF+I)))) FOURIE3A.1101
C(JE+J)=Z*(((A(IA+I)+A(IE+I))+(A(IC+I)+A(IG+I)))- FOURIE3A.1102
* ((A(ID+I)+A(IH+I))+(A(IB+I)+A(IF+I)))) FOURIE3A.1103
C(JC+J)=Z*((A(IA+I)+A(IE+I))-(A(IC+I)+A(IG+I))) FOURIE3A.1104
D(JC+J)=Z*((A(ID+I)+A(IH+I))-(A(IB+I)+A(IF+I))) FOURIE3A.1105
C(JB+J)=Z*(A(IA+I)-A(IE+I)) FOURIE3A.1106
* +ZSIN45*((A(IH+I)-A(ID+I))-(A(IF+I)-A(IB+I))) FOURIE3A.1107
C(JD+J)=Z*(A(IA+I)-A(IE+I)) FOURIE3A.1108
* -ZSIN45*((A(IH+I)-A(ID+I))-(A(IF+I)-A(IB+I))) FOURIE3A.1109
D(JB+J)=ZSIN45*((A(IH+I)-A(ID+I))+(A(IF+I)-A(IB+I))) FOURIE3A.1110
* +Z*(A(IG+I)-A(IC+I)) FOURIE3A.1111
D(JD+J)=ZSIN45*((A(IH+I)-A(ID+I))+(A(IF+I)-A(IB+I))) FOURIE3A.1112
* -Z*(A(IG+I)-A(IC+I)) FOURIE3A.1113
I=I+INC3 FOURIE3A.1114
J=J+INC4 FOURIE3A.1115
810 CONTINUE FOURIE3A.1116
IBASE=IBASE+INC1 FOURIE3A.1117
JBASE=JBASE+INC2 FOURIE3A.1118
820 CONTINUE FOURIE3A.1119
FOURIE3A.1120
900 CONTINUE FOURIE3A.1121
IBAD=0 FOURIE3A.1122
910 CONTINUE FOURIE3A.1123
IERR=IBAD FOURIE3A.1124
FOURIE3A.1125
C----------------------------------------------------------------------- FOURIE3A.1126
ELSE ! Do Fourier Synthesis: FOURIE3A.1127
FOURIE3A.1128
M=N/IFAC FOURIE3A.1129
IINK=LA*INC1 FOURIE3A.1130
JINK=LA*INC2 FOURIE3A.1131
JUMP=(IFAC-1)*JINK FOURIE3A.1132
KSTOP=(N-IFAC)/(2*IFAC) FOURIE3A.1133
FOURIE3A.1134
IBAD=1 FOURIE3A.1135
*IF -DEF,FUJITSU GRB1F405.133
IF (LOT.GT.64) GO TO 1910 FOURIE3A.1136
*ELSE GRB1F405.134
IF (LOT.GT.512) GO TO 1910 GRB1F405.135
*ENDIF GRB1F405.136
IBASE=0 FOURIE3A.1137
JBASE=0 FOURIE3A.1138
IGO=IFAC-1 FOURIE3A.1139
IF (IGO.EQ.7) IGO=6 FOURIE3A.1140
IBAD=2 FOURIE3A.1141
IF (IGO.LT.1.OR.IGO.GT.6) GO TO 1910 FOURIE3A.1142
GO TO (1200,1300,1400,1500,1600,1800),IGO FOURIE3A.1143
FOURIE3A.1144
C Coding for factor 2: FOURIE3A.1145
FOURIE3A.1146
1200 CONTINUE FOURIE3A.1147
IA=1 FOURIE3A.1148
IB=IA+(2*M-LA)*INC1 FOURIE3A.1149
JA=1 FOURIE3A.1150
JB=JA+JINK FOURIE3A.1151
FOURIE3A.1152
IF (LA.EQ.M) GO TO 1290 FOURIE3A.1153
FOURIE3A.1154
DO L=1,LA FOURIE3A.1155
I=IBASE FOURIE3A.1156
J=JBASE FOURIE3A.1157
CDIR$ IVDEP FOURIE3A.1158
! Fujitsu vectorization directive GRB0F405.273
!OCL NOVREC GRB0F405.274
DO IJK=1,LOT FOURIE3A.1159
C(JA+J)=A(IA+I)+A(IB+I) FOURIE3A.1160
C(JB+J)=A(IA+I)-A(IB+I) FOURIE3A.1161
I=I+INC3 FOURIE3A.1162
J=J+INC4 FOURIE3A.1163
ENDDO FOURIE3A.1164
IBASE=IBASE+INC1 FOURIE3A.1165
JBASE=JBASE+INC2 FOURIE3A.1166
ENDDO FOURIE3A.1167
IA=IA+IINK FOURIE3A.1168
IINK=2*IINK FOURIE3A.1169
IB=IB-IINK FOURIE3A.1170
IBASE=0 FOURIE3A.1171
JBASE=JBASE+JUMP FOURIE3A.1172
JUMP=2*JUMP+JINK FOURIE3A.1173
IF (IA.EQ.IB) GO TO 1260 FOURIE3A.1174
DO K=LA,KSTOP,LA FOURIE3A.1175
KB=K+K FOURIE3A.1176
C1=TRIGS(KB+1) FOURIE3A.1177
S1=TRIGS(KB+2) FOURIE3A.1178
IBASE=0 FOURIE3A.1179
DO L=1,LA FOURIE3A.1180
I=IBASE FOURIE3A.1181
J=JBASE FOURIE3A.1182
CDIR$ IVDEP FOURIE3A.1183
! Fujitsu vectorization directive GRB0F405.275
!OCL NOVREC GRB0F405.276
DO IJK=1,LOT FOURIE3A.1184
C(JA+J)=A(IA+I)+A(IB+I) FOURIE3A.1185
D(JA+J)=B(IA+I)-B(IB+I) FOURIE3A.1186
C(JB+J)=C1*(A(IA+I)-A(IB+I))-S1*(B(IA+I)+B(IB+I)) FOURIE3A.1187
D(JB+J)=S1*(A(IA+I)-A(IB+I))+C1*(B(IA+I)+B(IB+I)) FOURIE3A.1188
I=I+INC3 FOURIE3A.1189
J=J+INC4 FOURIE3A.1190
ENDDO FOURIE3A.1191
IBASE=IBASE+INC1 FOURIE3A.1192
JBASE=JBASE+INC2 FOURIE3A.1193
ENDDO FOURIE3A.1194
IA=IA+IINK FOURIE3A.1195
IB=IB-IINK FOURIE3A.1196
JBASE=JBASE+JUMP FOURIE3A.1197
ENDDO FOURIE3A.1198
IF (IA.GT.IB) GO TO 1900 FOURIE3A.1199
1260 CONTINUE FOURIE3A.1200
IBASE=0 FOURIE3A.1201
DO L=1,LA FOURIE3A.1202
I=IBASE FOURIE3A.1203
J=JBASE FOURIE3A.1204
CDIR$ IVDEP FOURIE3A.1205
! Fujitsu vectorization directive GRB0F405.277
!OCL NOVREC GRB0F405.278
DO IJK=1,LOT FOURIE3A.1206
C(JA+J)=A(IA+I) FOURIE3A.1207
C(JB+J)=-B(IA+I) FOURIE3A.1208
I=I+INC3 FOURIE3A.1209
J=J+INC4 FOURIE3A.1210
ENDDO FOURIE3A.1211
IBASE=IBASE+INC1 FOURIE3A.1212
JBASE=JBASE+INC2 FOURIE3A.1213
ENDDO FOURIE3A.1214
GO TO 1900 FOURIE3A.1215
FOURIE3A.1216
1290 CONTINUE FOURIE3A.1217
DO L=1,LA FOURIE3A.1218
I=IBASE FOURIE3A.1219
J=JBASE FOURIE3A.1220
CDIR$ IVDEP FOURIE3A.1221
! Fujitsu vectorization directive GRB0F405.279
!OCL NOVREC GRB0F405.280
DO IJK=1,LOT FOURIE3A.1222
C(JA+J)=2.0*(A(IA+I)+A(IB+I)) FOURIE3A.1223
C(JB+J)=2.0*(A(IA+I)-A(IB+I)) FOURIE3A.1224
I=I+INC3 FOURIE3A.1225
J=J+INC4 FOURIE3A.1226
ENDDO FOURIE3A.1227
IBASE=IBASE+INC1 FOURIE3A.1228
JBASE=JBASE+INC2 FOURIE3A.1229
ENDDO FOURIE3A.1230
GO TO 1900 FOURIE3A.1231
FOURIE3A.1232
C Coding for factor 3: FOURIE3A.1233
1300 CONTINUE FOURIE3A.1234
IA=1 FOURIE3A.1235
IB=IA+(2*M-LA)*INC1 FOURIE3A.1236
IC=IB FOURIE3A.1237
JA=1 FOURIE3A.1238
JB=JA+JINK FOURIE3A.1239
JC=JB+JINK FOURIE3A.1240
FOURIE3A.1241
IF (LA.EQ.M) GO TO 1390 FOURIE3A.1242
FOURIE3A.1243
DO L=1,LA FOURIE3A.1244
I=IBASE FOURIE3A.1245
J=JBASE FOURIE3A.1246
CDIR$ IVDEP FOURIE3A.1247
! Fujitsu vectorization directive GRB0F405.281
!OCL NOVREC GRB0F405.282
DO IJK=1,LOT FOURIE3A.1248
C(JA+J)=A(IA+I)+A(IB+I) FOURIE3A.1249
C(JB+J)=(A(IA+I)-0.5*A(IB+I))-(SIN60*(B(IB+I))) FOURIE3A.1250
C(JC+J)=(A(IA+I)-0.5*A(IB+I))+(SIN60*(B(IB+I))) FOURIE3A.1251
I=I+INC3 FOURIE3A.1252
J=J+INC4 FOURIE3A.1253
ENDDO FOURIE3A.1254
IBASE=IBASE+INC1 FOURIE3A.1255
JBASE=JBASE+INC2 FOURIE3A.1256
ENDDO FOURIE3A.1257
IA=IA+IINK FOURIE3A.1258
IINK=2*IINK FOURIE3A.1259
IB=IB+IINK FOURIE3A.1260
IC=IC-IINK FOURIE3A.1261
JBASE=JBASE+JUMP FOURIE3A.1262
JUMP=2*JUMP+JINK FOURIE3A.1263
IF (IA.EQ.IC) GO TO 1360 FOURIE3A.1264
DO K=LA,KSTOP,LA FOURIE3A.1265
KB=K+K FOURIE3A.1266
KC=KB+KB FOURIE3A.1267
C1=TRIGS(KB+1) FOURIE3A.1268
S1=TRIGS(KB+2) FOURIE3A.1269
C2=TRIGS(KC+1) FOURIE3A.1270
S2=TRIGS(KC+2) FOURIE3A.1271
IBASE=0 FOURIE3A.1272
DO L=1,LA FOURIE3A.1273
I=IBASE FOURIE3A.1274
J=JBASE FOURIE3A.1275
CDIR$ IVDEP FOURIE3A.1276
! Fujitsu vectorization directive GRB0F405.283
!OCL NOVREC GRB0F405.284
DO IJK=1,LOT FOURIE3A.1277
C(JA+J)=A(IA+I)+(A(IB+I)+A(IC+I)) FOURIE3A.1278
D(JA+J)=B(IA+I)+(B(IB+I)-B(IC+I)) FOURIE3A.1279
C(JB+J)= FOURIE3A.1280
& C1*((A(IA+I)-0.5*(A(IB+I)+A(IC+I)))- FOURIE3A.1281
& (SIN60*(B(IB+I)+B(IC+I)))) FOURIE3A.1282
& -S1*((B(IA+I)-0.5*(B(IB+I)-B(IC+I)))+ FOURIE3A.1283
& (SIN60*(A(IB+I)-A(IC+I)))) FOURIE3A.1284
D(JB+J)= FOURIE3A.1285
& S1*((A(IA+I)-0.5*(A(IB+I)+A(IC+I)))- FOURIE3A.1286
& (SIN60*(B(IB+I)+B(IC+I)))) FOURIE3A.1287
& +C1*((B(IA+I)-0.5*(B(IB+I)-B(IC+I)))+ FOURIE3A.1288
& (SIN60*(A(IB+I)-A(IC+I)))) FOURIE3A.1289
C(JC+J)= FOURIE3A.1290
& C2*((A(IA+I)-0.5*(A(IB+I)+A(IC+I)))+ FOURIE3A.1291
& (SIN60*(B(IB+I)+B(IC+I)))) FOURIE3A.1292
& -S2*((B(IA+I)-0.5*(B(IB+I)-B(IC+I)))- FOURIE3A.1293
& (SIN60*(A(IB+I)-A(IC+I)))) FOURIE3A.1294
D(JC+J)= FOURIE3A.1295
& S2*((A(IA+I)-0.5*(A(IB+I)+A(IC+I)))+ FOURIE3A.1296
& (SIN60*(B(IB+I)+B(IC+I)))) FOURIE3A.1297
& +C2*((B(IA+I)-0.5*(B(IB+I)-B(IC+I)))- FOURIE3A.1298
& (SIN60*(A(IB+I)-A(IC+I)))) FOURIE3A.1299
I=I+INC3 FOURIE3A.1300
J=J+INC4 FOURIE3A.1301
ENDDO FOURIE3A.1302
IBASE=IBASE+INC1 FOURIE3A.1303
JBASE=JBASE+INC2 FOURIE3A.1304
ENDDO FOURIE3A.1305
IA=IA+IINK FOURIE3A.1306
IB=IB+IINK FOURIE3A.1307
IC=IC-IINK FOURIE3A.1308
JBASE=JBASE+JUMP FOURIE3A.1309
ENDDO FOURIE3A.1310
IF (IA.GT.IC) GO TO 1900 FOURIE3A.1311
FOURIE3A.1312
1360 CONTINUE FOURIE3A.1313
IBASE=0 FOURIE3A.1314
DO L=1,LA FOURIE3A.1315
I=IBASE FOURIE3A.1316
J=JBASE FOURIE3A.1317
CDIR$ IVDEP FOURIE3A.1318
! Fujitsu vectorization directive GRB0F405.285
!OCL NOVREC GRB0F405.286
DO IJK=1,LOT FOURIE3A.1319
C(JA+J)=A(IA+I)+A(IB+I) FOURIE3A.1320
C(JB+J)=(0.5*A(IA+I)-A(IB+I))-(SIN60*B(IA+I)) FOURIE3A.1321
C(JC+J)=-(0.5*A(IA+I)-A(IB+I))-(SIN60*B(IA+I)) FOURIE3A.1322
I=I+INC3 FOURIE3A.1323
J=J+INC4 FOURIE3A.1324
ENDDO FOURIE3A.1325
IBASE=IBASE+INC1 FOURIE3A.1326
JBASE=JBASE+INC2 FOURIE3A.1327
ENDDO FOURIE3A.1328
GO TO 1900 FOURIE3A.1329
FOURIE3A.1330
1390 CONTINUE FOURIE3A.1331
SSIN60=2.0*SIN60 FOURIE3A.1332
DO L=1,LA FOURIE3A.1333
I=IBASE FOURIE3A.1334
J=JBASE FOURIE3A.1335
CDIR$ IVDEP FOURIE3A.1336
! Fujitsu vectorization directive GRB0F405.287
!OCL NOVREC GRB0F405.288
DO IJK=1,LOT FOURIE3A.1337
C(JA+J)=2.0*(A(IA+I)+A(IB+I)) FOURIE3A.1338
C(JB+J)=(2.0*A(IA+I)-A(IB+I))-(SSIN60*B(IB+I)) FOURIE3A.1339
C(JC+J)=(2.0*A(IA+I)-A(IB+I))+(SSIN60*B(IB+I)) FOURIE3A.1340
I=I+INC3 FOURIE3A.1341
J=J+INC4 FOURIE3A.1342
ENDDO FOURIE3A.1343
IBASE=IBASE+INC1 FOURIE3A.1344
JBASE=JBASE+INC2 FOURIE3A.1345
ENDDO FOURIE3A.1346
GO TO 1900 FOURIE3A.1347
FOURIE3A.1348
C Coding for factor 4: FOURIE3A.1349
1400 CONTINUE FOURIE3A.1350
IA=1 FOURIE3A.1351
IB=IA+(2*M-LA)*INC1 FOURIE3A.1352
IC=IB+2*M*INC1 FOURIE3A.1353
ID=IB FOURIE3A.1354
JA=1 FOURIE3A.1355
JB=JA+JINK FOURIE3A.1356
JC=JB+JINK FOURIE3A.1357
JD=JC+JINK FOURIE3A.1358
FOURIE3A.1359
IF (LA.EQ.M) GO TO 1490 FOURIE3A.1360
FOURIE3A.1361
DO L=1,LA FOURIE3A.1362
I=IBASE FOURIE3A.1363
J=JBASE FOURIE3A.1364
CDIR$ IVDEP FOURIE3A.1365
! Fujitsu vectorization directive GRB0F405.289
!OCL NOVREC GRB0F405.290
DO IJK=1,LOT FOURIE3A.1366
C(JA+J)=(A(IA+I)+A(IC+I))+A(IB+I) FOURIE3A.1367
C(JB+J)=(A(IA+I)-A(IC+I))-B(IB+I) FOURIE3A.1368
C(JC+J)=(A(IA+I)+A(IC+I))-A(IB+I) FOURIE3A.1369
C(JD+J)=(A(IA+I)-A(IC+I))+B(IB+I) FOURIE3A.1370
I=I+INC3 FOURIE3A.1371
J=J+INC4 FOURIE3A.1372
ENDDO FOURIE3A.1373
IBASE=IBASE+INC1 FOURIE3A.1374
JBASE=JBASE+INC2 FOURIE3A.1375
ENDDO FOURIE3A.1376
IA=IA+IINK FOURIE3A.1377
IINK=2*IINK FOURIE3A.1378
IB=IB+IINK FOURIE3A.1379
IC=IC-IINK FOURIE3A.1380
ID=ID-IINK FOURIE3A.1381
JBASE=JBASE+JUMP FOURIE3A.1382
JUMP=2*JUMP+JINK FOURIE3A.1383
IF (IB.EQ.IC) GO TO 1460 FOURIE3A.1384
DO K=LA,KSTOP,LA FOURIE3A.1385
KB=K+K FOURIE3A.1386
KC=KB+KB FOURIE3A.1387
KD=KC+KB FOURIE3A.1388
C1=TRIGS(KB+1) FOURIE3A.1389
S1=TRIGS(KB+2) FOURIE3A.1390
C2=TRIGS(KC+1) FOURIE3A.1391
S2=TRIGS(KC+2) FOURIE3A.1392
C3=TRIGS(KD+1) FOURIE3A.1393
S3=TRIGS(KD+2) FOURIE3A.1394
IBASE=0 FOURIE3A.1395
DO L=1,LA FOURIE3A.1396
I=IBASE FOURIE3A.1397
J=JBASE FOURIE3A.1398
CDIR$ IVDEP FOURIE3A.1399
! Fujitsu vectorization directive GRB0F405.291
!OCL NOVREC GRB0F405.292
DO IJK=1,LOT FOURIE3A.1400
C(JA+J)=(A(IA+I)+A(IC+I))+(A(IB+I)+A(ID+I)) FOURIE3A.1401
D(JA+J)=(B(IA+I)-B(IC+I))+(B(IB+I)-B(ID+I)) FOURIE3A.1402
C(JC+J)= FOURIE3A.1403
& C2*((A(IA+I)+A(IC+I))-(A(IB+I)+A(ID+I))) FOURIE3A.1404
& -S2*((B(IA+I)-B(IC+I))-(B(IB+I)-B(ID+I))) FOURIE3A.1405
D(JC+J)= FOURIE3A.1406
& S2*((A(IA+I)+A(IC+I))-(A(IB+I)+A(ID+I))) FOURIE3A.1407
& +C2*((B(IA+I)-B(IC+I))-(B(IB+I)-B(ID+I))) FOURIE3A.1408
C(JB+J)= FOURIE3A.1409
& C1*((A(IA+I)-A(IC+I))-(B(IB+I)+B(ID+I))) FOURIE3A.1410
& -S1*((B(IA+I)+B(IC+I))+(A(IB+I)-A(ID+I))) FOURIE3A.1411
D(JB+J)= FOURIE3A.1412
& S1*((A(IA+I)-A(IC+I))-(B(IB+I)+B(ID+I))) FOURIE3A.1413
& +C1*((B(IA+I)+B(IC+I))+(A(IB+I)-A(ID+I))) FOURIE3A.1414
C(JD+J)= FOURIE3A.1415
& C3*((A(IA+I)-A(IC+I))+(B(IB+I)+B(ID+I))) FOURIE3A.1416
& -S3*((B(IA+I)+B(IC+I))-(A(IB+I)-A(ID+I))) FOURIE3A.1417
D(JD+J)= FOURIE3A.1418
& S3*((A(IA+I)-A(IC+I))+(B(IB+I)+B(ID+I))) FOURIE3A.1419
& +C3*((B(IA+I)+B(IC+I))-(A(IB+I)-A(ID+I))) FOURIE3A.1420
I=I+INC3 FOURIE3A.1421
J=J+INC4 FOURIE3A.1422
ENDDO FOURIE3A.1423
IBASE=IBASE+INC1 FOURIE3A.1424
JBASE=JBASE+INC2 FOURIE3A.1425
ENDDO FOURIE3A.1426
IA=IA+IINK FOURIE3A.1427
IB=IB+IINK FOURIE3A.1428
IC=IC-IINK FOURIE3A.1429
ID=ID-IINK FOURIE3A.1430
JBASE=JBASE+JUMP FOURIE3A.1431
ENDDO FOURIE3A.1432
IF (IB.GT.IC) GO TO 1900 FOURIE3A.1433
1460 CONTINUE FOURIE3A.1434
IBASE=0 FOURIE3A.1435
SIN45=SQRT(0.5) FOURIE3A.1436
DO L=1,LA FOURIE3A.1437
I=IBASE FOURIE3A.1438
J=JBASE FOURIE3A.1439
CDIR$ IVDEP FOURIE3A.1440
! Fujitsu vectorization directive GRB0F405.293
!OCL NOVREC GRB0F405.294
DO IJK=1,LOT FOURIE3A.1441
C(JA+J)=A(IA+I)+A(IB+I) FOURIE3A.1442
C(JB+J)=SIN45*((A(IA+I)-A(IB+I))-(B(IA+I)+B(IB+I))) FOURIE3A.1443
C(JC+J)=B(IB+I)-B(IA+I) FOURIE3A.1444
C(JD+J)=-SIN45*((A(IA+I)-A(IB+I))+(B(IA+I)+B(IB+I))) FOURIE3A.1445
I=I+INC3 FOURIE3A.1446
J=J+INC4 FOURIE3A.1447
ENDDO FOURIE3A.1448
IBASE=IBASE+INC1 FOURIE3A.1449
JBASE=JBASE+INC2 FOURIE3A.1450
ENDDO FOURIE3A.1451
GO TO 1900 FOURIE3A.1452
FOURIE3A.1453
1490 CONTINUE FOURIE3A.1454
DO L=1,LA FOURIE3A.1455
I=IBASE FOURIE3A.1456
J=JBASE FOURIE3A.1457
CDIR$ IVDEP FOURIE3A.1458
! Fujitsu vectorization directive GRB0F405.295
!OCL NOVREC GRB0F405.296
DO IJK=1,LOT FOURIE3A.1459
C(JA+J)=2.0*((A(IA+I)+A(IC+I))+A(IB+I)) FOURIE3A.1460
C(JB+J)=2.0*((A(IA+I)-A(IC+I))-B(IB+I)) FOURIE3A.1461
C(JC+J)=2.0*((A(IA+I)+A(IC+I))-A(IB+I)) FOURIE3A.1462
C(JD+J)=2.0*((A(IA+I)-A(IC+I))+B(IB+I)) FOURIE3A.1463
I=I+INC3 FOURIE3A.1464
J=J+INC4 FOURIE3A.1465
ENDDO FOURIE3A.1466
IBASE=IBASE+INC1 FOURIE3A.1467
JBASE=JBASE+INC2 FOURIE3A.1468
ENDDO FOURIE3A.1469
GO TO 1900 FOURIE3A.1470
FOURIE3A.1471
C Coding for factor 5: FOURIE3A.1472
FOURIE3A.1473
1500 CONTINUE FOURIE3A.1474
IA=1 FOURIE3A.1475
IB=IA+(2*M-LA)*INC1 FOURIE3A.1476
IC=IB+2*M*INC1 FOURIE3A.1477
ID=IC FOURIE3A.1478
IE=IB FOURIE3A.1479
JA=1 FOURIE3A.1480
JB=JA+JINK FOURIE3A.1481
JC=JB+JINK FOURIE3A.1482
JD=JC+JINK FOURIE3A.1483
JE=JD+JINK FOURIE3A.1484
FOURIE3A.1485
IF (LA.EQ.M) GO TO 1590 FOURIE3A.1486
FOURIE3A.1487
DO L=1,LA FOURIE3A.1488
I=IBASE FOURIE3A.1489
J=JBASE FOURIE3A.1490
CDIR$ IVDEP FOURIE3A.1491
! Fujitsu vectorization directive GRB0F405.297
!OCL NOVREC GRB0F405.298
DO IJK=1,LOT FOURIE3A.1492
C(JA+J)=A(IA+I)+(A(IB+I)+A(IC+I)) FOURIE3A.1493
C(JB+J)=((A(IA+I)-0.25*(A(IB+I)+A(IC+I)))+QRT5* FOURIE3A.1494
& (A(IB+I)-A(IC+I))) - (SIN72*B(IB+I)+SIN36*B(IC+I)) FOURIE3A.1495
C(JC+J)=((A(IA+I)-0.25*(A(IB+I)+A(IC+I)))-QRT5* FOURIE3A.1496
& (A(IB+I)-A(IC+I))) - (SIN36*B(IB+I)-SIN72*B(IC+I)) FOURIE3A.1497
C(JD+J)=((A(IA+I)-0.25*(A(IB+I)+A(IC+I)))-QRT5* FOURIE3A.1498
& (A(IB+I)-A(IC+I))) + (SIN36*B(IB+I)-SIN72*B(IC+I)) FOURIE3A.1499
C(JE+J)=((A(IA+I)-0.25*(A(IB+I)+A(IC+I)))+QRT5* FOURIE3A.1500
& (A(IB+I)-A(IC+I))) + (SIN72*B(IB+I)+SIN36*B(IC+I)) FOURIE3A.1501
I=I+INC3 FOURIE3A.1502
J=J+INC4 FOURIE3A.1503
ENDDO FOURIE3A.1504
IBASE=IBASE+INC1 FOURIE3A.1505
JBASE=JBASE+INC2 FOURIE3A.1506
ENDDO FOURIE3A.1507
IA=IA+IINK FOURIE3A.1508
IINK=2*IINK FOURIE3A.1509
IB=IB+IINK FOURIE3A.1510
IC=IC+IINK FOURIE3A.1511
ID=ID-IINK FOURIE3A.1512
IE=IE-IINK FOURIE3A.1513
JBASE=JBASE+JUMP FOURIE3A.1514
JUMP=2*JUMP+JINK FOURIE3A.1515
IF (IB.EQ.ID) GO TO 1560 FOURIE3A.1516
DO K=LA,KSTOP,LA FOURIE3A.1517
KB=K+K FOURIE3A.1518
KC=KB+KB FOURIE3A.1519
KD=KC+KB FOURIE3A.1520
KE=KD+KB FOURIE3A.1521
C1=TRIGS(KB+1) FOURIE3A.1522
S1=TRIGS(KB+2) FOURIE3A.1523
C2=TRIGS(KC+1) FOURIE3A.1524
S2=TRIGS(KC+2) FOURIE3A.1525
C3=TRIGS(KD+1) FOURIE3A.1526
S3=TRIGS(KD+2) FOURIE3A.1527
C4=TRIGS(KE+1) FOURIE3A.1528
S4=TRIGS(KE+2) FOURIE3A.1529
IBASE=0 FOURIE3A.1530
DO L=1,LA FOURIE3A.1531
I=IBASE FOURIE3A.1532
J=JBASE FOURIE3A.1533
CDIR$ IVDEP FOURIE3A.1534
! Fujitsu vectorization directive GRB0F405.299
!OCL NOVREC GRB0F405.300
DO IJK=1,LOT FOURIE3A.1535
FOURIE3A.1536
AA10(IJK)=(A(IA+I)-0.25*((A(IB+I)+A(IE+I))+ FOURIE3A.1537
& (A(IC+I)+A(ID+I)))) FOURIE3A.1538
& +QRT5*((A(IB+I)+A(IE+I))-(A(IC+I)+A(ID+I))) FOURIE3A.1539
AA20(IJK)=(A(IA+I)-0.25*((A(IB+I)+A(IE+I))+ FOURIE3A.1540
& (A(IC+I)+A(ID+I)))) FOURIE3A.1541
& -QRT5*((A(IB+I)+A(IE+I))-(A(IC+I)+A(ID+I))) FOURIE3A.1542
BB10(IJK)=(B(IA+I)-0.25*((B(IB+I)-B(IE+I))+ FOURIE3A.1543
& (B(IC+I)-B(ID+I)))) FOURIE3A.1544
& +QRT5*((B(IB+I)-B(IE+I))-(B(IC+I)-B(ID+I))) FOURIE3A.1545
BB20(IJK)=(B(IA+I)-0.25*((B(IB+I)-B(IE+I))+ FOURIE3A.1546
& (B(IC+I)-B(ID+I)))) FOURIE3A.1547
& -QRT5*((B(IB+I)-B(IE+I))-(B(IC+I)-B(ID+I))) FOURIE3A.1548
AA11(IJK)=SIN72*(B(IB+I)+B(IE+I))+ FOURIE3A.1549
& SIN36*(B(IC+I)+B(ID+I)) FOURIE3A.1550
AA21(IJK)=SIN36*(B(IB+I)+B(IE+I))- FOURIE3A.1551
& SIN72*(B(IC+I)+B(ID+I)) FOURIE3A.1552
BB11(IJK)=SIN72*(A(IB+I)-A(IE+I))+ FOURIE3A.1553
& SIN36*(A(IC+I)-A(ID+I)) FOURIE3A.1554
BB21(IJK)=SIN36*(A(IB+I)-A(IE+I))- FOURIE3A.1555
& SIN72*(A(IC+I)-A(ID+I)) FOURIE3A.1556
FOURIE3A.1557
C(JA+J)=A(IA+I)+((A(IB+I)+A(IE+I))+(A(IC+I)+A(ID+I))) FOURIE3A.1558
D(JA+J)=B(IA+I)+((B(IB+I)-B(IE+I))+(B(IC+I)-B(ID+I))) FOURIE3A.1559
C(JB+J)=C1*(AA10(IJK)-AA11(IJK))-S1*(BB10(IJK)+BB11(IJK)) FOURIE3A.1560
D(JB+J)=S1*(AA10(IJK)-AA11(IJK))+C1*(BB10(IJK)+BB11(IJK)) FOURIE3A.1561
C(JE+J)=C4*(AA10(IJK)+AA11(IJK))-S4*(BB10(IJK)-BB11(IJK)) FOURIE3A.1562
D(JE+J)=S4*(AA10(IJK)+AA11(IJK))+C4*(BB10(IJK)-BB11(IJK)) FOURIE3A.1563
C(JC+J)=C2*(AA20(IJK)-AA21(IJK))-S2*(BB20(IJK)+BB21(IJK)) FOURIE3A.1564
D(JC+J)=S2*(AA20(IJK)-AA21(IJK))+C2*(BB20(IJK)+BB21(IJK)) FOURIE3A.1565
C(JD+J)=C3*(AA20(IJK)+AA21(IJK))-S3*(BB20(IJK)-BB21(IJK)) FOURIE3A.1566
D(JD+J)=S3*(AA20(IJK)+AA21(IJK))+C3*(BB20(IJK)-BB21(IJK)) FOURIE3A.1567
FOURIE3A.1568
I=I+INC3 FOURIE3A.1569
J=J+INC4 FOURIE3A.1570
ENDDO FOURIE3A.1571
IBASE=IBASE+INC1 FOURIE3A.1572
JBASE=JBASE+INC2 FOURIE3A.1573
ENDDO FOURIE3A.1574
IA=IA+IINK FOURIE3A.1575
IB=IB+IINK FOURIE3A.1576
IC=IC+IINK FOURIE3A.1577
ID=ID-IINK FOURIE3A.1578
IE=IE-IINK FOURIE3A.1579
JBASE=JBASE+JUMP FOURIE3A.1580
ENDDO FOURIE3A.1581
IF (IB.GT.ID) GO TO 1900 FOURIE3A.1582
1560 CONTINUE FOURIE3A.1583
IBASE=0 FOURIE3A.1584
DO L=1,LA FOURIE3A.1585
I=IBASE FOURIE3A.1586
J=JBASE FOURIE3A.1587
CDIR$ IVDEP FOURIE3A.1588
! Fujitsu vectorization directive GRB0F405.301
!OCL NOVREC GRB0F405.302
DO IJK=1,LOT FOURIE3A.1589
C(JA+J)=(A(IA+I)+A(IB+I))+A(IC+I) FOURIE3A.1590
C(JB+J)=(QRT5*(A(IA+I)-A(IB+I))+ FOURIE3A.1591
& (0.25*(A(IA+I)+A(IB+I))-A(IC+I))) FOURIE3A.1592
& -(SIN36*B(IA+I)+SIN72*B(IB+I)) FOURIE3A.1593
C(JE+J)=-(QRT5*(A(IA+I)-A(IB+I))+ FOURIE3A.1594
& (0.25*(A(IA+I)+A(IB+I))-A(IC+I))) FOURIE3A.1595
& -(SIN36*B(IA+I)+SIN72*B(IB+I)) FOURIE3A.1596
C(JC+J)=(QRT5*(A(IA+I)-A(IB+I))- FOURIE3A.1597
& (0.25*(A(IA+I)+A(IB+I))-A(IC+I))) FOURIE3A.1598
& -(SIN72*B(IA+I)-SIN36*B(IB+I)) FOURIE3A.1599
C(JD+J)=-(QRT5*(A(IA+I)-A(IB+I))- FOURIE3A.1600
& (0.25*(A(IA+I)+A(IB+I))-A(IC+I))) FOURIE3A.1601
& -(SIN72*B(IA+I)-SIN36*B(IB+I)) FOURIE3A.1602
I=I+INC3 FOURIE3A.1603
J=J+INC4 FOURIE3A.1604
ENDDO FOURIE3A.1605
IBASE=IBASE+INC1 FOURIE3A.1606
JBASE=JBASE+INC2 FOURIE3A.1607
ENDDO FOURIE3A.1608
GO TO 1900 FOURIE3A.1609
FOURIE3A.1610
1590 CONTINUE FOURIE3A.1611
QQRT5=2.0*QRT5 FOURIE3A.1612
SSIN36=2.0*SIN36 FOURIE3A.1613
SSIN72=2.0*SIN72 FOURIE3A.1614
DO L=1,LA FOURIE3A.1615
I=IBASE FOURIE3A.1616
J=JBASE FOURIE3A.1617
CDIR$ IVDEP FOURIE3A.1618
! Fujitsu vectorization directive GRB0F405.303
!OCL NOVREC GRB0F405.304
DO IJK=1,LOT FOURIE3A.1619
C(JA+J)=2.0*(A(IA+I)+(A(IB+I)+A(IC+I))) FOURIE3A.1620
C(JB+J)=(2.0*(A(IA+I)-0.25*(A(IB+I)+A(IC+I))) FOURIE3A.1621
& +QQRT5*(A(IB+I)-A(IC+I)))-(SSIN72*B(IB+I)+ FOURIE3A.1622
& SSIN36*B(IC+I)) FOURIE3A.1623
C(JC+J)=(2.0*(A(IA+I)-0.25*(A(IB+I)+A(IC+I))) FOURIE3A.1624
& -QQRT5*(A(IB+I)-A(IC+I)))-(SSIN36*B(IB+I)- FOURIE3A.1625
& SSIN72*B(IC+I)) FOURIE3A.1626
C(JD+J)=(2.0*(A(IA+I)-0.25*(A(IB+I)+A(IC+I))) FOURIE3A.1627
& -QQRT5*(A(IB+I)-A(IC+I)))+(SSIN36*B(IB+I)- FOURIE3A.1628
& SSIN72*B(IC+I)) FOURIE3A.1629
C(JE+J)=(2.0*(A(IA+I)-0.25*(A(IB+I)+A(IC+I))) FOURIE3A.1630
& +QQRT5*(A(IB+I)-A(IC+I)))+(SSIN72*B(IB+I)+ FOURIE3A.1631
& SSIN36*B(IC+I)) FOURIE3A.1632
I=I+INC3 FOURIE3A.1633
J=J+INC4 FOURIE3A.1634
ENDDO FOURIE3A.1635
IBASE=IBASE+INC1 FOURIE3A.1636
JBASE=JBASE+INC2 FOURIE3A.1637
ENDDO FOURIE3A.1638
GO TO 1900 FOURIE3A.1639
FOURIE3A.1640
C Coding for factor 6: FOURIE3A.1641
1600 CONTINUE FOURIE3A.1642
IA=1 FOURIE3A.1643
IB=IA+(2*M-LA)*INC1 FOURIE3A.1644
IC=IB+2*M*INC1 FOURIE3A.1645
ID=IC+2*M*INC1 FOURIE3A.1646
IE=IC FOURIE3A.1647
IF=IB FOURIE3A.1648
JA=1 FOURIE3A.1649
JB=JA+JINK FOURIE3A.1650
JC=JB+JINK FOURIE3A.1651
JD=JC+JINK FOURIE3A.1652
JE=JD+JINK FOURIE3A.1653
JF=JE+JINK FOURIE3A.1654
FOURIE3A.1655
IF (LA.EQ.M) GO TO 1690 FOURIE3A.1656
FOURIE3A.1657
DO L=1,LA FOURIE3A.1658
I=IBASE FOURIE3A.1659
J=JBASE FOURIE3A.1660
CDIR$ IVDEP FOURIE3A.1661
! Fujitsu vectorization directive GRB0F405.305
!OCL NOVREC GRB0F405.306
DO IJK=1,LOT FOURIE3A.1662
C(JA+J)=(A(IA+I)+A(ID+I))+(A(IB+I)+A(IC+I)) FOURIE3A.1663
C(JD+J)=(A(IA+I)-A(ID+I))-(A(IB+I)-A(IC+I)) FOURIE3A.1664
C(JB+J)=((A(IA+I)-A(ID+I))+0.5*(A(IB+I)-A(IC+I))) FOURIE3A.1665
& -(SIN60*(B(IB+I)+B(IC+I))) FOURIE3A.1666
C(JF+J)=((A(IA+I)-A(ID+I))+0.5*(A(IB+I)-A(IC+I))) FOURIE3A.1667
& +(SIN60*(B(IB+I)+B(IC+I))) FOURIE3A.1668
C(JC+J)=((A(IA+I)+A(ID+I))-0.5*(A(IB+I)+A(IC+I))) FOURIE3A.1669
& -(SIN60*(B(IB+I)-B(IC+I))) FOURIE3A.1670
C(JE+J)=((A(IA+I)+A(ID+I))-0.5*(A(IB+I)+A(IC+I))) FOURIE3A.1671
& +(SIN60*(B(IB+I)-B(IC+I))) FOURIE3A.1672
I=I+INC3 FOURIE3A.1673
J=J+INC4 FOURIE3A.1674
ENDDO FOURIE3A.1675
IBASE=IBASE+INC1 FOURIE3A.1676
JBASE=JBASE+INC2 FOURIE3A.1677
ENDDO FOURIE3A.1678
IA=IA+IINK FOURIE3A.1679
IINK=2*IINK FOURIE3A.1680
IB=IB+IINK FOURIE3A.1681
IC=IC+IINK FOURIE3A.1682
ID=ID-IINK FOURIE3A.1683
IE=IE-IINK FOURIE3A.1684
IF=IF-IINK FOURIE3A.1685
JBASE=JBASE+JUMP FOURIE3A.1686
JUMP=2*JUMP+JINK FOURIE3A.1687
IF (IC.EQ.ID) GO TO 1660 FOURIE3A.1688
DO K=LA,KSTOP,LA FOURIE3A.1689
KB=K+K FOURIE3A.1690
KC=KB+KB FOURIE3A.1691
KD=KC+KB FOURIE3A.1692
KE=KD+KB FOURIE3A.1693
KF=KE+KB FOURIE3A.1694
C1=TRIGS(KB+1) FOURIE3A.1695
S1=TRIGS(KB+2) FOURIE3A.1696
C2=TRIGS(KC+1) FOURIE3A.1697
S2=TRIGS(KC+2) FOURIE3A.1698
C3=TRIGS(KD+1) FOURIE3A.1699
S3=TRIGS(KD+2) FOURIE3A.1700
C4=TRIGS(KE+1) FOURIE3A.1701
S4=TRIGS(KE+2) FOURIE3A.1702
C5=TRIGS(KF+1) FOURIE3A.1703
S5=TRIGS(KF+2) FOURIE3A.1704
IBASE=0 FOURIE3A.1705
DO L=1,LA FOURIE3A.1706
I=IBASE FOURIE3A.1707
J=JBASE FOURIE3A.1708
CDIR$ IVDEP FOURIE3A.1709
! Fujitsu vectorization directive GRB0F405.307
!OCL NOVREC GRB0F405.308
DO IJK=1,LOT FOURIE3A.1710
FOURIE3A.1711
AA11(IJK)= (A(IE+I)+A(IB+I))+(A(IC+I)+A(IF+I)) FOURIE3A.1712
AA20(IJK)=(A(IA+I)+A(ID+I))-0.5*AA11(IJK) FOURIE3A.1713
AA21(IJK)=SIN60*((A(IE+I)+A(IB+I))-(A(IC+I)+A(IF+I))) FOURIE3A.1714
BB11(IJK)= (B(IB+I)-B(IE+I))+(B(IC+I)-B(IF+I)) FOURIE3A.1715
BB20(IJK)=(B(IA+I)-B(ID+I))-0.5*BB11(IJK) FOURIE3A.1716
BB21(IJK)=SIN60*((B(IB+I)-B(IE+I))-(B(IC+I)-B(IF+I))) FOURIE3A.1717
FOURIE3A.1718
C(JA+J)=(A(IA+I)+A(ID+I))+AA11(IJK) FOURIE3A.1719
D(JA+J)=(B(IA+I)-B(ID+I))+BB11(IJK) FOURIE3A.1720
C(JC+J)=C2*(AA20(IJK)-BB21(IJK))-S2*(BB20(IJK)+AA21(IJK)) FOURIE3A.1721
D(JC+J)=S2*(AA20(IJK)-BB21(IJK))+C2*(BB20(IJK)+AA21(IJK)) FOURIE3A.1722
C(JE+J)=C4*(AA20(IJK)+BB21(IJK))-S4*(BB20(IJK)-AA21(IJK)) FOURIE3A.1723
D(JE+J)=S4*(AA20(IJK)+BB21(IJK))+C4*(BB20(IJK)-AA21(IJK)) FOURIE3A.1724
FOURIE3A.1725
AA11(IJK)=(A(IE+I)-A(IB+I))+(A(IC+I)-A(IF+I)) FOURIE3A.1726
BB11(IJK)=(B(IE+I)+B(IB+I))-(B(IC+I)+B(IF+I)) FOURIE3A.1727
AA20(IJK)=(A(IA+I)-A(ID+I))-0.5*AA11(IJK) FOURIE3A.1728
AA21(IJK)=SIN60*((A(IE+I)-A(IB+I))-(A(IC+I)-A(IF+I))) FOURIE3A.1729
BB20(IJK)=(B(IA+I)+B(ID+I))+0.5*BB11(IJK) FOURIE3A.1730
BB21(IJK)=SIN60*((B(IE+I)+B(IB+I))+(B(IC+I)+B(IF+I))) FOURIE3A.1731
FOURIE3A.1732
C(JD+J)=C3*((A(IA+I)-A(ID+I))+AA11(IJK))- FOURIE3A.1733
& S3*((B(IA+I)+B(ID+I))-BB11(IJK)) FOURIE3A.1734
D(JD+J)=S3*((A(IA+I)-A(ID+I))+AA11(IJK))+ FOURIE3A.1735
& C3*((B(IA+I)+B(ID+I))-BB11(IJK)) FOURIE3A.1736
C(JB+J)=C1*(AA20(IJK)-BB21(IJK))-S1*(BB20(IJK)-AA21(IJK)) FOURIE3A.1737
D(JB+J)=S1*(AA20(IJK)-BB21(IJK))+C1*(BB20(IJK)-AA21(IJK)) FOURIE3A.1738
C(JF+J)=C5*(AA20(IJK)+BB21(IJK))-S5*(BB20(IJK)+AA21(IJK)) FOURIE3A.1739
D(JF+J)=S5*(AA20(IJK)+BB21(IJK))+C5*(BB20(IJK)+AA21(IJK)) FOURIE3A.1740
FOURIE3A.1741
I=I+INC3 FOURIE3A.1742
J=J+INC4 FOURIE3A.1743
ENDDO FOURIE3A.1744
IBASE=IBASE+INC1 FOURIE3A.1745
JBASE=JBASE+INC2 FOURIE3A.1746
ENDDO FOURIE3A.1747
IA=IA+IINK FOURIE3A.1748
IB=IB+IINK FOURIE3A.1749
IC=IC+IINK FOURIE3A.1750
ID=ID-IINK FOURIE3A.1751
IE=IE-IINK FOURIE3A.1752
IF=IF-IINK FOURIE3A.1753
JBASE=JBASE+JUMP FOURIE3A.1754
ENDDO FOURIE3A.1755
IF (IC.GT.ID) GO TO 1900 FOURIE3A.1756
1660 CONTINUE FOURIE3A.1757
IBASE=0 FOURIE3A.1758
DO L=1,LA FOURIE3A.1759
I=IBASE FOURIE3A.1760
J=JBASE FOURIE3A.1761
CDIR$ IVDEP FOURIE3A.1762
! Fujitsu vectorization directive GRB0F405.309
!OCL NOVREC GRB0F405.310
DO IJK=1,LOT FOURIE3A.1763
C(JA+J)=A(IB+I)+(A(IA+I)+A(IC+I)) FOURIE3A.1764
C(JD+J)=B(IB+I)-(B(IA+I)+B(IC+I)) FOURIE3A.1765
C(JB+J)=(SIN60*(A(IA+I)-A(IC+I)))- FOURIE3A.1766
& (0.5*(B(IA+I)+B(IC+I))+B(IB+I)) FOURIE3A.1767
C(JF+J)=-(SIN60*(A(IA+I)-A(IC+I)))- FOURIE3A.1768
& (0.5*(B(IA+I)+B(IC+I))+B(IB+I)) FOURIE3A.1769
C(JC+J)=SIN60*(B(IC+I)-B(IA+I))+ FOURIE3A.1770
& (0.5*(A(IA+I)+A(IC+I))-A(IB+I)) FOURIE3A.1771
C(JE+J)=SIN60*(B(IC+I)-B(IA+I))- FOURIE3A.1772
& (0.5*(A(IA+I)+A(IC+I))-A(IB+I)) FOURIE3A.1773
I=I+INC3 FOURIE3A.1774
J=J+INC4 FOURIE3A.1775
ENDDO FOURIE3A.1776
IBASE=IBASE+INC1 FOURIE3A.1777
JBASE=JBASE+INC2 FOURIE3A.1778
ENDDO FOURIE3A.1779
GO TO 1900 FOURIE3A.1780
FOURIE3A.1781
1690 CONTINUE FOURIE3A.1782
SSIN60=2.0*SIN60 FOURIE3A.1783
DO L=1,LA FOURIE3A.1784
I=IBASE FOURIE3A.1785
J=JBASE FOURIE3A.1786
CDIR$ IVDEP FOURIE3A.1787
! Fujitsu vectorization directive GRB0F405.311
!OCL NOVREC GRB0F405.312
DO IJK=1,LOT FOURIE3A.1788
C(JA+J)=(2.0*(A(IA+I)+A(ID+I)))+(2.0*(A(IB+I)+A(IC+I))) FOURIE3A.1789
C(JD+J)=(2.0*(A(IA+I)-A(ID+I)))-(2.0*(A(IB+I)-A(IC+I))) FOURIE3A.1790
C(JB+J)=(2.0*(A(IA+I)-A(ID+I))+(A(IB+I)-A(IC+I))) FOURIE3A.1791
& -(SSIN60*(B(IB+I)+B(IC+I))) FOURIE3A.1792
C(JF+J)=(2.0*(A(IA+I)-A(ID+I))+(A(IB+I)-A(IC+I))) FOURIE3A.1793
& +(SSIN60*(B(IB+I)+B(IC+I))) FOURIE3A.1794
C(JC+J)=(2.0*(A(IA+I)+A(ID+I))-(A(IB+I)+A(IC+I))) FOURIE3A.1795
& -(SSIN60*(B(IB+I)-B(IC+I))) FOURIE3A.1796
C(JE+J)=(2.0*(A(IA+I)+A(ID+I))-(A(IB+I)+A(IC+I))) FOURIE3A.1797
& +(SSIN60*(B(IB+I)-B(IC+I))) FOURIE3A.1798
I=I+INC3 FOURIE3A.1799
J=J+INC4 FOURIE3A.1800
ENDDO FOURIE3A.1801
IBASE=IBASE+INC1 FOURIE3A.1802
JBASE=JBASE+INC2 FOURIE3A.1803
ENDDO FOURIE3A.1804
GO TO 1900 FOURIE3A.1805
FOURIE3A.1806
C Coding for factor 8: FOURIE3A.1807
1800 CONTINUE FOURIE3A.1808
IBAD=3 FOURIE3A.1809
IF (LA.NE.M) GO TO 1910 FOURIE3A.1810
IA=1 FOURIE3A.1811
IB=IA+LA*INC1 FOURIE3A.1812
IC=IB+2*LA*INC1 FOURIE3A.1813
ID=IC+2*LA*INC1 FOURIE3A.1814
IE=ID+2*LA*INC1 FOURIE3A.1815
JA=1 FOURIE3A.1816
JB=JA+JINK FOURIE3A.1817
JC=JB+JINK FOURIE3A.1818
JD=JC+JINK FOURIE3A.1819
JE=JD+JINK FOURIE3A.1820
JF=JE+JINK FOURIE3A.1821
JG=JF+JINK FOURIE3A.1822
JH=JG+JINK FOURIE3A.1823
SSIN45=SQRT(2.0) FOURIE3A.1824
FOURIE3A.1825
DO L=1,LA FOURIE3A.1826
I=IBASE FOURIE3A.1827
J=JBASE FOURIE3A.1828
CDIR$ IVDEP FOURIE3A.1829
! Fujitsu vectorization directive GRB0F405.313
!OCL NOVREC GRB0F405.314
DO IJK=1,LOT FOURIE3A.1830
C(JA+J)=2.0*(((A(IA+I)+A(IE+I))+A(IC+I))+ FOURIE3A.1831
& (A(IB+I)+A(ID+I))) FOURIE3A.1832
C(JE+J)=2.0*(((A(IA+I)+A(IE+I))+A(IC+I))- FOURIE3A.1833
& (A(IB+I)+A(ID+I))) FOURIE3A.1834
C(JC+J)=2.0*(((A(IA+I)+A(IE+I))-A(IC+I))- FOURIE3A.1835
& (B(IB+I)-B(ID+I))) FOURIE3A.1836
C(JG+J)=2.0*(((A(IA+I)+A(IE+I))-A(IC+I))+ FOURIE3A.1837
& (B(IB+I)-B(ID+I))) FOURIE3A.1838
C(JB+J)=2.0*((A(IA+I)-A(IE+I))-B(IC+I)) FOURIE3A.1839
& +SSIN45*((A(IB+I)-A(ID+I))-(B(IB+I)+B(ID+I))) FOURIE3A.1840
C(JF+J)=2.0*((A(IA+I)-A(IE+I))-B(IC+I)) FOURIE3A.1841
& -SSIN45*((A(IB+I)-A(ID+I))-(B(IB+I)+B(ID+I))) FOURIE3A.1842
C(JD+J)=2.0*((A(IA+I)-A(IE+I))+B(IC+I)) FOURIE3A.1843
& -SSIN45*((A(IB+I)-A(ID+I))+(B(IB+I)+B(ID+I))) FOURIE3A.1844
C(JH+J)=2.0*((A(IA+I)-A(IE+I))+B(IC+I)) FOURIE3A.1845
& +SSIN45*((A(IB+I)-A(ID+I))+(B(IB+I)+B(ID+I))) FOURIE3A.1846
I=I+INC3 FOURIE3A.1847
J=J+INC4 FOURIE3A.1848
ENDDO FOURIE3A.1849
IBASE=IBASE+INC1 FOURIE3A.1850
JBASE=JBASE+INC2 FOURIE3A.1851
ENDDO FOURIE3A.1852
FOURIE3A.1853
1900 CONTINUE FOURIE3A.1854
IBAD=0 FOURIE3A.1855
1910 CONTINUE FOURIE3A.1856
IERR=IBAD FOURIE3A.1857
FOURIE3A.1858
ENDIF ! end of Fourier Synthesis FOURIE3A.1859
FOURIE3A.1860
RETURN ! end of FTRANS FOURIE3A.1861
END FOURIE3A.1862
FOURIE3A.1863
!- End of subroutine code----------------------------------------- FOURIE3A.1864
*ENDIF FOURIE3A.1865