xref: /PHP-7.4/ext/standard/tests/math/pow.phpt (revision 26dfce7f)
1--TEST--
2Various pow() tests
3--FILE--
4<?php
5
6define('LONG_MAX', is_int(5000000000)? 9223372036854775807 : 0x7FFFFFFF);
7define('LONG_MIN', -LONG_MAX - 1);
8printf("%d,%d,%d,%d\n",is_int(LONG_MIN  ),is_int(LONG_MAX  ),
9					   is_int(LONG_MIN-1),is_int(LONG_MAX+1));
10
11$tests = <<<TESTS
12 0.25 === pow(-2,-2)
13-0.5  === pow(-2,-1)
14 1    === pow(-2, 0)
15-2    === pow(-2, 1)
16 4    === pow(-2, 2)
17 1.0  === pow(-1,-2)
18-1.0  === pow(-1,-1)
19 1    === pow(-1, 0)
20-1    === pow(-1, 1)
21 1    === pow(-1, 2)
22 TRUE === is_infinite(pow(0,-2))
23 TRUE === is_infinite(pow(0,-1))
24 1    === pow( 0, 0)
25 0    === pow( 0, 1)
26 0    === pow( 0, 2)
27 1.0  === pow( 1,-2)
28 1.0  === pow( 1,-1)
29 1    === pow( 1, 0)
30 1    === pow( 1, 1)
31 1    === pow( 1, 2)
32 0.25 === pow( 2,-2)
33 0.5  === pow( 2,-1)
34 1    === pow( 2, 0)
35 2    === pow( 2, 1)
36 4    === pow( 2, 2)
37 0.25 === pow(-2,-2.0)
38-0.5  === pow(-2,-1.0)
39 1.0  === pow(-2, 0.0)
40-2.0  === pow(-2, 1.0)
41 4.0  === pow(-2, 2.0)
42 1.0  === pow(-1,-2.0)
43-1.0  === pow(-1,-1.0)
44 1.0  === pow(-1, 0.0)
45-1.0  === pow(-1, 1.0)
46 1.0  === pow(-1, 2.0)
47 TRUE === is_infinite(pow(0,-2.0))
48 TRUE === is_infinite(pow(0,-1.0))
49 1.0  === pow( 0, 0.0)
50 0.0  === pow( 0, 1.0)
51 0.0  === pow( 0, 2.0)
52 1.0  === pow( 1,-2.0)
53 1.0  === pow( 1,-1.0)
54 1.0  === pow( 1, 0.0)
55 1.0  === pow( 1, 1.0)
56 1.0  === pow( 1, 2.0)
57 0.25 === pow( 2,-2.0)
58 0.5  === pow( 2,-1.0)
59 1.0  === pow( 2, 0.0)
60 2.0  === pow( 2, 1.0)
61 4.0  === pow( 2, 2.0)
62 2147483648 === pow(2,31)
63-2147483648 ~== pow(-2,31)
64 1000000000 === pow(10,9)
65 100000000  === pow(-10,8)
66 1    === pow(-1,1443279822)
67-1    === pow(-1,1443279821)
68sqrt(2) ~== pow(2,1/2)
69 0.25 === pow(-2.0,-2.0)
70-0.5  === pow(-2.0,-1.0)
71 1.0  === pow(-2.0, 0.0)
72-2.0  === pow(-2.0, 1.0)
73 4.0  === pow(-2.0, 2.0)
74 1.0  === pow(-1.0,-2.0)
75-1.0  === pow(-1.0,-1.0)
76 1.0  === pow(-1.0, 0.0)
77-1.0  === pow(-1.0, 1.0)
78 1.0  === pow(-1.0, 2.0)
79 TRUE === is_infinite(pow(0.0,-2.0))
80 TRUE === is_infinite(pow(0.0,-1.0))
81 1.0  === pow( 0.0, 0.0)
82 0.0  === pow( 0.0, 1.0)
83 0.0  === pow( 0.0, 2.0)
84 1.0  === pow( 1.0,-2.0)
85 1.0  === pow( 1.0,-1.0)
86 1.0  === pow( 1.0, 0.0)
87 1.0  === pow( 1.0, 1.0)
88 1.0  === pow( 1.0, 2.0)
89 0.25 === pow( 2.0,-2.0)
90 0.5  === pow( 2.0,-1.0)
91 1.0  === pow( 2.0, 0.0)
92 2.0  === pow( 2.0, 1.0)
93 4.0  === pow( 2.0, 2.0)
94 0.25 === pow(-2.0,-2)
95-0.5  === pow(-2.0,-1)
96 1.0  === pow(-2.0, 0)
97-2.0  === pow(-2.0, 1)
98 4.0  === pow(-2.0, 2)
99 1.0  === pow(-1.0,-2)
100-1.0  === pow(-1.0,-1)
101 1.0  === pow(-1.0, 0)
102-1.0  === pow(-1.0, 1)
103 1.0  === pow(-1.0, 2)
104 TRUE === is_infinite(pow( 0.0,-2))
105 TRUE === is_infinite(pow( 0.0,-1))
106 1.0  === pow( 0.0, 0)
107 0.0  === pow( 0.0, 1)
108 0.0  === pow( 0.0, 2)
109 1.0  === pow( 1.0,-2)
110 1.0  === pow( 1.0,-1)
111 1.0  === pow( 1.0, 0)
112 1.0  === pow( 1.0, 1)
113 1.0  === pow( 1.0, 2)
114 0.25 === pow( 2.0,-2)
115 0.5  === pow( 2.0,-1)
116 1.0  === pow( 2.0, 0)
117 2.0  === pow( 2.0, 1)
118 4.0  === pow( 2.0, 2)
119 2.0  === pow(   4, 0.5)
120 2.0  === pow( 4.0, 0.5)
121 3.0  === pow(  27, 1/3)
122 3.0  === pow(27.0, 1/3)
123 0.5  === pow(   4, -0.5)
124 0.5  === pow( 4.0, -0.5)
125LONG_MAX-1 === pow(LONG_MAX-1,1)
126LONG_MIN+1 === pow(LONG_MIN+1,1)
127(LONG_MAX-1)*(LONG_MAX-1) ~== pow(LONG_MAX-1,2)
128(LONG_MIN+1)*(LONG_MIN+1) ~== pow(LONG_MIN+1,2)
129(float)(LONG_MAX-1) === pow(LONG_MAX-1,1.0)
130(float)(LONG_MIN+1) === pow(LONG_MIN+1,1.0)
131(LONG_MAX-1)*(LONG_MAX-1) ~== pow(LONG_MAX-1,2.0)
132(LONG_MIN+1)*(LONG_MIN+1) ~== pow(LONG_MIN+1,2.0)
133LONG_MAX === pow(LONG_MAX,1)
134LONG_MIN === pow(LONG_MIN,1)
135LONG_MAX*LONG_MAX ~== pow(LONG_MAX,2)
136LONG_MIN*LONG_MIN ~== pow(LONG_MIN,2)
137(float)LONG_MAX === pow(LONG_MAX,1.0)
138(float)LONG_MIN === pow(LONG_MIN,1.0)
139LONG_MAX*LONG_MAX ~== pow(LONG_MAX,2.0)
140LONG_MIN*LONG_MIN ~== pow(LONG_MIN,2.0)
141TESTS;
142
143 echo "On failure, please mail result to php-dev@lists.php.net\n";
144 include(__DIR__ . '/../../../../tests/quicktester.inc');
145--EXPECT--
1461,1,0,0
147On failure, please mail result to php-dev@lists.php.net
148OK
149