pub fn nlerp(self, mut other: Quaternion<S>, amount: S) -> Quaternion<S> {
        if self.dot(other) < S::zero() {
            other = -other;
        }

        (self * (S::one() - amount) + other * amount).normalize()
    }
Do a normalized linear interpolation with `other`, by `amount`.

This takes the shortest path, so if the quaternions have a negative
dot product, the interpolation will be between `self` and `-other`.
src/quaternion.rs