}
public void compute()
{
// Use Colt's SVD
SingularValueDecomposition svd;
if (A.columns() > A.rows())
{
svd = new SingularValueDecomposition(new DenseMatrix(A.viewDice().toArray()));
V = toColtMatrix(svd.getU());
U = toColtMatrix(svd.getV());
}
else
{
svd = new SingularValueDecomposition(new DenseMatrix(A.toArray()));
U = toColtMatrix(svd.getU());
V = toColtMatrix(svd.getV());
}
S = svd.getSingularValues();
if (k > 0 && k < S.length)
{
U = U.viewPart(0, 0, U.rows(), k);
V = V.viewPart(0, 0, V.rows(), k);