GURLS_EXPORT void svd(const gMat2D<float>& A, gMat2D<float>& U, gVec<float>& W, gMat2D<float>& Vt) { float* Ubuf; float* Sbuf; float* Vtbuf; int Urows, Ucols; int Slen; int Vtrows, Vtcols; gurls::svd(A.getData(), Ubuf, Sbuf, Vtbuf, A.rows(), A.cols(), Urows, Ucols, Slen, Vtrows, Vtcols); U.resize(Urows, Ucols); copy(U.getData(), Ubuf, U.getSize()); W.resize(Slen); copy(W.getData(), Sbuf, Slen); Vt.resize(Vtrows, Vtcols); copy(Vt.getData(), Vtbuf, Vt.getSize()); delete [] Ubuf; delete [] Sbuf; delete [] Vtbuf; }