pollita Tue Dec 10 14:04:29 2002 EDT Modified files: /php4/ext/bcmath bcmath.c php_bcmath.h Log: Added support for libbcmath's bc_raisemod function as bc_powmod() Index: php4/ext/bcmath/bcmath.c diff -u php4/ext/bcmath/bcmath.c:1.43 php4/ext/bcmath/bcmath.c:1.44 --- php4/ext/bcmath/bcmath.c:1.43 Thu Dec 5 16:51:45 2002 +++ php4/ext/bcmath/bcmath.c Tue Dec 10 14:04:27 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: bcmath.c,v 1.43 2002/12/05 21:51:45 helly Exp $ */ +/* $Id: bcmath.c,v 1.44 2002/12/10 19:04:27 pollita Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -42,6 +42,7 @@ PHP_FE(bcsqrt, NULL) PHP_FE(bcscale, NULL) PHP_FE(bccomp, NULL) + PHP_FE(bc_powmod, + NULL) {NULL, NULL, NULL} }; @@ -324,6 +325,38 @@ } bc_free_num(&first); bc_free_num(&second); + bc_free_num(&result); + return; +} +/* }}} */ + +/* {{{ proto string bc_powmod(string x, string y, string mod [, int scale]) + Returns the value of an arbitrary precision number raised to the power of another +reduced by a modulous */ +PHP_FUNCTION(bc_powmod) +{ + char *left, *right, *modulous; + int left_len, right_len, modulous_len; + bc_num first, second, mod, result; + int scale=bc_precision; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_C, "sss|l", &left, &left_len, +&right, &right_len, &modulous, &modulous_len, &scale) == FAILURE) { + WRONG_PARAM_COUNT; + } + + bc_init_num(&first TSRMLS_CC); + bc_init_num(&second TSRMLS_CC); + bc_init_num(&mod TSRMLS_CC); + bc_init_num(&result TSRMLS_CC); + bc_str2num(&first, left, scale TSRMLS_CC); + bc_str2num(&second, right, scale TSRMLS_CC); + bc_str2num(&mod, modulous, scale TSRMLS_CC); + bc_raisemod(first, second, mod, &result, scale TSRMLS_CC); + Z_STRVAL_P(return_value) = bc_num2str(result); + Z_STRLEN_P(return_value) = strlen(Z_STRVAL_P(return_value)); + Z_TYPE_P(return_value) = IS_STRING; + bc_free_num(&first); + bc_free_num(&second); + bc_free_num(&mod); bc_free_num(&result); return; } Index: php4/ext/bcmath/php_bcmath.h diff -u php4/ext/bcmath/php_bcmath.h:1.12 php4/ext/bcmath/php_bcmath.h:1.13 --- php4/ext/bcmath/php_bcmath.h:1.12 Fri Nov 22 04:25:28 2002 +++ php4/ext/bcmath/php_bcmath.h Tue Dec 10 14:04:27 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_bcmath.h,v 1.12 2002/11/22 09:25:28 sander Exp $ */ +/* $Id: php_bcmath.h,v 1.13 2002/12/10 19:04:27 pollita Exp $ */ #ifndef PHP_BCMATH_H #define PHP_BCMATH_H @@ -60,6 +60,7 @@ PHP_FUNCTION(bcsqrt); PHP_FUNCTION(bccomp); PHP_FUNCTION(bcscale); +PHP_FUNCTION(bc_powmod); #else
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php