3313
3314
3315
3316
3317
3318
3319
3320 DOUBLE PRECISION ERRBND, PREC, PSCLR, X, Y
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355 DOUBLE PRECISION ONE, TWO, ZERO
3356 parameter( one = 1.0d+0, two = 2.0d+0,
3357 $ zero = 0.0d+0 )
3358
3359
3360 DOUBLE PRECISION ADDBND, FACT, SUMPOS, SUMNEG, TMP
3361
3362
3364
3365
3366
3367 sumpos = zero
3368 sumneg = zero
3369 fact = one + two * prec
3370 addbnd = two * two * two * prec
3371
3372 tmp = psclr * x
3373 IF( tmp.GE.zero ) THEN
3374 sumpos = sumpos + tmp * fact
3375 ELSE
3376 sumneg = sumneg - tmp * fact
3377 END IF
3378
3379 tmp = y
3380 IF( tmp.GE.zero ) THEN
3381 sumpos = sumpos + tmp
3382 ELSE
3383 sumneg = sumneg - tmp
3384 END IF
3385
3386 y = y + ( psclr * x )
3387
3388 errbnd = addbnd *
max( sumpos, sumneg )
3389
3390 RETURN
3391
3392
3393