armadillo   armadillo 
skipping to change at line 174 skipping to change at line 174
#include "armadillo_bits/op_pinv_proto.hpp" #include "armadillo_bits/op_pinv_proto.hpp"
#include "armadillo_bits/op_dotext_proto.hpp" #include "armadillo_bits/op_dotext_proto.hpp"
#include "armadillo_bits/op_flip_proto.hpp" #include "armadillo_bits/op_flip_proto.hpp"
#include "armadillo_bits/op_princomp_proto.hpp" #include "armadillo_bits/op_princomp_proto.hpp"
#include "armadillo_bits/op_princomp_cov_proto.hpp" #include "armadillo_bits/op_princomp_cov_proto.hpp"
#include "armadillo_bits/glue_times_proto.hpp" #include "armadillo_bits/glue_times_proto.hpp"
#include "armadillo_bits/glue_cov_proto.hpp" #include "armadillo_bits/glue_cov_proto.hpp"
#include "armadillo_bits/glue_cor_proto.hpp" #include "armadillo_bits/glue_cor_proto.hpp"
#include "armadillo_bits/glue_kron_proto.hpp" #include "armadillo_bits/glue_kron_proto.hpp"
#include "armadillo_bits/glue_cross_proto.hpp"
// //
// debugging functions // debugging functions
#include "armadillo_bits/debug.hpp" #include "armadillo_bits/debug.hpp"
// //
// classes that underlay metaprogramming // classes that underlay metaprogramming
#include "armadillo_bits/Proxy.hpp" #include "armadillo_bits/Proxy.hpp"
skipping to change at line 288 skipping to change at line 289
#include "armadillo_bits/fn_shuffle.hpp" #include "armadillo_bits/fn_shuffle.hpp"
#include "armadillo_bits/fn_prod.hpp" #include "armadillo_bits/fn_prod.hpp"
#include "armadillo_bits/fn_eps.hpp" #include "armadillo_bits/fn_eps.hpp"
#include "armadillo_bits/fn_pinv.hpp" #include "armadillo_bits/fn_pinv.hpp"
#include "armadillo_bits/fn_rank.hpp" #include "armadillo_bits/fn_rank.hpp"
#include "armadillo_bits/fn_kron.hpp" #include "armadillo_bits/fn_kron.hpp"
#include "armadillo_bits/fn_flip.hpp" #include "armadillo_bits/fn_flip.hpp"
#include "armadillo_bits/fn_as_scalar.hpp" #include "armadillo_bits/fn_as_scalar.hpp"
#include "armadillo_bits/fn_princomp.hpp" #include "armadillo_bits/fn_princomp.hpp"
#include "armadillo_bits/fn_princomp_cov.hpp" #include "armadillo_bits/fn_princomp_cov.hpp"
#include "armadillo_bits/fn_cross.hpp"
// //
// class meat // class meat
#include "armadillo_bits/gemm.hpp" #include "armadillo_bits/gemm.hpp"
#include "armadillo_bits/gemv.hpp" #include "armadillo_bits/gemv.hpp"
#include "armadillo_bits/gemm_mixed.hpp" #include "armadillo_bits/gemm_mixed.hpp"
#include "armadillo_bits/eop_core_meat.hpp" #include "armadillo_bits/eop_core_meat.hpp"
#include "armadillo_bits/eop_cube_core_meat.hpp" #include "armadillo_bits/eop_cube_core_meat.hpp"
skipping to change at line 350 skipping to change at line 352
#include "armadillo_bits/op_pinv_meat.hpp" #include "armadillo_bits/op_pinv_meat.hpp"
#include "armadillo_bits/op_dotext_meat.hpp" #include "armadillo_bits/op_dotext_meat.hpp"
#include "armadillo_bits/op_flip_meat.hpp" #include "armadillo_bits/op_flip_meat.hpp"
#include "armadillo_bits/op_princomp_meat.hpp" #include "armadillo_bits/op_princomp_meat.hpp"
#include "armadillo_bits/op_princomp_cov_meat.hpp" #include "armadillo_bits/op_princomp_cov_meat.hpp"
#include "armadillo_bits/glue_times_meat.hpp" #include "armadillo_bits/glue_times_meat.hpp"
#include "armadillo_bits/glue_cov_meat.hpp" #include "armadillo_bits/glue_cov_meat.hpp"
#include "armadillo_bits/glue_cor_meat.hpp" #include "armadillo_bits/glue_cor_meat.hpp"
#include "armadillo_bits/glue_kron_meat.hpp" #include "armadillo_bits/glue_kron_meat.hpp"
#include "armadillo_bits/glue_cross_meat.hpp"
} }
#endif #endif
 End of changes. 3 change blocks. 
