Blob


1 #include <u.h>
2 #include <libc.h>
4 #include "hoc.h"
6 double errcheck(double, char*);
8 double
9 Log(double x)
10 {
11 return errcheck(log(x), "log");
12 }
13 double
14 Log10(double x)
15 {
16 return errcheck(log10(x), "log10");
17 }
19 double
20 Sqrt(double x)
21 {
22 return errcheck(sqrt(x), "sqrt");
23 }
25 double
26 Exp(double x)
27 {
28 return errcheck(exp(x), "exp");
29 }
31 double
32 Asin(double x)
33 {
34 return errcheck(asin(x), "asin");
35 }
37 double
38 Acos(double x)
39 {
40 return errcheck(acos(x), "acos");
41 }
43 double
44 Sinh(double x)
45 {
46 return errcheck(sinh(x), "sinh");
47 }
48 double
49 Cosh(double x)
50 {
51 return errcheck(cosh(x), "cosh");
52 }
53 double
54 Pow(double x, double y)
55 {
56 return errcheck(pow(x,y), "exponentiation");
57 }
59 double
60 integer(double x)
61 {
62 if(x<-2147483648.0 || x>2147483647.0)
63 execerror("argument out of domain", 0);
64 return (double)(long)x;
65 }
67 double
68 errcheck(double d, char* s) /* check result of library call */
69 {
70 if(isNaN(d))
71 execerror(s, "argument out of domain");
72 if(isInf(d, 0))
73 execerror(s, "result out of range");
74 return d;
75 }