xref: /PHP-8.4/ext/standard/tests/math/round.phpt (revision 3a4b8966)
1--TEST--
2Simple math 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
11function epsilon_equal($left, $right): bool {
12    return abs(($left-$right) / $left) < 1e-12;
13}
14
15var_dump(epsilon_equal( -1 , ceil(-1.5) ));
16var_dump(epsilon_equal( 2 , ceil( 1.5) ));
17var_dump(epsilon_equal( -2 , floor(-1.5) ));
18var_dump(epsilon_equal( 1 , floor(1.5) ));
19var_dump(epsilon_equal( LONG_MIN   , ceil(LONG_MIN - 0.5) ));
20var_dump(epsilon_equal( LONG_MIN+1 , ceil(LONG_MIN + 0.5) ));
21var_dump(epsilon_equal( LONG_MIN-1 , round(LONG_MIN - 0.6) ));
22var_dump(epsilon_equal( LONG_MIN   , round(LONG_MIN - 0.4) ));
23var_dump(epsilon_equal( LONG_MIN   , round(LONG_MIN + 0.4) ));
24var_dump(epsilon_equal( LONG_MIN+1 , round(LONG_MIN + 0.6) ));
25var_dump(epsilon_equal( LONG_MIN-1 , floor(LONG_MIN - 0.5) ));
26var_dump(epsilon_equal( LONG_MIN   , floor(LONG_MIN + 0.5) ));
27var_dump(epsilon_equal( LONG_MAX   , ceil(LONG_MAX - 0.5) ));
28var_dump(epsilon_equal( LONG_MAX+1 , ceil(LONG_MAX + 0.5) ));
29var_dump(epsilon_equal( LONG_MAX-1 , round(LONG_MAX - 0.6) ));
30var_dump(epsilon_equal( LONG_MAX   , round(LONG_MAX - 0.4) ));
31var_dump(epsilon_equal( LONG_MAX   , round(LONG_MAX + 0.4) ));
32var_dump(epsilon_equal( LONG_MAX+1 , round(LONG_MAX + 0.6) ));
33var_dump(epsilon_equal( LONG_MAX-1 , floor(LONG_MAX - 0.5) ));
34var_dump(epsilon_equal( LONG_MAX   , floor(LONG_MAX + 0.5) ));
35
36?>
37--EXPECT--
381,1,0,0
39bool(true)
40bool(true)
41bool(true)
42bool(true)
43bool(true)
44bool(true)
45bool(true)
46bool(true)
47bool(true)
48bool(true)
49bool(true)
50bool(true)
51bool(true)
52bool(true)
53bool(true)
54bool(true)
55bool(true)
56bool(true)
57bool(true)
58bool(true)
59