5 * Revision 1.1.1.1 1996/04/01 15:03:28 mclareni
10 SUBROUTINE NEWPTQ (EPS,T,ETA,SFTBND,XLAMDA,U,FU,GU,XMIN,FMIN,XW,FW
11 1,XV,FV,A,FA,B,OLDF,B1,SCXBD,E,D,RR,SS,GTEST1,GTEST2,TOL,ILOC,ITEST
14 DOUBLE PRECISION EPS, T, ETA, SFTBND, XLAMDA, U, FU, GU,
15 1 XMIN, FMIN, XW, FW, XV, FV, A, FA, B, OLDF,
16 2 B1, SCXBD, E, D, RR, SS, GTEST1, GTEST2, TOL
17 DOUBLE PRECISION A1, D1, D2, Q, R, S, T2, XM
18 GOTO (10,20,20,230,220),ILOC
22 IF(U.LE.0.0D+0.OR.XLAMDA.LE.T2.OR.GU.GT.0.0D+0) RETURN
34 SCXBD=EPS*ABS(XLAMDA)+T
38 SCXBD=XLAMDA-SCXBD/(1.0D+0+EPS)
43 20 IF(FU.GT.FMIN) GOTO 50
44 IF(U.LT.0.0D+0) GOTO 30
62 50 IF(U.GE.0.0D+0) GOTO 60
67 70 IF(FU.GT.FW.AND.XW.NE.0.0D+0) GOTO 80
73 80 IF(FU.GT.FV.AND.XV.NE.0.0D+0.AND.XV.NE.XW) GOTO 90
77 IF(ABS(XM).LE.T2-5.0D-1*(B-A).OR.XMIN+B.LE.SFTBND.OR.FA-FMIN.LE.
78 1ABS(A)*GTEST2.AND.FMIN.LT.OLDF.AND.(ABS(XMIN-XLAMDA).GT.TOL.OR.S
83 IF(ABS(E).LE.TOL) GOTO 120
84 IF(ILOC.NE.2) GOTO 100
85 Q=2.0D+0*(FW-FMIN-XW*GU)
87 IF(XMIN.NE.0.0D+0) S=(2.0D+0*(FMIN-FW)+XW*GU)*XW
93 110 IF(Q.GT.0.0D+0) S=-S
96 IF(D.NE.B1.OR.B.LE.SCXBD) E=D
99 IF(XMIN.NE.A) GOTO 130
102 130 IF(B.LE.SCXBD) GOTO 140
108 IF(ABS(D2).GT.TOL.AND.(XW.LE.0.0D+0.OR.ABS(D1).LE.TOL)) GOTO 1
114 D=5.0D+0*D2*(1.0D-1+1.0D+0/U)/1.1D+1
115 IF(U.LT.1.0D+0) D=5.0D-1*D2*SQRT(U)
116 160 IF(D.LE.0.0D+0) A1=D
118 IF(ABS(S).GE.ABS(5.0D-1*Q*R).OR.S.LE.Q*A1.OR.S.GE.Q*B1) GOTO 1
121 IF(D-A.GE.T2.AND.B-D.GE.T2) GOTO 180
123 IF(XM.LE.0.0D+0) D=-TOL
128 190 IF(D.LT.SCXBD) GOTO 200
130 SCXBD=SCXBD*(1.0D+0+7.5D-1*EPS)+7.5D-1*TOL
132 IF(ABS(D).LT.TOL.AND.D.LE.0.0D+0) U=-TOL
133 IF(ABS(D).LT.TOL.AND.D.GT.0.0D+0) U=TOL
139 220 IF(ABS(XMIN-XLAMDA).GE.TOL.OR.XMIN.EQ.T) GOTO 230
141 IF(SCXBD.LE.B) GOTO 230
146 230 IF(XMIN+B.GT.SFTBND) GOTO 240
149 240 IF(OLDF-FU.LE.GTEST1*XMIN) GOTO 250
153 250 IF(XMIN.NE.T) GOTO 260