mirror of
https://github.com/php/php-src.git
synced 2026-04-12 18:43:37 +02:00
Added tests for pow()
#The tests near LONG_MAX/MIN fail, I know that
This commit is contained in:
136
ext/standard/tests/math/pow.phpt
Normal file
136
ext/standard/tests/math/pow.phpt
Normal file
@@ -0,0 +1,136 @@
|
||||
--TEST--
|
||||
Various pow() tests
|
||||
--POST--
|
||||
--GET--
|
||||
--FILE--
|
||||
<?php
|
||||
define('LONG_MAX', is_int(5000000000)? 9223372036854775807 : 0x7FFFFFFF);
|
||||
define('LONG_MIN', -LONG_MAX - 1);
|
||||
printf("%d,%d,%d,%d\n",is_int(LONG_MIN ),is_int(LONG_MAX ),
|
||||
is_int(LONG_MIN-1),is_int(LONG_MAX+1));
|
||||
|
||||
$tests = <<<TESTS
|
||||
0.25 === pow(-2,-2)
|
||||
-0.5 === pow(-2,-1)
|
||||
1 === pow(-2, 0)
|
||||
-2 === pow(-2, 1)
|
||||
4 === pow(-2, 2)
|
||||
1 === pow(-1,-2)
|
||||
-1 === pow(-1,-1)
|
||||
1 === pow(-1, 0)
|
||||
-1 === pow(-1, 1)
|
||||
1 === pow(-1, 2)
|
||||
FALSE === pow( 0,-2)
|
||||
FALSE === pow( 0,-1)
|
||||
1 === pow( 0, 0)
|
||||
0 === pow( 0, 1)
|
||||
0 === pow( 0, 2)
|
||||
1 === pow( 1,-2)
|
||||
1 === pow( 1,-1)
|
||||
1 === pow( 1, 0)
|
||||
1 === pow( 1, 1)
|
||||
1 === pow( 1, 2)
|
||||
0.25 === pow( 2,-2)
|
||||
0.5 === pow( 2,-1)
|
||||
1 === pow( 2, 0)
|
||||
2 === pow( 2, 1)
|
||||
4 === pow( 2, 2)
|
||||
FALSE === pow(-2,-2.0)
|
||||
FALSE === pow(-2,-1.0)
|
||||
FALSE === pow(-2, 0.0)
|
||||
FALSE === pow(-2, 1.0)
|
||||
FALSE === pow(-2, 2.0)
|
||||
FALSE === pow(-1,-2.0)
|
||||
FALSE === pow(-1,-1.0)
|
||||
FALSE === pow(-1, 0.0)
|
||||
FALSE === pow(-1, 1.0)
|
||||
FALSE === pow(-1, 2.0)
|
||||
FALSE === pow( 0,-2.0)
|
||||
FALSE === pow( 0,-1.0)
|
||||
FALSE === pow( 0, 0.0)
|
||||
FALSE === pow( 0, 1.0)
|
||||
FALSE === pow( 0, 2.0)
|
||||
1.0 === pow( 1,-2.0)
|
||||
1.0 === pow( 1,-1.0)
|
||||
1.0 === pow( 1, 0.0)
|
||||
1.0 === pow( 1, 1.0)
|
||||
1.0 === pow( 1, 2.0)
|
||||
0.25 === pow( 2,-2.0)
|
||||
0.5 === pow( 2,-1.0)
|
||||
1.0 === pow( 2, 0.0)
|
||||
2.0 === pow( 2, 1.0)
|
||||
4.0 === pow( 2, 2.0)
|
||||
2147483648 === pow(2,31)
|
||||
-2147483648 === pow(-2,31)
|
||||
1000000000 === pow(10,9)
|
||||
100000000 === pow(-10,8)
|
||||
1 === pow(-1,1443279822)
|
||||
-1 === pow(-1,1443279821)
|
||||
sqrt(2) === pow(2,1/2)
|
||||
FALSE === pow(-2.0,-2.0)
|
||||
FALSE === pow(-2.0,-1.0)
|
||||
FALSE === pow(-2.0, 0.0)
|
||||
FALSE === pow(-2.0, 1.0)
|
||||
FALSE === pow(-2.0, 2.0)
|
||||
FALSE === pow(-1.0,-2.0)
|
||||
FALSE === pow(-1.0,-1.0)
|
||||
FALSE === pow(-1.0, 0.0)
|
||||
FALSE === pow(-1.0, 1.0)
|
||||
FALSE === pow(-1.0, 2.0)
|
||||
FALSE === pow( 0.0,-2.0)
|
||||
FALSE === pow( 0.0,-1.0)
|
||||
FALSE === pow( 0.0, 0.0)
|
||||
FALSE === pow( 0.0, 1.0)
|
||||
FALSE === pow( 0.0, 2.0)
|
||||
1.0 === pow( 1.0,-2.0)
|
||||
1.0 === pow( 1.0,-1.0)
|
||||
1.0 === pow( 1.0, 0.0)
|
||||
1.0 === pow( 1.0, 1.0)
|
||||
1.0 === pow( 1.0, 2.0)
|
||||
0.25 === pow( 2.0,-2.0)
|
||||
0.5 === pow( 2.0,-1.0)
|
||||
1.0 === pow( 2.0, 0.0)
|
||||
2.0 === pow( 2.0, 1.0)
|
||||
4.0 === pow( 2.0, 2.0)
|
||||
0.25 === pow(-2.0,-2)
|
||||
-0.5 === pow(-2.0,-1)
|
||||
1.0 === pow(-2.0, 0)
|
||||
-2.0 === pow(-2.0, 1)
|
||||
4.0 === pow(-2.0, 2)
|
||||
1.0 === pow(-1.0,-2)
|
||||
-1.0 === pow(-1.0,-1)
|
||||
1.0 === pow(-1.0, 0)
|
||||
-1.0 === pow(-1.0, 1)
|
||||
1.0 === pow(-1.0, 2)
|
||||
FALSE === pow( 0.0,-2)
|
||||
FALSE === pow( 0.0,-1)
|
||||
1.0 === pow( 0.0, 0)
|
||||
0.0 === pow( 0.0, 1)
|
||||
0.0 === pow( 0.0, 2)
|
||||
1.0 === pow( 1.0,-2)
|
||||
1.0 === pow( 1.0,-1)
|
||||
1.0 === pow( 1.0, 0)
|
||||
1.0 === pow( 1.0, 1)
|
||||
1.0 === pow( 1.0, 2)
|
||||
0.25 === pow( 2.0,-2)
|
||||
0.5 === pow( 2.0,-1)
|
||||
1.0 === pow( 2.0, 0)
|
||||
2.0 === pow( 2.0, 1)
|
||||
4.0 === pow( 2.0, 2)
|
||||
LONG_MAX === pow(LONG_MAX,1);
|
||||
LONG_MIN === pow(LONG_MIN,1);
|
||||
LONG_MAX*LONG_MAX === pow(LONG_MAX,2);
|
||||
LONG_MIN*LONG_MIN === pow(LONG_MIN,2);
|
||||
(float)LONG_MAX === pow(LONG_MAX,1.0);
|
||||
FALSE === pow(LONG_MIN,1.0);
|
||||
LONG_MAX*LONG_MAX === pow(LONG_MAX,2.0);
|
||||
FALSE === pow(LONG_MIN,2.0);
|
||||
TESTS;
|
||||
|
||||
echo "On failure, please mail result to jeroen@php.net\n";
|
||||
include('test_eval.inc');
|
||||
|
||||
--EXPECT--
|
||||
1,1,0,0
|
||||
On failure, please contact jeroen@php.net
|
||||
OK
|
||||
19
ext/standard/tests/math/test_eval.inc
Normal file
19
ext/standard/tests/math/test_eval.inc
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
error_reporting(0);
|
||||
$tests = explode("\n",$tests);
|
||||
$success = TRUE;
|
||||
foreach ($tests as $test)
|
||||
{
|
||||
$res = eval("return ($test);");
|
||||
$success = $success && $res;
|
||||
if (!$res)
|
||||
{
|
||||
echo "\nAssert failed:\n";
|
||||
echo "$test\n";
|
||||
list($left,$right) = explode('===',$test);
|
||||
echo "Left: ";var_dump(eval("return ($left );"));
|
||||
echo "Right: ";var_dump(eval("return ($right);"));
|
||||
}
|
||||
}
|
||||
if ($success) echo "OK";
|
||||
|
||||
Reference in New Issue
Block a user