Add a vectorized implementation of atan2 to Eigen.
Reference issue
What does this implement/fix?
This adds support for the array syntax z = x.atan2(y) and the corresponding global function z = atan2(x,y). Since the common case is atan2(x) = atan(y/x) and atan() is already vectorized, this MR mostly adds global declarations and vectorized handling of special cases, as specified at https://en.cppreference.com/w/cpp/numeric/math/atan2.
Additional information
Speedup is about 12.4x for AVX512 on large arrays. See detailed benchmark numbers here: $2418433
Edited by Rasmus Munk Larsen