SMat svdNewSMat(int rows, int cols, int vals) { SMat S = (SMat) calloc(1, sizeof(struct smat)); if (!S) { perror("svdNewSMat"); return NULL; } S->rows = rows; S->cols = cols; S->vals = vals; S->pointr = svd_longArray(cols + 1, TRUE, "svdNewSMat: pointr"); if (!S->pointr) { svdFreeSMat(S); return NULL; } S->rowind = svd_longArray(vals, FALSE, "svdNewSMat: rowind"); if (!S->rowind) { svdFreeSMat(S); return NULL; } S->value = svd_doubleArray(vals, FALSE, "svdNewSMat: value"); if (!S->value) { svdFreeSMat(S); return NULL; } return S; }
SMat svdNewSMat(int rows, int cols, int vals) { SMat S = (SMat) calloc(1, sizeof(struct smat)); if (!S) {perror("svdNewSMat"); return NULL;} S->h.transposed = svdTransposeS; S->h.free = svdFreeSMat; S->h.mat_by_vec = sparse_mat_by_vec; S->h.mat_transposed_by_vec = sparse_mat_transposed_by_vec; S->h.rows = rows; S->h.cols = cols; S->h.vals = vals; S->pointr = svd_longArray(cols + 1, TRUE, "svdNewSMat: pointr"); if (!S->pointr) {svdFreeSMat(S); return NULL;} S->rowind = svd_longArray(vals, FALSE, "svdNewSMat: rowind"); if (!S->rowind) {svdFreeSMat(S); return NULL;} S->value = svd_doubleArray(vals, FALSE, "svdNewSMat: value"); if (!S->value) {svdFreeSMat(S); return NULL;} S->offset_for_row = NULL; S->offset_for_col = NULL; return S; }