Replace cdf! macro with const fns #3334
Merged
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.
Notable changes:
cdf!
always required the parameter count to be== CDF_LEN - 1
, the newcdf
function accepts any parameter count< CDF_LEN
. Any values after the last parameter will be zero. (e.g. if the output has a length of 8 and the parameter count is 5, then the output values 6 to 8 will be zero). This means:Added helper functions for multi-dimensional arrays (up to 5D) to avoid spamming the
cdf
macro/fnwill become
and so on.
Check all input parameters to be in the range
[0, 32768]
to avoid underflows in32768 - val
Fully replaced macro with generic code. Type safety is ensured through the function signatures and compile-time
assert!
statementsThe code for
cdf_2d
,cdf_3d
etc. is a little messy. But it's the best way I found to keep theseconst
without some sort of macroized implementation (which seems a bit overkill for just 5 similar functions).