dimforge / dimforge/nalgebra

SVD panics instead of returning a Result

Open
#1,475 0 comments 2 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
4.8k
Forks
565
PR merge metrics
No merged PRs in 30d

Description

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.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.