xref: /plan9/sys/src/cmd/hoc/math.c (revision 8ccd4a6360d974db7bd7bbd4f37e7018419ea908)
1 #include <u.h>
2 #include <libc.h>
3 
4 #include "hoc.h"
5 
6 double	errcheck(double, char*);
7 
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 }
18 
19 double
20 Sqrt(double x)
21 {
22 	return errcheck(sqrt(x), "sqrt");
23 }
24 
25 double
26 Exp(double x)
27 {
28 	return errcheck(exp(x), "exp");
29 }
30 
31 double
32 Asin(double x)
33 {
34 	return errcheck(asin(x), "asin");
35 }
36 
37 double
38 Acos(double x)
39 {
40 	return errcheck(acos(x), "acos");
41 }
42 
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 }
58 
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 }
66 
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 }
76