CAMLprim value ml_gsl_linalg_solve_cyc_tridiag(value DIAG, value ABOVE, value BELOW, value B, value X) { _DECLARE_VECTOR5(DIAG, ABOVE, BELOW, B, X); _CONVERT_VECTOR5(DIAG, ABOVE, BELOW, B, X); gsl_linalg_solve_cyc_tridiag(&v_DIAG, &v_ABOVE, &v_BELOW, &v_B, &v_X); return Val_unit; }
/** * C++ version of gsl_linalg_solve_cyc_tridiag(). * @param diag A vector of diagonal elements * @param abovediag Off-diagonal vector (one element shorte than @c diag) * @param belowdiag Off-diagonal vector (one element shorte than @c diag) * @param b A vector * @param x A vector * @return Error code on failure */ inline int solve_cyc_tridiag( vector const& diag, vector const& abovediag, vector const& belowdiag, vector const& b, vector& x ){ return gsl_linalg_solve_cyc_tridiag( diag.get(), abovediag.get(), belowdiag.get(), b.get(), x.get() ); }