33#include "implicit_f.inc"
34 INTEGER,
INTENT(in) :: DIM1
35 INTEGER,
INTENT(in) :: DIM2
36 INTEGER,
DIMENSION(DIM1) :: NROT
37 my_real,
DIMENSION(DIM1,DIM2),
intent(inout) :: ew
38 my_real,
DIMENSION(DIM1,DIM2,DIM2),
intent(inout) :: a,ev
40 my_real,
DIMENSION(:,:),
ALLOCATABLE :: b,z
41 INTEGER IZ,IS,ITER,J,IJK,I
43 INTEGER,
DIMENSION(DIM1) :: INDX
44 my_real,
DIMENSION(DIM1) :: sumrs,eps
49 ALLOCATE( b(dim1,dim2) )
50 ALLOCATE( z(dim1,dim2) )
55 a(i,is,iz) = a(i,iz,is)
60 b(1:dim1,iz)=a(1:dim1,iz,iz)
61 ew(1:dim1,iz)=b(1:dim1,iz)
76 sumrs(1:dim1)=sumrs(1:dim1)+abs(a(1:dim1,iz,is))
83 IF (sumrs(i)/=zero)
THEN
92 eps(1:dim1) = one_fifth*sumrs(1:dim1)/dim2**2
97#include
"vectorize.inc"
100 g = 100. * abs(a(i,iz,is))
101 IF ( iter>4 .AND. abs(ew(i,iz))+g==abs(ew(i,iz))
102 & .AND. abs(ew(i,is))+g==abs(ew(i,is)))
THEN
104 ELSEIF (abs(a(i,iz,is)) > eps(i))
THEN
105 h = ew(i,is)-ew(i,iz)
106 IF (abs(h)+g==abs(h))
THEN
109 theta = half*h/a(i,iz,is)
110 t=one/(abs(theta)+sqrt(one+theta**2))
111 IF (theta < zero) t=-t
125 a(i,j,iz)=g-s*(h+g*tau)
126 a(i,j,is)=h+s*(g-h*tau)
131 a(i,iz,j)=g-s*(h+g*tau)
132 a(i,j,is)=h+s*(g-h*tau)
137 a(i,iz,j)=g-s*(h+g*tau)
138 a(i,is,j)=h+s*(g-h*tau)
143 ev(i,j,iz)=g-s*(h+g*tau)
144 ev(i,j,is)=h+s*(g-h*tau)
154#include "vectorize.inc"
157 b(i,iz)=b(i,iz)+z(i,iz)