Skip to content

Conversation

tetzank
Copy link

@tetzank tetzank commented Oct 5, 2017

This enables the compiler to optimize for k values which are a power of
two, getting rid of expensive div and imul instructions. Many loops get
unrolled as well.

The private member variable k_k was preventing it as k_k is not constant,
e.g., loading from istream sets it. This is also the only "lost"
functionality, unserialize from a file without knowing the value k
before. All other assignments, like in copy-ctor and operator=(), don't
make any sense as one can only call them with the same type which
implies the same k.

This enables the compiler to optimize for k values which are a power of
two, getting rid of expensive div and imul instructions. Many loops get
unrolled as well.

The private member variable k_k was preventing it as k_k is not constant,
e.g., loading from istream sets it. This is also the only "lost"
functionality, unserialize from a file without knowing the value k
before. All other assignments, like in copy-ctor and operator=(), don't
make any sense as one can only call them with the same type which
implies the same k.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant