7 static naRef f_sin(naContext c, naRef me, int argc, naRef* args)
9 naRef a = naNumValue(argc > 0 ? args[0] : naNil());
11 naRuntimeError(c, "non numeric argument to sin()");
16 static naRef f_cos(naContext c, naRef me, int argc, naRef* args)
18 naRef a = naNumValue(argc > 0 ? args[0] : naNil());
20 naRuntimeError(c, "non numeric argument to cos()");
25 static naRef f_exp(naContext c, naRef me, int argc, naRef* args)
27 naRef a = naNumValue(argc > 0 ? args[0] : naNil());
29 naRuntimeError(c, "non numeric argument to exp()");
34 static naRef f_ln(naContext c, naRef me, int argc, naRef* args)
36 naRef a = naNumValue(argc > 0 ? args[0] : naNil());
38 naRuntimeError(c, "non numeric argument to ln()");
43 static naRef f_sqrt(naContext c, naRef me, int argc, naRef* args)
45 naRef a = naNumValue(argc > 0 ? args[0] : naNil());
47 naRuntimeError(c, "non numeric argument to sqrt()");
52 static naRef f_atan2(naContext c, naRef me, int argc, naRef* args)
54 naRef a = naNumValue(argc > 0 ? args[0] : naNil());
55 naRef b = naNumValue(argc > 1 ? args[1] : naNil());
56 if(naIsNil(a) || naIsNil(b))
57 naRuntimeError(c, "non numeric argument to atan2()");
58 a.num = atan2(a.num, b.num);
62 static naCFuncItem funcs[] = {
72 naRef naInit_math(naContext c)
74 naRef ns = naGenLib(c, funcs);
75 naAddSym(c, ns, "pi", naNum(3.14159265358979323846));
76 naAddSym(c, ns, "e", naNum(2.7182818284590452354));