Fix nan_euclidean_distances symmetry for self-distances #32874
+26
−0
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.
Fixes #32848
Summary
Ensures
nan_euclidean_distancesreturns perfectly symmetric matrices when computing self-distances with NaN values, eliminating floating-point rounding asymmetries.Problem
When computing distances with NaN values,
nan_euclidean_distancesproduced slightly asymmetric matrices (~4e-16 differences) due to floating-point rounding after the sqrt operation. This breaks downstream tools likescipy.spatial.distance.squareformthat expect exact symmetry.Solution
(distances + distances.T) / 2after sqrtTesting
assert_array_equalfor strict bitwise symmetry checkNote
Developed independently alongside PR #32851. This approach guarantees perfect symmetry rather than relying on
allclosetolerance.