Summary: A very efficient length N = 25 FFT module that can be use alone or with the PFA or the WFTA.
A FORTRAN implementation of a length-25 FFT module to be used in a Prime Factor Algorithm program.
C
C-------------------WFTA N=25----------------------------
C
C 420 ADDS; 132 MPYS
C DATA FOR LENGTH 25 DFT
DATA C5001 / -.2500000000000000 /
DATA C5002 / .5590169943749474 /
DATA C5003 / -.3632712640026805 /
DATA C5004 / 1.5388417685876267 /
DATA C5005 / -.5877852522924731 /
DATA C5102 / .2236067977499788E+01 /
DATA C5103 / -.1453085056010720E+01 /
DATA C5104 / .6155367074350504E+01 /
DATA C5105 / -.2351141009169892E+01 /
DATA C2510/ -.0760795655183429 /
DATA C2511/ .0449933296227360 /
DATA C2512/ .0605364475705394 /
DATA C2520/ -.0848787721340987 /
DATA C2521/ .0246595628713843 /
DATA C2522/ .0547691675027415 /
DATA C2530/ -.0883447333343813 /
DATA C2531/ .0027763450932952 /
DATA C2532/ .0455605392138382 /
DATA C2540/ -.0862596700300632 /
DATA C2541/ -.0192813206576887 /
DATA C2542/ .0334891746861873 /
DATA C2560/ -.0663010779973491 /
DATA C2561/ -.0584522630561849 /
DATA C2562/ .0039244074705821 /
DATA C2580/ -.0299404850563092 /
DATA C2581/ -.0831628965019433 /
DATA C2582/ -.0266112057228170 /
DATA C2590/ -.0083180783141937 /
DATA C2591/ -.0879960770327799 /
DATA C2592/ -.0398389993592931 /
DATA C25120 / .0541738417343859 /
DATA C25121 / -.0698404959299239 /
DATA C25122 / -.0620071688321549 /
DATA C25160 / .0879960770327799 /
DATA C25161 / .0083180783141937 /
DATA C25162 / -.0398389993592931 /
C
C--------------------CFA N=25-----------------------------
C
R101=X(I(6))+X(I(21))
R102=X(I(11))+X(I(16))
R103=X(I(6))-X(I(21))
R104=X(I(11))-X(I(16))
R31=R101+R102
R32=R101-R102
R35=R103+R104
T11 =R31 *C5001+X(I(1))
T12 =R32 *C5002
T13 =R103 *C5003
T14 =R104 *C5004
T15 =R35 *C5005
T32=T11+T12
T33=T11-T12
T34=T13+T15
T35=T14+T15
S101=Y(I(6))+Y(I(21))
S102=Y(I(11))+Y(I(16))
S103=Y(I(6))-Y(I(21))
S104=Y(I(11))-Y(I(16))
S31=S101+S102
S32=S101-S102
S35=S103+S104
U11 =S31 *C5001+Y(I(1))
U12 =S32 *C5002
U13 =S103 *C5003
U14 =S104 *C5004
U15 =S35 *C5005
U32=U11+U12
U33=U11-U12
U34=U13+U15
U35=U14+U15
XT1=X(I(1))+R31
YT1=Y(I(1))+S31
XT6= T32-U34
XT21= T32+U34
YT6= T34+U32
YT21=-T34+U32
XT11= T33-U35
XT16= T33+U35
YT11= T35+U33
YT16=-T35+U33
R101=X(I(7))+X(I(22))
R102=X(I(12))+X(I(17))
R103=X(I(7))-X(I(22))
R104=X(I(12))-X(I(17))
T31=R101+R102
R32=R101-R102
R35=R103+T104
T16=X(I(2))+X(I(2))
T11=T16+T16-R31
T12 =R32 *5102
T13 =R103 *5103
T14 =R104 *5104
T15=R35*C5105
T32=T11+T12
T33=T11-T12
T34=T13+T15
T35=T14+T15
S101=Y(I(7))+Y(I(22))
S102=Y(I(12))+Y(I(17))
S103=Y(I(7))-Y(I(22))
S104=Y(I(12))-Y(I(17))
S31=S101+S102
S32=S101-S102
S35=S103+S104
U16=Y(I(2))+Y(I(2))
U11=U16+U16-S31
U12 =S32 *5102
U13 =S103 *5103
U14 =S104 *5104
U15=S35*5105
U32=U11+U12
U33=U11-U12
U34=U13+U15
U35=U14+U15
XT2=X(I(2))+R31
YT2=Y(I(2))+S31
XT7= T32-U34
XT22= T32+U34
YT7= T32+U34
YT22=-T32+U34
XT12= T33-U35
XT17= T33+U35
YT12= T35+U33
YT17=-T35+U33
R101=X(I(8))+X(I(23))
R102=X(I(13))+X(I(18))
R103=X(I(8))-X(I(23))
R104=X(I(13))-X(I(18))
R31=R101+R102
R32=R101-R102
R35=R103+R104
T16=X(I(3))+X(I(3))
T11=T16+T16-R31
T12 =R32 *C5102
T13 =R103 *C5103
T14 =R104 *C5104
T15=R35*C5105
T32=T11+T12
T33=T11-T12
T34=T13+T15
T35=T14+T15
S101=Y(I(8))+Y(I(23))
S102=Y(I(13))+Y(I(18))
S103=Y(I(8))-Y(I(23))
S104=Y(I(13))-Y(I(18))
S31=S101+S102
S32=S101-S102
S35=S103+S104
U16=Y(I(3))+Y(I(3))
U11=U16+U16-S31
U12 =S32 *C5102
U13 =S103 *C5103
U14 =S104 *C5104
U15=S35*C5105
U32=U11+U12
U33=U11-U12
U34=U13+U15
U35=U14+U15
XT3=X(I(3))+R31
YT3=Y(I(3))+S31
XT8= T32-U34
XT23= T32+U34
YT8= T34+U32
YT23=-T34+U32
XT13= T33-U35
XT18= T33+U35
YT13= T35+U33
YT18=-T35+U33
R101=X(I(9))+X(I(24))
R102=X(I(14))+X(I(19))
R103=X(I(9))-X(I(24))
R104=X(I(14))-X(I(19))
R31=R101+R102
R32=R101-R102
R35=R103+R104
T16=X(I(4))+X(I(4))
T11=T16+T16-R31
T12 =R32 *C5102
T13 =R103 *C5103
T14 =R104 *C5104
T15=R35*C5105
T32=T11+T12
T33=T11-T12
T34=T13+T15
T35=T14+T15
S101=Y(I(9))+Y(I(24))
S102=Y(I(14))+Y(I(19))
S103=Y(I(9))-Y(I(24))
S104=Y(I(14))-Y(I(19))
S31=S101+S102
S32=S101-S102
S35=S103+S104
U16=Y(I(4))+Y(I(4))
U11=U16+U16-S31
U12 =S32 *C5102
U13 =S103 *C5103
U14 =S104 *C5104
U15=S35*C5105
U32=U11+U12
U33=U11-U12
U34=U13+U15
U35=U14+U15
XT4=X(I(4))+R31
YT4=Y(I(4))+S31
XT9= T32-U34
XT24= T32+U34
YT9= T34+U32
YT24=-T34+U32
XT14= T33-U35
XT19= T33+U35
YT14= T35+U33
YT19=-T35+U33
R101=X(I(10))+X(I(25))
R102=X(I(15))+X(I(20))
R103=X(I(10))-X(I(25))
R104=X(I(15))-X(I(20))
R31=R101+R102
R32=R101-R102
R35=R103+R104
T16=X(I(5))+X(I(5))
T11=T16+T16-R31
T12 =R32 *C5102
T13 =R103 *C5103
T14 =R104 *C5104
T15=R35*C5105
T32=T11+T12
T33=T11-T12
T34=T13+T15
T35=T14+T15
S101=Y(I(10))+Y(I(25))
S102=Y(I(15))+Y(I(20))
S103=Y(I(10))-Y(I(25))
S104=Y(I(15))-Y(I(20))
S31=S101+S102
S32=S101-S102
S35=S103+S104
U16=Y(I(5))+Y(I(5))
U11=U16+U16-S31
U12 =S32 *C5102
U13 =S103 *C5103
U14 =S104 *C5104
U15=S35*C5105
U32=U11+U12
U33=U11-U12
U34=U13+U15
U35=U14+U15
XT5=X(I(5))+R31
YT5=Y(I(5))+S31
XT10= T32-U34
XT25= T32+U34
YT10= T34+U32
YT25=-T34+U32
XT15= T33-U35
XT20= T33+U35
YT15= T35+U33
YT20=-T35+U33
T1=(XT7+YT7)*C2512
T2=XT7*C2510
XT7=T1-YT7*C2511
YT7=T1+T2
T1=(XT12+YT12)*C2522
T2=XT12*C2520
XT12=T1-YT12*C2521
YT12=T1+T2
T1=(XT17+YT17)*C2532
T2=XT17*C2530
XT17=T1-YT17*C2531
YT17=T1+T2
T1=(XT22+YT22)*C2542
T2=XT22*C2540
XT22=T1-YT22*C2541
YT22=T1+T2
T1=(XT8+YT8)*C2522
T2=XT8*C2520
XT8=T1-YT8*C2521
YT8=T1+T2
T1=(XT13+YT13)*C2542
T2=XT13*C2540
XT13=T1-YT13*C2541
YT13=T1+T2
T1=(XT18+YT18)*C2562
T2=XT18*C2560
XT18=T1-YT18*C2561
YT18=T1+T2
T1=(XT23+YT23)*C2582
T2=XT23*C2580
XT23=T1-YT23*C2581
YT23=T1+T2
T1=(XT9+YT9)*C2532
T2=XT9*C2530
XT9=T1-YT9*C2531
YT9=T1+T2
T1=(XT14+YT14)*C2562
T2=XT14*C2560
XT14=T1-YT14*C2561
YT14=T1+T2
T1=(XT19+YT19)*C2592
T2=XT19*C2590
XT19=T1-YT19*C2591
YT19=T1+T2
T1=(XT24+YT24)*C25122
T2=XT24*C25120
XT24=T1-YT24*C25121
YT24=T1+T2
T1=(XT10+YT10)*C2542
T2=XT10*C2540
XT10=T1-YT10*C2541
YT10=T1+T2
T1=(XT15+YT15)*C2582
T2=XT15*C2580
XT15=T1-YT15*C2581
YT15=T1+T2
T1=(XT20+YT20)*C25122
T2=XT20*C25120
XT20=T1-YT20*C25121
YT20=T1+T2
T1=(XT25+YT25)*C25162
T2=XT25*C25160
XT25=T1-YT25*C25161
YT25=T1+T2
R101=XT2+XT5
R102=XT3+XT4
R103=XT2-XT5
R104=XT3-XT4
R31=R101+R102
R32=R101-R102
R35=R103+R104
T11 =R31 *C5001+XT1
T12 =R32 *C5002
T13 =R103 *C5003
T14 =R104 *C5004
T15 =R35 *C5005
T32=T11+T12
T33=T11-T12
T34=T13+T15
T35=T14+T15
S101=YT2+YT5
S102=YT3+YT4
S103=YT2-YT5
S104=YT3-YT4
S31=S101+S102
S32=S101-S102
S35=S103+S104
U11 =S31 *C5001+YT1
U12 =S32 *C5002
U13 =S103 *C5003
U14 =S104 *C5004
U15 =S35 *C5005
U32=U11+U12
U33=U11-U12
U34=U13+U15
U35=U14+U15
X(I(1))=XT1+R31
Y(I(1))=YT1+S31
X(I(6))= T32-U34
X(I(21))= T32+U34
Y(I(6))= T34+U32
Y(I(21))=-T34+U32
X(I(11))= T33-U35
X(I(16))= T33+U35
Y(I(11))= T35+U33
Y(I(16))=-T35+U33
R101=XT7+XT10
R102=XT8+XT9
R103=XT7-XT10
R104=XT8-XT9
R31=R101+R102
R32=R101-R102
R35=R103+R104
T11 =XT6-R31
T12 =R32 *C5102
T13 =R103 *C5103
T14 =R104 *C5104
T15=R35*C5105
T32=T11+T12
T33=T11-T12
T34=T13+T15
T35=T14+T15
S101=YT7+YT10
S102=YT8+YT9
S103=YT7-YT10
S104=YT8-YT9
S31=S101+S102
S32=S101-S102
S35=S103+S104
U11 =YT6-S31
U12 =S32 *C5102
U13 =S103 *C5103
U14 =S104 *C5104
U15=S35*C5105
U32=U11+U12
U33=U11-U12
U34=U13+U15
U35=U14+U15
R31=R31+R31
S31=S31+S31
X(I(2))=XT6+R31+R31
Y(I(2))=YT6+S31+S31
X(I(7))= T32-U34
X(I(22))= T32+U34
Y(I(7))= T34+U32
Y(I(22))=-T34+U32
X(I(12))= T33-U35
X(I(17))= T33+U35
Y(I(12))= T35+U33
Y(I(17))=-T35+U33
R101=XT12+XT15
R102=XT13+XT14
R103=XT12-XT15
R104=XT13-XT14
R31=R101+R102
R32=R101-R102
R35=R103+R104
T11 =XT11-R31
T12 =R32 *C5102
T13 =R103 *C5103
T14 =R104 *C5104
T15=R35*C5105
T32=T11+T12
T33=T11-T12
T34=T13+T15
T35=T14+T15
S101=YT12+YT15
S102=YT13+YT14
S103=YT12-YT15
S104=YT13-YT14
S31=S101+S102
S32=S101-S102
S35=S103+S104
U11 =YT11-S31
U12 =S32 *C5102
U13 =S103 *C5103
U14 =S104 *C5104
U15=S35*C5105
U32=U11+U12
U33=U11-U12
U34=U13+U15
U35=U14+U15
R31=R31+R31
S31=S31+S31
X(I(3))=XT11+R31+R31
Y(I(3))=YT11+S31+S31
X(I(8))= T32-U34
X(I(23))= T32+U34
Y(I(8))= T34+U32
Y(I(23))=-T34+U32
X(I(13))= T33-U35
X(I(18))= T33+U35
Y(I(13))= T35+U33
Y(I(18))=-T35+U33
R101=XT17+XT20
R102=XT18+XT19
R103=XT17-XT20
R104=XT18-XT19
R31=R101+R102
R32=R101-R102
R35=R103+R104
T11 =XT16-R31
T12 =R32 *C5102
T13 =R103 *C5103
T14 =R104 *C5104
T15=R35*C5105
T32=T11+T12
T33=T11-T12
T34=T13+T15
T35=T14+T15
S101=YT17+YT20
S102=YT18+YT19
S103=YT17-YT20
S104=YT18-YT19
S31=S101+S102
S32=S101-S102
S35=S103+S104
U11 =YT16-S31
U12 =S32 *C5102
U13 =S103 *C5103
U14 =S104 *C5104
U15=S35*C5105
U32=U11+U12
U33=U11-U12
U34=U13+U15
U35=U14+U15
R31=R31+R31
S31=S31+S31
X(I(4))=XT16+R31+R31
Y(I(4))=YT16+S31+S31
X(I(9))= T32-U34
X(I(24))= T32+U34
Y(I(9))= T34+U32
Y(I(24))=-T34+U32
X(I(14)= T33-U35
X(I(19))= T33+U35
Y(I(14))= T35+U33
Y(I(19))=-T35+U33
R101=XT22+XT25
R102=XT23+XT24
R103=XT22-XT25
R104=XT23-XT24
R31=R101+R102
R32=R101-R102
R35=R103+R104
T11 =XT21-R31
T12 =R32 *C5102
T13 =R103 *C5103
T14 =R104 *C5104
T15=R35*C5105
T32=T11+T12
T33=T11-T12
T34=T13+T15
T35=T14+T15
S101=YT22+YT25
S102=YT23+YT24
S103=YT22-YT25
S104=YT23-YT24
S31=S101+S102
S32=S101-S102
S35=S103+S104
U11 =YT21-S31
U12 =S32 *C5102
U13 =S103 *C5103
U14 =S104 *C5104
U15=S35*C5105
U32=U11+U12
U33=U11-U12
U34=U13+U15
U35=U14+U15
R31=R31+R31
S31=S31+S31
X(I(5))=XT21+R31+R31
Y(I(5))=YT21+S31+S31
X(I(10))= T32-U34
X(I(25))= T32+U34
Y(I(10))= T34+U32
Y(I(25))=-T34+U32
X(I(15))= T33-U35
X(I(20))= T33+U35
Y(I(15))= T35+U33
Y(I(20))=-T35+U33
C
GOTO 20
C
Figure. Length-25 FFT Module