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>
|
||||
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>
|
||||
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>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue