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
|
--TEST--
Simple math tests
--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));
function epsilon_equal($left, $right): bool {
return abs(($left-$right) / $left) < 1e-12;
}
var_dump(epsilon_equal( -1 , ceil(-1.5) ));
var_dump(epsilon_equal( 2 , ceil( 1.5) ));
var_dump(epsilon_equal( -2 , floor(-1.5) ));
var_dump(epsilon_equal( 1 , floor(1.5) ));
var_dump(epsilon_equal( LONG_MIN , ceil(LONG_MIN - 0.5) ));
var_dump(epsilon_equal( LONG_MIN+1 , ceil(LONG_MIN + 0.5) ));
var_dump(epsilon_equal( LONG_MIN-1 , round(LONG_MIN - 0.6) ));
var_dump(epsilon_equal( LONG_MIN , round(LONG_MIN - 0.4) ));
var_dump(epsilon_equal( LONG_MIN , round(LONG_MIN + 0.4) ));
var_dump(epsilon_equal( LONG_MIN+1 , round(LONG_MIN + 0.6) ));
var_dump(epsilon_equal( LONG_MIN-1 , floor(LONG_MIN - 0.5) ));
var_dump(epsilon_equal( LONG_MIN , floor(LONG_MIN + 0.5) ));
var_dump(epsilon_equal( LONG_MAX , ceil(LONG_MAX - 0.5) ));
var_dump(epsilon_equal( LONG_MAX+1 , ceil(LONG_MAX + 0.5) ));
var_dump(epsilon_equal( LONG_MAX-1 , round(LONG_MAX - 0.6) ));
var_dump(epsilon_equal( LONG_MAX , round(LONG_MAX - 0.4) ));
var_dump(epsilon_equal( LONG_MAX , round(LONG_MAX + 0.4) ));
var_dump(epsilon_equal( LONG_MAX+1 , round(LONG_MAX + 0.6) ));
var_dump(epsilon_equal( LONG_MAX-1 , floor(LONG_MAX - 0.5) ));
var_dump(epsilon_equal( LONG_MAX , floor(LONG_MAX + 0.5) ));
?>
--EXPECT--
1,1,0,0
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
|