zfftb1.f

Go to the documentation of this file.
00001       subroutine zfftb1 (n,c,ch,wa,ifac)
00002       implicit double precision (a-h,o-z)
00003       dimension       ch(*)      ,c(*)       ,wa(*)      ,ifac(*)
00004       nf = ifac(2)
00005       na = 0
00006       l1 = 1
00007       iw = 1
00008       do 116 k1=1,nf
00009          ip = ifac(k1+2)
00010          l2 = ip*l1
00011          ido = n/l2
00012          idot = ido+ido
00013          idl1 = idot*l1
00014          if (ip .ne. 4) go to 103
00015          ix2 = iw+idot
00016          ix3 = ix2+idot
00017          if (na .ne. 0) go to 101
00018          call zpassb4 (idot,l1,c,ch,wa(iw),wa(ix2),wa(ix3))
00019          go to 102
00020   101    call zpassb4 (idot,l1,ch,c,wa(iw),wa(ix2),wa(ix3))
00021   102    na = 1-na
00022          go to 115
00023   103    if (ip .ne. 2) go to 106
00024          if (na .ne. 0) go to 104
00025          call zpassb2 (idot,l1,c,ch,wa(iw))
00026          go to 105
00027   104    call zpassb2 (idot,l1,ch,c,wa(iw))
00028   105    na = 1-na
00029          go to 115
00030   106    if (ip .ne. 3) go to 109
00031          ix2 = iw+idot
00032          if (na .ne. 0) go to 107
00033          call zpassb3 (idot,l1,c,ch,wa(iw),wa(ix2))
00034          go to 108
00035   107    call zpassb3 (idot,l1,ch,c,wa(iw),wa(ix2))
00036   108    na = 1-na
00037          go to 115
00038   109    if (ip .ne. 5) go to 112
00039          ix2 = iw+idot
00040          ix3 = ix2+idot
00041          ix4 = ix3+idot
00042          if (na .ne. 0) go to 110
00043          call zpassb5 (idot,l1,c,ch,wa(iw),wa(ix2),wa(ix3),wa(ix4))
00044          go to 111
00045   110    call zpassb5 (idot,l1,ch,c,wa(iw),wa(ix2),wa(ix3),wa(ix4))
00046   111    na = 1-na
00047          go to 115
00048   112    if (na .ne. 0) go to 113
00049          call zpassb (nac,idot,ip,l1,idl1,c,c,c,ch,ch,wa(iw))
00050          go to 114
00051   113    call zpassb (nac,idot,ip,l1,idl1,ch,ch,ch,c,c,wa(iw))
00052   114    if (nac .ne. 0) na = 1-na
00053   115    l1 = l2
00054          iw = iw+(ip-1)*idot
00055   116 continue
00056       if (na .eq. 0) return
00057       n2 = n+n
00058       do 117 i=1,n2
00059          c(i) = ch(i)
00060   117 continue
00061       return
00062       end
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Defines