11 IMPLICIT DOUBLE PRECISION(a-
h, o-
z)
16 dimension a(4,4),
w(4),
z(4,4),
x(4),d(4,4),
e(4)
20 b3=-(a(1,1)+a(2,2)+a(3,3)+a(4,4))
36 b0=b0+(-1d0)**(
i+1)*a(1,
i)*(
47 c0=-
b1**2-b0*b3**2+4d0*b0*b2
49 cr=c1*
c2/6d0-c0/2d0-
c2**3/27d0
54 s1=(cr+sqrt(cqr))**(1d0/3d0)
55 s2=(cr-sqrt(cqr))**(1d0/3d0)
59 the=acos(cr/sabs**3)/3d0
65 p1=b3/2d0-sqrt(b3**2/4d0+u-b2)
66 p2=b3/2d0+sqrt(b3**2/4d0+u-b2)
67 q1=u/2d0+sqrt(u**2/4d0-b0)
68 q2=u/2d0-sqrt(u**2/4d0-b0)
69 IF(abs(p1*q1+p2*q2-
b1).LT.abs(p1*q2+p2*q1-
b1))
THEN
74 x(1)=-p1/2d0+sqrt(p1**2/4d0-q1)
75 x(2)=-p1/2d0-sqrt(p1**2/4d0-q1)
76 x(3)=-p2/2d0+sqrt(p2**2/4d0-q2)
77 x(4)=-p2/2d0-sqrt(p2**2/4d0-q2)
83 IF(abs(
x(
i1)).GE.abs(
w(
i2))) goto 140
92 d(j1,j1)=a(j1,j1)-
w(
i)
103 IF(abs(d(j1,j2)).LE.damax) goto 180
116 d(j1,j2)=d(j1,j2)-rl*d(ja,j2)
117 IF(abs(d(j1,j2)).LE.damax) goto 200
128 IF(j1.EQ.ja) goto 230
131 IF(j2.EQ.jb) goto 220
132 d(j1,j2)=d(j1,j2)-rl*d(jc,j2)
133 IF(abs(d(j1,j2)).LE.damax) goto 220
141 jf2=jd+2-4*((jd+1)/4)
142 IF(jf1.EQ.jb) jf1=jd+3-4*((jd+2)/4)
143 IF(jf2.EQ.jb) jf2=jd+3-4*((jd+2)/4)
146 e(jd)=-(d(jc,jf1)*
e(jf1)+d(jc,jf2)*
e(jf2))/d(jc,jd)
147 e(jb)=-(d(ja,jf1)*
e(jf1)+d(ja,jf2)*
e(jf2)+d(ja,jd)*
e(jd))/
151 ea=sqrt(
e(1)**2+
e(2)**2+
e(3)**2+
e(4)**2)
152 sgn=(-1d0)**int(
pyr(0)+0.5d0)