|
|
1.1 ! root 1: #include <math.h> ! 2: #include <errno.h> ! 3: extern int errno; ! 4: double errcheck(); ! 5: ! 6: double Log(x) ! 7: double x; ! 8: { ! 9: return errcheck(log(x), "log"); ! 10: } ! 11: double Log10(x) ! 12: double x; ! 13: { ! 14: return errcheck(log10(x), "log10"); ! 15: } ! 16: ! 17: double Sqrt(x) ! 18: double x; ! 19: { ! 20: return errcheck(sqrt(x), "sqrt"); ! 21: } ! 22: ! 23: double Gamma(x) ! 24: double x; ! 25: { ! 26: double y; ! 27: extern int signgam; ! 28: y=errcheck(gamma(x), "gamma"); ! 29: if(y>88.0) ! 30: execerror("gamma result out of range", (char *)0); ! 31: return signgam*exp(y); ! 32: } ! 33: ! 34: double Exp(x) ! 35: double x; ! 36: { ! 37: return errcheck(exp(x), "exp"); ! 38: } ! 39: ! 40: double Asin(x) ! 41: double x; ! 42: { ! 43: return errcheck(asin(x), "asin"); ! 44: } ! 45: ! 46: double Acos(x) ! 47: double x; ! 48: { ! 49: return errcheck(acos(x), "acos"); ! 50: } ! 51: ! 52: double Sinh(x) ! 53: double x; ! 54: { ! 55: return errcheck(sinh(x), "sinh"); ! 56: } ! 57: ! 58: double Cosh(x) ! 59: double x; ! 60: { ! 61: return errcheck(cosh(x), "cosh"); ! 62: } ! 63: ! 64: double Pow(x, y) ! 65: double x, y; ! 66: { ! 67: return errcheck(pow(x,y), "exponentiation"); ! 68: } ! 69: ! 70: double integer(x) ! 71: double x; ! 72: { ! 73: return (double)(long)x; ! 74: } ! 75: ! 76: double errcheck(d, s) /* check result of library call */ ! 77: double d; ! 78: char *s; ! 79: { ! 80: if (errno == EDOM) { ! 81: errno = 0; ! 82: execerror(s, "argument out of domain"); ! 83: } else if (errno == ERANGE) { ! 84: errno = 0; ! 85: execerror(s, "result out of range"); ! 86: } ! 87: return d; ! 88: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.