Even if your algorithm is correct, it won't work with wrong target. You could try SimpleBot 0.022c, which uses traditional HOT (for stationary bot) with random fire power. If the algorithm is all right, it would at least shield a lot.
That version is not in http://robocode-archive.strangeautomata.com/robots/ :P
Just added a link to it ;) Just forgot that It is never released.
Got shooted some times, but shielded well. All the times I was hit, the error compared to my predicted angle was something around 10^(-16). I suppose it's not enough to cause a miss. Or is it?
No, it's not enough. Anything below 1e-8 can be considered as round-off errors, and the firing range you shadowed is much much bigger. You may try some debug graphics to see if everything works as expected, say, if they collide at calculated point.
That could be enough to cause a miss if you aren't moving to intersect the bullet. I think you should check what the predicted width of your shielded area is, and compare that to EnergyDome. It is a balance moving when you make the shot to get a bigger intersection area, because that means learning guns might learn your movement and not shoot HOT anymore. But not moving at all means your intersection width might be too small to be able to hit if enemies are predicting their movement.
Also remember that even if they aren't predicting their next location, if they make a shot while they are standing still (eg changing direction) then their aiming will be at your center and you will need to move when you fire to intercept the bullet.
Yes, this is crucial. But in my experience, when I set the threshold to 1e-14, it works pretty well — If the angle between your bullet and their bullet is below 1e-14, move. Else, don't move.
I also tried to take how good the intersection into account (etc. if the intersection is below 0.1, also move), but no improvement at all.
Therefore I think it's not because 1e-16 caused the miss — even 0 is not enough, when the angle is below 1e-14, the game just ignores the intersection.