/** * Constructs a singular value decomposition for the specified matrix A. * @param a the matrix A. */ public DMatrixSvd(DMatrix a) { double[] aa = a.getPackedColumns(); _m = a.getM(); _n = a.getN(); _mn = min(_m,_n); _s = new double[_mn]; _u = new double[_m*_mn]; _vt = new double[_mn*_n]; double[] work = new double[1]; LapackInfo li = new LapackInfo(); _lapack.dgesvd("S","S",_m,_n,aa,_m,_s,_u,_m,_vt,_mn,work,-1,li); li.check("dgesvd"); int lwork = (int)work[0]; work = new double[lwork]; _lapack.dgesvd("S","S",_m,_n,aa,_m,_s,_u,_m,_vt,_mn,work,lwork,li); li.check("dgesvd"); }