00001 subroutine cfftf1 (n,c,ch,wa,ifac) 00002 dimension ch(*) ,c(*) ,wa(*) ,ifac(*) 00003 nf = ifac(2) 00004 na = 0 00005 l1 = 1 00006 iw = 1 00007 do 116 k1=1,nf 00008 ip = ifac(k1+2) 00009 l2 = ip*l1 00010 ido = n/l2 00011 idot = ido+ido 00012 idl1 = idot*l1 00013 if (ip .ne. 4) go to 103 00014 ix2 = iw+idot 00015 ix3 = ix2+idot 00016 if (na .ne. 0) go to 101 00017 call passf4 (idot,l1,c,ch,wa(iw),wa(ix2),wa(ix3)) 00018 go to 102 00019 101 call passf4 (idot,l1,ch,c,wa(iw),wa(ix2),wa(ix3)) 00020 102 na = 1-na 00021 go to 115 00022 103 if (ip .ne. 2) go to 106 00023 if (na .ne. 0) go to 104 00024 call passf2 (idot,l1,c,ch,wa(iw)) 00025 go to 105 00026 104 call passf2 (idot,l1,ch,c,wa(iw)) 00027 105 na = 1-na 00028 go to 115 00029 106 if (ip .ne. 3) go to 109 00030 ix2 = iw+idot 00031 if (na .ne. 0) go to 107 00032 call passf3 (idot,l1,c,ch,wa(iw),wa(ix2)) 00033 go to 108 00034 107 call passf3 (idot,l1,ch,c,wa(iw),wa(ix2)) 00035 108 na = 1-na 00036 go to 115 00037 109 if (ip .ne. 5) go to 112 00038 ix2 = iw+idot 00039 ix3 = ix2+idot 00040 ix4 = ix3+idot 00041 if (na .ne. 0) go to 110 00042 call passf5 (idot,l1,c,ch,wa(iw),wa(ix2),wa(ix3),wa(ix4)) 00043 go to 111 00044 110 call passf5 (idot,l1,ch,c,wa(iw),wa(ix2),wa(ix3),wa(ix4)) 00045 111 na = 1-na 00046 go to 115 00047 112 if (na .ne. 0) go to 113 00048 call passf (nac,idot,ip,l1,idl1,c,c,c,ch,ch,wa(iw)) 00049 go to 114 00050 113 call passf (nac,idot,ip,l1,idl1,ch,ch,ch,c,c,wa(iw)) 00051 114 if (nac .ne. 0) na = 1-na 00052 115 l1 = l2 00053 iw = iw+(ip-1)*idot 00054 116 continue 00055 if (na .eq. 0) return 00056 n2 = n+n 00057 do 117 i=1,n2 00058 c(i) = ch(i) 00059 117 continue 00060 return 00061 end