3v4l.org

run code in 300+ PHP versions simultaneously
<?php $leftOperand = '-0.00000000099999'; $modulus = '-0.00056'; $scale =14; bcscale($scale); //echo bcmod($leftOperand, $modulus); foreach( [ [4,3,1], [-4,3,2], [-4,-3,1], [4,-3,-2], [3,4,3], [-3,4,1], [-3,-4,1], [3,-4,-1], ] as $d) { echo "\r\nia $d[0] % $d[1] =".iaBcMod($d[0], $d[1], 0). " vs bcmod=".bcmod($d[0], $d[1])." vs wolfman=".$d[2]; } function iaBcMod($leftOperand, $modulus, $scale) { $frac = bcdiv($leftOperand, $modulus, $scale); if( $frac[0] === '-') { return bcsub( $leftOperand, bcmul($modulus, ceil($frac), $scale), $scale ); } return bcsub( $leftOperand, bcmul($modulus, floor($frac), $scale), $scale ); }
Output for 7.3.32 - 7.3.33, 7.4.33, 8.0.13, 8.5.1 - 8.5.3
Fatal error: Uncaught Error: Call to undefined function bcscale() in /in/RWuiM:5 Stack trace: #0 {main} thrown in /in/RWuiM on line 5
Process exited with code 255.
Output for 7.2.0 - 7.2.33, 7.3.16 - 7.3.31, 7.4.0 - 7.4.32, 8.0.0 - 8.0.12, 8.0.14 - 8.0.30, 8.1.0 - 8.1.34, 8.2.0 - 8.2.30, 8.3.0 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0
ia 4 % 3 =1 vs bcmod=1.00000000000000 vs wolfman=1 ia -4 % 3 =-1 vs bcmod=-1.00000000000000 vs wolfman=2 ia -4 % -3 =-1 vs bcmod=-1.00000000000000 vs wolfman=1 ia 4 % -3 =1 vs bcmod=1.00000000000000 vs wolfman=-2 ia 3 % 4 =3 vs bcmod=3.00000000000000 vs wolfman=3 ia -3 % 4 =-3 vs bcmod=-3.00000000000000 vs wolfman=1 ia -3 % -4 =-3 vs bcmod=-3.00000000000000 vs wolfman=1 ia 3 % -4 =3 vs bcmod=3.00000000000000 vs wolfman=-1
Output for 7.1.0 - 7.1.20
ia 4 % 3 =1 vs bcmod=1 vs wolfman=1 ia -4 % 3 =-1 vs bcmod=-1 vs wolfman=2 ia -4 % -3 =-1 vs bcmod=-1 vs wolfman=1 ia 4 % -3 =1 vs bcmod=1 vs wolfman=-2 ia 3 % 4 =3 vs bcmod=3 vs wolfman=3 ia -3 % 4 =-3 vs bcmod=-3 vs wolfman=1 ia -3 % -4 =-3 vs bcmod=-3 vs wolfman=1 ia 3 % -4 =3 vs bcmod=3 vs wolfman=-1

preferences:
97.09 ms | 1495 KiB | 4 Q