summary refs log tree commit diff
path: root/Src/Modules/mathfunc.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Modules/mathfunc.c')
-rw-r--r--Src/Modules/mathfunc.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/Src/Modules/mathfunc.c b/Src/Modules/mathfunc.c
index d1c3e089a..fc2593dca 100644
--- a/Src/Modules/mathfunc.c
+++ b/Src/Modules/mathfunc.c
@@ -65,6 +65,7 @@ MF_LGAMMA,
 MF_LOG,
 MF_LOG10,
 MF_LOG1P,
+MF_LOG2,
 MF_LOGB,
 MF_NEXTAFTER,
 MF_RINT,
@@ -142,6 +143,7 @@ static struct mathfunc mftab[] = {
   NUMMATHFUNC("log", math_func, 1, 1, MF_LOG),
   NUMMATHFUNC("log10", math_func, 1, 1, MF_LOG10),
   NUMMATHFUNC("log1p", math_func, 1, 1, MF_LOG1P),
+  NUMMATHFUNC("log2", math_func, 1, 1, MF_LOG2),
   NUMMATHFUNC("logb", math_func, 1, 1, MF_LOGB),
   NUMMATHFUNC("nextafter", math_func, 2, 2, MF_NEXTAFTER),
 #ifdef HAVE_ERAND48
@@ -338,6 +340,14 @@ math_func(UNUSED(char *name), int argc, mnumber *argv, int id)
       retd = log1p(argd);
       break;
 
+  case MF_LOG2:
+#ifdef HAVE_LOG2
+      retd = log2(argd);
+#else
+      retd = log(argd) / log(2);
+#endif
+      break;
+
   case MF_LOGB:
       retd = logb(argd); 
       break;