6 static struct { /* Keywords */
22 static struct { /* Constants */
26 "PI", 3.14159265358979323846,
27 "E", 2.71828182845904523536,
28 "GAMMA", 0.57721566490153286060, /* Euler */
29 "DEG", 57.29577951308232087680, /* deg/radian */
30 "PHI", 1.61803398874989484820, /* golden ratio */
34 static struct { /* Built-ins */
36 double (*func)(double);
42 "asin", Asin, /* checks range */
43 "acos", Acos, /* checks range */
44 "sinh", Sinh, /* checks range */
45 "cosh", Cosh, /* checks range */
47 "log", Log, /* checks range */
48 "log10", Log10, /* checks range */
49 "exp", Exp, /* checks range */
50 "sqrt", Sqrt, /* checks range */
57 init(void) /* install constants and built-ins in table */
61 for (i = 0; keywords[i].name; i++)
62 install(keywords[i].name, keywords[i].kval, 0.0);
63 for (i = 0; consts[i].name; i++)
64 install(consts[i].name, VAR, consts[i].cval);
65 for (i = 0; builtins[i].name; i++) {
66 s = install(builtins[i].name, BLTIN, 0.0);
67 s->u.ptr = builtins[i].func;