paolog
06-27-2007, 11:09 AM
The algorithm as it stands is prone to overflow, especially for large matrices.
For myself, I get overflow in this section of the accumuulation of the right-hand transformations:
for (k = l; k < n; ++k)
{
v[k][j] += s * v[k][i];
}
s: 9.3684343267160629e+305
v[k][i]: 444.83582005615625
v[k][j]: 1.#INF000000000000
Any suggestions for handling this? Can I do some sort of pre-processing normalisation on my data that I can undo again afterwards to get the right answer?
I have:
m: 2230
n: 651
I am calling the routine from svdfit, by the way, which zeroises small eigenvalues before calling svbksb, although that is not really relevant as overflow happens before control reaches that point in the code.
PS: I've found a way to reduce m and n significantly (now m = 1270 and n = 459) but I still get overflow.
For myself, I get overflow in this section of the accumuulation of the right-hand transformations:
for (k = l; k < n; ++k)
{
v[k][j] += s * v[k][i];
}
s: 9.3684343267160629e+305
v[k][i]: 444.83582005615625
v[k][j]: 1.#INF000000000000
Any suggestions for handling this? Can I do some sort of pre-processing normalisation on my data that I can undo again afterwards to get the right answer?
I have:
m: 2230
n: 651
I am calling the routine from svdfit, by the way, which zeroises small eigenvalues before calling svbksb, although that is not really relevant as overflow happens before control reaches that point in the code.
PS: I've found a way to reduce m and n significantly (now m = 1270 and n = 459) but I still get overflow.