Bill:

The SVD operation returns the values:
'u s v' =. svd trn

The J version returns the diagonal, which is what you want. The lapack version for some reason returns the whole array with all the 0's. So, to match them up:

'ul sl vl' =. gesvd_jlapack_ trn

 +/ s=(<0 1)&|: sl

In this case, you get all 30 singular values matching up.

I guess allocating a 10000, 30 array to return 30 numbers is wasteful, but I'm pretty sure the slow down is some other problem. I can fiddle with the build on my end, since I'm probably responsible for the shared object, but the ultimate fix will probably involve calling dgesdd, hopefully from the new lapacke wrappers.

Meanwhile, kudos to whoever wrote math/misc/svd, as it works really well, even on very large problems.

-SL

"bill lam-2":
>Both svd and gesvd return a 3 element box vector, but the shapes of array
>inside box are different. Do their results agree with each other?
>I'll take a look at the bug in j  lapack.
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to