0 lines changed or deleted 3 lines changed or added


 fn_solve.hpp   fn_solve.hpp 
skipping to change at line 42 skipping to change at line 42
arma_extra_debug_sigprint(); arma_extra_debug_sigprint();
const unwrap<T1> tmp1(A_in.get_ref()); const unwrap<T1> tmp1(A_in.get_ref());
const unwrap<T2> tmp2(B_in.get_ref()); const unwrap<T2> tmp2(B_in.get_ref());
const Mat<eT>& A = tmp1.M; const Mat<eT>& A = tmp1.M;
const Mat<eT>& B = tmp2.M; const Mat<eT>& B = tmp2.M;
arma_debug_check( (A.n_rows != B.n_rows), "solve(): number of rows in A a nd B must be the same" ); arma_debug_check( (A.n_rows != B.n_rows), "solve(): number of rows in A a nd B must be the same" );
bool status;
if(A.n_rows == A.n_cols) if(A.n_rows == A.n_cols)
{ {
return auxlib::solve(X, A, B); status = auxlib::solve(X, A, B);
} }
else else
if(A.n_rows > A.n_cols) if(A.n_rows > A.n_cols)
{ {
arma_extra_debug_print("solve(): detected over-determined system"); arma_extra_debug_print("solve(): detected over-determined system");
return auxlib::solve_od(X, A, B); status = auxlib::solve_od(X, A, B);
} }
else else
{ {
arma_extra_debug_print("solve(): detected under-determined system"); arma_extra_debug_print("solve(): detected under-determined system");
return auxlib::solve_ud(X, A, B); status = auxlib::solve_ud(X, A, B);
}
if(status == false)
{
X.reset();
} }
return status;
} }
template<typename eT, typename T1, typename T2> template<typename eT, typename T1, typename T2>
inline inline
Mat<eT> Mat<eT>
solve(const Base<eT,T1>& A_in, const Base<eT,T2>& B_in) solve(const Base<eT,T1>& A_in, const Base<eT,T2>& B_in)
{ {
arma_extra_debug_sigprint(); arma_extra_debug_sigprint();
Mat<eT> X; Mat<eT> X;
bool info = solve(X, A_in, B_in); const bool status = solve(X, A_in, B_in);
if(info == false) if(status == false)
{ {
arma_print("solve(): solution not found"); arma_print("solve(): solution not found");
X.reset();
} }
return X; return X;
} }
//! @} //! @}
 End of changes. 8 change blocks. 
5 lines changed or deleted 16 lines changed or added


 forward_proto.hpp   forward_proto.hpp 
