--- ray/src/common/calexpr.c 2005/05/17 17:51:51 2.30 +++ ray/src/common/calexpr.c 2008/05/01 16:42:05 2.32 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: calexpr.c,v 2.30 2005/05/17 17:51:51 greg Exp $"; +static const char RCSid[] = "$Id: calexpr.c,v 2.32 2008/05/01 16:42:05 greg Exp $"; #endif /* * Compute data values using expression parser @@ -145,7 +145,7 @@ epcmp( /* compare two expressions for equivalence */ case ':': return(epcmp(ep1->v.kid->sibling, ep2->v.kid->sibling)); - case TICK: + case CLKT: case SYM: /* should never get this one */ return(0); @@ -185,7 +185,7 @@ epfree( /* free a parse tree */ case NUM: case CHAN: case ARG: - case TICK: + case CLKT: break; default: @@ -294,9 +294,12 @@ epow( lasterrno = errno; errno = 0; d = pow(evalue(ep1), evalue(ep1->sibling)); -#ifdef IEEE - if (!finite(d)) - errno = EDOM; +#ifdef isnan + if (errno == 0) + if (isnan(d)) + errno = EDOM; + else if (isinf(d)) + errno = ERANGE; #endif if (errno == EDOM || errno == ERANGE) { wputs("Illegal power\n");