in reply to Calculation discrepancy between Perl versions

It looks to me all of your @x, @y, $v?s, $m?s and $d are integers. $A, $B, and $C are all integers divided by the same number ($d). You should be able to rewrite your calculations so you factor out dividing by $d - if I'm not mistaken, skipping the three divisions by $d, and replacing the adjustment of $C by doing $C -= $tgt * $d; should do this.

This reduces the amount of floating point calculations, and hence the rounding errors. Of course, there still may be floating point calculations if any of intermediate integers becomes "too large". (Print out $A, $B, $C and $d to make sure).