| Proxy.hpp | | Proxy.hpp | |
| | | | |
| skipping to change at line 1376 | | skipping to change at line 1376 | |
| | | | |
| arma_inline ea_type get_ea() const { return Q; } | | arma_inline ea_type get_ea() const { return Q; } | |
| arma_inline aligned_ea_type get_aligned_ea() const { return Q; } | | arma_inline aligned_ea_type get_aligned_ea() const { return Q; } | |
| | | | |
| template<typename eT2> | | template<typename eT2> | |
| arma_inline bool is_alias(const Mat<eT2>& X) const { return (void_ptr(&(Q
.sv_row.m)) == void_ptr(&X)); } | | arma_inline bool is_alias(const Mat<eT2>& X) const { return (void_ptr(&(Q
.sv_row.m)) == void_ptr(&X)); } | |
| | | | |
| arma_inline bool is_aligned() const { return false; } | | arma_inline bool is_aligned() const { return false; } | |
| }; | | }; | |
| | | | |
|
| | | template<typename eT> | |
| | | class Proxy< xvec_htrans<eT> > | |
| | | { | |
| | | public: | |
| | | | |
| | | typedef eT elem_type; | |
| | | typedef typename get_pod_type<elem_type>::result pod_type; | |
| | | typedef Mat<eT> stored_type; | |
| | | typedef const eT* ea_type; | |
| | | typedef const Mat<eT>& aligned_ea_type; | |
| | | | |
| | | static const bool prefer_at_accessor = false; | |
| | | static const bool has_subview = false; | |
| | | static const bool is_fixed = false; | |
| | | static const bool fake_mat = false; | |
| | | | |
| | | static const bool is_row = false; | |
| | | static const bool is_col = false; | |
| | | | |
| | | arma_aligned const Mat<eT> Q; | |
| | | | |
| | | inline explicit Proxy(const xvec_htrans<eT>& A) | |
| | | : Q(A) | |
| | | { | |
| | | arma_extra_debug_sigprint(); | |
| | | } | |
| | | | |
| | | arma_inline uword get_n_rows() const { return Q.n_rows; } | |
| | | arma_inline uword get_n_cols() const { return Q.n_cols; } | |
| | | arma_inline uword get_n_elem() const { return Q.n_elem; } | |
| | | | |
| | | arma_inline elem_type operator[] (const uword i) const | |
| | | { return Q[i]; } | |
| | | arma_inline elem_type at (const uword row, const uword col) const | |
| | | { return Q.at(row,col); } | |
| | | arma_inline elem_type at_alt (const uword i) const | |
| | | { return Q.at_alt(i); } | |
| | | | |
| | | arma_inline ea_type get_ea() const { return Q.memptr(); } | |
| | | arma_inline aligned_ea_type get_aligned_ea() const { return Q; } | |
| | | | |
| | | template<typename eT2> | |
| | | arma_inline bool is_alias(const Mat<eT2>& X) const { return false; } | |
| | | | |
| | | arma_inline bool is_aligned() const { return memory::is_aligned(Q.memptr( | |
| | | )); } | |
| | | }; | |
| | | | |
| template<typename eT, typename T1> | | template<typename eT, typename T1> | |
| class Proxy< subview_elem1<eT,T1> > | | class Proxy< subview_elem1<eT,T1> > | |
| { | | { | |
| public: | | public: | |
| | | | |
| typedef eT elem_type; | | typedef eT elem_type; | |
| typedef typename get_pod_type<elem_type>::result pod_type; | | typedef typename get_pod_type<elem_type>::result pod_type; | |
| typedef Mat<eT> stored_type; | | typedef Mat<eT> stored_type; | |
| typedef const eT* ea_type; | | typedef const eT* ea_type; | |
| typedef const Mat<eT>& aligned_ea_type; | | typedef const Mat<eT>& aligned_ea_type; | |
| | | | |
End of changes. 1 change blocks. |
| 0 lines changed or deleted | | 48 lines changed or added | |
|
| arma_version.hpp | | arma_version.hpp | |
| | | | |
| skipping to change at line 13 | | skipping to change at line 13 | |
| // | | // | |
| // This Source Code Form is subject to the terms of the Mozilla Public | | // This Source Code Form is subject to the terms of the Mozilla Public | |
| // License, v. 2.0. If a copy of the MPL was not distributed with this | | // License, v. 2.0. If a copy of the MPL was not distributed with this | |
| // file, You can obtain one at http://mozilla.org/MPL/2.0/. | | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |
| | | | |
| //! \addtogroup arma_version | | //! \addtogroup arma_version | |
| //! @{ | | //! @{ | |
| | | | |
| #define ARMA_VERSION_MAJOR 3 | | #define ARMA_VERSION_MAJOR 3 | |
| #define ARMA_VERSION_MINOR 900 | | #define ARMA_VERSION_MINOR 900 | |
|
| #define ARMA_VERSION_PATCH 1 | | #define ARMA_VERSION_PATCH 2 | |
| #define ARMA_VERSION_NAME "Bavarian Sunflower" | | #define ARMA_VERSION_NAME "Bavarian Sunflower" | |
| | | | |
| struct arma_version | | struct arma_version | |
| { | | { | |
| static const unsigned int major = ARMA_VERSION_MAJOR; | | static const unsigned int major = ARMA_VERSION_MAJOR; | |
| static const unsigned int minor = ARMA_VERSION_MINOR; | | static const unsigned int minor = ARMA_VERSION_MINOR; | |
| static const unsigned int patch = ARMA_VERSION_PATCH; | | static const unsigned int patch = ARMA_VERSION_PATCH; | |
| | | | |
| static | | static | |
| inline | | inline | |
| | | | |
End of changes. 1 change blocks. |
| 1 lines changed or deleted | | 1 lines changed or added | |
|
| fn_as_scalar.hpp | | fn_as_scalar.hpp | |
| | | | |
| skipping to change at line 40 | | skipping to change at line 40 | |
| }; | | }; | |
| | | | |
| template<uword N> | | template<uword N> | |
| template<typename T1> | | template<typename T1> | |
| inline | | inline | |
| typename T1::elem_type | | typename T1::elem_type | |
| as_scalar_redirect<N>::apply(const T1& X) | | as_scalar_redirect<N>::apply(const T1& X) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| | | | |
|
| typedef typename T1::elem_type eT; | | // typedef typename T1::elem_type eT; | |
| | | | |
| const Proxy<T1> P(X); | | const Proxy<T1> P(X); | |
| | | | |
| arma_debug_check( (P.get_n_elem() != 1), "as_scalar(): expression doesn't
evaluate to exactly one element" ); | | arma_debug_check( (P.get_n_elem() != 1), "as_scalar(): expression doesn't
evaluate to exactly one element" ); | |
| | | | |
| return (Proxy<T1>::prefer_at_accessor == true) ? P.at(0,0) : P[0]; | | return (Proxy<T1>::prefer_at_accessor == true) ? P.at(0,0) : P[0]; | |
| } | | } | |
| | | | |
| template<typename T1, typename T2> | | template<typename T1, typename T2> | |
| inline | | inline | |
| | | | |
| skipping to change at line 296 | | skipping to change at line 296 | |
| } | | } | |
| | | | |
| template<typename T1> | | template<typename T1> | |
| inline | | inline | |
| arma_warn_unused | | arma_warn_unused | |
| typename T1::elem_type | | typename T1::elem_type | |
| as_scalar(const Base<typename T1::elem_type,T1>& X) | | as_scalar(const Base<typename T1::elem_type,T1>& X) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| | | | |
|
| typedef typename T1::elem_type eT; | | // typedef typename T1::elem_type eT; | |
| | | | |
| const Proxy<T1> P(X.get_ref()); | | const Proxy<T1> P(X.get_ref()); | |
| | | | |
| arma_debug_check( (P.get_n_elem() != 1), "as_scalar(): expression doesn't
evaluate to exactly one element" ); | | arma_debug_check( (P.get_n_elem() != 1), "as_scalar(): expression doesn't
evaluate to exactly one element" ); | |
| | | | |
| return (Proxy<T1>::prefer_at_accessor == true) ? P.at(0,0) : P[0]; | | return (Proxy<T1>::prefer_at_accessor == true) ? P.at(0,0) : P[0]; | |
| } | | } | |
| | | | |
| // ensure the following two functions are aware of each other | | // ensure the following two functions are aware of each other | |
| template<typename T1, typename eop_type> inline arma_warn_un
used typename T1::elem_type as_scalar(const eOp<T1, eop_type>& X); | | template<typename T1, typename eop_type> inline arma_warn_un
used typename T1::elem_type as_scalar(const eOp<T1, eop_type>& X); | |
| | | | |
| skipping to change at line 353 | | skipping to change at line 353 | |
| } | | } | |
| | | | |
| template<typename T1> | | template<typename T1> | |
| inline | | inline | |
| arma_warn_unused | | arma_warn_unused | |
| typename T1::elem_type | | typename T1::elem_type | |
| as_scalar(const BaseCube<typename T1::elem_type,T1>& X) | | as_scalar(const BaseCube<typename T1::elem_type,T1>& X) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| | | | |
|
| typedef typename T1::elem_type eT; | | // typedef typename T1::elem_type eT; | |
| | | | |
| const ProxyCube<T1> P(X.get_ref()); | | const ProxyCube<T1> P(X.get_ref()); | |
| | | | |
| arma_debug_check( (P.get_n_elem() != 1), "as_scalar(): expression doesn't
evaluate to exactly one element" ); | | arma_debug_check( (P.get_n_elem() != 1), "as_scalar(): expression doesn't
evaluate to exactly one element" ); | |
| | | | |
| return (ProxyCube<T1>::prefer_at_accessor == true) ? P.at(0,0,0) : P[0]; | | return (ProxyCube<T1>::prefer_at_accessor == true) ? P.at(0,0,0) : P[0]; | |
| } | | } | |
| | | | |
| template<typename T> | | template<typename T> | |
| arma_inline | | arma_inline | |
| | | | |
End of changes. 3 change blocks. |
| 3 lines changed or deleted | | 3 lines changed or added | |
|
| xvec_htrans_bones.hpp | | xvec_htrans_bones.hpp | |
| | | | |
| skipping to change at line 33 | | skipping to change at line 33 | |
| const uword n_rows; | | const uword n_rows; | |
| const uword n_cols; | | const uword n_cols; | |
| const uword n_elem; | | const uword n_elem; | |
| | | | |
| inline explicit xvec_htrans(const eT* const in_mem, const uword in_n_rows
, const uword in_n_cols); | | inline explicit xvec_htrans(const eT* const in_mem, const uword in_n_rows
, const uword in_n_cols); | |
| | | | |
| inline void extract(Mat<eT>& out) const; | | inline void extract(Mat<eT>& out) const; | |
| | | | |
| inline eT operator[](const uword ii) const; | | inline eT operator[](const uword ii) const; | |
| inline eT at_alt (const uword ii) const; | | inline eT at_alt (const uword ii) const; | |
|
| | | | |
| | | inline eT at (const uword in_row, const uword in_col) const; | |
| }; | | }; | |
| | | | |
| //! @} | | //! @} | |
| | | | |
End of changes. 1 change blocks. |
| 0 lines changed or deleted | | 2 lines changed or added | |
|