1#if defined(XLF14) || defined(XLFLINUX)
2@PROCESS OPT(0) STRICT(ALL)
3#endif
4      subroutine dpssf4 (ido,l1,cc,ch,wa1,wa2,wa3)
5*
6* $Id$
7*
8      double precision cc(ido,4,l1), ch(ido,l1,4), wa1(1), wa2(1),
9     1  wa3(1), ci2, ci3, ci4, cr2, cr3, cr4, ti1, ti2, ti3, ti4,
10     2  tr1, tr2, tr3, tr4
11c
12      if (ido .ne. 2) go to 102
13      do 101 k=1,l1
14         ti1 = cc(2,1,k)-cc(2,3,k)
15         ti2 = cc(2,1,k)+cc(2,3,k)
16         tr4 = cc(2,2,k)-cc(2,4,k)
17         ti3 = cc(2,2,k)+cc(2,4,k)
18         tr1 = cc(1,1,k)-cc(1,3,k)
19         tr2 = cc(1,1,k)+cc(1,3,k)
20         ti4 = cc(1,4,k)-cc(1,2,k)
21         tr3 = cc(1,2,k)+cc(1,4,k)
22         ch(1,k,1) = tr2+tr3
23         ch(1,k,3) = tr2-tr3
24         ch(2,k,1) = ti2+ti3
25         ch(2,k,3) = ti2-ti3
26         ch(1,k,2) = tr1+tr4
27         ch(1,k,4) = tr1-tr4
28         ch(2,k,2) = ti1+ti4
29         ch(2,k,4) = ti1-ti4
30  101 continue
31      return
32c
33  102 do 104 k=1,l1
34         do 103 i=2,ido,2
35            ti1 = cc(i,1,k)-cc(i,3,k)
36            ti2 = cc(i,1,k)+cc(i,3,k)
37            ti3 = cc(i,2,k)+cc(i,4,k)
38            tr4 = cc(i,2,k)-cc(i,4,k)
39            tr1 = cc(i-1,1,k)-cc(i-1,3,k)
40            tr2 = cc(i-1,1,k)+cc(i-1,3,k)
41            ti4 = cc(i-1,4,k)-cc(i-1,2,k)
42            tr3 = cc(i-1,2,k)+cc(i-1,4,k)
43            ch(i-1,k,1) = tr2+tr3
44            cr3 = tr2-tr3
45            ch(i,k,1) = ti2+ti3
46            ci3 = ti2-ti3
47            cr2 = tr1+tr4
48            cr4 = tr1-tr4
49            ci2 = ti1+ti4
50            ci4 = ti1-ti4
51            ch(i-1,k,2) = wa1(i-1)*cr2+wa1(i)*ci2
52            ch(i,k,2) = wa1(i-1)*ci2-wa1(i)*cr2
53            ch(i-1,k,3) = wa2(i-1)*cr3+wa2(i)*ci3
54            ch(i,k,3) = wa2(i-1)*ci3-wa2(i)*cr3
55            ch(i-1,k,4) = wa3(i-1)*cr4+wa3(i)*ci4
56            ch(i,k,4) = wa3(i-1)*ci4-wa3(i)*cr4
57  103    continue
58  104 continue
59c
60      return
61      end
62