summaryrefslogtreecommitdiff
path: root/ext/standard/tests/math/pow.phpt
blob: 12170f4f3a1981d96fc9cfff167adc556b3fc8d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
--TEST--
Various pow() tests
--POST--
--GET--
--FILE--
<?php // $Id$

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.0  === pow(-1,-2)
-1.0  === pow(-1,-1)
 1    === pow(-1, 0)
-1    === pow(-1, 1)
 1    === pow(-1, 2)
 TRUE === is_infinite(pow(0,-2))
 TRUE === is_infinite(pow(0,-1))
 1    === pow( 0, 0)
 0    === pow( 0, 1)
 0    === pow( 0, 2)
 1.0  === pow( 1,-2)
 1.0  === 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)
 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)
 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)
 TRUE === is_infinite(pow(0,-2.0))
 TRUE === is_infinite(pow(0,-1.0))
 1.0  === pow( 0, 0.0)
 0.0  === pow( 0, 1.0)
 0.0  === 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)
 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)
 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)
 TRUE === is_infinite(pow(0.0,-2.0))
 TRUE === is_infinite(pow(0.0,-1.0))
 1.0  === pow( 0.0, 0.0)
 0.0  === pow( 0.0, 1.0)
 0.0  === 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)
 TRUE === is_infinite(pow( 0.0,-2))
 TRUE === is_infinite(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)
 2.0  === pow(   4, 0.5)
 2.0  === pow( 4.0, 0.5)
 3.0  === pow(  27, 1/3)
 3.0  === pow(27.0, 1/3)
 0.5  === pow(   4, -0.5)
 0.5  === pow( 4.0, -0.5)
LONG_MAX-1 === pow(LONG_MAX-1,1)
LONG_MIN+1 === pow(LONG_MIN+1,1)
(LONG_MAX-1)*(LONG_MAX-1) ~== pow(LONG_MAX-1,2)
(LONG_MIN+1)*(LONG_MIN+1) ~== pow(LONG_MIN+1,2)
(float)(LONG_MAX-1) === pow(LONG_MAX-1,1.0)
(float)(LONG_MIN+1) === pow(LONG_MIN+1,1.0)
(LONG_MAX-1)*(LONG_MAX-1) ~== pow(LONG_MAX-1,2.0)
(LONG_MIN+1)*(LONG_MIN+1) ~== pow(LONG_MIN+1,2.0)
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)
(float)LONG_MIN === pow(LONG_MIN,1.0)
LONG_MAX*LONG_MAX ~== pow(LONG_MAX,2.0)
LONG_MIN*LONG_MIN ~== pow(LONG_MIN,2.0)
TESTS;

 echo "On failure, please mail result to php-dev@lists.php.net\n";
 include('tests/quicktester.inc');

--EXPECT--
1,1,0,0
On failure, please mail result to php-dev@lists.php.net
OK