Implemented acos, asin, atan, cos, ln, log, sin, sqrt, and tan

This commit is contained in:
Kyler Olsen 2025-11-29 13:54:39 -07:00
parent f4a7627d7e
commit b2e2b91f2c
1 changed files with 32 additions and 18 deletions

View File

@ -656,6 +656,20 @@ Boolean load_builtins(InterpreterState *interpreter_state) {
return FALSE; \
} \
#define FLOAT_FUNCTION(func) \
(void)ai; \
(void)type; \
\
StackItem *node = interpreter_state->stack; \
interpreter_state->stack = interpreter_state->stack->next; \
node->next = NULL; \
clean_stack(node); \
\
return push_token(interpreter_state, (Token){ \
.type = TOKEN_DOUBLE, \
.double_literal = func(af), \
}); \
#define ARITHMETIC(op) \
StackItem *node = interpreter_state->stack; \
interpreter_state->stack = interpreter_state->stack->next->next; \
@ -988,18 +1002,18 @@ Boolean builtin_abs(InterpreterState *interpreter_state) {
}
Boolean builtin_acos(InterpreterState *interpreter_state) {
(void)interpreter_state;
return FALSE;
NUMERIC_TYPE;
FLOAT_FUNCTION(acos);
}
Boolean builtin_asin(InterpreterState *interpreter_state) {
(void)interpreter_state;
return FALSE;
NUMERIC_TYPE;
FLOAT_FUNCTION(asin);
}
Boolean builtin_atan(InterpreterState *interpreter_state) {
(void)interpreter_state;
return FALSE;
NUMERIC_TYPE;
FLOAT_FUNCTION(atan);
}
Boolean builtin_atan2(InterpreterState *interpreter_state) {
@ -1033,8 +1047,8 @@ Boolean builtin_ceil(InterpreterState *interpreter_state) {
}
Boolean builtin_cos(InterpreterState *interpreter_state) {
(void)interpreter_state;
return FALSE;
NUMERIC_TYPE;
FLOAT_FUNCTION(cos);
}
Boolean builtin_depth(InterpreterState *interpreter_state) {
@ -1090,13 +1104,13 @@ Boolean builtin_lambda(InterpreterState *interpreter_state) {
}
Boolean builtin_ln(InterpreterState *interpreter_state) {
(void)interpreter_state;
return FALSE;
NUMERIC_TYPE;
FLOAT_FUNCTION(log);
}
Boolean builtin_log(InterpreterState *interpreter_state) {
(void)interpreter_state;
return FALSE;
NUMERIC_TYPE;
FLOAT_FUNCTION(log10);
}
Boolean builtin_logb(InterpreterState *interpreter_state) {
@ -1170,13 +1184,13 @@ Boolean builtin_shr(InterpreterState *interpreter_state) {
}
Boolean builtin_sin(InterpreterState *interpreter_state) {
(void)interpreter_state;
return FALSE;
NUMERIC_TYPE;
FLOAT_FUNCTION(sin);
}
Boolean builtin_sqrt(InterpreterState *interpreter_state) {
(void)interpreter_state;
return FALSE;
NUMERIC_TYPE;
FLOAT_FUNCTION(sqrt);
}
Boolean builtin_swap(InterpreterState *interpreter_state) {
@ -1185,8 +1199,8 @@ Boolean builtin_swap(InterpreterState *interpreter_state) {
}
Boolean builtin_tan(InterpreterState *interpreter_state) {
(void)interpreter_state;
return FALSE;
NUMERIC_TYPE;
FLOAT_FUNCTION(tan);
}
Boolean builtin_type_of(InterpreterState *interpreter_state) {