feat: add ceil, cos, sin, sqrt, isNan native methods and division-by-zero tests
Implement five new Num methods (ceil, cos, sin, sqrt, isNan) in wren_core.c and register them on the Num class. Add corresponding test files for ceil, floor, is_nan, and sqrt. Extend divide.wren with division-by-zero edge cases (inf, -inf, nan). Remove stale TODO comments from minus, multiply, and plus tests.
This commit is contained in:
@@ -277,11 +277,36 @@ DEF_NATIVE(num_abs)
|
||||
RETURN_NUM(fabs(AS_NUM(args[0])));
|
||||
}
|
||||
|
||||
DEF_NATIVE(num_ceil)
|
||||
{
|
||||
RETURN_NUM(ceil(AS_NUM(args[0])));
|
||||
}
|
||||
|
||||
DEF_NATIVE(num_cos)
|
||||
{
|
||||
RETURN_NUM(cos(AS_NUM(args[0])));
|
||||
}
|
||||
|
||||
DEF_NATIVE(num_floor)
|
||||
{
|
||||
RETURN_NUM(floor(AS_NUM(args[0])));
|
||||
}
|
||||
|
||||
DEF_NATIVE(num_isNan)
|
||||
{
|
||||
RETURN_BOOL(isnan(AS_NUM(args[0])));
|
||||
}
|
||||
|
||||
DEF_NATIVE(num_sin)
|
||||
{
|
||||
RETURN_NUM(sin(AS_NUM(args[0])));
|
||||
}
|
||||
|
||||
DEF_NATIVE(num_sqrt)
|
||||
{
|
||||
RETURN_NUM(sqrt(AS_NUM(args[0])));
|
||||
}
|
||||
|
||||
DEF_NATIVE(num_toString)
|
||||
{
|
||||
// I think this should be large enough to hold any double converted to a
|
||||
@@ -628,7 +653,12 @@ void wrenInitializeCore(WrenVM* vm)
|
||||
|
||||
vm->numClass = AS_CLASS(findGlobal(vm, "Num"));
|
||||
NATIVE(vm->numClass, "abs", num_abs);
|
||||
NATIVE(vm->numClass, "ceil", num_ceil);
|
||||
NATIVE(vm->numClass, "cos", num_cos);
|
||||
NATIVE(vm->numClass, "floor", num_floor);
|
||||
NATIVE(vm->numClass, "isNan", num_isNan);
|
||||
NATIVE(vm->numClass, "sin", num_sin);
|
||||
NATIVE(vm->numClass, "sqrt", num_sqrt);
|
||||
NATIVE(vm->numClass, "toString", num_toString)
|
||||
NATIVE(vm->numClass, "-", num_negate);
|
||||
NATIVE(vm->numClass, "- ", num_minus);
|
||||
|
||||
Reference in New Issue
Block a user