Given an m-by-n matrix A, lassign "[::math::linearalgebra::determineSVD $A] U S V" will return an m-by-n matrix U. While this is often what you want for overdetermined systems (m>n), this is not what you want for underdetermined systems (m<n) and is not consistent with any definition of the SVD I know of. If (m<n), the S and V matrices should be truncated if truncation is desired.
Incidentally, sometimes I don't want the U matrix to be truncated when m>n, for example when I am as interested in the residuals than the actual fit.
Sorry, I pressed the browser refresh button in the wrong window.
(Back from my holidays) I will have a look at this and report back.
Could you provide me with a small example? That would help solving this issue
Example:
package require math::linearalgebra
# -> 1.1.3
namespace import ::math::linearalgebra::*
set A {{4 5 6} {7 8 9}}
shape A
# -> 2 3
lassign [determineSVD $A] U S V
shape $U
# -> 2 3 (should be 2 2)
shape $S
# -> 3 (could be 2)
shape $V
# -> 3 3 (could be 2 3)