diff options
author | Damien George <damien.p.george@gmail.com> | 2015-06-13 21:56:23 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2015-06-13 22:35:25 +0100 |
commit | 6f4952004207a249a437dc822c5252422f63cc69 (patch) | |
tree | 7ed65eb4ca21cbcc9e18b1a071e662d2201e495a /py/modmath.c | |
parent | 05c6fbcae6188d0526a7148e6b8477d17ff72e25 (diff) | |
download | micropython-6f4952004207a249a437dc822c5252422f63cc69.tar.gz micropython-6f4952004207a249a437dc822c5252422f63cc69.zip |
py: Implement second arg for math.log (optional value for base).
Diffstat (limited to 'py/modmath.c')
-rw-r--r-- | py/modmath.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/py/modmath.c b/py/modmath.c index 46423d2b5c..296d16be6f 100644 --- a/py/modmath.c +++ b/py/modmath.c @@ -68,8 +68,6 @@ MATH_FUN_2(pow, pow) MATH_FUN_1(exp, exp) /// \function expm1(x) MATH_FUN_1(expm1, expm1) -/// \function log(x) -MATH_FUN_1(log, log) /// \function log2(x) MATH_FUN_1(log2, log2) /// \function log10(x) @@ -136,6 +134,19 @@ MATH_FUN_1(lgamma, lgamma) #endif //TODO: factorial, fsum +// Function that takes a variable number of arguments + +// log(x[, base]) +STATIC mp_obj_t mp_math_log(mp_uint_t n_args, const mp_obj_t *args) { + mp_float_t l = MICROPY_FLOAT_C_FUN(log)(mp_obj_get_float(args[0])); + if (n_args == 1) { + return mp_obj_new_float(l); + } else { + return mp_obj_new_float(l / MICROPY_FLOAT_C_FUN(log)(mp_obj_get_float(args[1]))); + } +} +STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_math_log_obj, 1, 2, mp_math_log); + // Functions that return a tuple /// \function frexp(x) |