add float division by zero

This commit is contained in:
blueloveTH 2025-05-29 17:17:22 +08:00
parent 2d682b24d8
commit a402406982
2 changed files with 15 additions and 2 deletions

View File

@ -70,6 +70,7 @@ static bool int__truediv__(int argc, py_Ref argv) {
py_i64 lhs = py_toint(&argv[0]);
py_f64 rhs;
if(try_castfloat(&argv[1], &rhs)) {
if(rhs == 0.0) return ZeroDivisionError("float division by zero");
py_newfloat(py_retval(), lhs / rhs);
} else {
py_newnotimplemented(py_retval());
@ -82,6 +83,7 @@ static bool float__truediv__(int argc, py_Ref argv) {
py_f64 lhs = py_tofloat(&argv[0]);
py_f64 rhs;
if(try_castfloat(&argv[1], &rhs)) {
if(rhs == 0.0) return ZeroDivisionError("float division by zero");
py_newfloat(py_retval(), lhs / rhs);
} else {
py_newnotimplemented(py_retval());

View File

@ -54,8 +54,19 @@ assert eq(float("123.456"), 123.456)
inf = float("inf")
assert 1/0 == inf
assert -1/0 == -inf
try:
assert 1/0 == inf
exit(1)
except ZeroDivisionError:
pass
try:
assert -1/0 == -inf
exit(1)
except ZeroDivisionError:
pass
assert 1/inf == 0
assert -1/inf == 0