skipping to change at line 79 skipping to change at line 79
//! @{ //! @{
//! file types supported by Armadillo //! file types supported by Armadillo
enum file_type enum file_type
{ {
auto_detect, //!< Automatically detect the file type (file must be one o f the following types) auto_detect, //!< Automatically detect the file type (file must be one o f the following types)
raw_ascii, //!< ASCII format (text), without any other information. raw_ascii, //!< ASCII format (text), without any other information.
arma_ascii, //!< Armadillo ASCII format (text), with information about matrix type and size arma_ascii, //!< Armadillo ASCII format (text), with information about matrix type and size
arma_binary, //!< Armadillo binary format arma_binary, //!< Armadillo binary format
pgm_binary, //!< Portable Grey Map (greyscale image) pgm_binary, //!< Portable Grey Map (greyscale image)
ppm_binary //!< Portable Pixel Map (colour image), used by the field c lass only ppm_binary //!< Portable Pixel Map (colour image), used by the field a nd cube classes
}; };
//! @} //! @}
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 glue_times_meat.hpp   glue_times_meat.hpp 
skipping to change at line 206 skipping to change at line 206
const u32 result_n_cols = (do_trans_B == false) ? B.n_cols : B.n_rows; const u32 result_n_cols = (do_trans_B == false) ? B.n_cols : B.n_rows;
arma_assert_same_size(out.n_rows, out.n_cols, result_n_rows, result_n_col s, "matrix addition"); arma_assert_same_size(out.n_rows, out.n_cols, result_n_rows, result_n_col s, "matrix addition");
if( (do_trans_A == false) && (do_trans_B == false) && (use_alpha == false ) ) if( (do_trans_A == false) && (do_trans_B == false) && (use_alpha == false ) )
{ {
if(A.n_rows == 1) if(A.n_rows == 1)
{ {
gemv<true, false, true>::apply(out.memptr(), B, A.memptr(), a lpha, eT(1)); gemv<true, false, true>::apply(out.memptr(), B, A.memptr(), a lpha, eT(1));
} }
else
if(B.n_cols == 1) if(B.n_cols == 1)
{ {
gemv<false, false, true>::apply(out.memptr(), A, B.memptr(), a lpha, eT(1)); gemv<false, false, true>::apply(out.memptr(), A, B.memptr(), a lpha, eT(1));
} }
else else
{ {
gemm<false, false, false, true>::apply(out, A, B, alpha, eT(1)); gemm<false, false, false, true>::apply(out, A, B, alpha, eT(1));
} }
} }
else else
if( (do_trans_A == false) && (do_trans_B == false) && (use_alpha == true) ) if( (do_trans_A == false) && (do_trans_B == false) && (use_alpha == true) )
{ {
if(A.n_rows == 1) if(A.n_rows == 1)
{ {
gemv<true, true, true>::apply(out.memptr(), B, A.memptr(), al pha, eT(1)); gemv<true, true, true>::apply(out.memptr(), B, A.memptr(), al pha, eT(1));
} }
else
if(B.n_cols == 1) if(B.n_cols == 1)
{ {
gemv<false, true, true>::apply(out.memptr(), A, B.memptr(), al pha, eT(1)); gemv<false, true, true>::apply(out.memptr(), A, B.memptr(), al pha, eT(1));
} }
else else
{ {
gemm<false, false, true, true>::apply(out, A, B, alpha, eT(1)); gemm<false, false, true, true>::apply(out, A, B, alpha, eT(1));
} }
} }
else else
if( (do_trans_A == true) && (do_trans_B == false) && (use_alpha == false) ) if( (do_trans_A == true) && (do_trans_B == false) && (use_alpha == false) )
{ {
if(A.n_cols == 1) if(A.n_cols == 1)
{ {
gemv<true, false, true>::apply(out.memptr(), B, A.memptr(), al pha, eT(1)); gemv<true, false, true>::apply(out.memptr(), B, A.memptr(), al pha, eT(1));
} }
else
if(B.n_cols == 1) if(B.n_cols == 1)
{ {
gemv<true, false, true>::apply(out.memptr(), A, B.memptr(), al pha, eT(1)); gemv<true, false, true>::apply(out.memptr(), A, B.memptr(), al pha, eT(1));
} }
else else
{ {
gemm<true, false, false, true>::apply(out, A, B, alpha, eT(1)); gemm<true, false, false, true>::apply(out, A, B, alpha, eT(1));
} }
} }
else else
if( (do_trans_A == true) && (do_trans_B == false) && (use_alpha == true) ) if( (do_trans_A == true) && (do_trans_B == false) && (use_alpha == true) )
{ {
if(A.n_cols == 1) if(A.n_cols == 1)
{ {
gemv<true, true, true>::apply(out.memptr(), B, A.memptr(), alp ha, eT(1)); gemv<true, true, true>::apply(out.memptr(), B, A.memptr(), alp ha, eT(1));
} }
else
if(B.n_cols == 1) if(B.n_cols == 1)
{ {
gemv<true, true, true>::apply(out.memptr(), A, B.memptr(), alp ha, eT(1)); gemv<true, true, true>::apply(out.memptr(), A, B.memptr(), alp ha, eT(1));
} }
else else
{ {
gemm<true, false, true, true>::apply(out, A, B, alpha, eT(1)); gemm<true, false, true, true>::apply(out, A, B, alpha, eT(1));
} }
} }
else else
if( (do_trans_A == false) && (do_trans_B == true) && (use_alpha == false) ) if( (do_trans_A == false) && (do_trans_B == true) && (use_alpha == false) )
{ {
if(A.n_rows == 1) if(A.n_rows == 1)
{ {
gemv<false, false, true>::apply(out.memptr(), B, A.memptr(), al pha, eT(1)); gemv<false, false, true>::apply(out.memptr(), B, A.memptr(), al pha, eT(1));
} }
else
if(B.n_rows == 1) if(B.n_rows == 1)
{ {
gemv<false, false, true>::apply(out.memptr(), A, B.memptr(), al pha, eT(1)); gemv<false, false, true>::apply(out.memptr(), A, B.memptr(), al pha, eT(1));
} }
else else
{ {
gemm<false, true, false, true>::apply(out, A, B, alpha, eT(1)); gemm<false, true, false, true>::apply(out, A, B, alpha, eT(1));
} }
} }
else else
if( (do_trans_A == false) && (do_trans_B == true) && (use_alpha == true) ) if( (do_trans_A == false) && (do_trans_B == true) && (use_alpha == true) )
{ {
if(A.n_rows == 1) if(A.n_rows == 1)
{ {
gemv<false, true, true>::apply(out.memptr(), B, A.memptr(), alp ha, eT(1)); gemv<false, true, true>::apply(out.memptr(), B, A.memptr(), alp ha, eT(1));
} }
else
if(B.n_rows == 1) if(B.n_rows == 1)
{ {
gemv<false, true, true>::apply(out.memptr(), A, B.memptr(), alp ha, eT(1)); gemv<false, true, true>::apply(out.memptr(), A, B.memptr(), alp ha, eT(1));
} }
else else
{ {
gemm<false, true, true, true>::apply(out, A, B, alpha, eT(1)); gemm<false, true, true, true>::apply(out, A, B, alpha, eT(1));
} }
} }
else else
if( (do_trans_A == true) && (do_trans_B == true) && (use_alpha == false) ) if( (do_trans_A == true) && (do_trans_B == true) && (use_alpha == false) )
{ {
if(A.n_cols == 1) if(A.n_cols == 1)
{ {
gemv<false, false, true>::apply(out.memptr(), B, A.memptr(), alp ha, eT(1)); gemv<false, false, true>::apply(out.memptr(), B, A.memptr(), alp ha, eT(1));
} }
else
if(B.n_rows == 1) if(B.n_rows == 1)
{ {
gemv<true, false, true>::apply(out.memptr(), A, B.memptr(), alp ha, eT(1)); gemv<true, false, true>::apply(out.memptr(), A, B.memptr(), alp ha, eT(1));
} }
else else
{ {
gemm<true, true, false, true>::apply(out, A, B, alpha, eT(1)); gemm<true, true, false, true>::apply(out, A, B, alpha, eT(1));
} }
} }
else else
if( (do_trans_A == true) && (do_trans_B == true) && (use_alpha == true) ) if( (do_trans_A == true) && (do_trans_B == true) && (use_alpha == true) )
{ {
if(A.n_cols == 1) if(A.n_cols == 1)
{ {
gemv<false, true, true>::apply(out.memptr(), B, A.memptr(), alph a, eT(1)); gemv<false, true, true>::apply(out.memptr(), B, A.memptr(), alph a, eT(1));
} }
else
if(B.n_rows == 1) if(B.n_rows == 1)
{ {
gemv<true, true, true>::apply(out.memptr(), A, B.memptr(), alph a, eT(1)); gemv<true, true, true>::apply(out.memptr(), A, B.memptr(), alph a, eT(1));
} }
else else
{ {
gemm<true, true, true, true>::apply(out, A, B, alpha, eT(1)); gemm<true, true, true, true>::apply(out, A, B, alpha, eT(1));
} }
} }
skipping to change at line 440 skipping to change at line 448
gemm<true, false, false, false>::apply(out, A, B); gemm<true, false, false, false>::apply(out, A, B);
} }
} }
else else
if( (do_trans_A == true) && (do_trans_B == false) && (use_alpha == true) ) if( (do_trans_A == true) && (do_trans_B == false) && (use_alpha == true) )
{ {
if(A.n_cols == 1) if(A.n_cols == 1)
{ {
gemv<true, true, false>::apply(out.memptr(), B, A.memptr(), al pha); gemv<true, true, false>::apply(out.memptr(), B, A.memptr(), al pha);
} }
else
if(B.n_cols == 1) if(B.n_cols == 1)
{ {
gemv<true, true, false>::apply(out.memptr(), A, B.memptr(), al pha); gemv<true, true, false>::apply(out.memptr(), A, B.memptr(), al pha);
} }
else else
{ {
gemm<true, false, true, false>::apply(out, A, B, alpha); gemm<true, false, true, false>::apply(out, A, B, alpha);
} }
} }
else else
if( (do_trans_A == false) && (do_trans_B == true) && (use_alpha == false) ) if( (do_trans_A == false) && (do_trans_B == true) && (use_alpha == false) )
{ {
if(A.n_rows == 1) if(A.n_rows == 1)
{ {
gemv<false, false, false>::apply(out.memptr(), B, A.memptr()); gemv<false, false, false>::apply(out.memptr(), B, A.memptr());
} }
else
if(B.n_rows == 1) if(B.n_rows == 1)
{ {
gemv<false, false, false>::apply(out.memptr(), A, B.memptr()); gemv<false, false, false>::apply(out.memptr(), A, B.memptr());
} }
else else
{ {
gemm<false, true, false, false>::apply(out, A, B); gemm<false, true, false, false>::apply(out, A, B);
} }
} }
else else
if( (do_trans_A == false) && (do_trans_B == true) && (use_alpha == true) ) if( (do_trans_A == false) && (do_trans_B == true) && (use_alpha == true) )
{ {
if(A.n_rows == 1) if(A.n_rows == 1)
{ {
gemv<false, true, false>::apply(out.memptr(), B, A.memptr(), al pha); gemv<false, true, false>::apply(out.memptr(), B, A.memptr(), al pha);
} }
else
if(B.n_rows == 1) if(B.n_rows == 1)
{ {
gemv<false, true, false>::apply(out.memptr(), A, B.memptr(), al pha); gemv<false, true, false>::apply(out.memptr(), A, B.memptr(), al pha);
} }
else else
{ {
gemm<false, true, true, false>::apply(out, A, B, alpha); gemm<false, true, true, false>::apply(out, A, B, alpha);
} }
} }
else else
if( (do_trans_A == true) && (do_trans_B == true) && (use_alpha == false) ) if( (do_trans_A == true) && (do_trans_B == true) && (use_alpha == false) )
{ {
if(A.n_cols == 1) if(A.n_cols == 1)
{ {
gemv<false, false, false>::apply(out.memptr(), B, A.memptr()); gemv<false, false, false>::apply(out.memptr(), B, A.memptr());
} }
else
if(B.n_rows == 1) if(B.n_rows == 1)
{ {
gemv<true, false, false>::apply(out.memptr(), A, B.memptr()); gemv<true, false, false>::apply(out.memptr(), A, B.memptr());
} }
else else
{ {
gemm<true, true, false, false>::apply(out, A, B); gemm<true, true, false, false>::apply(out, A, B);
} }
} }
else else
if( (do_trans_A == true) && (do_trans_B == true) && (use_alpha == true) ) if( (do_trans_A == true) && (do_trans_B == true) && (use_alpha == true) )
{ {
if(A.n_cols == 1) if(A.n_cols == 1)
{ {
gemv<false, true, false>::apply(out.memptr(), B, A.memptr(), alp ha); gemv<false, true, false>::apply(out.memptr(), B, A.memptr(), alp ha);
} }
else
if(B.n_rows == 1) if(B.n_rows == 1)
{ {
gemv<true, true, false>::apply(out.memptr(), A, B.memptr(), alp ha); gemv<true, true, false>::apply(out.memptr(), A, B.memptr(), alp ha);
} }
else else
{ {
gemm<true, true, true, false>::apply(out, A, B, alpha); gemm<true, true, true, false>::apply(out, A, B, alpha);
} }
} }
} }
 End of changes. 13 change blocks. 
0 lines changed or deleted 13 lines changed or added


 version.hpp   version.hpp 
skipping to change at line 23 skipping to change at line 23
// of the License or (at your option) any later version. // of the License or (at your option) any later version.
// (see http://www.opensource.org/licenses for more info) // (see http://www.opensource.org/licenses for more info)
//! \addtogroup version //! \addtogroup version
//! @{ //! @{
struct arma_version struct arma_version
{ {
static const unsigned int major = 0; static const unsigned int major = 0;
static const unsigned int minor = 9; static const unsigned int minor = 9;
static const unsigned int patch = 2; static const unsigned int patch = 4;
}; };
struct arma_config struct arma_config
{ {
#if defined(ARMA_USE_ATLAS) #if defined(ARMA_USE_ATLAS)
static const bool atlas = true; static const bool atlas = true;
#else #else
static const bool atlas = false; static const bool atlas = false;
#endif #endif
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/