Hi all,=0A Iam trying to get svd of a matrix (1489 x 1489).=0AIam g=
etting the following warnings=0AUtilities/vxl/core/vnl/algo/vnl_svd.txx: su=
spicious return value (1489) from SVDC=0AUtilities/vxl/core/vnl/algo/vnl_sv=
d.txx: M is 1489x1489=0A=0ACan anyone please explain what these warnings ar=
e for? I have got a result which looks very different compared to svd using=
other libraries. Is there a problem with vnl svd for larger matrice?=0ATha=
From: Peter Vanroose <peter_vanroose@ya...> - 2005-06-24 07:42:41
> suspicious return value (1489) from SVDC
By examining the source code, this seems to mean the following:
- The linpack routine dsvdc() should return 0 in the "info" field;
instead it returns 1489.
A comment in vnl_svd.txx give two possible causes for this:
1. The scalar type has such extreme precision that too few iterations
were performed to converge to within machine precision (that is the
svdc criterion). One solution to that is to increase the maximum
number of iterations in the netlib code.
2. The LINPACK dsvdc_ code expects correct IEEE rounding behaviour,
which some platforms (notably x86 processors) have trouble doing.
For example, gcc can output code in -O2 and static-linked code that
causes this problem. One solution to this is to persuade gcc to output
slightly different code by adding and -fPIC option to the command line
for v3p\netlib\dsvdc.c. If that doesn't work try adding -ffloat-store,
which should fix the problem at the expense of being significantly
slower for big problems. Note that if this is the cause,
core/vnl/tests/test_svd should have failed.
- From the documentation in v3p/netlib/dsvdc.c on return code "info",
the return code gives the index of the last incorrect singular value
(and their corresponding singular vectors).
Hence, in your case, all singular values/vectors are incorrect.
Could you try out one of the suggestions given in vnl_svd.txx ?
If the problem is really related to the size of your matrix, maybe a
better forum for getting useful response could be the linpack user
Any thoughts from other vnl_svd users?