Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
7caa7e05
Commit
7caa7e05
authored
Mar 20, 2014
by
Damien George
Browse files
Merge pull request #353 from rjdowdall/master
Some math functions
parents
d02f6eaa
a2f2f734
Changes
3
Hide whitespace changes
Inline
Side-by-side
py/builtinmath.c
View file @
7caa7e05
...
...
@@ -40,6 +40,18 @@ MATH_FUN_1(acos, acos)
MATH_FUN_1
(
asin
,
asin
)
MATH_FUN_1
(
atan
,
atan
)
MATH_FUN_2
(
atan2
,
atan2
)
MATH_FUN_1
(
ceil
,
ceil
)
MATH_FUN_2
(
copysign
,
copysign
)
MATH_FUN_1
(
fabs
,
fabs
)
MATH_FUN_1
(
floor
,
floor
)
//TODO: delegate to x.__floor__() if x is not a float
MATH_FUN_2
(
fmod
,
fmod
)
//MATH_FUN_1(frexp, frexp)
MATH_FUN_1
(
isfinite
,
isfinite
)
MATH_FUN_1
(
isinf
,
isinf
)
MATH_FUN_1
(
isnan
,
isnan
)
MATH_FUN_1
(
trunc
,
trunc
)
//TODO: factorial, fsum, frexp, ldexp, modf
STATIC
const
mp_map_elem_t
mp_module_math_globals_table
[]
=
{
{
MP_OBJ_NEW_QSTR
(
MP_QSTR___name__
),
MP_OBJ_NEW_QSTR
(
MP_QSTR_math
)
},
...
...
@@ -65,6 +77,16 @@ STATIC const mp_map_elem_t mp_module_math_globals_table[] = {
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_asin
),
(
mp_obj_t
)
&
mp_math_asin_obj
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_atan
),
(
mp_obj_t
)
&
mp_math_atan_obj
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_atan2
),
(
mp_obj_t
)
&
mp_math_atan2_obj
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_ceil
),
(
mp_obj_t
)
&
mp_math_ceil_obj
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_copysign
),
(
mp_obj_t
)
&
mp_math_copysign_obj
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_fabs
),
(
mp_obj_t
)
&
mp_math_fabs_obj
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_floor
),
(
mp_obj_t
)
&
mp_math_floor_obj
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_fmod
),
(
mp_obj_t
)
&
mp_math_fmod_obj
},
//{ MP_OBJ_NEW_QSTR(MP_QSTR_frexp), (mp_obj_t)&mp_math_frexp_obj },
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_isfinite
),
(
mp_obj_t
)
&
mp_math_isfinite_obj
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_isinf
),
(
mp_obj_t
)
&
mp_math_isinf_obj
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_isnan
),
(
mp_obj_t
)
&
mp_math_isnan_obj
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_trunc
),
(
mp_obj_t
)
&
mp_math_trunc_obj
},
};
STATIC
const
mp_map_t
mp_module_math_globals
=
{
...
...
py/qstrdefs.h
View file @
7caa7e05
...
...
@@ -141,6 +141,16 @@ Q(acos)
Q
(
asin
)
Q
(
atan
)
Q
(
atan2
)
Q
(
ceil
)
Q
(
copysign
)
Q
(
fabs
)
Q
(
floor
)
Q
(
fmod
)
Q
(
frexp
)
Q
(
isfinite
)
Q
(
isinf
)
Q
(
isnan
)
Q
(
trunc
)
Q
(
mem_total
)
Q
(
mem_current
)
...
...
tests/basics/math.py
0 → 100644
View file @
7caa7e05
# Tests the functions imported from math
from
math
import
*
test_values
=
[
-
100.
,
-
1.23456
,
-
1
,
-
0.5
,
0.0
,
0.5
,
1.23456
,
100.
]
p_test_values
=
[
0.1
,
0.5
,
1.23456
]
unit_range_test_values
=
[
-
1.
,
-
0.75
,
-
0.5
,
-
0.25
,
0.
,
0.25
,
0.5
,
0.75
,
1.
]
#IEEE_test_values = [1, 0, float('NaN'), float('Inf'), -float('NaN'), -float('Inf')]
#TODO: float('NaN')
functions
=
[(
sqrt
,
p_test_values
),
(
exp
,
test_values
),
(
expm1
,
test_values
),
(
log
,
p_test_values
),
(
log2
,
p_test_values
),
(
log10
,
p_test_values
),
(
cosh
,
test_values
),
(
sinh
,
test_values
),
(
tanh
,
test_values
),
(
acosh
,
[
1.0
,
5.0
,
1.0
]),
(
asinh
,
test_values
),
(
atanh
,
[
-
0.99
,
-
0.5
,
0.0
,
0.5
,
0.99
]),
(
cos
,
test_values
),
(
sin
,
test_values
),
(
tan
,
test_values
),
(
acos
,
unit_range_test_values
),
(
asin
,
unit_range_test_values
),
(
atan
,
test_values
),
(
ceil
,
test_values
),
(
fabs
,
test_values
),
(
floor
,
test_values
),
#(frexp, test_values),
#(isfinite, [1, 0, float('NaN'), float('Inf')])
(
trunc
,
test_values
)
]
for
function
,
test_vals
in
functions
:
for
value
in
test_vals
:
print
(
"{:8.7f}"
.
format
(
function
(
value
)))
binary_functions
=
[(
copysign
,
[(
23.
,
42.
),
(
-
23.
,
42.
),
(
23.
,
-
42.
),
(
-
23.
,
-
42.
),
(
1.
,
0.0
),
(
1.
,
-
0.0
)])
]
#for function, test_vals in binary_functions:
# for value1, value2 in test_vals:
# print("{:8.7f}".format(function(value1, value2)))
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment