diff options
author | Olivier Girondel <[email protected]> | 2015-01-04 04:40:55 +0100 |
---|---|---|
committer | Marcus Arendt <[email protected]> | 2015-01-14 15:58:51 +0100 |
commit | fdf09e81de5e7f1ecfe71f98b56c411073badae8 (patch) | |
tree | d6a46aeb887b2b829a01889ed364d943b7ed7536 /erts | |
parent | 821d84c5860a9a26185efa19be407796422e3090 (diff) | |
download | otp-fdf09e81de5e7f1ecfe71f98b56c411073badae8.tar.gz otp-fdf09e81de5e7f1ecfe71f98b56c411073badae8.tar.bz2 otp-fdf09e81de5e7f1ecfe71f98b56c411073badae8.zip |
Add math:log2/1
Diffstat (limited to 'erts')
-rw-r--r-- | erts/configure.in | 5 | ||||
-rw-r--r-- | erts/emulator/beam/bif.tab | 1 | ||||
-rw-r--r-- | erts/emulator/beam/erl_math.c | 18 |
3 files changed, 24 insertions, 0 deletions
diff --git a/erts/configure.in b/erts/configure.in index 1676d3d216..6bea197a80 100644 --- a/erts/configure.in +++ b/erts/configure.in @@ -4905,6 +4905,11 @@ LDFLAGS="$LDFLAGS $sanitizers" ]) dnl ---------------------------------------------------------------------- +dnl Check for log2 +dnl ---------------------------------------------------------------------- +AC_CHECK_FUNCS([log2]) + +dnl ---------------------------------------------------------------------- dnl Output the result. dnl ---------------------------------------------------------------------- diff --git a/erts/emulator/beam/bif.tab b/erts/emulator/beam/bif.tab index aea3224342..1d0d214e77 100644 --- a/erts/emulator/beam/bif.tab +++ b/erts/emulator/beam/bif.tab @@ -194,6 +194,7 @@ bif math:erf/1 bif math:erfc/1 bif math:exp/1 bif math:log/1 +bif math:log2/1 bif math:log10/1 bif math:sqrt/1 bif math:atan2/2 diff --git a/erts/emulator/beam/erl_math.c b/erts/emulator/beam/erl_math.c index 16d4fdc09c..9b864628db 100644 --- a/erts/emulator/beam/erl_math.c +++ b/erts/emulator/beam/erl_math.c @@ -207,6 +207,24 @@ BIF_RETTYPE math_log_1(BIF_ALIST_1) return math_call_1(BIF_P, log, BIF_ARG_1); } +#ifdef HAVE_LOG2 +static double +log2_wrapper(double x) +{ + return log2(x); +} +#else +static double +log2_wrapper(double x) +{ + return log(x) / 0.6931471805599453; /* log(2.0); */ +} +#endif + +BIF_RETTYPE math_log2_1(BIF_ALIST_1) +{ + return math_call_1(BIF_P, log2_wrapper, BIF_ARG_1); +} BIF_RETTYPE math_log10_1(BIF_ALIST_1) { |