Fix dom_power issue on 32bit machine #197
Merged
+2
−2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
dom_power is used to compute
n^l
. In the code of masterl
is taken as an long.This causes some issues on 32 bits machine (see for exemple linbox-team/linbox#293).
In this PR, I propose to switch the type from long to uint64_t.
First, I think an unsigned type should be used: in the code of dom_power, the argument
l
is immediatly cast to anunsigned long
and the bit representation of this value is used to perform a double and add algorithm. It means that calling dom_power with a negativel
is incorrect (except in the case where order(n) = ULONG_MAX+1).Second, I think that using a type with a fixed size is clearer: just looking at the prototype of the function tells you the maximum possible value of the exponent.
This PR fixes linbox-team/linbox#293