From: Peter V. <pet...@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 community? Any thoughts from other vnl_svd users? -- Peter. |