Mercurial > octave-nkf
diff libcruft/slatec-fn/atanh.f @ 14392:d17237256856
Make SLATEC-FN atanh/erfc functions more tolerant about edge cases like
numerical underflow or NaN values.
* slatec-fn/atanh,f (ATANH): Returns infinity for +-1 and NaN for >1
* slatec-fn/datanh.f (DATANH): Likewise.
* slatec-fn/erfc.f (ERFC): Returns NaN for Nan input.
* slatec-fn/derfc.f (DERFC): Likewise.
author | Michael Goffioul <michael.goffioul@gmail.com> |
---|---|
date | Thu, 23 Feb 2012 09:12:47 +0000 |
parents | 82be108cc558 |
children |
line wrap: on
line diff
--- a/libcruft/slatec-fn/atanh.f Wed Feb 22 20:06:05 2012 -0500 +++ b/libcruft/slatec-fn/atanh.f Thu Feb 23 09:12:47 2012 +0000 @@ -57,8 +57,14 @@ FIRST = .FALSE. C Y = ABS(X) - IF (Y .GE. 1.0) CALL XERMSG ('SLATEC', 'ATANH', 'ABS(X) GE 1', 2, - + 2) + IF (Y .GE. 1.0) THEN + IF (Y .GT. 1.0) THEN + ATANH = (X - X) / (X - X) + ELSE + ATANH = X / 0.0 + ENDIF + RETURN + ENDIF C IF (1.0-Y .LT. DXREL) CALL XERMSG ('SLATEC', 'ATANH', + 'ANSWER LT HALF PRECISION BECAUSE ABS(X) TOO NEAR 1', 1, 1)