Add fabs, floor and ceil to math module

This commit is contained in:
Thiago Jobson 2023-02-10 16:52:58 +01:00
parent cb93e0ec25
commit 1c4d9da00b
2 changed files with 12 additions and 2 deletions

View File

@ -577,6 +577,9 @@ void add_module_math(VM* vm){
vm->bind_func<1>(mod, "tan", CPP_LAMBDA(vm->PyFloat(tan(vm->num_to_float(args[0]))))); vm->bind_func<1>(mod, "tan", CPP_LAMBDA(vm->PyFloat(tan(vm->num_to_float(args[0])))));
vm->bind_func<1>(mod, "isnan", CPP_LAMBDA(vm->PyBool(std::isnan(vm->num_to_float(args[0]))))); vm->bind_func<1>(mod, "isnan", CPP_LAMBDA(vm->PyBool(std::isnan(vm->num_to_float(args[0])))));
vm->bind_func<1>(mod, "isinf", CPP_LAMBDA(vm->PyBool(std::isinf(vm->num_to_float(args[0]))))); vm->bind_func<1>(mod, "isinf", CPP_LAMBDA(vm->PyBool(std::isinf(vm->num_to_float(args[0])))));
vm->bind_func<1>(mod, "fabs", CPP_LAMBDA(vm->PyFloat(std::fabs(vm->num_to_float(args[0])))));
vm->bind_func<1>(mod, "floor", CPP_LAMBDA(vm->PyInt(std::floor(vm->num_to_float(args[0])))));
vm->bind_func<1>(mod, "ceil", CPP_LAMBDA(vm->PyInt(std::ceil(vm->num_to_float(args[0])))));
} }
void add_module_dis(VM* vm){ void add_module_dis(VM* vm){

View File

@ -1,4 +1,4 @@
from math import log, log10, log2, sin, cos, tan, e, pi, isnan, isinf from math import log, log10, log2, sin, cos, tan, e, pi, isnan, isinf, fabs, floor, ceil
def isclose(a, b): def isclose(a, b):
return abs(a-b) < 0.000001 return abs(a-b) < 0.000001
@ -16,4 +16,11 @@ a = -0.1
a = a**a a = a**a
assert isnan(a) assert isnan(a)
assert not isinf(a) assert not isinf(a)
assert isinf(float("inf")) assert isinf(float("inf"))
assert isclose(fabs(-1.2), 1.2)
assert floor(1.2) == 1
assert floor(-1.2) == -2
assert ceil(1.2) == 2
assert ceil(-1.2) == -1