fn_lu.hpp
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 template<typename T1>
00022 inline
00023 void
00024 lu(Mat<typename T1::elem_type>& L, Mat<typename T1::elem_type>& U, const Base<typename T1::elem_type,T1>& X)
00025 {
00026 arma_extra_debug_sigprint();
00027
00028 typedef typename T1::elem_type eT;
00029
00030 arma_debug_check( (&L == &U), "lu(): L and U are the same object");
00031
00032 const unwrap_check<T1> tmp1(X.get_ref(), L);
00033 const Mat<eT>& A = tmp1.M;
00034
00035 const unwrap_check< Mat<eT> > tmp2(A, U);
00036 const Mat<eT>& B = tmp2.M;
00037
00038 auxlib::lu(L, U, B);
00039 }
00040
00041
00042
00043
00044 template<typename T1>
00045 inline
00046 void
00047 lu(Mat<typename T1::elem_type>& L, Mat<typename T1::elem_type>& U, Mat<typename T1::elem_type>& P, const Base<typename T1::elem_type,T1>& X)
00048 {
00049 arma_extra_debug_sigprint();
00050
00051 typedef typename T1::elem_type eT;
00052
00053 arma_debug_check( ( (&L == &U) || (&L == &P) || (&U == &P) ), "lu(): two or more output objects are the same object");
00054
00055 const unwrap_check<T1> tmp1(X.get_ref(), L);
00056 const Mat<eT>& A = tmp1.M;
00057
00058 const unwrap_check< Mat<eT> > tmp2(A, U);
00059 const Mat<eT>& B = tmp2.M;
00060
00061 const unwrap_check< Mat<eT> > tmp3(B, P);
00062 const Mat<eT>& C = tmp3.M;
00063
00064 auxlib::lu(L, U, P, C);
00065 }
00066
00067
00068