diff options
author | rodri <rgl@antares-labs.eu> | 2024-08-31 16:07:15 +0000 |
---|---|---|
committer | rodri <rgl@antares-labs.eu> | 2024-08-31 16:07:15 +0000 |
commit | 8cca4d1fe83f792d0f3c5dd897611ea2ff441de0 (patch) | |
tree | 45eb5ba6c3d750819a7b2c13ec35a75c23015631 /s3/builtin.c | |
parent | 53d3939960fe177c1958bce8e93c435cba7cf5e3 (diff) | |
download | rhoc-8cca4d1fe83f792d0f3c5dd897611ea2ff441de0.tar.gz rhoc-8cca4d1fe83f792d0f3c5dd897611ea2ff441de0.tar.bz2 rhoc-8cca4d1fe83f792d0f3c5dd897611ea2ff441de0.zip |
stage 3.
Diffstat (limited to 's3/builtin.c')
-rw-r--r-- | s3/builtin.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/s3/builtin.c b/s3/builtin.c new file mode 100644 index 0000000..e9208cf --- /dev/null +++ b/s3/builtin.c @@ -0,0 +1,46 @@ +#include <u.h> +#include <libc.h> +#include "dat.h" +#include "fns.h" +#include "y.tab.h" + +static Const consts[] = { + "π", 3.14159265358979323846, + "e", 2.71828182845904523536, + "γ", 0.57721566490153286060, + "DEG", 57.29577951308232087680, + "Φ", 1.61803398874989484820, +}; + +static Builtin builtins[] = { + "sin", sin, + "cos", cos, + "atan", atan, + "atan2", atan2, + "log", log, + "log10", log10, + "exp", exp, + "sqrt", sqrt, + "int", round, + "abs", fabs, +}; + +double +round(double n) +{ + return floor(n + 0.5); +} + +void +init(void) +{ + Symbol *s; + int i; + + for(i = 0; i < nelem(consts); i++) + install(consts[i].name, CONST, consts[i].val); + for(i = 0; i < nelem(builtins); i++){ + s = install(builtins[i].name, BLTIN, 0); + s->u.fn = builtins[i].fn; + } +} |