* math.Atan2 is in the standard library, so it should know it has no side effects and can be replaced with an empty statement. Unless Go has a way to mark a function as not having side effects, no user-defined function would have that property.
* The only observable impact of the loop if math.Atan2 is removed is that b.N could be a larger size type than n, so it could loop forever depending on the values. If they're known to be the same type, it could eliminate the loop entirely.
Are you sure you're compiling with optimizations enabled?
I also wonder if that DIVSD instruction in yours might cause a floating point exception, which would be a different behavior compared to atan2.