14template <nem::scalar_type T> constexpr T mod(T a, T b, nem::unsafe_t)
16 const T absb = nem::abs(b);
17 const T v = a - nem::floor(a / b) * b;
18 const T r = v < 0 ? v + absb : v;
19 return nem::equal(r, absb) ? (T)0.0 : r;
25template <nem::scalar_type T> constexpr T mod(T a, T b, nem::safe_t = nem::safe)
29 return nem::error::invalid_result<T>(nem::error::Kind::DivisionByZero);
31 return nem::mod(a, b, nem::unsafe);