/* * standard (real) math routines with domain/range checking, for * complex-number expression parser. * MWS, March 17, 1991. */ #include #include #include "complex.h" extern int errno; double Sqrt(x) double x; { return errcheck(sqrt(x), "sqrt"); } double Log(x) double x; { return errcheck(log(x), "log"); } double Asin(x) double x; { return errcheck(asin(x), "asin"); } double Acos(x) double x; { return errcheck(acos(x), "acos"); } double errcheck(d, s) /* check result of library call */ double d; /* doesn't seem to work under Lattice... */ char *s; { if (errno == EDOM) { errno = 0; execerror(s, "argument out of domain"); } else if (errno == ERANGE) { errno = 0; execerror(s, "result out of range"); } return d; }