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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions