py/modmath: Check for zero division in log with 2 args.
This commit is contained in:
parent
9ed5e80eea
commit
6b8b56f859
|
@ -168,6 +168,8 @@ STATIC mp_obj_t mp_math_log(size_t n_args, const mp_obj_t *args) {
|
||||||
mp_float_t base = mp_obj_get_float(args[1]);
|
mp_float_t base = mp_obj_get_float(args[1]);
|
||||||
if (base <= (mp_float_t)0.0) {
|
if (base <= (mp_float_t)0.0) {
|
||||||
math_error();
|
math_error();
|
||||||
|
} else if (base == (mp_float_t)1.0) {
|
||||||
|
mp_raise_msg(&mp_type_ZeroDivisionError, "division by zero");
|
||||||
}
|
}
|
||||||
return mp_obj_new_float(l / MICROPY_FLOAT_C_FUN(log)(base));
|
return mp_obj_new_float(l / MICROPY_FLOAT_C_FUN(log)(base));
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,7 @@ binary_functions = [('copysign', copysign, [(23., 42.), (-23., 42.), (23., -42.)
|
||||||
('atan2', atan2, ((1., 0.), (0., 1.), (2., 0.5), (-3., 5.), (-3., -4.),)),
|
('atan2', atan2, ((1., 0.), (0., 1.), (2., 0.5), (-3., 5.), (-3., -4.),)),
|
||||||
('fmod', fmod, ((1., 1.), (0., 1.), (2., 0.5), (-3., 5.), (-3., -4.),)),
|
('fmod', fmod, ((1., 1.), (0., 1.), (2., 0.5), (-3., 5.), (-3., -4.),)),
|
||||||
('ldexp', ldexp, ((1., 0), (0., 1), (2., 2), (3., -2), (-3., -4),)),
|
('ldexp', ldexp, ((1., 0), (0., 1), (2., 2), (3., -2), (-3., -4),)),
|
||||||
('log', log, ((2., 2.), (3., 2.), (4., 5.), (0., 1.), (1., 0.), (-1., 1.), (1., -1.))),
|
('log', log, ((2., 2.), (3., 2.), (4., 5.), (0., 1.), (1., 0.), (-1., 1.), (1., -1.), (2., 1.))),
|
||||||
]
|
]
|
||||||
|
|
||||||
for function_name, function, test_vals in binary_functions:
|
for function_name, function, test_vals in binary_functions:
|
||||||
|
@ -59,5 +59,5 @@ for function_name, function, test_vals in binary_functions:
|
||||||
for value1, value2 in test_vals:
|
for value1, value2 in test_vals:
|
||||||
try:
|
try:
|
||||||
print("{:.5g}".format(function(value1, value2)))
|
print("{:.5g}".format(function(value1, value2)))
|
||||||
except ValueError as e:
|
except (ValueError, ZeroDivisionError) as e:
|
||||||
print(str(e))
|
print(type(e))
|
||||||
|
|
Loading…
Reference in New Issue