Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 template<typename T1, typename T2>
00023 inline
00024 void
00025 glue_solve::apply(Mat<typename T1::elem_type>& out, const Glue<T1,T2,glue_solve>& X)
00026 {
00027 arma_extra_debug_sigprint();
00028
00029 typedef typename T1::elem_type eT;
00030
00031 const unwrap_check<T1> A_tmp(X.A, out);
00032 const unwrap_check<T2> B_tmp(X.B, out);
00033
00034 const Mat<eT>& A = A_tmp.M;
00035 const Mat<eT>& B = B_tmp.M;
00036
00037 arma_debug_check( (A.n_rows != B.n_rows), "solve(): number of rows in A and B must be the same" );
00038
00039 bool status;
00040
00041 if(A.n_rows == A.n_cols)
00042 {
00043 status = auxlib::solve(out, A, B);
00044 }
00045 else
00046 if(A.n_rows > A.n_cols)
00047 {
00048 arma_extra_debug_print("solve(): detected over-determined system");
00049 status = auxlib::solve_od(out, A, B);
00050 }
00051 else
00052 {
00053 arma_extra_debug_print("solve(): detected under-determined system");
00054 status = auxlib::solve_ud(out, A, B);
00055 }
00056
00057 if(status == false)
00058 {
00059 out.reset();
00060 arma_print("solve(): solution not found");
00061 }
00062 }
00063
00064
00065
00066