GNU Scientific Library - Bugs: bug #28767, gsl_linalg_SV_decomp gives NaN...
You are not allowed to post comments on this tracker with your current authentication level.
bug #28767: gsl_linalg_SV_decomp gives NaN when tb, tab, dt = 0
Submitter: | -Deleted Account- <bjg> | ||
Submitted: | Fri 29 Jan 2010 10:04:47 PM UTC | ||
Category: | Runtime error | Severity: | 3 - Normal |
Operating System: | Status: | Fixed | |
Assigned to: | None | Open/Closed: | Closed |
Release: | 1.13 |
Wed 24 Feb 2010 05:43:59 PM UTC, comment #2: |
-Deleted Account- <bjg> |
Fri 29 Jan 2010 10:05:28 PM UTC, comment #1: GSL version number: 1.9
|
-Deleted Account- <bjg> |
Fri 29 Jan 2010 10:04:47 PM UTC, original submission:
--------------------------------------------------------------
|
-Deleted Account- <bjg> |
Depends on the following items: None found
Items that depend on this one: None found
Follow 3 latest changes.
Date | Changed by | Updated Field | Previous Value | => | Replaced by |
---|---|---|---|---|---|
2010-02-24 | bjg | Status | Confirmed | Fixed | |
Open/Closed | Open | Closed | |||
2010-01-29 | bjg | Attached File | - | Added svdbug.c, #19564 |
Powered by Savane 3.13-02a9.
Corresponding source code
fixed by commit 7946d551c30943f38bfcd1c31e109919e12fbe5a
fix for bug #28767: gsl_linalg_SV_decomp gives NaN when tb, tab, dt = 0
nans were generated in gsl_linalg_householder_transform from overflow
in 1/(alpha-beta) when alpha=0 and beta is subnormal.
nans were also generated in trailing_eigenvalue when dt=0 and tab=0.
It was also possible to generate negative mu from cancellation error.
Since we know the roots are non-negative and have the underlying
expressions for them we can calculate them without cancellation error
using only positive terms.
in gsl_linalg_SV_decomp we can avoid a lot of numerical problems by
rescaling the bidiagonal matrix before carrying out the implicit shift
procedure. Following LAPACK's QR eigenvalue routine, we rescale if the
max abs value A is in the range A > sqrt(DBL_MAX) or 0 < A < sqrt(DBL_MIN).
added a test case for bug #28767, added check for nans when none
present in input, added subnormal matrix that triggers potential
overflow in gsl_linalg_householder_transform.