Skip to content

SVD panics instead of returning a Result #1475

@JorisDeRidder

Description

@JorisDeRidder

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions