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