diff --git a/py/modmath.c b/py/modmath.c index 38ed390ddf..46423d2b5c 100644 --- a/py/modmath.c +++ b/py/modmath.c @@ -120,6 +120,7 @@ MATH_FUN_1_TO_BOOL(isnan, isnan) MATH_FUN_1_TO_INT(trunc, trunc) /// \function ldexp(x, exp) MATH_FUN_2(ldexp, ldexp) +#if MICROPY_PY_MATH_SPECIAL_FUNCTIONS /// \function erf(x) /// Return the error function of `x`. MATH_FUN_1(erf, erf) @@ -132,6 +133,7 @@ MATH_FUN_1(gamma, tgamma) /// \function lgamma(x) /// return the natural logarithm of the gamma function of `x`. MATH_FUN_1(lgamma, lgamma) +#endif //TODO: factorial, fsum // Functions that return a tuple @@ -211,10 +213,12 @@ STATIC const mp_map_elem_t mp_module_math_globals_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR_trunc), (mp_obj_t)&mp_math_trunc_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_radians), (mp_obj_t)&mp_math_radians_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_degrees), (mp_obj_t)&mp_math_degrees_obj }, + #if MICROPY_PY_MATH_SPECIAL_FUNCTIONS { MP_OBJ_NEW_QSTR(MP_QSTR_erf), (mp_obj_t)&mp_math_erf_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_erfc), (mp_obj_t)&mp_math_erfc_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_gamma), (mp_obj_t)&mp_math_gamma_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_lgamma), (mp_obj_t)&mp_math_lgamma_obj }, + #endif }; STATIC MP_DEFINE_CONST_DICT(mp_module_math_globals, mp_module_math_globals_table); diff --git a/py/mpconfig.h b/py/mpconfig.h index b235d6fe66..bde8dfb9ef 100644 --- a/py/mpconfig.h +++ b/py/mpconfig.h @@ -419,6 +419,11 @@ typedef double mp_float_t; #define MICROPY_PY_MATH (1) #endif +// Whether to provide special math functions: math.{erf,erfc,gamma,lgamma} +#ifndef MICROPY_PY_MATH_SPECIAL_FUNCTIONS +#define MICROPY_PY_MATH_SPECIAL_FUNCTIONS (0) +#endif + // Whether to provide "cmath" module #ifndef MICROPY_PY_CMATH #define MICROPY_PY_CMATH (0) diff --git a/py/qstrdefs.h b/py/qstrdefs.h index f273367d54..77514f521b 100644 --- a/py/qstrdefs.h +++ b/py/qstrdefs.h @@ -363,11 +363,13 @@ Q(frexp) Q(ldexp) Q(degrees) Q(radians) +#if MICROPY_PY_MATH_SPECIAL_FUNCTIONS Q(erf) Q(erfc) Q(gamma) Q(lgamma) #endif +#endif #if MICROPY_PY_CMATH Q(cmath) diff --git a/stmhal/mpconfigport.h b/stmhal/mpconfigport.h index 0224d93f41..39256bebbd 100644 --- a/stmhal/mpconfigport.h +++ b/stmhal/mpconfigport.h @@ -61,6 +61,7 @@ #define MICROPY_PY_MICROPYTHON_MEM_INFO (1) #define MICROPY_PY_SYS_EXIT (1) #define MICROPY_PY_SYS_STDFILES (1) +#define MICROPY_PY_MATH_SPECIAL_FUNCTIONS (1) #define MICROPY_PY_CMATH (1) #define MICROPY_PY_IO (1) #define MICROPY_PY_IO_FILEIO (1) diff --git a/unix/mpconfigport.h b/unix/mpconfigport.h index a0366d9c6b..bbfae7b21b 100644 --- a/unix/mpconfigport.h +++ b/unix/mpconfigport.h @@ -64,6 +64,7 @@ #define MICROPY_PY_SYS_PLATFORM "linux" #define MICROPY_PY_SYS_MAXSIZE (1) #define MICROPY_PY_SYS_STDFILES (1) +#define MICROPY_PY_MATH_SPECIAL_FUNCTIONS (1) #define MICROPY_PY_CMATH (1) #define MICROPY_PY_IO_FILEIO (1) #define MICROPY_PY_GC_COLLECT_RETVAL (1)