diff --git a/src/frontend/numparam/xpressn.c b/src/frontend/numparam/xpressn.c index 6aed9d4e0..2bd039d28 100644 --- a/src/frontend/numparam/xpressn.c +++ b/src/frontend/numparam/xpressn.c @@ -194,14 +194,22 @@ mathfunction(int f, double z, double x) #ifdef HAVE_ACOSH y = acosh(x); #else - y = (log(x + sqrt(x*x-1.0))); + /* domain check (HUGE_VAL like gnu libc) */ + if (x < 1.) + y = HUGE_VAL; + else + y = (log(x + sqrt(x*x-1.0))); #endif break; case 33: #ifdef HAVE_ATANH y = atanh(x); #else - y = (log((1.0 + x) / (1.0 - x)) / 2.0); + /* domain check (HUGE_VAL like gnu libc) */ + if (fabs(x) >= 1.) + y = HUGE_VAL; + else + y = (log((1.0 + x) / (1.0 - x)) / 2.0); #endif break; case 34: