2014-03-20 17:26:51 -04:00
|
|
|
# Tests the functions imported from math
|
|
|
|
|
2014-06-19 18:50:49 -04:00
|
|
|
try:
|
|
|
|
from math import *
|
|
|
|
except ImportError:
|
|
|
|
print("SKIP")
|
2017-06-08 00:00:57 -04:00
|
|
|
raise SystemExit
|
2014-03-20 17:26:51 -04:00
|
|
|
|
2020-03-22 22:26:08 -04:00
|
|
|
test_values = [-100.0, -1.23456, -1, -0.5, 0.0, 0.5, 1.23456, 100.0]
|
|
|
|
test_values_small = [
|
|
|
|
-10.0,
|
|
|
|
-1.23456,
|
|
|
|
-1,
|
|
|
|
-0.5,
|
|
|
|
0.0,
|
|
|
|
0.5,
|
|
|
|
1.23456,
|
|
|
|
10.0,
|
|
|
|
] # so we don't overflow 32-bit precision
|
|
|
|
unit_range_test_values = [-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0]
|
|
|
|
|
|
|
|
functions = [
|
|
|
|
("sqrt", sqrt, test_values),
|
|
|
|
("exp", exp, test_values_small),
|
|
|
|
("log", log, test_values),
|
|
|
|
("cos", cos, test_values),
|
|
|
|
("sin", sin, test_values),
|
|
|
|
("tan", tan, test_values),
|
|
|
|
("acos", acos, unit_range_test_values),
|
|
|
|
("asin", asin, unit_range_test_values),
|
|
|
|
("atan", atan, test_values),
|
|
|
|
("ceil", ceil, test_values),
|
|
|
|
("fabs", fabs, test_values),
|
|
|
|
("floor", floor, test_values),
|
|
|
|
("trunc", trunc, test_values),
|
|
|
|
("radians", radians, test_values),
|
|
|
|
("degrees", degrees, test_values),
|
|
|
|
]
|
2014-03-20 17:26:51 -04:00
|
|
|
|
2014-04-01 16:21:50 -04:00
|
|
|
for function_name, function, test_vals in functions:
|
|
|
|
print(function_name)
|
2014-03-20 17:26:51 -04:00
|
|
|
for value in test_vals:
|
2015-12-10 07:28:37 -05:00
|
|
|
try:
|
|
|
|
print("{:.5g}".format(function(value)))
|
|
|
|
except ValueError as e:
|
|
|
|
print(str(e))
|
2014-03-20 17:26:51 -04:00
|
|
|
|
2020-03-22 22:26:08 -04:00
|
|
|
tuple_functions = [
|
|
|
|
("frexp", frexp, test_values),
|
|
|
|
("modf", modf, test_values),
|
|
|
|
]
|
2015-01-22 08:48:29 -05:00
|
|
|
|
|
|
|
for function_name, function, test_vals in tuple_functions:
|
|
|
|
print(function_name)
|
|
|
|
for value in test_vals:
|
|
|
|
x, y = function(value)
|
|
|
|
print("{:.5g} {:.5g}".format(x, y))
|
|
|
|
|
2020-03-22 22:26:08 -04:00
|
|
|
binary_functions = [
|
|
|
|
(
|
|
|
|
"copysign",
|
|
|
|
copysign,
|
|
|
|
[(23.0, 42.0), (-23.0, 42.0), (23.0, -42.0), (-23.0, -42.0), (1.0, 0.0), (1.0, -0.0)],
|
|
|
|
),
|
2020-08-29 01:14:29 -04:00
|
|
|
("pow", pow, ((1.0, 0.0), (0.0, 1.0), (2.0, 0.5), (-3.0, 5.0), (-3.0, -4.0))),
|
|
|
|
("atan2", atan2, ((1.0, 0.0), (0.0, 1.0), (2.0, 0.5), (-3.0, 5.0), (-3.0, -4.0))),
|
|
|
|
("fmod", fmod, ((1.0, 1.0), (0.0, 1.0), (2.0, 0.5), (-3.0, 5.0), (-3.0, -4.0))),
|
|
|
|
("ldexp", ldexp, ((1.0, 0), (0.0, 1), (2.0, 2), (3.0, -2), (-3.0, -4))),
|
2020-03-22 22:26:08 -04:00
|
|
|
(
|
|
|
|
"log",
|
|
|
|
log,
|
|
|
|
(
|
|
|
|
(2.0, 2.0),
|
|
|
|
(3.0, 2.0),
|
|
|
|
(4.0, 5.0),
|
|
|
|
(0.0, 1.0),
|
|
|
|
(1.0, 0.0),
|
|
|
|
(-1.0, 1.0),
|
|
|
|
(1.0, -1.0),
|
|
|
|
(2.0, 1.0),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
]
|
2014-03-20 17:26:51 -04:00
|
|
|
|
2014-04-01 16:21:50 -04:00
|
|
|
for function_name, function, test_vals in binary_functions:
|
|
|
|
print(function_name)
|
2014-03-22 10:39:33 -04:00
|
|
|
for value1, value2 in test_vals:
|
2015-12-10 07:28:37 -05:00
|
|
|
try:
|
|
|
|
print("{:.5g}".format(function(value1, value2)))
|
2017-07-03 12:15:11 -04:00
|
|
|
except (ValueError, ZeroDivisionError) as e:
|
|
|
|
print(type(e))
|