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)
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)
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)
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)
}
/* }}} */
-#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)
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)
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)
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 */
}
/* }}} */
-#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 */
/*
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 */
/*
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 */
*/
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>
--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--
--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
/*
--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--
--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--
--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
/*
--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--
--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--
--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
/*
--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--