summaryrefslogtreecommitdiff
path: root/ext/standard/tests/math/round.phpt
blob: 6bcda70f148954d83cd26731d9ba47964792809b (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
--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)