Apologies... I've made a new .patch file relative to revision 1.93 of
math.c in the CVS tree with modifications per instructions in
CODING_STANDARDS. Hope this meets with approval.
> On Sun, 10 Nov 2002, Pollita wrote:
>
>> 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.
>
> Please provide a unified diff (diff -u) against the latest CVS version.
> Also, please stick to the coding standards as described in the
> CODING_STANDARDS file.
>
> regards,
> Derick
>
> --
>
> ---------------------------------------------------------------------------
> Derick Rethans
> http://derickrethans.nl/ JDI Media Solutions
> --------------[ if you hold a unix shell to your ear, do you hear the c?
> ]-
--- math.c Sun Nov 10 14:34:19 2002
+++ math-smg.c Sun Nov 10 14:39:39 2002
@@ -525,13 +525,27 @@
PHP_FUNCTION(log)
{
- zval **num;
+ zval **num,**Zbase;
+ double base;
+ double denom=1.0;
- if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &num) == FAILURE) {
+ if (ZEND_NUM_ARGS() < 1 || ZEND_NUM_ARGS() > 2 || zend_get_parameters_ex(2,
+&num, &Zbase) == FAILURE) {
WRONG_PARAM_COUNT;
}
+ /* If second parameter "base" is specified, use it, otherwise accept e */
+ if (ZEND_NUM_ARGS() > 1) {
+ convert_to_double_ex(Zbase);
+ base = Z_DVAL_PP(Zbase);
+ if (base > 0.0) denom = log(base);
+ else {
+ /* A base of <= 0 is non-sensical */
+ php_error(E_WARNING,"base parameter of log()
+must be greater than 0");
+ RETURN_FALSE;
+ }
+ }
+
convert_to_double_ex(num);
- Z_DVAL_P(return_value) = log(Z_DVAL_PP(num));
+ Z_DVAL_P(return_value) = log(Z_DVAL_PP(num)) / denom;
Z_TYPE_P(return_value) = IS_DOUBLE;
}
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php