kalle Mon May 5 06:28:03 2008 UTC Modified files: /php-src/ext/standard basic_functions.c math.c php_math.h /php-src/ext/standard/tests/math acosh_basic.phpt acosh_error.phpt acosh_variation.phpt asinh_basic.phpt asinh_error.phpt asinh_variation.phpt atanh_basic.phpt atanh_error.phpt atanh_variation.phpt Log: Implemented Windows support for asinh(), acosh(), atanh(), log1p() and expm1() + removed Windows check on tests [DOC] Windows support for asinh(), acosh(), atanh(), log1p() and expm1()
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/basic_functions.c?r1=1.896&r2=1.897&diff_format=u Index: php-src/ext/standard/basic_functions.c diff -u php-src/ext/standard/basic_functions.c:1.896 php-src/ext/standard/basic_functions.c:1.897 --- php-src/ext/standard/basic_functions.c:1.896 Tue Apr 15 09:02:16 2008 +++ php-src/ext/standard/basic_functions.c Mon May 5 06:28:03 2008 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: basic_functions.c,v 1.896 2008/04/15 09:02:16 jani Exp $ */ +/* $Id: basic_functions.c,v 1.897 2008/05/05 06:28:03 kalle Exp $ */ #include "php.h" #include "php_streams.h" @@ -1923,26 +1923,20 @@ ZEND_ARG_INFO(0, number) ZEND_END_ARG_INFO() -#ifdef HAVE_ASINH static ZEND_BEGIN_ARG_INFO(arginfo_asinh, 0) ZEND_ARG_INFO(0, number) ZEND_END_ARG_INFO() -#endif -#ifdef HAVE_ACOSH static ZEND_BEGIN_ARG_INFO(arginfo_acosh, 0) ZEND_ARG_INFO(0, number) ZEND_END_ARG_INFO() -#endif -#ifdef HAVE_ATANH static ZEND_BEGIN_ARG_INFO(arginfo_atanh, 0) ZEND_ARG_INFO(0, number) ZEND_END_ARG_INFO() -#endif static ZEND_BEGIN_ARG_INFO(arginfo_pi, 0) @@ -1974,19 +1968,15 @@ ZEND_ARG_INFO(0, number) ZEND_END_ARG_INFO() -#if !defined(PHP_WIN32) && !defined(NETWARE) static ZEND_BEGIN_ARG_INFO(arginfo_expm1, 0) ZEND_ARG_INFO(0, number) ZEND_END_ARG_INFO() -# ifdef HAVE_LOG1P static ZEND_BEGIN_ARG_INFO(arginfo_log1p, 0) ZEND_ARG_INFO(0, number) ZEND_END_ARG_INFO() -# endif -#endif /* !defined(PHP_WIN32) && !defined(NETWARE) */ static ZEND_BEGIN_ARG_INFO_EX(arginfo_log, 0, 0, 1) @@ -3330,23 +3320,11 @@ PHP_FE(sinh, arginfo_sinh) PHP_FE(cosh, arginfo_cosh) PHP_FE(tanh, arginfo_tanh) - -#ifdef HAVE_ASINH PHP_FE(asinh, arginfo_asinh) -#endif -#ifdef HAVE_ACOSH PHP_FE(acosh, arginfo_acosh) -#endif -#ifdef HAVE_ATANH PHP_FE(atanh, arginfo_atanh) -#endif -#if !defined(PHP_WIN32) && !defined(NETWARE) PHP_FE(expm1, arginfo_expm1) -# ifdef HAVE_LOG1P PHP_FE(log1p, arginfo_log1p) -# endif -#endif - PHP_FE(pi, arginfo_pi) PHP_FE(is_finite, arginfo_is_finite) PHP_FE(is_nan, arginfo_is_nan) http://cvs.php.net/viewvc.cgi/php-src/ext/standard/math.c?r1=1.144&r2=1.145&diff_format=u Index: php-src/ext/standard/math.c diff -u php-src/ext/standard/math.c:1.144 php-src/ext/standard/math.c:1.145 --- php-src/ext/standard/math.c:1.144 Mon Dec 31 07:12:16 2007 +++ php-src/ext/standard/math.c Mon May 5 06:28:03 2008 @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: math.c,v 1.144 2007/12/31 07:12:16 sebastian Exp $ */ +/* $Id: math.c,v 1.145 2008/05/05 06:28:03 kalle Exp $ */ #include "php.h" #include "php_math.h" @@ -49,6 +49,66 @@ val = !zend_isnan(tmp_val) ? tmp_val : val; \ } \ +/* {{{ php_asinh +*/ +double php_asinh(double z) +{ +#ifdef HAVE_ASINH + return(asinh(z)); +#else + return(log(z + sqrt(1 + pow(z, 2))) / log(M_E)); +#endif +} +/* }}} */ + +/* {{{ php_acosh +*/ +double php_acosh(double x) +{ +#ifdef HAVE_ACOSH + return(acosh(x)); +#else + return(log(x + sqrt(x * x - 1))); +#endif +} +/* }}} */ + +/* {{{ php_atanh +*/ +double php_atanh(double z) +{ +#ifdef HAVE_ATANH + return(atanh(z)); +#else + return(0.5 * log((1 + z) / (1 - z))); +#endif +} +/* }}} */ + +/* {{{ php_log1p +*/ +double php_log1p(double x) +{ +#ifdef HAVE_LOG1P + return(log1p(x)); +#else + return(log(1 + x)); +#endif +} +/* }}} */ + +/* {{{ php_expm1 +*/ +double php_expm1(double x) +{ +#if !defined(PHP_WIN32) && !defined(NETWARE) + return(expm1(x)); +#else + return(exp(x) - 1); +#endif +} +/* }}}*/ + /* {{{ proto int abs(int number) U Return the absolute value of the number */ PHP_FUNCTION(abs) @@ -295,8 +355,6 @@ } /* }}} */ -#if !defined(PHP_WIN32) && !defined(NETWARE) -#ifdef HAVE_ASINH /* {{{ proto float asinh(float number) U Returns the inverse hyperbolic sine of the number, i.e. the value whose hyperbolic sine is number */ PHP_FUNCTION(asinh) @@ -307,12 +365,10 @@ return; } - RETURN_DOUBLE(asinh(num)); + RETURN_DOUBLE(php_asinh(num)); } /* }}} */ -#endif /* HAVE_ASINH */ -#ifdef HAVE_ACOSH /* {{{ proto float acosh(float number) U Returns the inverse hyperbolic cosine of the number, i.e. the value whose hyperbolic cosine is number */ PHP_FUNCTION(acosh) @@ -323,12 +379,10 @@ return; } - RETURN_DOUBLE(acosh(num)); + RETURN_DOUBLE(php_acosh(num)); } /* }}} */ -#endif /* HAVE_ACOSH */ -#ifdef HAVE_ATANH /* {{{ proto float atanh(float number) U Returns the inverse hyperbolic tangent of the number, i.e. the value whose hyperbolic tangent is number */ PHP_FUNCTION(atanh) @@ -339,11 +393,9 @@ return; } - RETURN_DOUBLE(atanh(num)); + RETURN_DOUBLE(php_atanh(num)); } /* }}} */ -#endif /* HAVE_ATANH */ -#endif /* !defined(PHP_WIN32) && !defined(NETWARE) */ /* {{{ proto float pi(void) U Returns an approximation of pi */ @@ -458,7 +510,6 @@ } /* }}} */ -#if !defined(PHP_WIN32) && !defined(NETWARE) /* {{{ proto float expm1(float number) U Returns exp(number) - 1, computed in a way that accurate even when the value of number is close to zero */ /* @@ -473,11 +524,10 @@ return; } - RETURN_DOUBLE(expm1(num)); + RETURN_DOUBLE(php_expm1(num)); } /* }}} */ -#ifdef HAVE_LOG1P /* {{{ proto float log1p(float number) U Returns log(1 + number), computed in a way that accurate even when the value of number is close to zero */ /* @@ -492,11 +542,9 @@ return; } - RETURN_DOUBLE(log1p(num)); + RETURN_DOUBLE(php_log1p(num)); } /* }}} */ -#endif /* HAVE_LOG1P */ -#endif /* !defined(PHP_WIN32) && !defined(NETWARE) */ /* {{{ proto float log(float number, [float base]) U Returns the natural logarithm of the number, or the base log if base is specified */ http://cvs.php.net/viewvc.cgi/php-src/ext/standard/php_math.h?r1=1.33&r2=1.34&diff_format=u Index: php-src/ext/standard/php_math.h diff -u php-src/ext/standard/php_math.h:1.33 php-src/ext/standard/php_math.h:1.34 --- php-src/ext/standard/php_math.h:1.33 Mon Dec 31 07:12:16 2007 +++ php-src/ext/standard/php_math.h Mon May 5 06:28:03 2008 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_math.h,v 1.33 2007/12/31 07:12:16 sebastian Exp $ */ +/* $Id: php_math.h,v 1.34 2008/05/05 06:28:03 kalle Exp $ */ #ifndef PHP_MATH_H #define PHP_MATH_H @@ -69,23 +69,15 @@ */ PHP_FUNCTION(hypot); PHP_FUNCTION(expm1); -#ifdef HAVE_LOG1P PHP_FUNCTION(log1p); -#endif PHP_FUNCTION(sinh); PHP_FUNCTION(cosh); PHP_FUNCTION(tanh); -#ifdef HAVE_ASINH PHP_FUNCTION(asinh); -#endif -#ifdef HAVE_ACOSH PHP_FUNCTION(acosh); -#endif -#ifdef HAVE_ATANH PHP_FUNCTION(atanh); -#endif #include <math.h> http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/math/acosh_basic.phpt?r1=1.2&r2=1.3&diff_format=u Index: php-src/ext/standard/tests/math/acosh_basic.phpt diff -u php-src/ext/standard/tests/math/acosh_basic.phpt:1.2 php-src/ext/standard/tests/math/acosh_basic.phpt:1.3 --- php-src/ext/standard/tests/math/acosh_basic.phpt:1.2 Tue Sep 4 11:18:35 2007 +++ php-src/ext/standard/tests/math/acosh_basic.phpt Mon May 5 06:28:03 2008 @@ -1,10 +1,5 @@ --TEST-- Test return type and value for expected input acosh() ---SKIPIF-- -<?php -if(substr(PHP_OS, 0, 3) == "WIN") - die ("skip - function not supported on Windows"); -?> --INI-- precision = 14 --FILE-- http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/math/acosh_error.phpt?r1=1.3&r2=1.4&diff_format=u Index: php-src/ext/standard/tests/math/acosh_error.phpt diff -u php-src/ext/standard/tests/math/acosh_error.phpt:1.3 php-src/ext/standard/tests/math/acosh_error.phpt:1.4 --- php-src/ext/standard/tests/math/acosh_error.phpt:1.3 Wed Jan 30 17:55:12 2008 +++ php-src/ext/standard/tests/math/acosh_error.phpt Mon May 5 06:28:03 2008 @@ -1,10 +1,5 @@ --TEST-- Test wrong number of arguments for acosh() ---SKIPIF-- -<?php -if(substr(PHP_OS, 0, 3) == "WIN" ) - die ("skip - function not supported on Windows"); -?> --FILE-- <?php /* http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/math/acosh_variation.phpt?r1=1.2&r2=1.3&diff_format=u Index: php-src/ext/standard/tests/math/acosh_variation.phpt diff -u php-src/ext/standard/tests/math/acosh_variation.phpt:1.2 php-src/ext/standard/tests/math/acosh_variation.phpt:1.3 --- php-src/ext/standard/tests/math/acosh_variation.phpt:1.2 Tue Sep 4 11:18:35 2007 +++ php-src/ext/standard/tests/math/acosh_variation.phpt Mon May 5 06:28:03 2008 @@ -1,10 +1,5 @@ --TEST-- Test variations in usage of acosh() ---SKIPIF-- -<?php -if(substr(PHP_OS, 0, 3) == "WIN" ) - die ("skip - function not supported on Windows"); -?> --INI-- precision = 10 --FILE-- http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/math/asinh_basic.phpt?r1=1.2&r2=1.3&diff_format=u Index: php-src/ext/standard/tests/math/asinh_basic.phpt diff -u php-src/ext/standard/tests/math/asinh_basic.phpt:1.2 php-src/ext/standard/tests/math/asinh_basic.phpt:1.3 --- php-src/ext/standard/tests/math/asinh_basic.phpt:1.2 Tue Sep 4 11:18:35 2007 +++ php-src/ext/standard/tests/math/asinh_basic.phpt Mon May 5 06:28:03 2008 @@ -1,10 +1,5 @@ --TEST-- Test return type and value for expected input asinh() ---SKIPIF-- -<?php -if(substr(PHP_OS, 0, 3) == "WIN") - die ("skip - function not supported on Windows"); -?> --INI-- precision = 14 --FILE-- http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/math/asinh_error.phpt?r1=1.3&r2=1.4&diff_format=u Index: php-src/ext/standard/tests/math/asinh_error.phpt diff -u php-src/ext/standard/tests/math/asinh_error.phpt:1.3 php-src/ext/standard/tests/math/asinh_error.phpt:1.4 --- php-src/ext/standard/tests/math/asinh_error.phpt:1.3 Wed Jan 30 17:55:12 2008 +++ php-src/ext/standard/tests/math/asinh_error.phpt Mon May 5 06:28:03 2008 @@ -1,10 +1,5 @@ --TEST-- Test wrong number of arguments for asinh() ---SKIPIF-- -<?php -if(substr(PHP_OS, 0, 3) == "WIN" ) - die ("skip - function not supported on Windows"); -?> --FILE-- <?php /* http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/math/asinh_variation.phpt?r1=1.2&r2=1.3&diff_format=u Index: php-src/ext/standard/tests/math/asinh_variation.phpt diff -u php-src/ext/standard/tests/math/asinh_variation.phpt:1.2 php-src/ext/standard/tests/math/asinh_variation.phpt:1.3 --- php-src/ext/standard/tests/math/asinh_variation.phpt:1.2 Tue Sep 4 11:18:35 2007 +++ php-src/ext/standard/tests/math/asinh_variation.phpt Mon May 5 06:28:03 2008 @@ -1,10 +1,5 @@ --TEST-- Test variations in usage of asinh() ---SKIPIF-- -<?php -if(substr(PHP_OS, 0, 3) == "WIN" ) - die ("skip - function not supported on Windows"); -?> --INI-- precision = 10 --FILE-- http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/math/atanh_basic.phpt?r1=1.2&r2=1.3&diff_format=u Index: php-src/ext/standard/tests/math/atanh_basic.phpt diff -u php-src/ext/standard/tests/math/atanh_basic.phpt:1.2 php-src/ext/standard/tests/math/atanh_basic.phpt:1.3 --- php-src/ext/standard/tests/math/atanh_basic.phpt:1.2 Tue Sep 4 11:18:35 2007 +++ php-src/ext/standard/tests/math/atanh_basic.phpt Mon May 5 06:28:03 2008 @@ -1,10 +1,5 @@ --TEST-- Test return type and value for expected input atanh() ---SKIPIF-- -<?php -if(substr(PHP_OS, 0, 3) == "WIN" ) - die ("skip - function not supported on Windows"); -?> --INI-- precision = 14 --FILE-- http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/math/atanh_error.phpt?r1=1.3&r2=1.4&diff_format=u Index: php-src/ext/standard/tests/math/atanh_error.phpt diff -u php-src/ext/standard/tests/math/atanh_error.phpt:1.3 php-src/ext/standard/tests/math/atanh_error.phpt:1.4 --- php-src/ext/standard/tests/math/atanh_error.phpt:1.3 Wed Jan 30 17:55:12 2008 +++ php-src/ext/standard/tests/math/atanh_error.phpt Mon May 5 06:28:03 2008 @@ -1,10 +1,5 @@ --TEST-- Test wrong number of arguments for atanh() ---SKIPIF-- -<?php -if(substr(PHP_OS, 0, 3) == "WIN" ) - die ("skip - function not supported on Windows"); -?> --FILE-- <?php /* http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/math/atanh_variation.phpt?r1=1.2&r2=1.3&diff_format=u Index: php-src/ext/standard/tests/math/atanh_variation.phpt diff -u php-src/ext/standard/tests/math/atanh_variation.phpt:1.2 php-src/ext/standard/tests/math/atanh_variation.phpt:1.3 --- php-src/ext/standard/tests/math/atanh_variation.phpt:1.2 Tue Sep 4 11:18:35 2007 +++ php-src/ext/standard/tests/math/atanh_variation.phpt Mon May 5 06:28:03 2008 @@ -1,10 +1,5 @@ --TEST-- Test variations in usage of atanh() ---SKIPIF-- -<?php -if(substr(PHP_OS, 0, 3) == "WIN" ) - die ("skip - function not supported on Windows"); -?> --INI-- precision = 10 --FILE--
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php