apple / swift-numerics

Advanced mathematical types and functions for Swift
Apache License 2.0
1.67k stars 142 forks source link

Conform Quaternion to `ElementaryFunction`s (exp-like functions) #206

Closed markuswntr closed 2 years ago

markuswntr commented 2 years ago

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.