25
25
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
26
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
// Flags: --allow-natives-syntax
28
29
// Tests the special cases specified by ES 15.8.2.13
30
// Simple sanity check
31
assertEquals(4, Math.pow(2, 2));
32
assertEquals(2147483648, Math.pow(2, 31));
33
assertEquals(0.25, Math.pow(2, -2));
34
assertEquals(0.0625, Math.pow(2, -4));
35
assertEquals(1, Math.pow(1, 100));
36
assertEquals(0, Math.pow(0, 1000));
39
assertEquals(NaN, Math.pow(2, NaN));
40
assertEquals(NaN, Math.pow(+0, NaN));
41
assertEquals(NaN, Math.pow(-0, NaN));
42
assertEquals(NaN, Math.pow(Infinity, NaN));
43
assertEquals(NaN, Math.pow(-Infinity, NaN));
45
assertEquals(1, Math.pow(NaN, +0));
46
assertEquals(1, Math.pow(NaN, -0));
48
assertEquals(NaN, Math.pow(NaN, NaN));
49
assertEquals(NaN, Math.pow(NaN, 2.2));
50
assertEquals(NaN, Math.pow(NaN, 1));
51
assertEquals(NaN, Math.pow(NaN, -1));
52
assertEquals(NaN, Math.pow(NaN, -2.2));
53
assertEquals(NaN, Math.pow(NaN, Infinity));
54
assertEquals(NaN, Math.pow(NaN, -Infinity));
56
assertEquals(Infinity, Math.pow(1.1, Infinity));
57
assertEquals(Infinity, Math.pow(-1.1, Infinity));
58
assertEquals(Infinity, Math.pow(2, Infinity));
59
assertEquals(Infinity, Math.pow(-2, Infinity));
61
// Because +0 == -0, we need to compare 1/{+,-}0 to {+,-}Infinity
62
assertEquals(+Infinity, 1/Math.pow(1.1, -Infinity));
63
assertEquals(+Infinity, 1/Math.pow(-1.1, -Infinity));
64
assertEquals(+Infinity, 1/Math.pow(2, -Infinity));
65
assertEquals(+Infinity, 1/Math.pow(-2, -Infinity));
67
assertEquals(NaN, Math.pow(1, Infinity));
68
assertEquals(NaN, Math.pow(1, -Infinity));
69
assertEquals(NaN, Math.pow(-1, Infinity));
70
assertEquals(NaN, Math.pow(-1, -Infinity));
72
assertEquals(+0, Math.pow(0.1, Infinity));
73
assertEquals(+0, Math.pow(-0.1, Infinity));
74
assertEquals(+0, Math.pow(0.999, Infinity));
75
assertEquals(+0, Math.pow(-0.999, Infinity));
77
assertEquals(Infinity, Math.pow(0.1, -Infinity));
78
assertEquals(Infinity, Math.pow(-0.1, -Infinity));
79
assertEquals(Infinity, Math.pow(0.999, -Infinity));
80
assertEquals(Infinity, Math.pow(-0.999, -Infinity));
82
assertEquals(Infinity, Math.pow(Infinity, 0.1));
83
assertEquals(Infinity, Math.pow(Infinity, 2));
85
assertEquals(+Infinity, 1/Math.pow(Infinity, -0.1));
86
assertEquals(+Infinity, 1/Math.pow(Infinity, -2));
88
assertEquals(-Infinity, Math.pow(-Infinity, 3));
89
assertEquals(-Infinity, Math.pow(-Infinity, 13));
91
assertEquals(Infinity, Math.pow(-Infinity, 3.1));
92
assertEquals(Infinity, Math.pow(-Infinity, 2));
94
assertEquals(-Infinity, 1/Math.pow(-Infinity, -3));
95
assertEquals(-Infinity, 1/Math.pow(-Infinity, -13));
97
assertEquals(+Infinity, 1/Math.pow(-Infinity, -3.1));
98
assertEquals(+Infinity, 1/Math.pow(-Infinity, -2));
100
assertEquals(+Infinity, 1/Math.pow(+0, 1.1));
101
assertEquals(+Infinity, 1/Math.pow(+0, 2));
103
assertEquals(Infinity, Math.pow(+0, -1.1));
104
assertEquals(Infinity, Math.pow(+0, -2));
106
assertEquals(-Infinity, 1/Math.pow(-0, 3));
107
assertEquals(-Infinity, 1/Math.pow(-0, 13));
109
assertEquals(+Infinity, 1/Math.pow(-0, 3.1));
110
assertEquals(+Infinity, 1/Math.pow(-0, 2));
112
assertEquals(-Infinity, Math.pow(-0, -3));
113
assertEquals(-Infinity, Math.pow(-0, -13));
115
assertEquals(Infinity, Math.pow(-0, -3.1));
116
assertEquals(Infinity, Math.pow(-0, -2));
118
assertEquals(NaN, Math.pow(-0.00001, 1.1));
119
assertEquals(NaN, Math.pow(-0.00001, -1.1));
120
assertEquals(NaN, Math.pow(-1.1, 1.1));
121
assertEquals(NaN, Math.pow(-1.1, -1.1));
122
assertEquals(NaN, Math.pow(-2, 1.1));
123
assertEquals(NaN, Math.pow(-2, -1.1));
124
assertEquals(NaN, Math.pow(-1000, 1.1));
125
assertEquals(NaN, Math.pow(-1000, -1.1));
127
assertEquals(+Infinity, 1/Math.pow(-0, 0.5));
128
assertEquals(+Infinity, 1/Math.pow(-0, 0.6));
129
assertEquals(-Infinity, 1/Math.pow(-0, 1));
130
assertEquals(-Infinity, 1/Math.pow(-0, 10000000001));
132
assertEquals(+Infinity, Math.pow(-0, -0.5));
133
assertEquals(+Infinity, Math.pow(-0, -0.6));
134
assertEquals(-Infinity, Math.pow(-0, -1));
135
assertEquals(-Infinity, Math.pow(-0, -10000000001));
139
// Tests from Sputnik S8.5_A13_T1.
140
assertTrue((1*((Math.pow(2,53))-1)*(Math.pow(2,-1074))) === 4.4501477170144023e-308);
141
assertTrue((1*(Math.pow(2,52))*(Math.pow(2,-1074))) === 2.2250738585072014e-308);
142
assertTrue((-1*(Math.pow(2,52))*(Math.pow(2,-1074))) === -2.2250738585072014e-308);
32
// Simple sanity check
33
assertEquals(4, Math.pow(2, 2));
34
assertEquals(2147483648, Math.pow(2, 31));
35
assertEquals(0.25, Math.pow(2, -2));
36
assertEquals(0.0625, Math.pow(2, -4));
37
assertEquals(1, Math.pow(1, 100));
38
assertEquals(0, Math.pow(0, 1000));
41
assertEquals(NaN, Math.pow(2, NaN));
42
assertEquals(NaN, Math.pow(+0, NaN));
43
assertEquals(NaN, Math.pow(-0, NaN));
44
assertEquals(NaN, Math.pow(Infinity, NaN));
45
assertEquals(NaN, Math.pow(-Infinity, NaN));
47
assertEquals(1, Math.pow(NaN, +0));
48
assertEquals(1, Math.pow(NaN, -0));
50
assertEquals(NaN, Math.pow(NaN, NaN));
51
assertEquals(NaN, Math.pow(NaN, 2.2));
52
assertEquals(NaN, Math.pow(NaN, 1));
53
assertEquals(NaN, Math.pow(NaN, -1));
54
assertEquals(NaN, Math.pow(NaN, -2.2));
55
assertEquals(NaN, Math.pow(NaN, Infinity));
56
assertEquals(NaN, Math.pow(NaN, -Infinity));
58
assertEquals(Infinity, Math.pow(1.1, Infinity));
59
assertEquals(Infinity, Math.pow(-1.1, Infinity));
60
assertEquals(Infinity, Math.pow(2, Infinity));
61
assertEquals(Infinity, Math.pow(-2, Infinity));
63
// Because +0 == -0, we need to compare 1/{+,-}0 to {+,-}Infinity
64
assertEquals(+Infinity, 1/Math.pow(1.1, -Infinity));
65
assertEquals(+Infinity, 1/Math.pow(-1.1, -Infinity));
66
assertEquals(+Infinity, 1/Math.pow(2, -Infinity));
67
assertEquals(+Infinity, 1/Math.pow(-2, -Infinity));
69
assertEquals(NaN, Math.pow(1, Infinity));
70
assertEquals(NaN, Math.pow(1, -Infinity));
71
assertEquals(NaN, Math.pow(-1, Infinity));
72
assertEquals(NaN, Math.pow(-1, -Infinity));
74
assertEquals(+0, Math.pow(0.1, Infinity));
75
assertEquals(+0, Math.pow(-0.1, Infinity));
76
assertEquals(+0, Math.pow(0.999, Infinity));
77
assertEquals(+0, Math.pow(-0.999, Infinity));
79
assertEquals(Infinity, Math.pow(0.1, -Infinity));
80
assertEquals(Infinity, Math.pow(-0.1, -Infinity));
81
assertEquals(Infinity, Math.pow(0.999, -Infinity));
82
assertEquals(Infinity, Math.pow(-0.999, -Infinity));
84
assertEquals(Infinity, Math.pow(Infinity, 0.1));
85
assertEquals(Infinity, Math.pow(Infinity, 2));
87
assertEquals(+Infinity, 1/Math.pow(Infinity, -0.1));
88
assertEquals(+Infinity, 1/Math.pow(Infinity, -2));
90
assertEquals(-Infinity, Math.pow(-Infinity, 3));
91
assertEquals(-Infinity, Math.pow(-Infinity, 13));
93
assertEquals(Infinity, Math.pow(-Infinity, 3.1));
94
assertEquals(Infinity, Math.pow(-Infinity, 2));
96
assertEquals(-Infinity, 1/Math.pow(-Infinity, -3));
97
assertEquals(-Infinity, 1/Math.pow(-Infinity, -13));
99
assertEquals(+Infinity, 1/Math.pow(-Infinity, -3.1));
100
assertEquals(+Infinity, 1/Math.pow(-Infinity, -2));
102
assertEquals(+Infinity, 1/Math.pow(+0, 1.1));
103
assertEquals(+Infinity, 1/Math.pow(+0, 2));
105
assertEquals(Infinity, Math.pow(+0, -1.1));
106
assertEquals(Infinity, Math.pow(+0, -2));
108
assertEquals(-Infinity, 1/Math.pow(-0, 3));
109
assertEquals(-Infinity, 1/Math.pow(-0, 13));
111
assertEquals(+Infinity, 1/Math.pow(-0, 3.1));
112
assertEquals(+Infinity, 1/Math.pow(-0, 2));
114
assertEquals(-Infinity, Math.pow(-0, -3));
115
assertEquals(-Infinity, Math.pow(-0, -13));
117
assertEquals(Infinity, Math.pow(-0, -3.1));
118
assertEquals(Infinity, Math.pow(-0, -2));
120
assertEquals(NaN, Math.pow(-0.00001, 1.1));
121
assertEquals(NaN, Math.pow(-0.00001, -1.1));
122
assertEquals(NaN, Math.pow(-1.1, 1.1));
123
assertEquals(NaN, Math.pow(-1.1, -1.1));
124
assertEquals(NaN, Math.pow(-2, 1.1));
125
assertEquals(NaN, Math.pow(-2, -1.1));
126
assertEquals(NaN, Math.pow(-1000, 1.1));
127
assertEquals(NaN, Math.pow(-1000, -1.1));
129
assertEquals(+Infinity, 1/Math.pow(-0, 0.5));
130
assertEquals(+Infinity, 1/Math.pow(-0, 0.6));
131
assertEquals(-Infinity, 1/Math.pow(-0, 1));
132
assertEquals(-Infinity, 1/Math.pow(-0, 10000000001));
134
assertEquals(+Infinity, Math.pow(-0, -0.5));
135
assertEquals(+Infinity, Math.pow(-0, -0.6));
136
assertEquals(-Infinity, Math.pow(-0, -1));
137
assertEquals(-Infinity, Math.pow(-0, -10000000001));
139
assertEquals(4, Math.pow(16, 0.5));
140
assertEquals(NaN, Math.pow(-16, 0.5));
141
assertEquals(0.25, Math.pow(16, -0.5));
142
assertEquals(NaN, Math.pow(-16, -0.5));
144
// Test detecting and converting integer value as double.
145
assertEquals(8, Math.pow(2, Math.sqrt(9)));
147
// Tests from Mozilla 15.8.2.13.
148
assertEquals(2, Math.pow.length);
149
assertEquals(NaN, Math.pow());
150
assertEquals(1, Math.pow(null, null));
151
assertEquals(NaN, Math.pow(void 0, void 0));
152
assertEquals(1, Math.pow(true, false));
153
assertEquals(0, Math.pow(false, true));
154
assertEquals(Infinity, Math.pow(-Infinity, Infinity));
155
assertEquals(0, Math.pow(-Infinity, -Infinity));
156
assertEquals(1, Math.pow(0, 0));
157
assertEquals(0, Math.pow(0, Infinity));
158
assertEquals(NaN, Math.pow(NaN, 0.5));
159
assertEquals(NaN, Math.pow(NaN, -0.5));
161
// Tests from Sputnik S8.5_A13_T1.
163
(1*((Math.pow(2,53))-1)*(Math.pow(2,-1074))) === 4.4501477170144023e-308);
165
(1*(Math.pow(2,52))*(Math.pow(2,-1074))) === 2.2250738585072014e-308);
167
(-1*(Math.pow(2,52))*(Math.pow(2,-1074))) === -2.2250738585072014e-308);
172
%OptimizeFunctionOnNextCall(test);
b'\\ No newline at end of file'