I would like to offer the attached minor patch (relative to php-4.2.3) to
ext/standard/math.c to extend the functionality of log() to support
arbitrary bases.
The patch would extend:
float log(float number)
to:
float log(float number[,float base])
With no base parameter specified it would function as before returning the
logarithm with respect to base e. Specifying a base would allow it to
return a logarithm in any other positive base.
For Example:
print log(32,2); // Would output "5"
print log(81,3); // Would output "4"
while:
print log(M_E); // Would still output 1 as normal
I was told on Freenode/#OPN that this was the place to submit suggested
patches.
524,526c524,527
< zval **num;
<
< if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &num) == FAILURE) {
---
> zval **num,**Zbase;
> double base;
> double denom=1.0;
> if (ZEND_NUM_ARGS() < 1 || ZEND_NUM_ARGS() > 2 || zend_get_parameters_ex(2,
>&num, &Zbase) == FAILURE) {
528a530,538
> if (ZEND_NUM_ARGS() > 1) {
> convert_to_double_ex(Zbase);
> base = Z_DVAL_PP(Zbase);
> if (base > 0.0) denom = log(base);
> else {
> php_error(E_WARNING,"base parameter of log()
>must be greater than 0");
> RETURN_FALSE;
> }
> }
530c540
< Z_DVAL_P(return_value) = log(Z_DVAL_PP(num));
---
> Z_DVAL_P(return_value) = log(Z_DVAL_PP(num))/denom;
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php