00001 subroutine zpassb3 (ido,l1,cc,ch,wa1,wa2) 00002 implicit double precision (a-h,o-z) 00003 dimension cc(ido,3,l1) ,ch(ido,l1,3) , 00004 1 wa1(1) ,wa2(1) 00005 data taur,taui /-.5,.866025403784439d0/ 00006 if (ido .ne. 2) go to 102 00007 do 101 k=1,l1 00008 tr2 = cc(1,2,k)+cc(1,3,k) 00009 cr2 = cc(1,1,k)+taur*tr2 00010 ch(1,k,1) = cc(1,1,k)+tr2 00011 ti2 = cc(2,2,k)+cc(2,3,k) 00012 ci2 = cc(2,1,k)+taur*ti2 00013 ch(2,k,1) = cc(2,1,k)+ti2 00014 cr3 = taui*(cc(1,2,k)-cc(1,3,k)) 00015 ci3 = taui*(cc(2,2,k)-cc(2,3,k)) 00016 ch(1,k,2) = cr2-ci3 00017 ch(1,k,3) = cr2+ci3 00018 ch(2,k,2) = ci2+cr3 00019 ch(2,k,3) = ci2-cr3 00020 101 continue 00021 return 00022 102 do 104 k=1,l1 00023 do 103 i=2,ido,2 00024 tr2 = cc(i-1,2,k)+cc(i-1,3,k) 00025 cr2 = cc(i-1,1,k)+taur*tr2 00026 ch(i-1,k,1) = cc(i-1,1,k)+tr2 00027 ti2 = cc(i,2,k)+cc(i,3,k) 00028 ci2 = cc(i,1,k)+taur*ti2 00029 ch(i,k,1) = cc(i,1,k)+ti2 00030 cr3 = taui*(cc(i-1,2,k)-cc(i-1,3,k)) 00031 ci3 = taui*(cc(i,2,k)-cc(i,3,k)) 00032 dr2 = cr2-ci3 00033 dr3 = cr2+ci3 00034 di2 = ci2+cr3 00035 di3 = ci2-cr3 00036 ch(i,k,2) = wa1(i-1)*di2+wa1(i)*dr2 00037 ch(i-1,k,2) = wa1(i-1)*dr2-wa1(i)*di2 00038 ch(i,k,3) = wa2(i-1)*di3+wa2(i)*dr3 00039 ch(i-1,k,3) = wa2(i-1)*dr3-wa2(i)*di3 00040 103 continue 00041 104 continue 00042 return 00043 end