[release/9.0-staging] Fix TensorPrimitives.MultiplyAddEstimate for integers #113094
+193
−53
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.
Backport of #113047 to release/9.0-staging
/cc @stephentoub
Customer Impact
TensorPrimitives.MultiplyAddEstimate produces the wrong answers when used with integer types, e.g.
That should print
11, 18, 27
(i.e.1*4 + 7
,2*5 + 8
,3*6 + 9
), but it prints7, 8, 9
.Customers using this method will get the wrong numerical results.
Regression
Testing
Added new tests to the System.Numerics.Tensors test suite. Previously there were only tests for floating-point types, and this issue was specific to integer types.
Risk
Low. It's a very isolated change specifically for the MultiplyAddEstimate implementation, where previously there was a structure like:
and this fixes it to be:
There's no reasonable way someone could have taken a dependency on the previous behavior. This method was also only introduced in .NET 9.