Commit c322c5f0 authored by Damien George's avatar Damien George
Browse files

py: Fix regress for printing of floats and #if.

Also change formating modifier in test script (it still passes with
original format though).
parent a05f5dd9
...@@ -788,9 +788,9 @@ mp_obj_t str_format(uint n_args, const mp_obj_t *args) { ...@@ -788,9 +788,9 @@ mp_obj_t str_format(uint n_args, const mp_obj_t *args) {
nlr_jump(mp_obj_new_exception_msg_varg(&mp_type_ValueError, nlr_jump(mp_obj_new_exception_msg_varg(&mp_type_ValueError,
"Unknown format code '%c' for object of type '%s'", type, mp_obj_get_type_str(arg))); "Unknown format code '%c' for object of type '%s'", type, mp_obj_get_type_str(arg)));
} }
}
#if MICROPY_ENABLE_FLOAT if (arg_looks_numeric(arg)) {
} else if (arg_looks_numeric(arg)) {
if (!type) { if (!type) {
// Even though the docs say that an unspecified type is the same // Even though the docs say that an unspecified type is the same
...@@ -828,6 +828,7 @@ mp_obj_t str_format(uint n_args, const mp_obj_t *args) { ...@@ -828,6 +828,7 @@ mp_obj_t str_format(uint n_args, const mp_obj_t *args) {
flags |= PF_FLAG_PAD_NAN_INF; // '{:06e}'.format(float('-inf')) should give '-00inf' flags |= PF_FLAG_PAD_NAN_INF; // '{:06e}'.format(float('-inf')) should give '-00inf'
switch (type) { switch (type) {
#if MICROPY_ENABLE_FLOAT
case 'e': case 'e':
case 'E': case 'E':
case 'f': case 'f':
...@@ -841,14 +842,13 @@ mp_obj_t str_format(uint n_args, const mp_obj_t *args) { ...@@ -841,14 +842,13 @@ mp_obj_t str_format(uint n_args, const mp_obj_t *args) {
flags |= PF_FLAG_ADD_PERCENT; flags |= PF_FLAG_ADD_PERCENT;
pfenv_print_float(&pfenv_vstr, mp_obj_get_float(arg) * 100.0F, 'f', flags, fill, width, precision); pfenv_print_float(&pfenv_vstr, mp_obj_get_float(arg) * 100.0F, 'f', flags, fill, width, precision);
break; break;
#endif
default: default:
nlr_jump(mp_obj_new_exception_msg_varg(&mp_type_ValueError, nlr_jump(mp_obj_new_exception_msg_varg(&mp_type_ValueError,
"Unknown format code '%c' for object of type 'float'", "Unknown format code '%c' for object of type 'float'",
type, mp_obj_get_type_str(arg))); type, mp_obj_get_type_str(arg)));
} }
#endif
} else { } else {
// arg doesn't look like a number // arg doesn't look like a number
......
...@@ -34,7 +34,7 @@ functions = [('sqrt', sqrt, p_test_values), ...@@ -34,7 +34,7 @@ functions = [('sqrt', sqrt, p_test_values),
for function_name, function, test_vals in functions: for function_name, function, test_vals in functions:
print(function_name) print(function_name)
for value in test_vals: for value in test_vals:
print("{:8.7g}".format(function(value))) print("{:.7g}".format(function(value)))
binary_functions = [('copysign', copysign, [(23., 42.), (-23., 42.), (23., -42.), binary_functions = [('copysign', copysign, [(23., 42.), (-23., 42.), (23., -42.),
(-23., -42.), (1., 0.0), (1., -0.0)]) (-23., -42.), (1., 0.0), (1., -0.0)])
...@@ -43,4 +43,4 @@ binary_functions = [('copysign', copysign, [(23., 42.), (-23., 42.), (23., -42.) ...@@ -43,4 +43,4 @@ binary_functions = [('copysign', copysign, [(23., 42.), (-23., 42.), (23., -42.)
for function_name, function, test_vals in binary_functions: for function_name, function, test_vals in binary_functions:
print(function_name) print(function_name)
for value1, value2 in test_vals: for value1, value2 in test_vals:
print("{:8.7g}".format(function(value1, value2))) print("{:.7g}".format(function(value1, value2)))
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment