Example #1
0
int
gsl_linalg_LQ_solve_T (const gsl_matrix * LQ, const gsl_vector * tau, const gsl_vector * b, gsl_vector * x)
{
  if (LQ->size1 != LQ->size2)
    {
      GSL_ERROR ("LQ matrix must be square", GSL_ENOTSQR);
    }
  else if (LQ->size2 != b->size)
    {
      GSL_ERROR ("matrix size must match b size", GSL_EBADLEN);
    }
  else if (LQ->size1 != x->size)
    {
      GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN);
    }
  else
    {
      /* Copy x <- b */

      gsl_vector_memcpy (x, b);

      /* Solve for x */

      gsl_linalg_LQ_svx_T (LQ, tau, x);

      return GSL_SUCCESS;
    }
}
Example #2
0
CAMLprim value ml_gsl_linalg_LQ_svx_T(value LQ, value TAU, value X)
{
  _DECLARE_MATRIX(LQ);
  _DECLARE_VECTOR2(TAU, X);
  _CONVERT_MATRIX(LQ);
  _CONVERT_VECTOR2(TAU, X);
  gsl_linalg_LQ_svx_T(&m_LQ, &v_TAU, &v_X);
  return Val_unit;
}
Example #3
0
 /**
  * C++ version of gsl_linalg_LQ_svx_T().
  * @param LQ A matrix
  * @param tau A vector
  * @param x A vector
  * @return Error code on failure
  */
 inline int LQ_svx_T( matrix const& LQ, vector const& tau, vector& x ){
   return gsl_linalg_LQ_svx_T( LQ.get(), tau.get(), x.get() ); }