if (rad >= 2.0 * M_PI)
while (rad > 2.0 * M_PI)
rad -= 2.0 * M_PI;
else if (rad < 0.0)
while (rad < 0.0)
rad += 2.0 * M_PI;

これで>>776は実現出来ると思う
後は階乗の項が後に行くとすごく小さくなり足してもほとんど意味をなさなくなる
積み残し誤差は先程説明したのでそこだけだな