comparison libcruft/slatec-fn/derf.f @ 14767:d213da1a16a6

Correct Fortran implementation of erf for small values (Bug #36364) * derf.f: For small values approximation to erf should be 2*x/sqrt(pi), not 2*x*x/sqrt(pi).
author Rik <octave@nomad.inbox5.com>
date Thu, 14 Jun 2012 08:35:05 -0700
parents 30c606bec7a8
children
comparison
equal deleted inserted replaced
14766:877263efaacc 14767:d213da1a16a6
67 Y = ABS(X) 67 Y = ABS(X)
68 IF (Y.GT.1.D0) GO TO 20 68 IF (Y.GT.1.D0) GO TO 20
69 C 69 C
70 C ERF(X) = 1.0 - ERFC(X) FOR -1.0 .LE. X .LE. 1.0 70 C ERF(X) = 1.0 - ERFC(X) FOR -1.0 .LE. X .LE. 1.0
71 C 71 C
72 IF (Y.LE.SQEPS) DERF = 2.0D0*X*X/SQRTPI 72 IF (Y.LE.SQEPS) DERF = 2.0D0*X/SQRTPI
73 IF (Y.GT.SQEPS) DERF = X*(1.0D0 + DCSEVL (2.D0*X*X-1.D0, 73 IF (Y.GT.SQEPS) DERF = X*(1.0D0 + DCSEVL (2.D0*X*X-1.D0,
74 1 ERFCS, NTERF)) 74 1 ERFCS, NTERF))
75 RETURN 75 RETURN
76 C 76 C
77 C ERF(X) = 1.0 - ERFC(X) FOR ABS(X) .GT. 1.0 77 C ERF(X) = 1.0 - ERFC(X) FOR ABS(X) .GT. 1.0