5 SUBROUTINE dorth (VNEW, V, HES, N, LL, LDHES, KMP, SNORMW)
57 INTEGER n, ll, ldhes, kmp
58 DOUBLE PRECISION vnew, v, hes, snormw
61 DOUBLE PRECISION arg, ddot, dnrm2, sumdsq, tem, vnrm
66 vnrm = dnrm2(n, vnew, 1)
74 hes(i,ll) = ddot(n, v(1,i), 1, vnew, 1)
76 CALL daxpy(n, tem, v(1,i), 1, vnew, 1)
85 snormw = dnrm2(n, vnew, 1)
86 IF (vnrm + 0.001d0*snormw .NE. vnrm)
RETURN
89 tem = -ddot(n, v(1,i), 1, vnew, 1)
90 IF (hes(i,ll) + 0.001d0*tem .EQ. hes(i,ll)) go to 30
91 hes(i,ll) = hes(i,ll) - tem
92 CALL daxpy(n, tem, v(1,i), 1, vnew, 1)
93 sumdsq = sumdsq + tem**2
95 IF (sumdsq .EQ. 0.0d0)
RETURN
96 arg =
max(0.0d0,snormw**2 - sumdsq)