Skip to content

Commit

Permalink
Merge branch 'pull-request/658'
Browse files Browse the repository at this point in the history
  • Loading branch information
sgolemon committed Aug 14, 2014
2 parents e644e66 + b547e13 commit 37e91cc
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 8 deletions.
2 changes: 1 addition & 1 deletion ext/standard/config.m4
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,7 @@ fi
dnl
dnl Check for available functions
dnl
AC_CHECK_FUNCS(getcwd getwd asinh acosh atanh log1p hypot glob strfmon nice fpclass isinf isnan mempcpy strpncpy)
AC_CHECK_FUNCS(getcwd getwd asinh acosh atanh log1p log2 hypot glob strfmon nice fpclass isinf isnan mempcpy strpncpy)
AC_FUNC_FNMATCH

dnl
Expand Down
27 changes: 20 additions & 7 deletions ext/standard/math.c
Original file line number Diff line number Diff line change
Expand Up @@ -661,22 +661,35 @@ PHP_FUNCTION(log1p)
PHP_FUNCTION(log)
{
double num, base = 0;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "d|d", &num, &base) == FAILURE) {
return;
}

if (ZEND_NUM_ARGS() == 1) {
RETURN_DOUBLE(log(num));
}
if (base <= 0.0) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "base must be greater than 0");
RETURN_FALSE;

#ifdef HAVE_LOG2
if (base == 2.0) {
RETURN_DOUBLE(log2(num));
}
#endif

if (base == 10.0) {
RETURN_DOUBLE(log10(num));
}
if (base == 1) {

if (base == 1.0) {
RETURN_DOUBLE(php_get_nan());
} else {
RETURN_DOUBLE(log(num) / log(base));
}

if (base <= 0.0) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "base must be greater than 0");
RETURN_FALSE;
}

RETURN_DOUBLE(log(num) / log(base));
}
/* }}} */

Expand Down

0 comments on commit 37e91cc

Please sign in to comment.