--- ray/src/common/calfunc.c 1991/05/24 13:30:00 1.6 +++ ray/src/common/calfunc.c 1991/11/12 16:55:16 2.1 @@ -200,7 +200,7 @@ argument(n) /* return nth argument for active functi register int n; { register ACTIVATION *actp = curact; - EPNODE *ep; + register EPNODE *ep; double aval; if (actp == NULL || --n < 0) { @@ -382,12 +382,20 @@ register VARDEF *vp; errno = 0; d = (*vp->lib->f)(vp->lib->fname); #ifdef IEEE - if (!finite(d)) - errno = EDOM; + if (errno == 0) + if (isnan(d)) + errno = EDOM; + else if (isinf(d)) + errno = ERANGE; #endif if (errno) { wputs(fname); - wputs(": bad call\n"); + if (errno == EDOM) + wputs(": domain error\n"); + else if (errno == ERANGE) + wputs(": range error\n"); + else + wputs(": error in call\n"); return(0.0); } errno = lasterrno;