Fast Math.exp
I started on a FastMath class and then caved and started playing with this one. Just thought I'd offer up a fast Math.exp I found from this blog (via StackOverflow):
public static double exp(double val) {
final long tmp = (long) (1512775 * val + 1072632447);
return Double.longBitsToDouble(tmp << 32);
}
Probably doesn't matter to most of you, but if you're doing DC with gaussians it might. I actually use a different kernel density in my main gun because 20,000 Math.exp's each time I aim would be pretty slow. (Not sure the above would solve that, but anyway...)
FYI - testing for values between -20 and 0, which would be the range if you're doing gaussians with bandwidth = 1/2 bot width and up to 40 bot widths.
Math.exp() time: 0.30864 seconds FastMath.exp() time: 0.06371 seconds FastMath.exp() worst error: 0.02899 FastMath.exp() avg error: 0.00073
Or for -3 to 0:
== exp Test == Math.exp() time: 0.38425 seconds FastMath.exp() time: 0.07076 seconds FastMath.exp() worst error: 0.02899 FastMath.exp() avg error: 0.00464
Yeah, I didn't update the main page, didn't want to overwrite others' functions. Try the atan/atan2 I posted, they're much more accurate I think.
You do not have permission to edit this page, for the following reasons:
You can view and copy the source of this page.
Return to Thread:User talk:Rednaxela/FastTrig/Fast Math.exp/reply (5).
Just tried that fast exp with a dc/gaussian kernel/swarm targeting gun. 5,5% APS decrease in meleerumble, 12,4% APS decrease in teamrumble. :( Too imprecise for swarm targeting, and you notice the gun shaking a lot more.
But in 1v1 there was no APS hit (0,1% APS increase).
Found out its because that function doesn´t work for values outside -700 and 700.