aboutsummaryrefslogtreecommitdiff
path: root/py/modmath.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2015-06-13 21:56:23 +0100
committerDamien George <damien.p.george@gmail.com>2015-06-13 22:35:25 +0100
commit6f4952004207a249a437dc822c5252422f63cc69 (patch)
tree7ed65eb4ca21cbcc9e18b1a071e662d2201e495a /py/modmath.c
parent05c6fbcae6188d0526a7148e6b8477d17ff72e25 (diff)
py: Implement second arg for math.log (optional value for base).
Diffstat (limited to 'py/modmath.c')
-rw-r--r--py/modmath.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/py/modmath.c b/py/modmath.c
index 46423d2b5..296d16be6 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)