nalgebra icon indicating copy to clipboard operation
nalgebra copied to clipboard

SVD panics instead of returning a Result

Open JorisDeRidder opened this issue 1 year ago • 0 comments

After issue #358, SVD was improved so that it does no longer panic but instead returns a Result. However, since then the public function sort_by_singular_values() was added to svd.rs which still panics when the singular values are NaN: expect("Singular value was NaN"). This function is used twice in svd.rs: by new() and try_new(), and once in tests/linalg/svd.rs.

This panic is making it more difficult to use nalgebra SVD in "production" code.

I can think of two possible solutions:

  1. Let sort_by_singular_values() return a boolean whether the sorting was successful or not, so that the callers of this function can return a Result if needed . However, since this function is public, this would imply a breaking change.
  2. In try_new_unordered(), right after the SVD decomposition, explicitly verify that none of singular values are NaN so that the sorting never leads to a panic.

JorisDeRidder avatar Jan 17 '25 14:01 JorisDeRidder