arc tangentテーブルを使ってarc tangentを求める

private final int tmax = 16;
private final int n = 8;
//これを使用するのは、atan_tableが作成されていることが条件
public int atan(int x, int y){
    if(x==0 && y==0) throw new RuntimeException("
        原点から原点のarc tangentを求めようとした");
    if(y<0) return atan0(-x,-y)+(1<<(tmax-1));
    return atan0(x,y);
}
//この辺は内部的に使用する
private int atan0(int x, int y){
    if(x<0) return atan1(y,-x)+(1<<(tmax-2));
    return atan1(x,y);
}
private int atan1(int x, int y){
    if(x==y) return 1<<(tmax-3);
    if(y>x) return (1<<(tmax-2))-atan2(y,x);
    return atan2(x,y);
}
private int atan2(int x, int y){
    if(x==0) return 0;
    int r = (int)(((long)y<<n)/x);
    return atanTable[r];
}

やね本2(ISBN:4798006033)を参考に(というかコピペ)作りました。
これでどんなシューティングも怖くないぞ〜(嘘