Example #1
0
CAMLprim value c_arraybandmatrix_gbtrs(value va, value vsizes, value vp, value vb)
{
    CAMLparam4(va, vsizes, vp, vb);

    struct caml_ba_array *ba = ARRAY2_DATA(va);
    intnat m = ba->dim[0];

    long int smu = Long_val(Field(vsizes, 0));
    long int ml  = Long_val(Field(vsizes, 1));

#if SUNDIALS_ML_SAFE == 1
    intnat n = ba->dim[1];

    if (n < smu + ml + 1)
	caml_invalid_argument("ArrayBandMatrix.gbtrf: matrix badly sized.");
    if (ARRAY1_LEN(vp) < m)
	caml_invalid_argument("ArrayBandMatrix.gbtrf: p is too small.");
    if (ARRAY1_LEN(vb) < m)
	caml_invalid_argument("ArrayBandMatrix.gbtrf: b is too small.");
#endif

    bandGBTRS(ARRAY2_ACOLS(va), m, smu, ml, LONG_ARRAY(vp), REAL_ARRAY(vb));
    CAMLreturn (Val_unit);
}
Example #2
0
void BandGBTRS(DlsMat A, long int *p, realtype *b)
{
  bandGBTRS(A->cols, A->M, A->s_mu, A->ml, p, b);
}