|
|
1.1 ! root 1: /* ! 2: # MATH(3.icon) ! 3: # ! 4: # Miscellaneous math functions ! 5: # ! 6: # Ralph E. Griswold ! 7: # ! 8: # Last modified 8/19/84 ! 9: # ! 10: */ ! 11: ! 12: #include "../h/rt.h" ! 13: #include <errno.h> ! 14: ! 15: int errno; ! 16: /* ! 17: * exp(x), x in radians ! 18: */ ! 19: Xexp(nargs, arg1, arg0) ! 20: int nargs; ! 21: struct descrip arg1, arg0; ! 22: { ! 23: int t; ! 24: double y; ! 25: union numeric r; ! 26: double exp(); ! 27: ! 28: if ((t = cvreal(&arg1, &r)) == NULL) runerr(102, &arg1); ! 29: y = exp(r.real); ! 30: if (errno == ERANGE) runerr(252, NULL); ! 31: mkreal(y,&arg0); ! 32: } ! 33: Procblock(exp,1) ! 34: ! 35: /* ! 36: * log(x), x in radians ! 37: */ ! 38: Xlog(nargs, arg1, arg0) ! 39: int nargs; ! 40: struct descrip arg1, arg0; ! 41: { ! 42: int t; ! 43: double y; ! 44: union numeric r; ! 45: double log(); ! 46: ! 47: if ((t = cvreal(&arg1, &r)) == NULL) runerr(102, &arg1); ! 48: y = log(r.real); ! 49: if (errno == EDOM) runerr(251, NULL); ! 50: mkreal(y,&arg0); ! 51: } ! 52: Procblock(log,1) ! 53: ! 54: /* ! 55: * log10(x), x in radians ! 56: */ ! 57: Xlog10(nargs, arg1, arg0) ! 58: int nargs; ! 59: struct descrip arg1, arg0; ! 60: { ! 61: int t; ! 62: double y; ! 63: union numeric r; ! 64: double log10(); ! 65: ! 66: if ((t = cvreal(&arg1, &r)) == NULL) runerr(102, &arg1); ! 67: y = log10(r.real); ! 68: if (errno == EDOM) runerr(251, NULL); ! 69: mkreal(y,&arg0); ! 70: } ! 71: Procblock(log10,1) ! 72: ! 73: /* ! 74: * sqrt(x), x in radians ! 75: */ ! 76: Xsqrt(nargs, arg1, arg0) ! 77: int nargs; ! 78: struct descrip arg1, arg0; ! 79: { ! 80: int t; ! 81: double y; ! 82: union numeric r; ! 83: double sqrt(); ! 84: ! 85: if ((t = cvreal(&arg1, &r)) == NULL) runerr(102, &arg1); ! 86: y = sqrt(r.real); ! 87: if (errno == EDOM) runerr(251, NULL); ! 88: mkreal(y,&arg0); ! 89: } ! 90: Procblock(sqrt,1)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.