maybe we should overload std::isfinite for quaternions