Skip to content

Instantly share code, notes, and snippets.

@pervognsen
Created October 18, 2014 00:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pervognsen/a35d1d4abbad8eec7295 to your computer and use it in GitHub Desktop.
Save pervognsen/a35d1d4abbad8eec7295 to your computer and use it in GitHub Desktop.
radix packing
template<class U>
constexpr U static_pow(U base, U exponent)
{
return exponent == U(0) ? U(1) : base * static_pow(base, exponent - 1);
}
template<size_t N, size_t I, class U>
U radix_put(U w, U x)
{
constexpr U M = static_pow(N, I), MN = M * N;
return w % M + x * M + (w / MN) * MN;
}
template<size_t N, size_t I, class U>
U radix_get(U w)
{
return (w / static_pow(N, I)) % N;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment