浮動小数点実数のかけ算と足し算を延々やった挙句に、 atan() とったりすると流石に見た目では同じ値が出ていたって if 文じゃちゃんとマッチしない。仮数部bit の尻尾の方で微妙に違ってるんだろうな。
しょうがないので float に down cast して回避(勝利)