1--TEST--
2Test fmod function : 64bit long tests
3--SKIPIF--
4<?php
5if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only");
6?>
7--FILE--
8<?php
9
10define("MAX_64Bit", 9223372036854775807);
11define("MAX_32Bit", 2147483647);
12define("MIN_64Bit", -9223372036854775807 - 1);
13define("MIN_32Bit", -2147483647 - 1);
14
15$longVals = array(
16    MAX_64Bit, MIN_64Bit, MAX_32Bit, MIN_32Bit, MAX_64Bit - MAX_32Bit, MIN_64Bit - MIN_32Bit,
17    MAX_32Bit + 1, MIN_32Bit - 1, MAX_32Bit * 2, (MAX_32Bit * 2) + 1, (MAX_32Bit * 2) - 1,
18    MAX_64Bit -1, MAX_64Bit + 1, MIN_64Bit + 1, MIN_64Bit - 1
19);
20
21$otherVals = array(0, 1, -1, 7, 9, 65, -44, MAX_32Bit, MIN_32Bit, MAX_64Bit, MIN_64Bit);
22
23
24foreach ($longVals as $longVal) {
25   foreach($otherVals as $otherVal) {
26	   echo "--- testing: $longVal, $otherVal ---\n";
27      var_dump(fmod($longVal, $otherVal));
28   }
29}
30
31?>
32===DONE===
33--EXPECT--
34--- testing: 9223372036854775807, 0 ---
35float(NAN)
36--- testing: 9223372036854775807, 1 ---
37float(0)
38--- testing: 9223372036854775807, -1 ---
39float(0)
40--- testing: 9223372036854775807, 7 ---
41float(1)
42--- testing: 9223372036854775807, 9 ---
43float(8)
44--- testing: 9223372036854775807, 65 ---
45float(8)
46--- testing: 9223372036854775807, -44 ---
47float(8)
48--- testing: 9223372036854775807, 2147483647 ---
49float(2)
50--- testing: 9223372036854775807, -2147483648 ---
51float(0)
52--- testing: 9223372036854775807, 9223372036854775807 ---
53float(0)
54--- testing: 9223372036854775807, -9223372036854775808 ---
55float(0)
56--- testing: -9223372036854775808, 0 ---
57float(NAN)
58--- testing: -9223372036854775808, 1 ---
59float(-0)
60--- testing: -9223372036854775808, -1 ---
61float(-0)
62--- testing: -9223372036854775808, 7 ---
63float(-1)
64--- testing: -9223372036854775808, 9 ---
65float(-8)
66--- testing: -9223372036854775808, 65 ---
67float(-8)
68--- testing: -9223372036854775808, -44 ---
69float(-8)
70--- testing: -9223372036854775808, 2147483647 ---
71float(-2)
72--- testing: -9223372036854775808, -2147483648 ---
73float(-0)
74--- testing: -9223372036854775808, 9223372036854775807 ---
75float(-0)
76--- testing: -9223372036854775808, -9223372036854775808 ---
77float(-0)
78--- testing: 2147483647, 0 ---
79float(NAN)
80--- testing: 2147483647, 1 ---
81float(0)
82--- testing: 2147483647, -1 ---
83float(0)
84--- testing: 2147483647, 7 ---
85float(1)
86--- testing: 2147483647, 9 ---
87float(1)
88--- testing: 2147483647, 65 ---
89float(62)
90--- testing: 2147483647, -44 ---
91float(23)
92--- testing: 2147483647, 2147483647 ---
93float(0)
94--- testing: 2147483647, -2147483648 ---
95float(2147483647)
96--- testing: 2147483647, 9223372036854775807 ---
97float(2147483647)
98--- testing: 2147483647, -9223372036854775808 ---
99float(2147483647)
100--- testing: -2147483648, 0 ---
101float(NAN)
102--- testing: -2147483648, 1 ---
103float(-0)
104--- testing: -2147483648, -1 ---
105float(-0)
106--- testing: -2147483648, 7 ---
107float(-2)
108--- testing: -2147483648, 9 ---
109float(-2)
110--- testing: -2147483648, 65 ---
111float(-63)
112--- testing: -2147483648, -44 ---
113float(-24)
114--- testing: -2147483648, 2147483647 ---
115float(-1)
116--- testing: -2147483648, -2147483648 ---
117float(-0)
118--- testing: -2147483648, 9223372036854775807 ---
119float(-2147483648)
120--- testing: -2147483648, -9223372036854775808 ---
121float(-2147483648)
122--- testing: 9223372034707292160, 0 ---
123float(NAN)
124--- testing: 9223372034707292160, 1 ---
125float(0)
126--- testing: 9223372034707292160, -1 ---
127float(0)
128--- testing: 9223372034707292160, 7 ---
129float(6)
130--- testing: 9223372034707292160, 9 ---
131float(6)
132--- testing: 9223372034707292160, 65 ---
133float(10)
134--- testing: 9223372034707292160, -44 ---
135float(28)
136--- testing: 9223372034707292160, 2147483647 ---
137float(1)
138--- testing: 9223372034707292160, -2147483648 ---
139float(0)
140--- testing: 9223372034707292160, 9223372036854775807 ---
141float(9.2233720347073E+18)
142--- testing: 9223372034707292160, -9223372036854775808 ---
143float(9.2233720347073E+18)
144--- testing: -9223372034707292160, 0 ---
145float(NAN)
146--- testing: -9223372034707292160, 1 ---
147float(-0)
148--- testing: -9223372034707292160, -1 ---
149float(-0)
150--- testing: -9223372034707292160, 7 ---
151float(-6)
152--- testing: -9223372034707292160, 9 ---
153float(-6)
154--- testing: -9223372034707292160, 65 ---
155float(-10)
156--- testing: -9223372034707292160, -44 ---
157float(-28)
158--- testing: -9223372034707292160, 2147483647 ---
159float(-1)
160--- testing: -9223372034707292160, -2147483648 ---
161float(-0)
162--- testing: -9223372034707292160, 9223372036854775807 ---
163float(-9.2233720347073E+18)
164--- testing: -9223372034707292160, -9223372036854775808 ---
165float(-9.2233720347073E+18)
166--- testing: 2147483648, 0 ---
167float(NAN)
168--- testing: 2147483648, 1 ---
169float(0)
170--- testing: 2147483648, -1 ---
171float(0)
172--- testing: 2147483648, 7 ---
173float(2)
174--- testing: 2147483648, 9 ---
175float(2)
176--- testing: 2147483648, 65 ---
177float(63)
178--- testing: 2147483648, -44 ---
179float(24)
180--- testing: 2147483648, 2147483647 ---
181float(1)
182--- testing: 2147483648, -2147483648 ---
183float(0)
184--- testing: 2147483648, 9223372036854775807 ---
185float(2147483648)
186--- testing: 2147483648, -9223372036854775808 ---
187float(2147483648)
188--- testing: -2147483649, 0 ---
189float(NAN)
190--- testing: -2147483649, 1 ---
191float(-0)
192--- testing: -2147483649, -1 ---
193float(-0)
194--- testing: -2147483649, 7 ---
195float(-3)
196--- testing: -2147483649, 9 ---
197float(-3)
198--- testing: -2147483649, 65 ---
199float(-64)
200--- testing: -2147483649, -44 ---
201float(-25)
202--- testing: -2147483649, 2147483647 ---
203float(-2)
204--- testing: -2147483649, -2147483648 ---
205float(-1)
206--- testing: -2147483649, 9223372036854775807 ---
207float(-2147483649)
208--- testing: -2147483649, -9223372036854775808 ---
209float(-2147483649)
210--- testing: 4294967294, 0 ---
211float(NAN)
212--- testing: 4294967294, 1 ---
213float(0)
214--- testing: 4294967294, -1 ---
215float(0)
216--- testing: 4294967294, 7 ---
217float(2)
218--- testing: 4294967294, 9 ---
219float(2)
220--- testing: 4294967294, 65 ---
221float(59)
222--- testing: 4294967294, -44 ---
223float(2)
224--- testing: 4294967294, 2147483647 ---
225float(0)
226--- testing: 4294967294, -2147483648 ---
227float(2147483646)
228--- testing: 4294967294, 9223372036854775807 ---
229float(4294967294)
230--- testing: 4294967294, -9223372036854775808 ---
231float(4294967294)
232--- testing: 4294967295, 0 ---
233float(NAN)
234--- testing: 4294967295, 1 ---
235float(0)
236--- testing: 4294967295, -1 ---
237float(0)
238--- testing: 4294967295, 7 ---
239float(3)
240--- testing: 4294967295, 9 ---
241float(3)
242--- testing: 4294967295, 65 ---
243float(60)
244--- testing: 4294967295, -44 ---
245float(3)
246--- testing: 4294967295, 2147483647 ---
247float(1)
248--- testing: 4294967295, -2147483648 ---
249float(2147483647)
250--- testing: 4294967295, 9223372036854775807 ---
251float(4294967295)
252--- testing: 4294967295, -9223372036854775808 ---
253float(4294967295)
254--- testing: 4294967293, 0 ---
255float(NAN)
256--- testing: 4294967293, 1 ---
257float(0)
258--- testing: 4294967293, -1 ---
259float(0)
260--- testing: 4294967293, 7 ---
261float(1)
262--- testing: 4294967293, 9 ---
263float(1)
264--- testing: 4294967293, 65 ---
265float(58)
266--- testing: 4294967293, -44 ---
267float(1)
268--- testing: 4294967293, 2147483647 ---
269float(2147483646)
270--- testing: 4294967293, -2147483648 ---
271float(2147483645)
272--- testing: 4294967293, 9223372036854775807 ---
273float(4294967293)
274--- testing: 4294967293, -9223372036854775808 ---
275float(4294967293)
276--- testing: 9223372036854775806, 0 ---
277float(NAN)
278--- testing: 9223372036854775806, 1 ---
279float(0)
280--- testing: 9223372036854775806, -1 ---
281float(0)
282--- testing: 9223372036854775806, 7 ---
283float(1)
284--- testing: 9223372036854775806, 9 ---
285float(8)
286--- testing: 9223372036854775806, 65 ---
287float(8)
288--- testing: 9223372036854775806, -44 ---
289float(8)
290--- testing: 9223372036854775806, 2147483647 ---
291float(2)
292--- testing: 9223372036854775806, -2147483648 ---
293float(0)
294--- testing: 9223372036854775806, 9223372036854775807 ---
295float(0)
296--- testing: 9223372036854775806, -9223372036854775808 ---
297float(0)
298--- testing: 9.2233720368548E+18, 0 ---
299float(NAN)
300--- testing: 9.2233720368548E+18, 1 ---
301float(0)
302--- testing: 9.2233720368548E+18, -1 ---
303float(0)
304--- testing: 9.2233720368548E+18, 7 ---
305float(1)
306--- testing: 9.2233720368548E+18, 9 ---
307float(8)
308--- testing: 9.2233720368548E+18, 65 ---
309float(8)
310--- testing: 9.2233720368548E+18, -44 ---
311float(8)
312--- testing: 9.2233720368548E+18, 2147483647 ---
313float(2)
314--- testing: 9.2233720368548E+18, -2147483648 ---
315float(0)
316--- testing: 9.2233720368548E+18, 9223372036854775807 ---
317float(0)
318--- testing: 9.2233720368548E+18, -9223372036854775808 ---
319float(0)
320--- testing: -9223372036854775807, 0 ---
321float(NAN)
322--- testing: -9223372036854775807, 1 ---
323float(-0)
324--- testing: -9223372036854775807, -1 ---
325float(-0)
326--- testing: -9223372036854775807, 7 ---
327float(-1)
328--- testing: -9223372036854775807, 9 ---
329float(-8)
330--- testing: -9223372036854775807, 65 ---
331float(-8)
332--- testing: -9223372036854775807, -44 ---
333float(-8)
334--- testing: -9223372036854775807, 2147483647 ---
335float(-2)
336--- testing: -9223372036854775807, -2147483648 ---
337float(-0)
338--- testing: -9223372036854775807, 9223372036854775807 ---
339float(-0)
340--- testing: -9223372036854775807, -9223372036854775808 ---
341float(-0)
342--- testing: -9.2233720368548E+18, 0 ---
343float(NAN)
344--- testing: -9.2233720368548E+18, 1 ---
345float(-0)
346--- testing: -9.2233720368548E+18, -1 ---
347float(-0)
348--- testing: -9.2233720368548E+18, 7 ---
349float(-1)
350--- testing: -9.2233720368548E+18, 9 ---
351float(-8)
352--- testing: -9.2233720368548E+18, 65 ---
353float(-8)
354--- testing: -9.2233720368548E+18, -44 ---
355float(-8)
356--- testing: -9.2233720368548E+18, 2147483647 ---
357float(-2)
358--- testing: -9.2233720368548E+18, -2147483648 ---
359float(-0)
360--- testing: -9.2233720368548E+18, 9223372036854775807 ---
361float(-0)
362--- testing: -9.2233720368548E+18, -9223372036854775808 ---
363float(-0)
364===DONE===
365