1#if defined(XLF14) || defined(XLFLINUX)
2@PROCESS OPT(0) STRICT(ALL)
3#endif
4      subroutine dpssb5 (ido,l1,cc,ch,wa1,wa2,wa3,wa4)
5*
6* $Id$
7*
8      double precision cc(ido,5,l1), ch(ido,l1,5), wa1(1), wa2(1),
9     1  wa3(1), wa4(1), ci2, ci3, ci4, ci5, cr2, cr3, cr4, cr5,
10     2  di2, di3, di4, di5, dr2, dr3, dr4, dr5, ti11, ti12, ti2, ti3,
11     3  ti4, ti5, tr11, tr12, tr2, tr3, tr4, tr5
12      data tr11  /  0.3090169943 7494742410 2293417182 81906d0/
13      data ti11  /  0.9510565162 9515357211 6439333379 38214d0/
14      data tr12  / -0.8090169943 7494742410 2293417182 81906d0/
15      data ti12  /  0.5877852522 9247312916 8705954639 07277d0/
16c
17c     sin(pi/10) = .30901699....    .
18c     cos(pi/10) = .95105651....    .
19c     sin(pi/5 ) = .58778525....    .
20c     cos(pi/5 ) = .80901699....    .
21c
22      if (ido .ne. 2) go to 102
23      do 101 k=1,l1
24         ti5 = cc(2,2,k)-cc(2,5,k)
25         ti2 = cc(2,2,k)+cc(2,5,k)
26         ti4 = cc(2,3,k)-cc(2,4,k)
27         ti3 = cc(2,3,k)+cc(2,4,k)
28         tr5 = cc(1,2,k)-cc(1,5,k)
29         tr2 = cc(1,2,k)+cc(1,5,k)
30         tr4 = cc(1,3,k)-cc(1,4,k)
31         tr3 = cc(1,3,k)+cc(1,4,k)
32         ch(1,k,1) = cc(1,1,k)+tr2+tr3
33         ch(2,k,1) = cc(2,1,k)+ti2+ti3
34         cr2 = cc(1,1,k)+tr11*tr2+tr12*tr3
35         ci2 = cc(2,1,k)+tr11*ti2+tr12*ti3
36         cr3 = cc(1,1,k)+tr12*tr2+tr11*tr3
37         ci3 = cc(2,1,k)+tr12*ti2+tr11*ti3
38         cr5 = ti11*tr5+ti12*tr4
39         ci5 = ti11*ti5+ti12*ti4
40         cr4 = ti12*tr5-ti11*tr4
41         ci4 = ti12*ti5-ti11*ti4
42         ch(1,k,2) = cr2-ci5
43         ch(1,k,5) = cr2+ci5
44         ch(2,k,2) = ci2+cr5
45         ch(2,k,3) = ci3+cr4
46         ch(1,k,3) = cr3-ci4
47         ch(1,k,4) = cr3+ci4
48         ch(2,k,4) = ci3-cr4
49         ch(2,k,5) = ci2-cr5
50  101 continue
51      return
52c
53  102 do 104 k=1,l1
54         do 103 i=2,ido,2
55            ti5 = cc(i,2,k)-cc(i,5,k)
56            ti2 = cc(i,2,k)+cc(i,5,k)
57            ti4 = cc(i,3,k)-cc(i,4,k)
58            ti3 = cc(i,3,k)+cc(i,4,k)
59            tr5 = cc(i-1,2,k)-cc(i-1,5,k)
60            tr2 = cc(i-1,2,k)+cc(i-1,5,k)
61            tr4 = cc(i-1,3,k)-cc(i-1,4,k)
62            tr3 = cc(i-1,3,k)+cc(i-1,4,k)
63            ch(i-1,k,1) = cc(i-1,1,k)+tr2+tr3
64            ch(i,k,1) = cc(i,1,k)+ti2+ti3
65            cr2 = cc(i-1,1,k)+tr11*tr2+tr12*tr3
66            ci2 = cc(i,1,k)+tr11*ti2+tr12*ti3
67            cr3 = cc(i-1,1,k)+tr12*tr2+tr11*tr3
68            ci3 = cc(i,1,k)+tr12*ti2+tr11*ti3
69            cr5 = ti11*tr5+ti12*tr4
70            ci5 = ti11*ti5+ti12*ti4
71            cr4 = ti12*tr5-ti11*tr4
72            ci4 = ti12*ti5-ti11*ti4
73            dr3 = cr3-ci4
74            dr4 = cr3+ci4
75            di3 = ci3+cr4
76            di4 = ci3-cr4
77            dr5 = cr2+ci5
78            dr2 = cr2-ci5
79            di5 = ci2-cr5
80            di2 = ci2+cr5
81            ch(i-1,k,2) = wa1(i-1)*dr2-wa1(i)*di2
82            ch(i,k,2) = wa1(i-1)*di2+wa1(i)*dr2
83            ch(i-1,k,3) = wa2(i-1)*dr3-wa2(i)*di3
84            ch(i,k,3) = wa2(i-1)*di3+wa2(i)*dr3
85            ch(i-1,k,4) = wa3(i-1)*dr4-wa3(i)*di4
86            ch(i,k,4) = wa3(i-1)*di4+wa3(i)*dr4
87            ch(i-1,k,5) = wa4(i-1)*dr5-wa4(i)*di5
88            ch(i,k,5) = wa4(i-1)*di5+wa4(i)*dr5
89  103    continue
90  104 continue
91c
92      return
93      end
94