I believe that these are all now in a good state for final reviews & merge. There are no dependencies between them, so can go in piecemeal. However, I do need a hand debugging a docs build error for ENH: Add the `__pow__` operator for Rotations https://github.com/scipy/scipy/pull/17452. I have not been able to figure out the error after many iterations and attempting to get a more verbose output building docs locally. Summary of changes since the first email: * ENH: Implement Rotation.align_constrain() classmethod https://github.com/scipy/scipy/pull/17542 - extended to allow aligning just primary vectors, such that the primary vectors will be aligned with no rotation about the secondary. This is also the fallback behavior for parallel primary and secondary vectors. Closes an additional issue as a result. * ENH: New Rotation methods: rotation_to(), angle_to(), approx_equal() https://github.com/scipy/scipy/pull/17460 - renamed original functions per reviewer suggestions. * ENH: Map the rotation quaternion double cover of rotation space to a unique single cover https://github.com/scipy/scipy/pull/17334 - a lot of interesting technical discussion, updated name of flag from `single_cover` to `canonical`. * ENH: Add the __pow__ operator for Rotations https://github.com/scipy/scipy/pull/17452 - added support for negative exponents, such that `R ** -2 == R.inv() ** 2`.