Better idiv & imod implementation
This commit is contained in:
parent
1584301a21
commit
f9dda53c61
1 changed files with 6 additions and 4 deletions
|
|
@ -155,15 +155,17 @@ namespace psemek::geom
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T idiv(T x, T m)
|
T imod(T x, T m)
|
||||||
{
|
{
|
||||||
return (x >= 0) ? (x / m) : -((- x + m - 1) / m);
|
static_assert(std::is_integral_v<T>);
|
||||||
|
return ((x % m) + m) % m;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T imod(T x, T m)
|
T idiv(T x, T m)
|
||||||
{
|
{
|
||||||
return x - m * idiv(x, m);
|
static_assert(std::is_integral_v<T>);
|
||||||
|
return (x - imod(x, m)) / m;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue