CAMLprim value ml_gsl_linalg_R_solve(value R, value B, value X) { _DECLARE_MATRIX(R); _DECLARE_VECTOR2(B, X); _CONVERT_MATRIX(R); _CONVERT_VECTOR2(B, X); gsl_linalg_R_solve(&m_R, &v_B, &v_X); return Val_unit; }
static int newton_direction (const gsl_matrix * r, const gsl_vector * qtf, gsl_vector * p) { const size_t N = r->size2; size_t i; int status; status = gsl_linalg_R_solve (r, qtf, p); #ifdef DEBUG printf("rsolve status = %d\n", status); #endif for (i = 0; i < N; i++) { double pi = gsl_vector_get (p, i); gsl_vector_set (p, i, -pi); } return status; }
/** * C++ version of gsl_linalg_R_solve(). * @param R A matrix * @param b A vector * @param x A vector * @return Error code on failure */ inline int R_solve( matrix const& R, vector const& b, vector& x ){ return gsl_linalg_R_solve( R.get(), b.get(), x.get() ); }