CAMLprim value c_arraydensematrix_geqrf(value va, value vbeta, value vv) { CAMLparam3(va, vbeta, vv); struct caml_ba_array *ba = ARRAY2_DATA(va); intnat m = ba->dim[1]; intnat n = ba->dim[0]; #if SUNDIALS_ML_SAFE == 1 if (m < n) caml_invalid_argument("ArrayDenseMatrix.geqrf: fewer rows than columns."); if (ARRAY1_LEN(vbeta) < n) caml_invalid_argument("ArrayDenseMatrix.geqrf: beta is too small."); if (ARRAY1_LEN(vv) < m) caml_invalid_argument("ArrayDenseMatrix.geqrf: work is too small."); #endif denseGEQRF(ARRAY2_ACOLS(va), m, n, REAL_ARRAY(vbeta), REAL_ARRAY(vv)); CAMLreturn (Val_unit); }
int DenseGEQRF(DlsMat A, realtype *beta, realtype *wrk) { return(denseGEQRF(A->cols, A->M, A->N, beta, wrk)); }