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.
This pr adds a Val type thats used to seperate the scaled and unscaled values. in the end with some logic it gets converted into an f32 by scaling the value that should be scaled and adding them to the unscaled value.
Its better to look at the code to kind of understand what it does. Have fun :D
end result is that this is the results of the calc expressions vs the old results if scaling factor is 2:
example 1:
calc(2 * 5)
result:
4 * 10
(2 * 5) * 2
example 2:
calc(25% * 2)
result:
25% * 4
25% * 2
example 3:
calc(5 + 2 * 3 + 25% * 3)
result:
10 + 4 * 6 + 25% * 6
10 + (2 * 3) * 2 + 25% * 3
example 4:
calc( 2 * (25% * 2 + 10 * 3 + 2))
result:
4 * (25% * 4 + 20 * 6 + 4)
2 * (25% * 2) + (10 * 3 + 2) * 2 * 2
// the 2 * is distributed over the sums of the scaled values and the sums of the unscaled values, the scaled values then at the end get multiplied by the scale