diff --git a/SLS_C/src/builtin.c b/SLS_C/src/builtin.c index 19e7160..630bba6 100644 --- a/SLS_C/src/builtin.c +++ b/SLS_C/src/builtin.c @@ -1003,11 +1003,13 @@ Boolean builtin_abs(InterpreterState *interpreter_state) { Boolean builtin_acos(InterpreterState *interpreter_state) { NUMERIC_TYPE; + if (af < -1 || af > 1) return FALSE; FLOAT_FUNCTION(acos); } Boolean builtin_asin(InterpreterState *interpreter_state) { NUMERIC_TYPE; + if (af < -1 || af > 1) return FALSE; FLOAT_FUNCTION(asin); } @@ -1105,11 +1107,13 @@ Boolean builtin_lambda(InterpreterState *interpreter_state) { Boolean builtin_ln(InterpreterState *interpreter_state) { NUMERIC_TYPE; + if (af <= 0) return FALSE; FLOAT_FUNCTION(log); } Boolean builtin_log(InterpreterState *interpreter_state) { NUMERIC_TYPE; + if (af <= 0) return FALSE; FLOAT_FUNCTION(log10); } @@ -1190,6 +1194,7 @@ Boolean builtin_sin(InterpreterState *interpreter_state) { Boolean builtin_sqrt(InterpreterState *interpreter_state) { NUMERIC_TYPE; + if (af < 0) return FALSE; FLOAT_FUNCTION(sqrt); }