5 & ( op , x , y , z , c , npoin,
6 & x_err , y_err , z_err)
97 INTEGER,
INTENT(IN) :: NPOIN
98 DOUBLE PRECISION,
INTENT(IN) :: Y(npoin),Z(*),C
99 DOUBLE PRECISION,
INTENT(INOUT) :: X(npoin)
100 DOUBLE PRECISION,
OPTIONAL,
INTENT(IN):: Y_ERR(npoin),Z_ERR(npoin)
101 DOUBLE PRECISION,
OPTIONAL,
INTENT(INOUT) :: X_ERR(npoin)
102 CHARACTER(LEN=8),
INTENT(IN) :: OP
107 DOUBLE PRECISION ERROR,ERROR1,TEMP(npoin),TEST
110 INTRINSIC sqrt,abs,cos,sin,atan,max,min
133 IF (
PRESENT (x_err))
THEN 144 IF (
PRESENT (x_err) .AND.
PRESENT (y_err))
THEN 155 IF (
PRESENT (x_err).AND.
PRESENT (y_err))
THEN 166 IF (
PRESENT (x_err).AND.
PRESENT (y_err))
THEN 184 CALL twosum(y(i),z(i),x(i),error)
185 IF (
PRESENT (x_err) .AND.
PRESENT (y_err)
186 & .AND.
PRESENT (z_err))
THEN 187 x_err(i)=(y_err(i)+z_err(i))+error
197 CALL twosum(y(i),-z(i),x(i),error)
198 IF (
PRESENT (x_err) .AND.
PRESENT (y_err)
199 & .AND.
PRESENT (z_err))
THEN 200 x_err(i)=(y_err(i)-z_err(i))+error
210 CALL twoprod(y(i),z(i),x(i),error)
211 IF (
PRESENT (x_err) .AND.
PRESENT (y_err)
212 & .AND.
PRESENT (z_err))
THEN 213 x_err(i)=(y(i) * z_err(i))+(y_err(i) * z(i))
214 & +(y_err(i) * z_err(i))
215 x_err(i)=x_err(i)+ error
225 CALL twoprod(-y(i),z(i),x(i),error)
226 IF (
PRESENT (x_err) .AND.
PRESENT (y_err)
227 & .AND.
PRESENT (z_err))
THEN 228 x_err(i)=(-y(i) * z_err(i))+(-y_err(i) * z(i))
229 x_err(i)=x_err(i)+ error
240 CALL twoprod(x(i),y(i),test,error)
241 IF (
PRESENT (x_err) .AND.
PRESENT (y_err))
THEN 242 x_err(i)=(x(i) * y_err(i))+(x_err(i) * y(i))
243 & +(x_err(i) * y_err(i))
244 x_err(i)=x_err(i)+ error
254 CALL twoprod(y(i),z(i),temp(i),error1)
256 CALL twosum(tmp,temp(i),x(i),error)
257 IF (
PRESENT (x_err).AND.
PRESENT (y_err)
258 & .AND.
PRESENT (z_err))
THEN 259 x_err(i)=x_err(i)+(y(i) * z_err(i))
261 x_err(i)=x_err(i)+ error1
262 x_err(i)=x_err(i)+error
272 CALL twoprod(y(i),z(i),temp(i),error1)
274 CALL twosum(tmp,-temp(i),x(i),error)
275 IF (
PRESENT (x_err).AND.
PRESENT (y_err)
276 & .AND.
PRESENT (z_err))
THEN 277 temp(i)=(y(i) * z_err(i))
278 & +(y_err(i) * z(i))+(y_err(i) * z_err(i))
279 temp(i)=temp(i)+error1
280 x_err(i)=(x_err(i)-temp(i))+error
290 x(i) = c * x(i) * y(i)
298 CALL twoprod(c*y(i),z(i),x(i),error)
299 IF (
PRESENT (x_err) .AND.
PRESENT (y_err)
300 & .AND.
PRESENT (z_err))
THEN 301 x_err(i)= (c*y(i) * z_err(i))
302 & +(c*y_err(i) * z(i))+(c*y_err(i) * z_err(i))
303 x_err(i)= x_err(i)+error
313 x(i) = c * x(i) * y(i) * z(i)
321 x(i) = x(i) + c * y(i) * z(i)
345 x(i) = c*x(i)*y(i) / z(i)
353 x(i) = x(i) + c * y(i) / z(i)
362 CALL twosum(tmp,y(i),x(i),error)
363 IF (
PRESENT (x_err) .AND.
PRESENT (y_err))
THEN 364 x_err(i)=(x_err(i)+y_err(i))+error
374 CALL twosum(tmp,-y(i),x(i),error)
375 IF (
PRESENT (x_err))
THEN 376 x_err(i)=(x_err(i)-y_err(i))+error
394 CALL twoprod(c,y(i),x(i),error)
395 IF (
PRESENT (x_err) .AND.
PRESENT (y_err))
THEN 396 x_err(i)=(c * y_err(i))
397 x_err(i)=x_err(i)+error
407 x(i) = y(i) + c * z(i)
415 CALL twoprod(c,y(i),temp(i),error1)
417 CALL twosum(tmp,temp(i),x(i),error)
418 IF (
PRESENT (x_err).AND.
PRESENT (y_err))
THEN 419 x_err(i)=x_err(i)+(c* y_err(i))
421 x_err(i)=x_err(i)+error
440 IF (
PRESENT (x_err) .AND.
PRESENT (y_err))
THEN 441 x_err(i) = abs(y_err(i))
450 x(i) = sqrt( y(i)**2 + z(i)**2 )
474 IF(y(i).GE.0.d0)
THEN 478 101
FORMAT(1x,
'OV (BIEF): Y**C FORBIDDEN IF Y < 0')
513 x(i) = atan2(y(i),z(i))
537 x(i) = max(y(i),z(i))
545 x(i) = min(y(i),z(i))
553 IF ( z(i).LT.c ) x(i) = y(i)
569 1001
FORMAT(1x,
'OV (BIEF) : UNKNOWN OPERATION: ',a8)
subroutine ov_comp(OP, X, Y, Z, C, NPOIN, X_ERR, Y_ERR, Z_ERR)
subroutine twoprod(A, B, X, Y)
subroutine twosum(A, B, X, Y)