5 & ( op , x , y , z , c , npoin , iopt , d , eps )
73 INTEGER,
INTENT(IN) :: NPOIN,IOPT
74 DOUBLE PRECISION,
INTENT(INOUT) :: X(npoin)
75 DOUBLE PRECISION,
INTENT(IN) :: Y(npoin),Z(npoin),C,D,EPS
76 CHARACTER(LEN=8),
INTENT(IN) :: OP
84 IF(op(1:8).EQ.
'X=1/Y ')
THEN 92 ELSEIF(iopt.EQ.2)
THEN 96 IF (abs(y(i)).GT.eps)
THEN 104 ELSEIF(iopt.EQ.3)
THEN 108 IF (abs(y(i)).GT.eps)
THEN 111 WRITE(
lu,2000) i,op,eps
118 ELSEIF(iopt.EQ.4)
THEN 122 IF (abs(y(i)).GT.eps)
THEN 124 ELSEIF (y(i).GE.0.d0)
THEN 136 ELSEIF(op(1:8).EQ.
'X=C/Y ')
THEN 144 ELSEIF(iopt.EQ.2)
THEN 148 IF (abs(y(i)).GT.eps)
THEN 156 ELSEIF(iopt.EQ.3)
THEN 160 IF (abs(y(i)).GT.eps)
THEN 163 WRITE(
lu,2000) i,op,eps
170 ELSEIF(iopt.EQ.4)
THEN 174 IF (abs(y(i)).GT.eps)
THEN 176 ELSEIF (y(i).GE.0.d0)
THEN 188 ELSEIF(op(1:8).EQ.
'X=Y/Z ')
THEN 196 ELSEIF(iopt.EQ.2)
THEN 200 IF (abs(z(i)).GT.eps)
THEN 208 ELSEIF(iopt.EQ.3)
THEN 212 IF (abs(z(i)).GT.eps)
THEN 215 WRITE(
lu,2000) i,op,eps
221 ELSEIF(iopt.EQ.4)
THEN 225 IF (abs(z(i)).GT.eps)
THEN 227 ELSEIF (abs(y(i)).LT.eps)
THEN 229 ELSEIF (z(i).GE.0.d0)
THEN 241 ELSEIF(op(1:8).EQ.
'X=CY/Z ')
THEN 249 ELSEIF(iopt.EQ.2)
THEN 253 IF (abs(z(i)).GT.eps)
THEN 261 ELSEIF(iopt.EQ.3)
THEN 265 IF (abs(z(i)).GT.eps)
THEN 268 WRITE(
lu,2000) i,op,eps
275 ELSEIF(iopt.EQ.4)
THEN 279 IF (abs(z(i)).GT.eps)
THEN 281 ELSEIF (abs(c*y(i)).LT.eps)
THEN 283 ELSEIF (z(i).GE.0.d0)
THEN 295 ELSEIF(op(1:8).EQ.
'X=CXY/Z ')
THEN 300 x(i) = c*x(i)*y(i) / z(i)
303 ELSEIF(iopt.EQ.2)
THEN 307 IF (abs(z(i)).GT.eps)
THEN 308 x(i) = c*x(i)*y(i) / z(i)
315 ELSEIF(iopt.EQ.3)
THEN 319 IF (abs(z(i)).GT.eps)
THEN 320 x(i) = c*x(i)*y(i) / z(i)
322 WRITE(
lu,2000) i,op,eps
329 ELSEIF(iopt.EQ.4)
THEN 333 IF (abs(z(i)).GT.eps)
THEN 334 x(i) = c*x(i)*y(i) / z(i)
335 ELSEIF (abs(c*x(i)*y(i)).LT.eps)
THEN 337 ELSEIF (z(i).GE.0.d0)
THEN 350 ELSEIF(op(1:8).EQ.
'X=X+CY/Z')
THEN 355 x(i) = x(i) + c * y(i) / z(i)
358 ELSEIF(iopt.EQ.2)
THEN 362 IF (abs(z(i)).GT.eps)
THEN 363 x(i) = x(i) + c * y(i) / z(i)
370 ELSEIF(iopt.EQ.3)
THEN 374 IF (abs(z(i)).GT.eps)
THEN 375 x(i) = x(i) + c * y(i) / z(i)
377 WRITE(
lu,2000) i,op,eps
384 ELSEIF(iopt.EQ.4)
THEN 388 IF (abs(z(i)).GT.eps)
THEN 389 x(i) = x(i) + c*y(i) / z(i)
390 ELSEIF (abs(c*y(i)).LT.eps)
THEN 392 ELSEIF (z(i).GE.0.d0)
THEN 393 x(i) = x(i) + c*y(i) / eps
395 x(i) = x(i) - c*y(i) / eps
414 2000
FORMAT(1x,
'OVD (BIEF) : DIVIDE BY ZERO AT POINT ',1i6,
415 &
' FOR OPERATION ',a8,/,1x,
416 &
'THE CRITERION IS ',g16.7)
417 4000
FORMAT(1x,
'OVD (BIEF) : UNKNOWN OPERATION: ',a8)
subroutine ovd(OP, X, Y, Z, C, NPOIN, IOPT, D, EPS)