Additionally, I rearranged some of the (internal) helper functions that are dealing with the imaginary components of the quaternions and moved them into a separate file. These have previously been used exclusively for transformations but are now used throughout the elementary functions and for testing.
Much like the initial implementation of quaternions, this is an adaptation of the great work that has already been done on the elementary functions of complex numbers.
(*) I realized this PR gets quite big if all the elementary functions are part of one PR, especially since the log-like functions may benefit from changes outside the quaternion module – and so I removed them and the pow-like functions.
A first stab at elementary functions for quaternions(*).
It provides all exp-like functions; where "branch cuts" are not an issue, i.e: exp, expMinusOne, cosh, sinh, tanh, cos, sin and tan
Additionally, I rearranged some of the (internal) helper functions that are dealing with the imaginary components of the quaternions and moved them into a separate file. These have previously been used exclusively for transformations but are now used throughout the elementary functions and for testing.
Much like the initial implementation of quaternions, this is an adaptation of the great work that has already been done on the elementary functions of complex numbers.
(*) I realized this PR gets quite big if all the elementary functions are part of one PR, especially since the log-like functions may benefit from changes outside the quaternion module – and so I removed them and the pow-like functions.