//! More...
Classes | |
| class | glue_solve |
Functions | |
| template<typename T1 , typename T2 > | |
| static void | glue_solve::apply (Mat< typename T1::elem_type > &out, const Glue< T1, T2, glue_solve > &X) |
//!
| void glue_solve::apply | ( | Mat< typename T1::elem_type > & | out, | |
| const Glue< T1, T2, glue_solve > & | X | |||
| ) | [inline, static, inherited] |
Definition at line 25 of file glue_solve_meat.hpp.
References Glue< T1, T2, glue_type >::A, arma_print(), Glue< T1, T2, glue_type >::B, unwrap_check< T1 >::M, Mat< eT >::n_cols, Mat< eT >::n_rows, Mat< eT >::reset(), solve(), auxlib::solve_od(), and auxlib::solve_ud().
{
arma_extra_debug_sigprint();
typedef typename T1::elem_type eT;
const unwrap_check<T1> A_tmp(X.A, out);
const unwrap_check<T2> B_tmp(X.B, out);
const Mat<eT>& A = A_tmp.M;
const Mat<eT>& B = B_tmp.M;
arma_debug_check( (A.n_rows != B.n_rows), "solve(): number of rows in A and B must be the same" );
bool status;
if(A.n_rows == A.n_cols)
{
status = auxlib::solve(out, A, B);
}
else
if(A.n_rows > A.n_cols)
{
arma_extra_debug_print("solve(): detected over-determined system");
status = auxlib::solve_od(out, A, B);
}
else
{
arma_extra_debug_print("solve(): detected under-determined system");
status = auxlib::solve_ud(out, A, B);
}
if(status == false)
{
out.reset();
arma_print("solve(): solution not found");
}
}