CAMLprim value c_arraybandmatrix_gbtrf(value va, value vsizes, value vp) { CAMLparam3(va, vsizes, vp); struct caml_ba_array *ba = ARRAY2_DATA(va); intnat m = ba->dim[0]; long int mu = Long_val(Field(vsizes, 0)); long int ml = Long_val(Field(vsizes, 1)); long int smu = Long_val(Field(vsizes, 2)); #if SUNDIALS_ML_SAFE == 1 intnat n = ba->dim[1]; if (n < mu + ml + 1) caml_invalid_argument("ArrayBandMatrix.gbtrf: matrix badly sized."); if (ARRAY1_LEN(vp) < m) caml_invalid_argument("ArrayBandMatrix.gbtrf: p is too small."); #endif bandGBTRF(ARRAY2_ACOLS(va), m, mu, ml, smu, LONG_ARRAY(vp)); CAMLreturn (Val_unit); }
long int BandGBTRF(DlsMat A, long int *p) { return(bandGBTRF(A->cols, A->M, A->mu, A->ml, A->s_mu, p)); }