Skip to content

Conversation

rbctz
Copy link

@rbctz rbctz commented Jan 21, 2025

Summary of Changes

This PR fixes the issue where the program would panic when encountering NaN elements. I tweaked the try_new_ordered() function to address NaN values accordingly.

Details

  • Updated the try_new_ordered() function to handle NaN values gracefully, preventing the program from panicking.
  • Added checks to ensure NaN values are detected and managed appropriately.
  • Added more comments in the svd.rs file for better legibility

Testing

I tested the changes using the tests provided in the tests directory. The changes were validated by running the existing tests to ensure the program behaves as expected and no panics occur.

Fixes #1475

@geo-ant geo-ant self-requested a review September 19, 2025 18:46
eps: T::RealField,
max_niter: usize,
) -> Option<Self> {
// Ensure that the matrix is not empty before proceeding
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I noticed a lot of comments for existing code, that seem a bit verbose to me. Would you mind removing them, since the code is pretty self-documenting?

// **Check for NaN values in the diagonal elements**
// We check whether any singular value in the diagonal is NaN by comparing each value to itself.
// This works because NaN is the only value in Rust that is not equal to itself.
if diagonal.iter().any(|s| s != s) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

did you choose to do it like this because the RealField and ComplexField traits don't expose an is_nan?

@geo-ant
Copy link
Collaborator

geo-ant commented Sep 19, 2025

Hi @rbctz thank you for the PR, I realize this has been a while. Are you still interested in getting this merged? If so, would you see if you could resolve the merge conflicts?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

SVD panics instead of returning a Result
2 participants