| Proxy.hpp | | Proxy.hpp | |
| | | | |
| skipping to change at line 34 | | skipping to change at line 34 | |
| struct Proxy_fixed | | struct Proxy_fixed | |
| { | | { | |
| typedef typename T1::elem_type elem_type; | | typedef typename T1::elem_type elem_type; | |
| typedef typename get_pod_type<elem_type>::result pod_type; | | typedef typename get_pod_type<elem_type>::result pod_type; | |
| typedef T1 stored_type; | | typedef T1 stored_type; | |
| typedef const elem_type* ea_type; | | typedef const elem_type* ea_type; | |
| typedef const T1& aligned_ea_type; | | typedef const T1& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = false; | | static const bool has_subview = false; | |
|
| static const bool is_fixed = true; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = T1::is_row; | | static const bool is_row = T1::is_row; | |
| static const bool is_col = T1::is_col; | | static const bool is_col = T1::is_col; | |
| | | | |
| arma_aligned const T1& Q; | | arma_aligned const T1& Q; | |
| | | | |
| inline explicit Proxy_fixed(const T1& A) | | inline explicit Proxy_fixed(const T1& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
| skipping to change at line 104 | | skipping to change at line 103 | |
| 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; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = false; | | static const bool has_subview = false; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = false; | | static const bool is_col = false; | |
| | | | |
| arma_aligned const Mat<eT>& Q; | | arma_aligned const Mat<eT>& Q; | |
| | | | |
| inline explicit Proxy(const Mat<eT>& A) | | inline explicit Proxy(const Mat<eT>& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
| skipping to change at line 148 | | skipping to change at line 146 | |
| 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 Col<eT> stored_type; | | typedef Col<eT> stored_type; | |
| typedef const eT* ea_type; | | typedef const eT* ea_type; | |
| typedef const Col<eT>& aligned_ea_type; | | typedef const Col<eT>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = false; | | static const bool has_subview = false; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = true; | | static const bool is_col = true; | |
| | | | |
| arma_aligned const Col<eT>& Q; | | arma_aligned const Col<eT>& Q; | |
| | | | |
| inline explicit Proxy(const Col<eT>& A) | | inline explicit Proxy(const Col<eT>& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
| skipping to change at line 192 | | skipping to change at line 189 | |
| 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 Row<eT> stored_type; | | typedef Row<eT> stored_type; | |
| typedef const eT* ea_type; | | typedef const eT* ea_type; | |
| typedef const Row<eT>& aligned_ea_type; | | typedef const Row<eT>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = false; | | static const bool has_subview = false; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = true; | | static const bool is_row = true; | |
| static const bool is_col = false; | | static const bool is_col = false; | |
| | | | |
| arma_aligned const Row<eT>& Q; | | arma_aligned const Row<eT>& Q; | |
| | | | |
| inline explicit Proxy(const Row<eT>& A) | | inline explicit Proxy(const Row<eT>& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
| skipping to change at line 236 | | skipping to change at line 232 | |
| public: | | public: | |
| | | | |
| typedef typename T1::elem_type elem_type; | | typedef typename T1::elem_type elem_type; | |
| typedef typename get_pod_type<elem_type>::result pod_type; | | typedef typename get_pod_type<elem_type>::result pod_type; | |
| typedef Gen<T1, gen_type> stored_type; | | typedef Gen<T1, gen_type> stored_type; | |
| typedef const Gen<T1, gen_type>& ea_type; | | typedef const Gen<T1, gen_type>& ea_type; | |
| typedef const Gen<T1, gen_type>& aligned_ea_type; | | typedef const Gen<T1, gen_type>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = Gen<T1, gen_type>::prefer_at_acces
sor; | | static const bool prefer_at_accessor = Gen<T1, gen_type>::prefer_at_acces
sor; | |
| static const bool has_subview = false; | | static const bool has_subview = false; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = Gen<T1, gen_type>::is_row; | | static const bool is_row = Gen<T1, gen_type>::is_row; | |
| static const bool is_col = Gen<T1, gen_type>::is_col; | | static const bool is_col = Gen<T1, gen_type>::is_col; | |
| | | | |
| arma_aligned const Gen<T1, gen_type>& Q; | | arma_aligned const Gen<T1, gen_type>& Q; | |
| | | | |
| inline explicit Proxy(const Gen<T1, gen_type>& A) | | inline explicit Proxy(const Gen<T1, gen_type>& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
| skipping to change at line 280 | | skipping to change at line 275 | |
| public: | | public: | |
| | | | |
| typedef typename T1::elem_type elem_type; | | typedef typename T1::elem_type elem_type; | |
| typedef typename get_pod_type<elem_type>::result pod_type; | | typedef typename get_pod_type<elem_type>::result pod_type; | |
| typedef Mat<elem_type> stored_type; | | typedef Mat<elem_type> stored_type; | |
| typedef const elem_type* ea_type; | | typedef const elem_type* ea_type; | |
| typedef const Mat<elem_type>& aligned_ea_type; | | typedef const Mat<elem_type>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = false; | | static const bool has_subview = false; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = Op<T1, op_type>::is_row; | | static const bool is_row = Op<T1, op_type>::is_row; | |
| static const bool is_col = Op<T1, op_type>::is_col; | | static const bool is_col = Op<T1, op_type>::is_col; | |
| | | | |
| arma_aligned const Mat<elem_type> Q; | | arma_aligned const Mat<elem_type> Q; | |
| | | | |
| inline explicit Proxy(const Op<T1, op_type>& A) | | inline explicit Proxy(const Op<T1, op_type>& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
| skipping to change at line 330 | | skipping to change at line 324 | |
| public: | | public: | |
| | | | |
| typedef typename T1::elem_type elem_type; | | typedef typename T1::elem_type elem_type; | |
| typedef typename get_pod_type<elem_type>::result pod_type; | | typedef typename get_pod_type<elem_type>::result pod_type; | |
| typedef diagview<elem_type> stored_type; | | typedef diagview<elem_type> stored_type; | |
| typedef const diagview<elem_type>& ea_type; | | typedef const diagview<elem_type>& ea_type; | |
| typedef const diagview<elem_type>& aligned_ea_type; | | typedef const diagview<elem_type>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = true; | | static const bool has_subview = true; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = true; | | static const bool is_col = true; | |
| | | | |
| arma_aligned const Mat<elem_type>& R; | | arma_aligned const Mat<elem_type>& R; | |
| arma_aligned const diagview<elem_type> Q; | | arma_aligned const diagview<elem_type> Q; | |
| | | | |
| inline explicit Proxy_diagvec_mat(const Op<T1, op_diagvec>& A) | | inline explicit Proxy_diagvec_mat(const Op<T1, op_diagvec>& A) | |
| : R(A.m), Q( R.diag( (A.aux_uword_b > 0) ? -sword(A.aux_uword_a) : swor
d(A.aux_uword_a) ) ) | | : R(A.m), Q( R.diag( (A.aux_uword_b > 0) ? -sword(A.aux_uword_a) : swor
d(A.aux_uword_a) ) ) | |
| | | | |
| skipping to change at line 381 | | skipping to change at line 374 | |
| public: | | public: | |
| | | | |
| typedef typename T1::elem_type elem_type; | | typedef typename T1::elem_type elem_type; | |
| typedef typename get_pod_type<elem_type>::result pod_type; | | typedef typename get_pod_type<elem_type>::result pod_type; | |
| typedef Mat<elem_type> stored_type; | | typedef Mat<elem_type> stored_type; | |
| typedef const elem_type* ea_type; | | typedef const elem_type* ea_type; | |
| typedef const Mat<elem_type>& aligned_ea_type; | | typedef const Mat<elem_type>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = false; | | static const bool has_subview = false; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = true; | | static const bool is_col = true; | |
| | | | |
| arma_aligned const Mat<elem_type> Q; | | arma_aligned const Mat<elem_type> Q; | |
| | | | |
| inline explicit Proxy_diagvec_expr(const Op<T1, op_diagvec>& A) | | inline explicit Proxy_diagvec_expr(const Op<T1, op_diagvec>& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
| skipping to change at line 455 | | skipping to change at line 447 | |
| public: | | public: | |
| | | | |
| typedef typename T1::elem_type elem_type; | | typedef typename T1::elem_type elem_type; | |
| typedef typename get_pod_type<elem_type>::result pod_type; | | typedef typename get_pod_type<elem_type>::result pod_type; | |
| typedef xtrans_mat<elem_type,true> stored_type; | | typedef xtrans_mat<elem_type,true> stored_type; | |
| typedef const xtrans_mat<elem_type,true>& ea_type; | | typedef const xtrans_mat<elem_type,true>& ea_type; | |
| typedef const xtrans_mat<elem_type,true>& aligned_ea_type; | | typedef const xtrans_mat<elem_type,true>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = true; | | static const bool prefer_at_accessor = true; | |
| static const bool has_subview = true; | | static const bool has_subview = true; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = false; | | static const bool is_col = false; | |
| | | | |
| const unwrap<T1> U; | | const unwrap<T1> U; | |
| const xtrans_mat<elem_type,true> Q; | | const xtrans_mat<elem_type,true> Q; | |
| | | | |
| inline explicit Proxy_xtrans_default(const Op<T1, op_htrans>& A) | | inline explicit Proxy_xtrans_default(const Op<T1, op_htrans>& A) | |
| : U(A.m) | | : U(A.m) | |
| | | | |
| skipping to change at line 493 | | skipping to change at line 484 | |
| public: | | public: | |
| | | | |
| typedef typename T1::elem_type elem_type; | | typedef typename T1::elem_type elem_type; | |
| typedef typename get_pod_type<elem_type>::result pod_type; | | typedef typename get_pod_type<elem_type>::result pod_type; | |
| typedef xtrans_mat<elem_type,false> stored_type; | | typedef xtrans_mat<elem_type,false> stored_type; | |
| typedef const xtrans_mat<elem_type,false>& ea_type; | | typedef const xtrans_mat<elem_type,false>& ea_type; | |
| typedef const xtrans_mat<elem_type,false>& aligned_ea_type; | | typedef const xtrans_mat<elem_type,false>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = true; | | static const bool prefer_at_accessor = true; | |
| static const bool has_subview = true; | | static const bool has_subview = true; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = false; | | static const bool is_col = false; | |
| | | | |
| const unwrap<T1> U; | | const unwrap<T1> U; | |
| const xtrans_mat<elem_type,false> Q; | | const xtrans_mat<elem_type,false> Q; | |
| | | | |
| inline explicit Proxy_xtrans_default(const Op<T1, op_strans>& A) | | inline explicit Proxy_xtrans_default(const Op<T1, op_strans>& A) | |
| : U(A.m) | | : U(A.m) | |
| | | | |
| skipping to change at line 535 | | skipping to change at line 525 | |
| struct Proxy_xtrans_vector< Op<T1, op_htrans> > | | struct Proxy_xtrans_vector< Op<T1, op_htrans> > | |
| { | | { | |
| typedef typename T1::elem_type elem_type; | | typedef typename T1::elem_type elem_type; | |
| typedef typename get_pod_type<elem_type>::result pod_type; | | typedef typename get_pod_type<elem_type>::result pod_type; | |
| typedef Mat<elem_type> stored_type; | | typedef Mat<elem_type> stored_type; | |
| typedef const elem_type* ea_type; | | typedef const elem_type* ea_type; | |
| typedef const Mat<elem_type>& aligned_ea_type; | | typedef const Mat<elem_type>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = quasi_unwrap<T1>::has_subview; | | static const bool has_subview = quasi_unwrap<T1>::has_subview; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = true; | | static const bool fake_mat = true; | |
| | | | |
| // NOTE: the Op class takes care of swapping row and col for op_htrans | | // NOTE: the Op class takes care of swapping row and col for op_htrans | |
| static const bool is_row = Op<T1, op_htrans>::is_row; | | static const bool is_row = Op<T1, op_htrans>::is_row; | |
| static const bool is_col = Op<T1, op_htrans>::is_col; | | static const bool is_col = Op<T1, op_htrans>::is_col; | |
| | | | |
| arma_aligned const quasi_unwrap<T1> U; // avoid copy if T1 is a Row, Col
or subview_col | | arma_aligned const quasi_unwrap<T1> U; // avoid copy if T1 is a Row, Col
or subview_col | |
| arma_aligned const Mat<elem_type> Q; | | arma_aligned const Mat<elem_type> Q; | |
| | | | |
| inline Proxy_xtrans_vector(const Op<T1, op_htrans>& A) | | inline Proxy_xtrans_vector(const Op<T1, op_htrans>& A) | |
| | | | |
| skipping to change at line 572 | | skipping to change at line 561 | |
| struct Proxy_xtrans_vector< Op<T1, op_strans> > | | struct Proxy_xtrans_vector< Op<T1, op_strans> > | |
| { | | { | |
| typedef typename T1::elem_type elem_type; | | typedef typename T1::elem_type elem_type; | |
| typedef typename get_pod_type<elem_type>::result pod_type; | | typedef typename get_pod_type<elem_type>::result pod_type; | |
| typedef Mat<elem_type> stored_type; | | typedef Mat<elem_type> stored_type; | |
| typedef const elem_type* ea_type; | | typedef const elem_type* ea_type; | |
| typedef const Mat<elem_type>& aligned_ea_type; | | typedef const Mat<elem_type>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = quasi_unwrap<T1>::has_subview; | | static const bool has_subview = quasi_unwrap<T1>::has_subview; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = true; | | static const bool fake_mat = true; | |
| | | | |
| // NOTE: the Op class takes care of swapping row and col for op_htrans | | // NOTE: the Op class takes care of swapping row and col for op_htrans | |
| static const bool is_row = Op<T1, op_htrans>::is_row; | | static const bool is_row = Op<T1, op_htrans>::is_row; | |
| static const bool is_col = Op<T1, op_htrans>::is_col; | | static const bool is_col = Op<T1, op_htrans>::is_col; | |
| | | | |
| arma_aligned const quasi_unwrap<T1> U; // avoid copy if T1 is a Row, Col
or subview_col | | arma_aligned const quasi_unwrap<T1> U; // avoid copy if T1 is a Row, Col
or subview_col | |
| arma_aligned const Mat<elem_type> Q; | | arma_aligned const Mat<elem_type> Q; | |
| | | | |
| inline Proxy_xtrans_vector(const Op<T1, op_strans>& A) | | inline Proxy_xtrans_vector(const Op<T1, op_strans>& A) | |
| | | | |
| skipping to change at line 635 | | skipping to change at line 623 | |
| Proxy_xtrans; | | Proxy_xtrans; | |
| | | | |
| typedef typename Proxy_xtrans::elem_type elem_type; | | typedef typename Proxy_xtrans::elem_type elem_type; | |
| typedef typename Proxy_xtrans::pod_type pod_type; | | typedef typename Proxy_xtrans::pod_type pod_type; | |
| typedef typename Proxy_xtrans::stored_type stored_type; | | typedef typename Proxy_xtrans::stored_type stored_type; | |
| typedef typename Proxy_xtrans::ea_type ea_type; | | typedef typename Proxy_xtrans::ea_type ea_type; | |
| typedef typename Proxy_xtrans::aligned_ea_type aligned_ea_type; | | typedef typename Proxy_xtrans::aligned_ea_type aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = Proxy_xtrans::prefer_at_accessor; | | static const bool prefer_at_accessor = Proxy_xtrans::prefer_at_accessor; | |
| static const bool has_subview = Proxy_xtrans::has_subview; | | static const bool has_subview = Proxy_xtrans::has_subview; | |
|
| static const bool is_fixed = Proxy_xtrans::is_fixed; | | | |
| static const bool fake_mat = Proxy_xtrans::fake_mat; | | static const bool fake_mat = Proxy_xtrans::fake_mat; | |
| | | | |
| static const bool is_row = Proxy_xtrans::is_row; | | static const bool is_row = Proxy_xtrans::is_row; | |
| static const bool is_col = Proxy_xtrans::is_col; | | static const bool is_col = Proxy_xtrans::is_col; | |
| | | | |
| using Proxy_xtrans::Q; | | using Proxy_xtrans::Q; | |
| | | | |
| inline explicit Proxy(const Op<T1, op_htrans>& A) | | inline explicit Proxy(const Op<T1, op_htrans>& A) | |
| : Proxy_xtrans(A) | | : Proxy_xtrans(A) | |
| { | | { | |
| | | | |
| skipping to change at line 694 | | skipping to change at line 681 | |
| Proxy_xtrans; | | Proxy_xtrans; | |
| | | | |
| typedef typename Proxy_xtrans::elem_type elem_type; | | typedef typename Proxy_xtrans::elem_type elem_type; | |
| typedef typename Proxy_xtrans::pod_type pod_type; | | typedef typename Proxy_xtrans::pod_type pod_type; | |
| typedef typename Proxy_xtrans::stored_type stored_type; | | typedef typename Proxy_xtrans::stored_type stored_type; | |
| typedef typename Proxy_xtrans::ea_type ea_type; | | typedef typename Proxy_xtrans::ea_type ea_type; | |
| typedef typename Proxy_xtrans::aligned_ea_type aligned_ea_type; | | typedef typename Proxy_xtrans::aligned_ea_type aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = Proxy_xtrans::prefer_at_accessor; | | static const bool prefer_at_accessor = Proxy_xtrans::prefer_at_accessor; | |
| static const bool has_subview = Proxy_xtrans::has_subview; | | static const bool has_subview = Proxy_xtrans::has_subview; | |
|
| static const bool is_fixed = Proxy_xtrans::is_fixed; | | | |
| static const bool fake_mat = Proxy_xtrans::fake_mat; | | static const bool fake_mat = Proxy_xtrans::fake_mat; | |
| | | | |
| static const bool is_row = Proxy_xtrans::is_row; | | static const bool is_row = Proxy_xtrans::is_row; | |
| static const bool is_col = Proxy_xtrans::is_col; | | static const bool is_col = Proxy_xtrans::is_col; | |
| | | | |
| using Proxy_xtrans::Q; | | using Proxy_xtrans::Q; | |
| | | | |
| inline explicit Proxy(const Op<T1, op_strans>& A) | | inline explicit Proxy(const Op<T1, op_strans>& A) | |
| : Proxy_xtrans(A) | | : Proxy_xtrans(A) | |
| { | | { | |
| | | | |
| skipping to change at line 736 | | skipping to change at line 722 | |
| struct Proxy_subview_row_htrans_cx | | struct Proxy_subview_row_htrans_cx | |
| { | | { | |
| typedef eT elem_type; | | typedef eT elem_type; | |
| typedef typename get_pod_type<eT>::result pod_type; | | typedef typename get_pod_type<eT>::result pod_type; | |
| typedef subview_row_htrans<eT> stored_type; | | typedef subview_row_htrans<eT> stored_type; | |
| typedef const subview_row_htrans<eT>& ea_type; | | typedef const subview_row_htrans<eT>& ea_type; | |
| typedef const subview_row_htrans<eT>& aligned_ea_type; | | typedef const subview_row_htrans<eT>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = true; | | static const bool has_subview = true; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = true; | | static const bool is_col = true; | |
| | | | |
| arma_aligned const subview_row_htrans<eT> Q; | | arma_aligned const subview_row_htrans<eT> Q; | |
| | | | |
| inline explicit Proxy_subview_row_htrans_cx(const Op<subview_row<eT>, op_
htrans>& A) | | inline explicit Proxy_subview_row_htrans_cx(const Op<subview_row<eT>, op_
htrans>& A) | |
| : Q(A.m) | | : Q(A.m) | |
| { | | { | |
| | | | |
| skipping to change at line 765 | | skipping to change at line 750 | |
| struct Proxy_subview_row_htrans_non_cx | | struct Proxy_subview_row_htrans_non_cx | |
| { | | { | |
| typedef eT elem_type; | | typedef eT elem_type; | |
| typedef typename get_pod_type<eT>::result pod_type; | | typedef typename get_pod_type<eT>::result pod_type; | |
| typedef subview_row_strans<eT> stored_type; | | typedef subview_row_strans<eT> stored_type; | |
| typedef const subview_row_strans<eT>& ea_type; | | typedef const subview_row_strans<eT>& ea_type; | |
| typedef const subview_row_strans<eT>& aligned_ea_type; | | typedef const subview_row_strans<eT>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = true; | | static const bool has_subview = true; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = true; | | static const bool is_col = true; | |
| | | | |
| arma_aligned const subview_row_strans<eT> Q; | | arma_aligned const subview_row_strans<eT> Q; | |
| | | | |
| inline explicit Proxy_subview_row_htrans_non_cx(const Op<subview_row<eT>,
op_htrans>& A) | | inline explicit Proxy_subview_row_htrans_non_cx(const Op<subview_row<eT>,
op_htrans>& A) | |
| : Q(A.m) | | : Q(A.m) | |
| { | | { | |
| | | | |
| skipping to change at line 820 | | skipping to change at line 804 | |
| Proxy_sv_row_ht; | | Proxy_sv_row_ht; | |
| | | | |
| typedef typename Proxy_sv_row_ht::elem_type elem_type; | | typedef typename Proxy_sv_row_ht::elem_type elem_type; | |
| typedef typename Proxy_sv_row_ht::pod_type pod_type; | | typedef typename Proxy_sv_row_ht::pod_type pod_type; | |
| typedef typename Proxy_sv_row_ht::stored_type stored_type; | | typedef typename Proxy_sv_row_ht::stored_type stored_type; | |
| typedef typename Proxy_sv_row_ht::ea_type ea_type; | | typedef typename Proxy_sv_row_ht::ea_type ea_type; | |
| typedef typename Proxy_sv_row_ht::ea_type aligned_ea_type; | | typedef typename Proxy_sv_row_ht::ea_type aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = Proxy_sv_row_ht::prefer_at_accesso
r; | | static const bool prefer_at_accessor = Proxy_sv_row_ht::prefer_at_accesso
r; | |
| static const bool has_subview = Proxy_sv_row_ht::has_subview; | | static const bool has_subview = Proxy_sv_row_ht::has_subview; | |
|
| static const bool is_fixed = Proxy_sv_row_ht::is_fixed; | | | |
| static const bool fake_mat = Proxy_sv_row_ht::fake_mat; | | static const bool fake_mat = Proxy_sv_row_ht::fake_mat; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = true; | | static const bool is_col = true; | |
| | | | |
| using Proxy_sv_row_ht::Q; | | using Proxy_sv_row_ht::Q; | |
| | | | |
| inline explicit Proxy(const Op<subview_row<eT>, op_htrans>& A) | | inline explicit Proxy(const Op<subview_row<eT>, op_htrans>& A) | |
| : Proxy_sv_row_ht(A) | | : Proxy_sv_row_ht(A) | |
| { | | { | |
| | | | |
| skipping to change at line 864 | | skipping to change at line 847 | |
| public: | | public: | |
| | | | |
| typedef eT elem_type; | | typedef eT elem_type; | |
| typedef typename get_pod_type<eT>::result pod_type; | | typedef typename get_pod_type<eT>::result pod_type; | |
| typedef subview_row_strans<eT> stored_type; | | typedef subview_row_strans<eT> stored_type; | |
| typedef const subview_row_strans<eT>& ea_type; | | typedef const subview_row_strans<eT>& ea_type; | |
| typedef const subview_row_strans<eT>& aligned_ea_type; | | typedef const subview_row_strans<eT>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = true; | | static const bool has_subview = true; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = true; | | static const bool is_col = true; | |
| | | | |
| arma_aligned const subview_row_strans<eT> Q; | | arma_aligned const subview_row_strans<eT> Q; | |
| | | | |
| inline explicit Proxy(const Op<subview_row<eT>, op_strans>& A) | | inline explicit Proxy(const Op<subview_row<eT>, op_strans>& A) | |
| : Q(A.m) | | : Q(A.m) | |
| { | | { | |
| | | | |
| skipping to change at line 910 | | skipping to change at line 892 | |
| typedef typename std::complex<T> eT; | | typedef typename std::complex<T> eT; | |
| | | | |
| typedef typename std::complex<T> elem_type; | | typedef typename std::complex<T> elem_type; | |
| typedef T pod_type; | | typedef T pod_type; | |
| typedef xvec_htrans<eT> stored_type; | | typedef xvec_htrans<eT> stored_type; | |
| typedef const xvec_htrans<eT>& ea_type; | | typedef const xvec_htrans<eT>& ea_type; | |
| typedef const xvec_htrans<eT>& aligned_ea_type; | | typedef const xvec_htrans<eT>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = false; | | static const bool has_subview = false; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = true; | | static const bool is_col = true; | |
| | | | |
| const xvec_htrans<eT> Q; | | const xvec_htrans<eT> Q; | |
| const Row<eT>& src; | | const Row<eT>& src; | |
| | | | |
| inline explicit Proxy(const Op< Row< std::complex<T> >, op_htrans>& A) | | inline explicit Proxy(const Op< Row< std::complex<T> >, op_htrans>& A) | |
| : Q (A.m.memptr(), A.m.n_rows, A.m.n_cols) | | : Q (A.m.memptr(), A.m.n_rows, A.m.n_cols) | |
| | | | |
| skipping to change at line 958 | | skipping to change at line 939 | |
| typedef typename std::complex<T> eT; | | typedef typename std::complex<T> eT; | |
| | | | |
| typedef typename std::complex<T> elem_type; | | typedef typename std::complex<T> elem_type; | |
| typedef T pod_type; | | typedef T pod_type; | |
| typedef xvec_htrans<eT> stored_type; | | typedef xvec_htrans<eT> stored_type; | |
| typedef const xvec_htrans<eT>& ea_type; | | typedef const xvec_htrans<eT>& ea_type; | |
| typedef const xvec_htrans<eT>& aligned_ea_type; | | typedef const xvec_htrans<eT>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = false; | | static const bool has_subview = false; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = true; | | static const bool is_row = true; | |
| static const bool is_col = false; | | static const bool is_col = false; | |
| | | | |
| const xvec_htrans<eT> Q; | | const xvec_htrans<eT> Q; | |
| const Col<eT>& src; | | const Col<eT>& src; | |
| | | | |
| inline explicit Proxy(const Op< Col< std::complex<T> >, op_htrans>& A) | | inline explicit Proxy(const Op< Col< std::complex<T> >, op_htrans>& A) | |
| : Q (A.m.memptr(), A.m.n_rows, A.m.n_cols) | | : Q (A.m.memptr(), A.m.n_rows, A.m.n_cols) | |
| | | | |
| skipping to change at line 1006 | | skipping to change at line 986 | |
| typedef typename std::complex<T> eT; | | typedef typename std::complex<T> eT; | |
| | | | |
| typedef typename std::complex<T> elem_type; | | typedef typename std::complex<T> elem_type; | |
| typedef T pod_type; | | typedef T pod_type; | |
| typedef xvec_htrans<eT> stored_type; | | typedef xvec_htrans<eT> stored_type; | |
| typedef const xvec_htrans<eT>& ea_type; | | typedef const xvec_htrans<eT>& ea_type; | |
| typedef const xvec_htrans<eT>& aligned_ea_type; | | typedef const xvec_htrans<eT>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = true; | | static const bool has_subview = true; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = true; | | static const bool is_row = true; | |
| static const bool is_col = false; | | static const bool is_col = false; | |
| | | | |
| const xvec_htrans<eT> Q; | | const xvec_htrans<eT> Q; | |
| const subview_col<eT>& src; | | const subview_col<eT>& src; | |
| | | | |
| inline explicit Proxy(const Op< subview_col< std::complex<T> >, op_htrans
>& A) | | inline explicit Proxy(const Op< subview_col< std::complex<T> >, op_htrans
>& A) | |
| : Q (A.m.colptr(0), A.m.n_rows, A.m.n_cols) | | : Q (A.m.colptr(0), A.m.n_rows, A.m.n_cols) | |
| | | | |
| skipping to change at line 1040 | | skipping to change at line 1019 | |
| 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(&src
.m) == void_ptr(&X); } | | arma_inline bool is_alias(const Mat<eT2>& X) const { return void_ptr(&src
.m) == void_ptr(&X); } | |
| | | | |
| arma_inline bool is_aligned() const { return false; } | | arma_inline bool is_aligned() const { return false; } | |
| }; | | }; | |
| | | | |
| template<typename T1> | | template<typename T1> | |
|
| struct Proxy_htrans2_default | | class Proxy< Op<T1, op_htrans2> > | |
| { | | | |
| typedef typename T1::elem_type elem_type; | | | |
| typedef typename get_pod_type<elem_type>::result pod_type; | | | |
| typedef Mat<elem_type> stored_type; | | | |
| typedef const elem_type* ea_type; | | | |
| typedef const Mat<elem_type>& 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<elem_type> Q; | | | |
| | | | |
| arma_hot | | | |
| inline Proxy_htrans2_default(const T1& 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 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>&) const { return false; } | | | |
| | | | |
| arma_inline bool is_aligned() const { return memory::is_aligned(Q.memptr( | | | |
| )); } | | | |
| }; | | | |
| | | | |
| template<typename T1> | | | |
| struct Proxy_htrans2_vector | | | |
| { | | | |
| inline Proxy_htrans2_vector(const T1&) {} | | | |
| }; | | | |
| | | | |
| template<typename T1> | | | |
| struct Proxy_htrans2_vector< Op<T1, op_htrans2> > | | | |
| { | | { | |
| public: | | public: | |
| | | | |
| typedef typename T1::elem_type elem_type; | | typedef typename T1::elem_type elem_type; | |
| typedef typename get_pod_type<elem_type>::result pod_type; | | typedef typename get_pod_type<elem_type>::result pod_type; | |
| typedef eOp< Op<T1, op_htrans>, eop_scalar_times> stored_type; | | typedef eOp< Op<T1, op_htrans>, eop_scalar_times> stored_type; | |
| typedef const eOp< Op<T1, op_htrans>, eop_scalar_times>& ea_type; | | typedef const eOp< Op<T1, op_htrans>, eop_scalar_times>& ea_type; | |
| typedef const eOp< Op<T1, op_htrans>, eop_scalar_times>& aligned_ea_type; | | typedef const eOp< Op<T1, op_htrans>, eop_scalar_times>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = eOp< Op<T1, op_htrans>, eop_scalar
_times>::prefer_at_accessor; | | static const bool prefer_at_accessor = eOp< Op<T1, op_htrans>, eop_scalar
_times>::prefer_at_accessor; | |
| static const bool has_subview = eOp< Op<T1, op_htrans>, eop_scalar
_times>::has_subview; | | static const bool has_subview = eOp< Op<T1, op_htrans>, eop_scalar
_times>::has_subview; | |
|
| static const bool is_fixed = eOp< Op<T1, op_htrans>, eop_scalar
_times>::is_fixed; | | | |
| static const bool fake_mat = eOp< Op<T1, op_htrans>, eop_scalar
_times>::fake_mat; | | static const bool fake_mat = eOp< Op<T1, op_htrans>, eop_scalar
_times>::fake_mat; | |
| | | | |
| // NOTE: the Op class takes care of swapping row and col for op_htrans | | // NOTE: the Op class takes care of swapping row and col for op_htrans | |
| static const bool is_row = eOp< Op<T1, op_htrans>, eop_scalar_times>::is_
row; | | static const bool is_row = eOp< Op<T1, op_htrans>, eop_scalar_times>::is_
row; | |
| static const bool is_col = eOp< Op<T1, op_htrans>, eop_scalar_times>::is_
col; | | static const bool is_col = eOp< Op<T1, op_htrans>, eop_scalar_times>::is_
col; | |
| | | | |
| arma_aligned const Op<T1, op_htrans> R; | | arma_aligned const Op<T1, op_htrans> R; | |
| arma_aligned const eOp< Op<T1, op_htrans>, eop_scalar_times > Q; | | arma_aligned const eOp< Op<T1, op_htrans>, eop_scalar_times > Q; | |
| | | | |
|
| inline explicit Proxy_htrans2_vector(const Op<T1, op_htrans2>& A) | | inline explicit Proxy(const Op<T1, op_htrans2>& A) | |
| : R(A.m) | | : R(A.m) | |
| , Q(R, A.aux) | | , Q(R, A.aux) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
| arma_inline uword get_n_rows() const { return is_row ? 1 : Q.get_n_rows()
; } | | arma_inline uword get_n_rows() const { return is_row ? 1 : Q.get_n_rows()
; } | |
| arma_inline uword get_n_cols() const { return is_col ? 1 : Q.get_n_cols()
; } | | arma_inline uword get_n_cols() const { return is_col ? 1 : Q.get_n_cols()
; } | |
| arma_inline uword get_n_elem() const { return Q.get_n_elem();
} | | arma_inline uword get_n_elem() const { return Q.get_n_elem();
} | |
| | | | |
|
| arma_inline ea_type get_ea() const { return Q; } | | | |
| 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 Q.P.is_alias( | | | |
| X); } | | | |
| | | | |
| arma_inline bool is_aligned() const { return Q.P.is_aligned(); } | | | |
| }; | | | |
| | | | |
| template<typename T1, bool condition> | | | |
| struct Proxy_htrans2_redirect {}; | | | |
| | | | |
| template<typename T1> | | | |
| struct Proxy_htrans2_redirect<T1, false> { typedef Proxy_htrans2_default<T1 | | | |
| > result; }; | | | |
| | | | |
| template<typename T1> | | | |
| struct Proxy_htrans2_redirect<T1, true> { typedef Proxy_htrans2_vector<T1> | | | |
| result; }; | | | |
| | | | |
| template<typename T1> | | | |
| class Proxy< Op<T1, op_htrans2> > | | | |
| : public | | | |
| Proxy_htrans2_redirect | | | |
| < | | | |
| Op<T1, op_htrans2>, | | | |
| ( (Op<T1, op_htrans2>::is_row) || (Op<T1, op_htrans2>::is_col) ) | | | |
| >::result | | | |
| { | | | |
| public: | | | |
| | | | |
| typedef | | | |
| typename | | | |
| Proxy_htrans2_redirect | | | |
| < | | | |
| Op<T1, op_htrans2>, | | | |
| ( (Op<T1, op_htrans2>::is_row) || (Op<T1, op_htrans2>::is_col) ) | | | |
| >::result | | | |
| Proxy_htrans2; | | | |
| | | | |
| typedef typename Proxy_htrans2::elem_type elem_type; | | | |
| typedef typename Proxy_htrans2::pod_type pod_type; | | | |
| typedef typename Proxy_htrans2::stored_type stored_type; | | | |
| typedef typename Proxy_htrans2::ea_type ea_type; | | | |
| typedef typename Proxy_htrans2::aligned_ea_type aligned_ea_type; | | | |
| | | | |
| static const bool prefer_at_accessor = Proxy_htrans2::prefer_at_accessor; | | | |
| static const bool has_subview = Proxy_htrans2::has_subview; | | | |
| static const bool is_fixed = Proxy_htrans2::is_fixed; | | | |
| static const bool fake_mat = Proxy_htrans2::fake_mat; | | | |
| | | | |
| static const bool is_row = Proxy_htrans2::is_row; | | | |
| static const bool is_col = Proxy_htrans2::is_col; | | | |
| | | | |
| using Proxy_htrans2::Q; | | | |
| | | | |
| inline explicit Proxy(const Op<T1, op_htrans2>& A) | | | |
| : Proxy_htrans2(A) | | | |
| { | | | |
| arma_extra_debug_sigprint(); | | | |
| } | | | |
| | | | |
| arma_inline uword get_n_rows() const { return Proxy_htrans2::get_n_rows() | | | |
| ; } | | | |
| arma_inline uword get_n_cols() const { return Proxy_htrans2::get_n_cols() | | | |
| ; } | | | |
| arma_inline uword get_n_elem() const { return Proxy_htrans2::get_n_elem() | | | |
| ; } | | | |
| | | | |
| arma_inline elem_type operator[] (const uword i) const
{ return Q[i]; } | | 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 (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 elem_type at_alt (const uword i) const
{ return Q.at_alt(i); } | |
| | | | |
|
| arma_inline ea_type get_ea() const { return Proxy_htrans2 | | arma_inline ea_type get_ea() const { return Q; } | |
| ::get_ea(); } | | arma_inline aligned_ea_type get_aligned_ea() const { return Q; } | |
| arma_inline aligned_ea_type get_aligned_ea() const { return Proxy_htrans2 | | | |
| ::get_aligned_ea(); } | | | |
| | | | |
| template<typename eT2> | | template<typename eT2> | |
|
| arma_inline bool is_alias(const Mat<eT2>& X) const { return Proxy_htrans2
::is_alias(X); } | | arma_inline bool is_alias(const Mat<eT2>& X) const { return Q.P.is_alias(
X); } | |
| | | | |
|
| arma_inline bool is_aligned() const { return Proxy_htrans2::is_aligned();
} | | arma_inline bool is_aligned() const { return Q.P.is_aligned(); } | |
| }; | | }; | |
| | | | |
| template<typename T1> | | template<typename T1> | |
| class Proxy< Op<T1, op_vectorise_col> > | | class Proxy< Op<T1, op_vectorise_col> > | |
| { | | { | |
| public: | | public: | |
| | | | |
| typedef typename T1::elem_type elem_type; | | typedef typename T1::elem_type elem_type; | |
| typedef typename get_pod_type<elem_type>::result pod_type; | | typedef typename get_pod_type<elem_type>::result pod_type; | |
| typedef Mat<elem_type> stored_type; | | typedef Mat<elem_type> stored_type; | |
| typedef const elem_type* ea_type; | | typedef const elem_type* ea_type; | |
| typedef const Mat<elem_type>& aligned_ea_type; | | typedef const Mat<elem_type>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = true; | | static const bool has_subview = true; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = true; | | static const bool fake_mat = true; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = true; | | static const bool is_col = true; | |
| | | | |
| arma_aligned const unwrap<T1> U; | | arma_aligned const unwrap<T1> U; | |
| arma_aligned const Mat<elem_type> Q; | | arma_aligned const Mat<elem_type> Q; | |
| | | | |
| inline explicit Proxy(const Op<T1, op_vectorise_col>& A) | | inline explicit Proxy(const Op<T1, op_vectorise_col>& A) | |
| : U(A.m) | | : U(A.m) | |
| | | | |
| skipping to change at line 1254 | | skipping to change at line 1122 | |
| public: | | public: | |
| | | | |
| typedef typename T1::elem_type elem_type; | | typedef typename T1::elem_type elem_type; | |
| typedef typename get_pod_type<elem_type>::result pod_type; | | typedef typename get_pod_type<elem_type>::result pod_type; | |
| typedef Mat<elem_type> stored_type; | | typedef Mat<elem_type> stored_type; | |
| typedef const elem_type* ea_type; | | typedef const elem_type* ea_type; | |
| typedef const Mat<elem_type>& aligned_ea_type; | | typedef const Mat<elem_type>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = true; | | static const bool has_subview = true; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = true; | | static const bool fake_mat = true; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = true; | | static const bool is_col = true; | |
| | | | |
| arma_aligned const unwrap_cube<T1> U; | | arma_aligned const unwrap_cube<T1> U; | |
| arma_aligned const Mat<elem_type> Q; | | arma_aligned const Mat<elem_type> Q; | |
| | | | |
| inline explicit Proxy(const Op<T1, op_vectorise_cube_col>& A) | | inline explicit Proxy(const Op<T1, op_vectorise_cube_col>& A) | |
| : U(A.m) | | : U(A.m) | |
| | | | |
| skipping to change at line 1300 | | skipping to change at line 1167 | |
| public: | | public: | |
| | | | |
| typedef typename T1::elem_type elem_type; | | typedef typename T1::elem_type elem_type; | |
| typedef typename get_pod_type<elem_type>::result pod_type; | | typedef typename get_pod_type<elem_type>::result pod_type; | |
| typedef Mat<elem_type> stored_type; | | typedef Mat<elem_type> stored_type; | |
| typedef const elem_type* ea_type; | | typedef const elem_type* ea_type; | |
| typedef const Mat<elem_type>& aligned_ea_type; | | typedef const Mat<elem_type>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = false; | | static const bool has_subview = false; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = Glue<T1, T2, glue_type>::is_row; | | static const bool is_row = Glue<T1, T2, glue_type>::is_row; | |
| static const bool is_col = Glue<T1, T2, glue_type>::is_col; | | static const bool is_col = Glue<T1, T2, glue_type>::is_col; | |
| | | | |
| arma_aligned const Mat<elem_type> Q; | | arma_aligned const Mat<elem_type> Q; | |
| | | | |
| inline explicit Proxy(const Glue<T1, T2, glue_type>& A) | | inline explicit Proxy(const Glue<T1, T2, glue_type>& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
| skipping to change at line 1344 | | skipping to change at line 1210 | |
| 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 subview<eT> stored_type; | | typedef subview<eT> stored_type; | |
| typedef const subview<eT>& ea_type; | | typedef const subview<eT>& ea_type; | |
| typedef const subview<eT>& aligned_ea_type; | | typedef const subview<eT>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = true; | | static const bool prefer_at_accessor = true; | |
| static const bool has_subview = true; | | static const bool has_subview = true; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = false; | | static const bool is_col = false; | |
| | | | |
| arma_aligned const subview<eT>& Q; | | arma_aligned const subview<eT>& Q; | |
| | | | |
| inline explicit Proxy(const subview<eT>& A) | | inline explicit Proxy(const subview<eT>& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
| skipping to change at line 1388 | | skipping to change at line 1253 | |
| 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 subview_col<eT> stored_type; | | typedef subview_col<eT> stored_type; | |
| typedef const eT* ea_type; | | typedef const eT* ea_type; | |
| typedef const subview_col<eT>& aligned_ea_type; | | typedef const subview_col<eT>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = true; | | static const bool has_subview = true; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = true; | | static const bool is_col = true; | |
| | | | |
| arma_aligned const subview_col<eT>& Q; | | arma_aligned const subview_col<eT>& Q; | |
| | | | |
| inline explicit Proxy(const subview_col<eT>& A) | | inline explicit Proxy(const subview_col<eT>& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
| skipping to change at line 1432 | | skipping to change at line 1296 | |
| 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 subview_row<eT> stored_type; | | typedef subview_row<eT> stored_type; | |
| typedef const subview_row<eT>& ea_type; | | typedef const subview_row<eT>& ea_type; | |
| typedef const subview_row<eT>& aligned_ea_type; | | typedef const subview_row<eT>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = true; | | static const bool has_subview = true; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = true; | | static const bool is_row = true; | |
| static const bool is_col = false; | | static const bool is_col = false; | |
| | | | |
| arma_aligned const subview_row<eT>& Q; | | arma_aligned const subview_row<eT>& Q; | |
| | | | |
| inline explicit Proxy(const subview_row<eT>& A) | | inline explicit Proxy(const subview_row<eT>& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
| skipping to change at line 1476 | | skipping to change at line 1339 | |
| 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 subview_row_strans<eT> stored_type; | | typedef subview_row_strans<eT> stored_type; | |
| typedef const subview_row_strans<eT>& ea_type; | | typedef const subview_row_strans<eT>& ea_type; | |
| typedef const subview_row_strans<eT>& aligned_ea_type; | | typedef const subview_row_strans<eT>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = true; | | static const bool has_subview = true; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = true; | | static const bool is_col = true; | |
| | | | |
| arma_aligned const subview_row_strans<eT>& Q; | | arma_aligned const subview_row_strans<eT>& Q; | |
| | | | |
| inline explicit Proxy(const subview_row_strans<eT>& A) | | inline explicit Proxy(const subview_row_strans<eT>& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
| skipping to change at line 1520 | | skipping to change at line 1382 | |
| 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 subview_row_htrans<eT> stored_type; | | typedef subview_row_htrans<eT> stored_type; | |
| typedef const subview_row_htrans<eT>& ea_type; | | typedef const subview_row_htrans<eT>& ea_type; | |
| typedef const subview_row_htrans<eT>& aligned_ea_type; | | typedef const subview_row_htrans<eT>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = true; | | static const bool has_subview = true; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = true; | | static const bool is_col = true; | |
| | | | |
| arma_aligned const subview_row_htrans<eT>& Q; | | arma_aligned const subview_row_htrans<eT>& Q; | |
| | | | |
| inline explicit Proxy(const subview_row_htrans<eT>& A) | | inline explicit Proxy(const subview_row_htrans<eT>& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
| skipping to change at line 1564 | | skipping to change at line 1425 | |
| 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; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = false; | | static const bool has_subview = false; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = false; | | static const bool is_col = false; | |
| | | | |
| arma_aligned const Mat<eT> Q; | | arma_aligned const Mat<eT> Q; | |
| | | | |
| inline explicit Proxy(const xtrans_mat<eT, do_conj>& A) | | inline explicit Proxy(const xtrans_mat<eT, do_conj>& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
| skipping to change at line 1608 | | skipping to change at line 1468 | |
| 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; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = false; | | static const bool has_subview = false; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = false; | | static const bool is_col = false; | |
| | | | |
| arma_aligned const Mat<eT> Q; | | arma_aligned const Mat<eT> Q; | |
| | | | |
| inline explicit Proxy(const xvec_htrans<eT>& A) | | inline explicit Proxy(const xvec_htrans<eT>& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
| skipping to change at line 1652 | | skipping to change at line 1511 | |
| 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; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = false; | | static const bool has_subview = false; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = true; | | static const bool is_col = true; | |
| | | | |
| arma_aligned const Mat<eT> Q; | | arma_aligned const Mat<eT> Q; | |
| | | | |
| inline explicit Proxy(const subview_elem1<eT,T1>& A) | | inline explicit Proxy(const subview_elem1<eT,T1>& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
| skipping to change at line 1696 | | skipping to change at line 1554 | |
| 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; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = false; | | static const bool has_subview = false; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = false; | | static const bool is_col = false; | |
| | | | |
| arma_aligned const Mat<eT> Q; | | arma_aligned const Mat<eT> Q; | |
| | | | |
| inline explicit Proxy(const subview_elem2<eT,T1,T2>& A) | | inline explicit Proxy(const subview_elem2<eT,T1,T2>& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
| skipping to change at line 1740 | | skipping to change at line 1597 | |
| 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 diagview<eT> stored_type; | | typedef diagview<eT> stored_type; | |
| typedef const diagview<eT>& ea_type; | | typedef const diagview<eT>& ea_type; | |
| typedef const diagview<eT>& aligned_ea_type; | | typedef const diagview<eT>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = true; | | static const bool has_subview = true; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = false; | | static const bool is_row = false; | |
| static const bool is_col = true; | | static const bool is_col = true; | |
| | | | |
| arma_aligned const diagview<eT>& Q; | | arma_aligned const diagview<eT>& Q; | |
| | | | |
| inline explicit Proxy(const diagview<eT>& A) | | inline explicit Proxy(const diagview<eT>& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
| skipping to change at line 1784 | | skipping to change at line 1640 | |
| public: | | public: | |
| | | | |
| typedef typename T1::elem_type elem_type; | | typedef typename T1::elem_type elem_type; | |
| typedef typename get_pod_type<elem_type>::result pod_type; | | typedef typename get_pod_type<elem_type>::result pod_type; | |
| typedef eOp<T1, eop_type> stored_type; | | typedef eOp<T1, eop_type> stored_type; | |
| typedef const eOp<T1, eop_type>& ea_type; | | typedef const eOp<T1, eop_type>& ea_type; | |
| typedef const eOp<T1, eop_type>& aligned_ea_type; | | typedef const eOp<T1, eop_type>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = eOp<T1, eop_type>::prefer_at_acces
sor; | | static const bool prefer_at_accessor = eOp<T1, eop_type>::prefer_at_acces
sor; | |
| static const bool has_subview = eOp<T1, eop_type>::has_subview; | | static const bool has_subview = eOp<T1, eop_type>::has_subview; | |
|
| static const bool is_fixed = eOp<T1, eop_type>::is_fixed; | | | |
| static const bool fake_mat = eOp<T1, eop_type>::fake_mat; | | static const bool fake_mat = eOp<T1, eop_type>::fake_mat; | |
| | | | |
| static const bool is_row = eOp<T1, eop_type>::is_row; | | static const bool is_row = eOp<T1, eop_type>::is_row; | |
| static const bool is_col = eOp<T1, eop_type>::is_col; | | static const bool is_col = eOp<T1, eop_type>::is_col; | |
| | | | |
| arma_aligned const eOp<T1, eop_type>& Q; | | arma_aligned const eOp<T1, eop_type>& Q; | |
| | | | |
| inline explicit Proxy(const eOp<T1, eop_type>& A) | | inline explicit Proxy(const eOp<T1, eop_type>& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
| skipping to change at line 1828 | | skipping to change at line 1683 | |
| public: | | public: | |
| | | | |
| typedef typename T1::elem_type elem_type; | | typedef typename T1::elem_type elem_type; | |
| typedef typename get_pod_type<elem_type>::result pod_type; | | typedef typename get_pod_type<elem_type>::result pod_type; | |
| typedef eGlue<T1, T2, eglue_type> stored_type; | | typedef eGlue<T1, T2, eglue_type> stored_type; | |
| typedef const eGlue<T1, T2, eglue_type>& ea_type; | | typedef const eGlue<T1, T2, eglue_type>& ea_type; | |
| typedef const eGlue<T1, T2, eglue_type>& aligned_ea_type; | | typedef const eGlue<T1, T2, eglue_type>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = eGlue<T1, T2, eglue_type>::prefer_
at_accessor; | | static const bool prefer_at_accessor = eGlue<T1, T2, eglue_type>::prefer_
at_accessor; | |
| static const bool has_subview = eGlue<T1, T2, eglue_type>::has_sub
view; | | static const bool has_subview = eGlue<T1, T2, eglue_type>::has_sub
view; | |
|
| static const bool is_fixed = eGlue<T1, T2, eglue_type>::is_fixe
d; | | | |
| static const bool fake_mat = eGlue<T1, T2, eglue_type>::fake_ma
t; | | static const bool fake_mat = eGlue<T1, T2, eglue_type>::fake_ma
t; | |
| | | | |
| static const bool is_row = eGlue<T1, T2, eglue_type>::is_row; | | static const bool is_row = eGlue<T1, T2, eglue_type>::is_row; | |
| static const bool is_col = eGlue<T1, T2, eglue_type>::is_col; | | static const bool is_col = eGlue<T1, T2, eglue_type>::is_col; | |
| | | | |
| arma_aligned const eGlue<T1, T2, eglue_type>& Q; | | arma_aligned const eGlue<T1, T2, eglue_type>& Q; | |
| | | | |
| inline explicit Proxy(const eGlue<T1, T2, eglue_type>& A) | | inline explicit Proxy(const eGlue<T1, T2, eglue_type>& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
| skipping to change at line 1872 | | skipping to change at line 1726 | |
| public: | | public: | |
| | | | |
| typedef out_eT elem_type; | | typedef out_eT elem_type; | |
| typedef typename get_pod_type<out_eT>::result pod_type; | | typedef typename get_pod_type<out_eT>::result pod_type; | |
| typedef Mat<out_eT> stored_type; | | typedef Mat<out_eT> stored_type; | |
| typedef const elem_type* ea_type; | | typedef const elem_type* ea_type; | |
| typedef const Mat<out_eT>& aligned_ea_type; | | typedef const Mat<out_eT>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = false; | | static const bool has_subview = false; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = mtOp<out_eT, T1, op_type>::is_row; | | static const bool is_row = mtOp<out_eT, T1, op_type>::is_row; | |
| static const bool is_col = mtOp<out_eT, T1, op_type>::is_col; | | static const bool is_col = mtOp<out_eT, T1, op_type>::is_col; | |
| | | | |
| arma_aligned const Mat<out_eT> Q; | | arma_aligned const Mat<out_eT> Q; | |
| | | | |
| inline explicit Proxy(const mtOp<out_eT, T1, op_type>& A) | | inline explicit Proxy(const mtOp<out_eT, T1, op_type>& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
| skipping to change at line 1916 | | skipping to change at line 1769 | |
| public: | | public: | |
| | | | |
| typedef out_eT elem_type; | | typedef out_eT elem_type; | |
| typedef typename get_pod_type<out_eT>::result pod_type; | | typedef typename get_pod_type<out_eT>::result pod_type; | |
| typedef Mat<out_eT> stored_type; | | typedef Mat<out_eT> stored_type; | |
| typedef const elem_type* ea_type; | | typedef const elem_type* ea_type; | |
| typedef const Mat<out_eT>& aligned_ea_type; | | typedef const Mat<out_eT>& aligned_ea_type; | |
| | | | |
| static const bool prefer_at_accessor = false; | | static const bool prefer_at_accessor = false; | |
| static const bool has_subview = false; | | static const bool has_subview = false; | |
|
| static const bool is_fixed = false; | | | |
| static const bool fake_mat = false; | | static const bool fake_mat = false; | |
| | | | |
| static const bool is_row = mtGlue<out_eT, T1, T2, glue_type>::is_row; | | static const bool is_row = mtGlue<out_eT, T1, T2, glue_type>::is_row; | |
| static const bool is_col = mtGlue<out_eT, T1, T2, glue_type>::is_col; | | static const bool is_col = mtGlue<out_eT, T1, T2, glue_type>::is_col; | |
| | | | |
| arma_aligned const Mat<out_eT> Q; | | arma_aligned const Mat<out_eT> Q; | |
| | | | |
| inline explicit Proxy(const mtGlue<out_eT, T1, T2, glue_type>& A) | | inline explicit Proxy(const mtGlue<out_eT, T1, T2, glue_type>& A) | |
| : Q(A) | | : Q(A) | |
| { | | { | |
| | | | |
End of changes. 45 change blocks. |
| 163 lines changed or deleted | | 6 lines changed or added | |
|
| compiler_setup.hpp | | compiler_setup.hpp | |
| // Copyright (C) 2008-2014 Conrad Sanderson | | // Copyright (C) 2008-2014 Conrad Sanderson | |
| // Copyright (C) 2008-2014 NICTA (www.nicta.com.au) | | // Copyright (C) 2008-2014 NICTA (www.nicta.com.au) | |
| // | | // | |
| // 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/. | |
| | | | |
|
| | | #undef arma_hot | |
| | | #undef arma_cold | |
| | | #undef arma_pure | |
| | | #undef arma_const | |
| | | #undef arma_aligned | |
| | | #undef arma_align_mem | |
| | | #undef arma_warn_unused | |
| | | #undef arma_deprecated | |
| | | #undef arma_malloc | |
| | | #undef arma_inline | |
| | | #undef arma_noinline | |
| | | #undef arma_ignore | |
| | | | |
| #define arma_hot | | #define arma_hot | |
| #define arma_cold | | #define arma_cold | |
| #define arma_pure | | #define arma_pure | |
| #define arma_const | | #define arma_const | |
| #define arma_aligned | | #define arma_aligned | |
| #define arma_align_mem | | #define arma_align_mem | |
| #define arma_warn_unused | | #define arma_warn_unused | |
| #define arma_deprecated | | #define arma_deprecated | |
| #define arma_malloc | | #define arma_malloc | |
| #define arma_inline inline | | #define arma_inline inline | |
| #define arma_noinline | | #define arma_noinline | |
| #define arma_ignore(variable) ((void)(variable)) | | #define arma_ignore(variable) ((void)(variable)) | |
| | | | |
|
| | | #undef arma_fortran_noprefix | |
| | | #undef arma_fortran_prefix | |
| | | | |
| | | #undef arma_fortran2_noprefix | |
| | | #undef arma_fortran2_prefix | |
| | | | |
| #if defined(ARMA_BLAS_UNDERSCORE) | | #if defined(ARMA_BLAS_UNDERSCORE) | |
| #define arma_fortran2_noprefix(function) function##_ | | #define arma_fortran2_noprefix(function) function##_ | |
| #define arma_fortran2_prefix(function) wrapper_##function##_ | | #define arma_fortran2_prefix(function) wrapper_##function##_ | |
| #else | | #else | |
| #define arma_fortran2_noprefix(function) function | | #define arma_fortran2_noprefix(function) function | |
| #define arma_fortran2_prefix(function) wrapper_##function | | #define arma_fortran2_prefix(function) wrapper_##function | |
| #endif | | #endif | |
| | | | |
| #if defined(ARMA_USE_WRAPPER) | | #if defined(ARMA_USE_WRAPPER) | |
| #define arma_fortran(function) arma_fortran2_prefix(function) | | #define arma_fortran(function) arma_fortran2_prefix(function) | |
| #define arma_atlas(function) wrapper_##function | | #define arma_atlas(function) wrapper_##function | |
| #else | | #else | |
| #define arma_fortran(function) arma_fortran2_noprefix(function) | | #define arma_fortran(function) arma_fortran2_noprefix(function) | |
| #define arma_atlas(function) function | | #define arma_atlas(function) function | |
| #endif | | #endif | |
| | | | |
| #define arma_fortran_prefix(function) arma_fortran2_prefix(function) | | #define arma_fortran_prefix(function) arma_fortran2_prefix(function) | |
| #define arma_fortran_noprefix(function) arma_fortran2_noprefix(function) | | #define arma_fortran_noprefix(function) arma_fortran2_noprefix(function) | |
| | | | |
|
| | | #undef ARMA_INCFILE_WRAP | |
| #define ARMA_INCFILE_WRAP(x) <x> | | #define ARMA_INCFILE_WRAP(x) <x> | |
| | | | |
| #if defined(ARMA_USE_CXX11) | | #if defined(ARMA_USE_CXX11) | |
| #undef ARMA_USE_U64S64 | | #undef ARMA_USE_U64S64 | |
| #define ARMA_USE_U64S64 | | #define ARMA_USE_U64S64 | |
| #endif | | #endif | |
| | | | |
| #if defined(ARMA_64BIT_WORD) | | #if defined(ARMA_64BIT_WORD) | |
| #undef ARMA_USE_U64S64 | | #undef ARMA_USE_U64S64 | |
| #define ARMA_USE_U64S64 | | #define ARMA_USE_U64S64 | |
| #endif | | #endif | |
| | | | |
|
| | | #undef ARMA_HAVE_GETTIMEOFDAY | |
| | | #undef ARMA_HAVE_SNPRINTF | |
| | | #undef ARMA_HAVE_ISFINITE | |
| | | #undef ARMA_HAVE_LOG1P | |
| | | #undef ARMA_HAVE_ISINF | |
| | | #undef ARMA_HAVE_ISNAN | |
| | | | |
| #if (defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200112L)) | | #if (defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200112L)) | |
| #define ARMA_HAVE_GETTIMEOFDAY | | #define ARMA_HAVE_GETTIMEOFDAY | |
| | | | |
| #if defined(__GNUG__) | | #if defined(__GNUG__) | |
| #define ARMA_HAVE_SNPRINTF | | #define ARMA_HAVE_SNPRINTF | |
| #define ARMA_HAVE_ISFINITE | | #define ARMA_HAVE_ISFINITE | |
| #define ARMA_HAVE_LOG1P | | #define ARMA_HAVE_LOG1P | |
| #define ARMA_HAVE_ISINF | | #define ARMA_HAVE_ISINF | |
| #define ARMA_HAVE_ISNAN | | #define ARMA_HAVE_ISNAN | |
| #endif | | #endif | |
| #endif | | #endif | |
| | | | |
| // posix_memalign() is part of IEEE standard 1003.1 | | // posix_memalign() is part of IEEE standard 1003.1 | |
| // http://pubs.opengroup.org/onlinepubs/009696899/functions/posix_memalign.
html | | // http://pubs.opengroup.org/onlinepubs/009696899/functions/posix_memalign.
html | |
| // http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/unistd.h.html | | // http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/unistd.h.html | |
| // http://sourceforge.net/p/predef/wiki/Standards/ | | // http://sourceforge.net/p/predef/wiki/Standards/ | |
| #if ( defined(_POSIX_ADVISORY_INFO) && (_POSIX_ADVISORY_INFO >= 200112L) ) | | #if ( defined(_POSIX_ADVISORY_INFO) && (_POSIX_ADVISORY_INFO >= 200112L) ) | |
|
| | | #undef ARMA_HAVE_POSIX_MEMALIGN | |
| #define ARMA_HAVE_POSIX_MEMALIGN | | #define ARMA_HAVE_POSIX_MEMALIGN | |
| #endif | | #endif | |
| | | | |
| #if defined(__APPLE__) | | #if defined(__APPLE__) | |
|
| | | #undef ARMA_BLAS_SDOT_BUG | |
| #define ARMA_BLAS_SDOT_BUG | | #define ARMA_BLAS_SDOT_BUG | |
| #undef ARMA_HAVE_POSIX_MEMALIGN | | #undef ARMA_HAVE_POSIX_MEMALIGN | |
| #endif | | #endif | |
| | | | |
| #if defined(__MINGW32__) | | #if defined(__MINGW32__) | |
| #undef ARMA_HAVE_POSIX_MEMALIGN | | #undef ARMA_HAVE_POSIX_MEMALIGN | |
| #endif | | #endif | |
| | | | |
|
| | | #undef ARMA_FNSIG | |
| | | | |
| #if defined (__GNUG__) | | #if defined (__GNUG__) | |
| #define ARMA_FNSIG __PRETTY_FUNCTION__ | | #define ARMA_FNSIG __PRETTY_FUNCTION__ | |
| #elif defined (_MSC_VER) | | #elif defined (_MSC_VER) | |
| #define ARMA_FNSIG __FUNCSIG__ | | #define ARMA_FNSIG __FUNCSIG__ | |
| #elif defined(__INTEL_COMPILER) | | #elif defined(__INTEL_COMPILER) | |
| #define ARMA_FNSIG __FUNCTION__ | | #define ARMA_FNSIG __FUNCTION__ | |
| #elif defined(ARMA_USE_CXX11) | | #elif defined(ARMA_USE_CXX11) | |
| #define ARMA_FNSIG __func__ | | #define ARMA_FNSIG __func__ | |
| #else | | #else | |
| #define ARMA_FNSIG "(unknown)" | | #define ARMA_FNSIG "(unknown)" | |
| #endif | | #endif | |
| | | | |
|
| #if defined(__INTEL_COMPILER) | | #if defined(__GNUG__) && !defined(__clang__) && !defined(__INTEL_COMPILER) | |
| | | && !defined(__NVCC__) | |
| #if (__INTEL_COMPILER_BUILD_DATE < 20090623) | | | |
| #error "*** Need a newer compiler ***" | | | |
| #endif | | | |
| | | | |
| #define ARMA_HAVE_ICC_ASSUME_ALIGNED | | | |
| | | | |
| #endif | | | |
| | | | |
| #if defined(__GNUG__) | | | |
| | | | |
|
| | | #undef ARMA_GCC_VERSION | |
| #define ARMA_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNU
C_PATCHLEVEL__) | | #define ARMA_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNU
C_PATCHLEVEL__) | |
| | | | |
|
| #if (ARMA_GCC_VERSION < 40200) && !defined(__INTEL_COMPILER) | | #if (ARMA_GCC_VERSION < 40200) | |
| #error "*** Need a newer compiler ***" | | #error "*** Need a newer compiler ***" | |
| #endif | | #endif | |
| | | | |
|
| #if ( (ARMA_GCC_VERSION >= 40700) && (ARMA_GCC_VERSION <= 40701) ) && !de
fined(__INTEL_COMPILER) | | #if ( (ARMA_GCC_VERSION >= 40700) && (ARMA_GCC_VERSION <= 40701) ) | |
| #error "gcc versions 4.7.0 and 4.7.1 are unsupported; use 4.7.2 or late
r" | | #error "gcc versions 4.7.0 and 4.7.1 are unsupported; use 4.7.2 or late
r" | |
| // due to http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53549 | | // due to http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53549 | |
| #endif | | #endif | |
| | | | |
|
| | | #undef ARMA_GOOD_COMPILER | |
| #define ARMA_GOOD_COMPILER | | #define ARMA_GOOD_COMPILER | |
|
| #undef ARMA_HAVE_TR1 | | | |
| | | | |
| #undef arma_pure | | #undef arma_pure | |
| #undef arma_const | | #undef arma_const | |
| #undef arma_aligned | | #undef arma_aligned | |
| #undef arma_align_mem | | #undef arma_align_mem | |
| #undef arma_warn_unused | | #undef arma_warn_unused | |
| #undef arma_deprecated | | #undef arma_deprecated | |
| #undef arma_malloc | | #undef arma_malloc | |
| #undef arma_inline | | #undef arma_inline | |
| #undef arma_noinline | | #undef arma_noinline | |
| | | | |
| skipping to change at line 139 | | skipping to change at line 161 | |
| #define arma_pure __attribute__((__pure__)) | | #define arma_pure __attribute__((__pure__)) | |
| #define arma_const __attribute__((__const__)) | | #define arma_const __attribute__((__const__)) | |
| #define arma_aligned __attribute__((__aligned__)) | | #define arma_aligned __attribute__((__aligned__)) | |
| #define arma_align_mem __attribute__((__aligned__(16))) | | #define arma_align_mem __attribute__((__aligned__(16))) | |
| #define arma_warn_unused __attribute__((__warn_unused_result__)) | | #define arma_warn_unused __attribute__((__warn_unused_result__)) | |
| #define arma_deprecated __attribute__((__deprecated__)) | | #define arma_deprecated __attribute__((__deprecated__)) | |
| #define arma_malloc __attribute__((__malloc__)) | | #define arma_malloc __attribute__((__malloc__)) | |
| #define arma_inline inline __attribute__((__always_inline__)) | | #define arma_inline inline __attribute__((__always_inline__)) | |
| #define arma_noinline __attribute__((__noinline__)) | | #define arma_noinline __attribute__((__noinline__)) | |
| | | | |
|
| | | #undef ARMA_HAVE_ALIGNED_ATTRIBUTE | |
| #define ARMA_HAVE_ALIGNED_ATTRIBUTE | | #define ARMA_HAVE_ALIGNED_ATTRIBUTE | |
| | | | |
| #if defined(ARMA_USE_CXX11) | | #if defined(ARMA_USE_CXX11) | |
|
| #if (ARMA_GCC_VERSION < 40800) && !defined(__clang__) | | #if (ARMA_GCC_VERSION < 40800) | |
| #pragma message ("WARNING: your C++ compiler is in C++11 mode, but it
has incomplete support for C++11 features; if something breaks, you get to
keep all the pieces") | | #pragma message ("WARNING: your C++ compiler is in C++11 mode, but it
has incomplete support for C++11 features; if something breaks, you get to
keep all the pieces") | |
| #pragma message ("WARNING: to forcefully prevent Armadillo from using
C++11 features, #define ARMA_DONT_USE_CXX11 before #include <armadillo>") | | #pragma message ("WARNING: to forcefully prevent Armadillo from using
C++11 features, #define ARMA_DONT_USE_CXX11 before #include <armadillo>") | |
| #define ARMA_DONT_USE_CXX11_CHRONO | | #define ARMA_DONT_USE_CXX11_CHRONO | |
| #endif | | #endif | |
| #endif | | #endif | |
| | | | |
|
| | | #undef ARMA_HAVE_TR1 | |
| | | | |
| #if !defined(ARMA_USE_CXX11) | | #if !defined(ARMA_USE_CXX11) | |
| #if defined(_GLIBCXX_USE_C99_MATH_TR1) && defined(_GLIBCXX_USE_C99_COMP
LEX_TR1) | | #if defined(_GLIBCXX_USE_C99_MATH_TR1) && defined(_GLIBCXX_USE_C99_COMP
LEX_TR1) | |
| #define ARMA_HAVE_TR1 | | #define ARMA_HAVE_TR1 | |
| #endif | | #endif | |
| #endif | | #endif | |
| | | | |
| #if (ARMA_GCC_VERSION >= 40300) | | #if (ARMA_GCC_VERSION >= 40300) | |
| #undef arma_hot | | #undef arma_hot | |
| #undef arma_cold | | #undef arma_cold | |
| | | | |
| | | | |
| skipping to change at line 172 | | skipping to change at line 197 | |
| | | | |
| #if (ARMA_GCC_VERSION >= 40700) | | #if (ARMA_GCC_VERSION >= 40700) | |
| #define ARMA_HAVE_GCC_ASSUME_ALIGNED | | #define ARMA_HAVE_GCC_ASSUME_ALIGNED | |
| #endif | | #endif | |
| | | | |
| #if defined(__OPTIMIZE_SIZE__) | | #if defined(__OPTIMIZE_SIZE__) | |
| #undef ARMA_SIMPLE_LOOPS | | #undef ARMA_SIMPLE_LOOPS | |
| #define ARMA_SIMPLE_LOOPS | | #define ARMA_SIMPLE_LOOPS | |
| #endif | | #endif | |
| | | | |
|
| #if defined(__clang__) | | #undef ARMA_GCC_VERSION | |
| // TODO: future versions of clang may also have __builtin_assume_aligne | | | |
| d | | #endif | |
| #undef ARMA_HAVE_GCC_ASSUME_ALIGNED | | | |
| #undef ARMA_HAVE_TR1 | | #if defined(__clang__) && !defined(__INTEL_COMPILER) | |
| | | #undef ARMA_HAVE_TR1 | |
| | | | |
| | | #undef ARMA_GOOD_COMPILER | |
| | | #define ARMA_GOOD_COMPILER | |
| | | | |
| | | // clang's vectoriser has trouble dealing with slightly more elaborate lo | |
| | | ops | |
| | | // http://llvm.org/bugs/show_bug.cgi?id=16358 | |
| | | #undef ARMA_SIMPLE_LOOPS | |
| | | #define ARMA_SIMPLE_LOOPS | |
| | | | |
| | | #if !defined(__has_attribute) | |
| | | #define __has_attribute(x) 0 | |
| | | #endif | |
| | | | |
| | | #if __has_attribute(__pure__) | |
| | | #undef arma_pure | |
| | | #define arma_pure __attribute__((__pure__)) | |
| | | #endif | |
| | | | |
|
| // clang's vectoriser has trouble dealing with slightly more elaborate | | #if __has_attribute(__const__) | |
| loops | | #undef arma_const | |
| // http://llvm.org/bugs/show_bug.cgi?id=16358 | | #define arma_const __attribute__((__const__)) | |
| #undef ARMA_SIMPLE_LOOPS | | | |
| #define ARMA_SIMPLE_LOOPS | | | |
| #endif | | #endif | |
| | | | |
|
| #if defined(__INTEL_COMPILER) | | #if __has_attribute(__aligned__) | |
| #undef ARMA_HAVE_TR1 | | #undef arma_aligned | |
| #undef ARMA_HAVE_GCC_ASSUME_ALIGNED | | #undef arma_align_mem | |
| | | | |
| | | #define arma_aligned __attribute__((__aligned__)) | |
| | | #define arma_align_mem __attribute__((__aligned__(16))) | |
| | | | |
| | | #undef ARMA_HAVE_ALIGNED_ATTRIBUTE | |
| | | #define ARMA_HAVE_ALIGNED_ATTRIBUTE | |
| #endif | | #endif | |
| | | | |
|
| #undef ARMA_GCC_VERSION | | #if __has_attribute(__warn_unused_result__) | |
| | | #undef arma_warn_unused | |
| | | #define arma_warn_unused __attribute__((__warn_unused_result__)) | |
| | | #endif | |
| | | | |
| | | #if __has_attribute(__deprecated__) | |
| | | #undef arma_deprecated | |
| | | #define arma_deprecated __attribute__((__deprecated__)) | |
| | | #endif | |
| | | | |
| | | #if __has_attribute(__malloc__) | |
| | | #undef arma_malloc | |
| | | #define arma_malloc __attribute__((__malloc__)) | |
| | | #endif | |
| | | | |
| | | #if __has_attribute(__always_inline__) | |
| | | #undef arma_inline | |
| | | #define arma_inline inline __attribute__((__always_inline__)) | |
| | | #endif | |
| | | | |
| | | #if __has_attribute(__noinline__) | |
| | | #undef arma_noinline | |
| | | #define arma_noinline __attribute__((__noinline__)) | |
| | | #endif | |
| | | | |
| | | #if __has_attribute(__hot__) | |
| | | #undef arma_hot | |
| | | #define arma_hot __attribute__((__hot__)) | |
| | | #endif | |
| | | | |
| | | #if __has_attribute(__cold__) | |
| | | #undef arma_cold | |
| | | #define arma_cold __attribute__((__cold__)) | |
| | | #endif | |
| | | | |
| | | #if defined(__has_builtin) && __has_builtin(__builtin_assume_aligned) | |
| | | #undef ARMA_HAVE_GCC_ASSUME_ALIGNED | |
| | | #define ARMA_HAVE_GCC_ASSUME_ALIGNED | |
| | | #endif | |
| | | | |
| | | #endif | |
| | | | |
| | | #if defined(__INTEL_COMPILER) | |
| | | | |
| | | #if (__INTEL_COMPILER_BUILD_DATE < 20090623) | |
| | | #error "*** Need a newer compiler ***" | |
| | | #endif | |
| | | | |
| | | #undef ARMA_GOOD_COMPILER | |
| | | #undef ARMA_HAVE_TR1 | |
| | | | |
| | | #undef ARMA_HAVE_GCC_ASSUME_ALIGNED | |
| | | #undef ARMA_HAVE_ICC_ASSUME_ALIGNED | |
| | | #define ARMA_HAVE_ICC_ASSUME_ALIGNED | |
| | | | |
| | | #undef ARMA_SIMPLE_LOOPS | |
| | | #define ARMA_SIMPLE_LOOPS | |
| | | | |
| #endif | | #endif | |
| | | | |
| #if defined(_MSC_VER) | | #if defined(_MSC_VER) | |
| | | | |
| #if (_MSC_VER < 1600) | | #if (_MSC_VER < 1600) | |
| #error "*** Need a newer compiler ***" | | #error "*** Need a newer compiler ***" | |
| #endif | | #endif | |
| | | | |
| #if (_MSC_VER < 1700) | | #if (_MSC_VER < 1700) | |
| | | | |
| skipping to change at line 215 | | skipping to change at line 320 | |
| #endif | | #endif | |
| #endif | | #endif | |
| | | | |
| #undef ARMA_SIMPLE_LOOPS | | #undef ARMA_SIMPLE_LOOPS | |
| #define ARMA_SIMPLE_LOOPS | | #define ARMA_SIMPLE_LOOPS | |
| | | | |
| #undef ARMA_GOOD_COMPILER | | #undef ARMA_GOOD_COMPILER | |
| #undef ARMA_HAVE_SNPRINTF | | #undef ARMA_HAVE_SNPRINTF | |
| #undef ARMA_HAVE_ISFINITE | | #undef ARMA_HAVE_ISFINITE | |
| #undef ARMA_HAVE_LOG1P | | #undef ARMA_HAVE_LOG1P | |
|
| | | #undef ARMA_HAVE_ISINF | |
| | | #undef ARMA_HAVE_ISNAN | |
| #undef ARMA_HAVE_TR1 | | #undef ARMA_HAVE_TR1 | |
| | | | |
| // #undef arma_inline | | // #undef arma_inline | |
| // #define arma_inline inline __forceinline | | // #define arma_inline inline __forceinline | |
| | | | |
| #pragma warning(push) | | #pragma warning(push) | |
| | | | |
| #pragma warning(disable: 4127) // conditional expression is constant | | #pragma warning(disable: 4127) // conditional expression is constant | |
| #pragma warning(disable: 4510) // default constructor could not be gener
ated | | #pragma warning(disable: 4510) // default constructor could not be gener
ated | |
| #pragma warning(disable: 4511) // copy constructor can't be generated | | #pragma warning(disable: 4511) // copy constructor can't be generated | |
| | | | |
| skipping to change at line 273 | | skipping to change at line 380 | |
| // http://www.oracle.com/technetwork/server-storage/solarisstudio/trainin
g/index-jsp-141991.html | | // http://www.oracle.com/technetwork/server-storage/solarisstudio/trainin
g/index-jsp-141991.html | |
| // http://www.oracle.com/technetwork/server-storage/solarisstudio/documen
tation/cplusplus-faq-355066.html | | // http://www.oracle.com/technetwork/server-storage/solarisstudio/documen
tation/cplusplus-faq-355066.html | |
| | | | |
| #if (__SUNPRO_CC < 0x5100) | | #if (__SUNPRO_CC < 0x5100) | |
| #error "*** Need a newer compiler ***" | | #error "*** Need a newer compiler ***" | |
| #endif | | #endif | |
| | | | |
| #undef ARMA_HAVE_SNPRINTF | | #undef ARMA_HAVE_SNPRINTF | |
| #undef ARMA_HAVE_ISFINITE | | #undef ARMA_HAVE_ISFINITE | |
| #undef ARMA_HAVE_LOG1P | | #undef ARMA_HAVE_LOG1P | |
|
| | | #undef ARMA_HAVE_ISINF | |
| | | #undef ARMA_HAVE_ISNAN | |
| #undef ARMA_HAVE_TR1 | | #undef ARMA_HAVE_TR1 | |
| | | | |
| #endif | | #endif | |
| | | | |
| #if defined(__NVCC__) | | #if defined(__NVCC__) | |
|
| | | | |
| #undef ARMA_HAVE_SNPRINTF | | #undef ARMA_HAVE_SNPRINTF | |
| #undef ARMA_HAVE_ISFINITE | | #undef ARMA_HAVE_ISFINITE | |
| #undef ARMA_HAVE_LOG1P | | #undef ARMA_HAVE_LOG1P | |
|
| | | #undef ARMA_HAVE_ISINF | |
| | | #undef ARMA_HAVE_ISNAN | |
| #undef ARMA_HAVE_TR1 | | #undef ARMA_HAVE_TR1 | |
|
| | | | |
| #undef arma_noinline | | | |
| #define arma_noinline | | | |
| #endif | | #endif | |
| | | | |
| #if defined(log2) | | #if defined(log2) | |
| #undef log2 | | #undef log2 | |
| #pragma message ("detected 'log2' macro and undefined it") | | #pragma message ("detected 'log2' macro and undefined it") | |
| #endif | | #endif | |
| | | | |
| // | | // | |
| // whoever defined macros with the names "min" and "max" should be permanen
tly removed from the gene pool | | // whoever defined macros with the names "min" and "max" should be permanen
tly removed from the gene pool | |
| | | | |
| | | | |
End of changes. 25 change blocks. |
| 33 lines changed or deleted | | 140 lines changed or added | |
|
| unwrap.hpp | | unwrap.hpp | |
| | | | |
| skipping to change at line 651 | | skipping to change at line 651 | |
| typedef typename T1::elem_type eT; | | typedef typename T1::elem_type eT; | |
| typedef Mat<eT> stored_type; | | typedef Mat<eT> stored_type; | |
| | | | |
| inline | | inline | |
| partial_unwrap_default(const T1& A) | | partial_unwrap_default(const T1& A) | |
| : M(A) | | : M(A) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>&) const { return false;
} | | arma_inline bool is_alias(const Mat<eT>&) const { return false; } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| const Mat<eT> M; | | const Mat<eT> M; | |
| }; | | }; | |
| | | | |
| template<typename T1> | | template<typename T1> | |
| struct partial_unwrap_fixed | | struct partial_unwrap_fixed | |
| { | | { | |
| typedef typename T1::elem_type eT; | | typedef typename T1::elem_type eT; | |
| typedef T1 stored_type; | | typedef T1 stored_type; | |
| | | | |
| inline explicit | | inline explicit | |
| partial_unwrap_fixed(const T1& A) | | partial_unwrap_fixed(const T1& A) | |
| : M(A) | | : M(A) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>& X) const { return (void
_ptr(&X) == void_ptr(&M)); } | | arma_inline bool is_alias(const Mat<eT>& X) const { return (void_ptr(&X)
== void_ptr(&M)); } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| const T1& M; | | const T1& M; | |
| }; | | }; | |
| | | | |
| template<typename T1, bool condition> | | template<typename T1, bool condition> | |
| struct partial_unwrap_redirect {}; | | struct partial_unwrap_redirect {}; | |
| | | | |
| | | | |
| skipping to change at line 715 | | skipping to change at line 715 | |
| { | | { | |
| typedef Mat<eT> stored_type; | | typedef Mat<eT> stored_type; | |
| | | | |
| inline | | inline | |
| partial_unwrap(const Mat<eT>& A) | | partial_unwrap(const Mat<eT>& A) | |
| : M(A) | | : M(A) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>& X) const { return ((&X)
== (&M)); } | | arma_inline bool is_alias(const Mat<eT>& X) const { return ((&X) == (&M))
; } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| const Mat<eT>& M; | | const Mat<eT>& M; | |
| }; | | }; | |
| | | | |
| template<typename eT> | | template<typename eT> | |
| struct partial_unwrap< Row<eT> > | | struct partial_unwrap< Row<eT> > | |
| { | | { | |
| typedef Row<eT> stored_type; | | typedef Row<eT> stored_type; | |
| | | | |
| inline | | inline | |
| partial_unwrap(const Row<eT>& A) | | partial_unwrap(const Row<eT>& A) | |
| : M(A) | | : M(A) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>& X) const { return (void
_ptr(&X) == void_ptr(&M)); } | | arma_inline bool is_alias(const Mat<eT>& X) const { return (void_ptr(&X)
== void_ptr(&M)); } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| const Row<eT>& M; | | const Row<eT>& M; | |
| }; | | }; | |
| | | | |
| template<typename eT> | | template<typename eT> | |
| struct partial_unwrap< Col<eT> > | | struct partial_unwrap< Col<eT> > | |
| { | | { | |
| typedef Col<eT> stored_type; | | typedef Col<eT> stored_type; | |
| | | | |
| inline | | inline | |
| partial_unwrap(const Col<eT>& A) | | partial_unwrap(const Col<eT>& A) | |
| : M(A) | | : M(A) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>& X) const { return (void
_ptr(&X) == void_ptr(&M)); } | | arma_inline bool is_alias(const Mat<eT>& X) const { return (void_ptr(&X)
== void_ptr(&M)); } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| const Col<eT>& M; | | const Col<eT>& M; | |
| }; | | }; | |
| | | | |
| template<typename eT> | | template<typename eT> | |
| struct partial_unwrap< subview_col<eT> > | | struct partial_unwrap< subview_col<eT> > | |
| { | | { | |
| typedef Col<eT> stored_type; | | typedef Col<eT> stored_type; | |
| | | | |
| inline | | inline | |
| partial_unwrap(const subview_col<eT>& A) | | partial_unwrap(const subview_col<eT>& A) | |
| : orig( A.m ) | | : orig( A.m ) | |
| , M ( const_cast<eT*>( A.colptr(0) ), A.n_rows, false, false ) | | , M ( const_cast<eT*>( A.colptr(0) ), A.n_rows, false, false ) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>& X) const { return (void
_ptr(&X) == void_ptr(&orig)); } | | arma_inline bool is_alias(const Mat<eT>& X) const { return (void_ptr(&X)
== void_ptr(&orig)); } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| const Mat<eT>& orig; | | const Mat<eT>& orig; | |
| const Col<eT> M; | | const Col<eT> M; | |
| }; | | }; | |
| | | | |
| template<typename eT> | | template<typename eT> | |
| struct partial_unwrap< subview_row<eT> > | | struct partial_unwrap< subview_row<eT> > | |
| { | | { | |
| typedef Row<eT> stored_type; | | typedef Row<eT> stored_type; | |
| | | | |
| inline | | inline | |
| partial_unwrap(const subview_row<eT>& A) | | partial_unwrap(const subview_row<eT>& A) | |
| : M(A) | | : M(A) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>&) const { return false;
} | | arma_inline bool is_alias(const Mat<eT>&) const { return false; } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| const Row<eT> M; | | const Row<eT> M; | |
| }; | | }; | |
| | | | |
| template<typename T1> | | template<typename T1> | |
| struct partial_unwrap_htrans_default | | struct partial_unwrap_htrans_default | |
| { | | { | |
| typedef typename T1::elem_type eT; | | typedef typename T1::elem_type eT; | |
| typedef Mat<eT> stored_type; | | typedef Mat<eT> stored_type; | |
| | | | |
| inline | | inline | |
| partial_unwrap_htrans_default(const Op<T1, op_htrans>& A) | | partial_unwrap_htrans_default(const Op<T1, op_htrans>& A) | |
| : M(A.m) | | : M(A.m) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>&) const { return false;
} | | arma_inline bool is_alias(const Mat<eT>&) const { return false; } | |
| | | | |
| static const bool do_trans = true; | | static const bool do_trans = true; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| const Mat<eT> M; | | const Mat<eT> M; | |
| }; | | }; | |
| | | | |
| template<typename T1> | | template<typename T1> | |
| struct partial_unwrap_htrans_fixed | | struct partial_unwrap_htrans_fixed | |
| { | | { | |
| typedef typename T1::elem_type eT; | | typedef typename T1::elem_type eT; | |
| typedef T1 stored_type; | | typedef T1 stored_type; | |
| | | | |
| inline explicit | | inline explicit | |
| partial_unwrap_htrans_fixed(const Op<T1, op_htrans>& A) | | partial_unwrap_htrans_fixed(const Op<T1, op_htrans>& A) | |
| : M(A.m) | | : M(A.m) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>& X) const { return (void
_ptr(&X) == void_ptr(&M)); } | | arma_inline bool is_alias(const Mat<eT>& X) const { return (void_ptr(&X)
== void_ptr(&M)); } | |
| | | | |
| static const bool do_trans = true; | | static const bool do_trans = true; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| const T1& M; | | const T1& M; | |
| }; | | }; | |
| | | | |
| template<typename T1, bool condition> | | template<typename T1, bool condition> | |
| struct partial_unwrap_htrans_redirect {}; | | struct partial_unwrap_htrans_redirect {}; | |
| | | | |
| | | | |
| skipping to change at line 893 | | skipping to change at line 893 | |
| | | | |
| inline | | inline | |
| partial_unwrap(const Op< Mat<eT>, op_htrans>& A) | | partial_unwrap(const Op< Mat<eT>, op_htrans>& A) | |
| : M(A.m) | | : M(A.m) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
| arma_inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>& X) const { return (void
_ptr(&X) == void_ptr(&M)); } | | arma_inline bool is_alias(const Mat<eT>& X) const { return (void_ptr(&X)
== void_ptr(&M)); } | |
| | | | |
| static const bool do_trans = true; | | static const bool do_trans = true; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| const Mat<eT>& M; | | const Mat<eT>& M; | |
| }; | | }; | |
| | | | |
| template<typename eT> | | template<typename eT> | |
| struct partial_unwrap< Op< Row<eT>, op_htrans> > | | struct partial_unwrap< Op< Row<eT>, op_htrans> > | |
| { | | { | |
| | | | |
| skipping to change at line 915 | | skipping to change at line 915 | |
| | | | |
| inline | | inline | |
| partial_unwrap(const Op< Row<eT>, op_htrans>& A) | | partial_unwrap(const Op< Row<eT>, op_htrans>& A) | |
| : M(A.m) | | : M(A.m) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
| arma_inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>& X) const { return (void
_ptr(&X) == void_ptr(&M)); } | | arma_inline bool is_alias(const Mat<eT>& X) const { return (void_ptr(&X)
== void_ptr(&M)); } | |
| | | | |
| static const bool do_trans = true; | | static const bool do_trans = true; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| const Row<eT>& M; | | const Row<eT>& M; | |
| }; | | }; | |
| | | | |
| template<typename eT> | | template<typename eT> | |
| struct partial_unwrap< Op< Col<eT>, op_htrans> > | | struct partial_unwrap< Op< Col<eT>, op_htrans> > | |
| { | | { | |
| | | | |
| skipping to change at line 937 | | skipping to change at line 937 | |
| | | | |
| inline | | inline | |
| partial_unwrap(const Op< Col<eT>, op_htrans>& A) | | partial_unwrap(const Op< Col<eT>, op_htrans>& A) | |
| : M(A.m) | | : M(A.m) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
| arma_inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>& X) const { return (void
_ptr(&X) == void_ptr(&M)); } | | arma_inline bool is_alias(const Mat<eT>& X) const { return (void_ptr(&X)
== void_ptr(&M)); } | |
| | | | |
| static const bool do_trans = true; | | static const bool do_trans = true; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| const Col<eT>& M; | | const Col<eT>& M; | |
| }; | | }; | |
| | | | |
| template<typename eT> | | template<typename eT> | |
| struct partial_unwrap< Op< subview_col<eT>, op_htrans> > | | struct partial_unwrap< Op< subview_col<eT>, op_htrans> > | |
| { | | { | |
| | | | |
| skipping to change at line 960 | | skipping to change at line 960 | |
| inline | | inline | |
| partial_unwrap(const Op< subview_col<eT>, op_htrans>& A) | | partial_unwrap(const Op< subview_col<eT>, op_htrans>& A) | |
| : orig( A.m.m ) | | : orig( A.m.m ) | |
| , M ( const_cast<eT*>( A.m.colptr(0) ), A.m.n_rows, false, false ) | | , M ( const_cast<eT*>( A.m.colptr(0) ), A.m.n_rows, false, false ) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
| arma_inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>& X) const { return (void
_ptr(&X) == void_ptr(&orig)); } | | arma_inline bool is_alias(const Mat<eT>& X) const { return (void_ptr(&X)
== void_ptr(&orig)); } | |
| | | | |
| static const bool do_trans = true; | | static const bool do_trans = true; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| const Mat<eT>& orig; | | const Mat<eT>& orig; | |
| const Col<eT> M; | | const Col<eT> M; | |
| }; | | }; | |
| | | | |
| template<typename eT> | | template<typename eT> | |
| struct partial_unwrap< Op< subview_row<eT>, op_htrans> > | | struct partial_unwrap< Op< subview_row<eT>, op_htrans> > | |
| | | | |
| skipping to change at line 983 | | skipping to change at line 983 | |
| | | | |
| inline | | inline | |
| partial_unwrap(const Op< subview_row<eT>, op_htrans>& A) | | partial_unwrap(const Op< subview_row<eT>, op_htrans>& A) | |
| : M(A.m) | | : M(A.m) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
| arma_inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>&) const { return false;
} | | arma_inline bool is_alias(const Mat<eT>&) const { return false; } | |
| | | | |
| static const bool do_trans = true; | | static const bool do_trans = true; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| const Row<eT> M; | | const Row<eT> M; | |
| }; | | }; | |
| | | | |
| template<typename T1> | | template<typename T1> | |
| struct partial_unwrap_htrans2_default | | struct partial_unwrap_htrans2_default | |
| { | | { | |
| | | | |
| skipping to change at line 1007 | | skipping to change at line 1007 | |
| inline | | inline | |
| partial_unwrap_htrans2_default(const Op<T1, op_htrans2>& A) | | partial_unwrap_htrans2_default(const Op<T1, op_htrans2>& A) | |
| : val(A.aux) | | : val(A.aux) | |
| , M (A.m) | | , M (A.m) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
| arma_inline eT get_val() const { return val; } | | arma_inline eT get_val() const { return val; } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>&) const { return false;
} | | arma_inline bool is_alias(const Mat<eT>&) const { return false; } | |
| | | | |
| static const bool do_trans = true; | | static const bool do_trans = true; | |
| static const bool do_times = true; | | static const bool do_times = true; | |
| | | | |
| const eT val; | | const eT val; | |
| const Mat<eT> M; | | const Mat<eT> M; | |
| }; | | }; | |
| | | | |
| template<typename T1> | | template<typename T1> | |
| struct partial_unwrap_htrans2_fixed | | struct partial_unwrap_htrans2_fixed | |
| | | | |
| skipping to change at line 1171 | | skipping to change at line 1171 | |
| typedef Row<eT> stored_type; | | typedef Row<eT> stored_type; | |
| | | | |
| inline | | inline | |
| partial_unwrap(const Op< subview_row<eT>, op_htrans2>& A) | | partial_unwrap(const Op< subview_row<eT>, op_htrans2>& A) | |
| : val(A.aux) | | : val(A.aux) | |
| , M (A.m ) | | , M (A.m ) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| inline eT get_val() const { return val; } | | arma_inline eT get_val() const { return val; } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>&) const { return false;
} | | arma_inline bool is_alias(const Mat<eT>&) const { return false; } | |
| | | | |
| static const bool do_trans = true; | | static const bool do_trans = true; | |
| static const bool do_times = true; | | static const bool do_times = true; | |
| | | | |
| const eT val; | | const eT val; | |
| const Row<eT> M; | | const Row<eT> M; | |
| }; | | }; | |
| | | | |
| template<typename T1> | | template<typename T1> | |
| struct partial_unwrap_scalar_times_default | | struct partial_unwrap_scalar_times_default | |
| | | | |
| skipping to change at line 1196 | | skipping to change at line 1196 | |
| typedef Mat<eT> stored_type; | | typedef Mat<eT> stored_type; | |
| | | | |
| inline | | inline | |
| partial_unwrap_scalar_times_default(const eOp<T1, eop_scalar_times>& A) | | partial_unwrap_scalar_times_default(const eOp<T1, eop_scalar_times>& A) | |
| : val(A.aux) | | : val(A.aux) | |
| , M (A.P.Q) | | , M (A.P.Q) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return val; } | | arma_inline eT get_val() const { return val; } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>&) const { return false;
} | | arma_inline bool is_alias(const Mat<eT>&) const { return false; } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = true; | | static const bool do_times = true; | |
| | | | |
| const eT val; | | const eT val; | |
| const Mat<eT> M; | | const Mat<eT> M; | |
| }; | | }; | |
| | | | |
| template<typename T1> | | template<typename T1> | |
| struct partial_unwrap_scalar_times_fixed | | struct partial_unwrap_scalar_times_fixed | |
| | | | |
| skipping to change at line 1365 | | skipping to change at line 1365 | |
| typedef Row<eT> stored_type; | | typedef Row<eT> stored_type; | |
| | | | |
| arma_hot inline | | arma_hot inline | |
| partial_unwrap(const eOp<subview_row<eT>,eop_scalar_times>& A) | | partial_unwrap(const eOp<subview_row<eT>,eop_scalar_times>& A) | |
| : val(A.aux) | | : val(A.aux) | |
| , M (A.P.Q) | | , M (A.P.Q) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return val; } | | arma_inline eT get_val() const { return val; } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>&) const { return false;
} | | arma_inline bool is_alias(const Mat<eT>&) const { return false; } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = true; | | static const bool do_times = true; | |
| | | | |
| const eT val; | | const eT val; | |
| const Row<eT> M; | | const Row<eT> M; | |
| }; | | }; | |
| | | | |
| template<typename T1> | | template<typename T1> | |
| struct partial_unwrap_neg_default | | struct partial_unwrap_neg_default | |
| | | | |
| skipping to change at line 1389 | | skipping to change at line 1389 | |
| typedef typename T1::elem_type eT; | | typedef typename T1::elem_type eT; | |
| typedef Mat<eT> stored_type; | | typedef Mat<eT> stored_type; | |
| | | | |
| inline | | inline | |
| partial_unwrap_neg_default(const eOp<T1, eop_neg>& A) | | partial_unwrap_neg_default(const eOp<T1, eop_neg>& A) | |
| : M(A.P.Q) | | : M(A.P.Q) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(-1); } | | arma_inline eT get_val() const { return eT(-1); } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>&) const { return false;
} | | arma_inline bool is_alias(const Mat<eT>&) const { return false; } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = true; | | static const bool do_times = true; | |
| | | | |
| const Mat<eT> M; | | const Mat<eT> M; | |
| }; | | }; | |
| | | | |
| template<typename T1> | | template<typename T1> | |
| struct partial_unwrap_neg_fixed | | struct partial_unwrap_neg_fixed | |
| { | | { | |
| typedef typename T1::elem_type eT; | | typedef typename T1::elem_type eT; | |
| typedef T1 stored_type; | | typedef T1 stored_type; | |
| | | | |
| inline explicit | | inline explicit | |
| partial_unwrap_neg_fixed(const eOp<T1, eop_neg>& A) | | partial_unwrap_neg_fixed(const eOp<T1, eop_neg>& A) | |
| : M(A.P.Q) | | : M(A.P.Q) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(-1); } | | arma_inline eT get_val() const { return eT(-1); } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>& X) const { return (void
_ptr(&X) == void_ptr(&M)); } | | arma_inline bool is_alias(const Mat<eT>& X) const { return (void_ptr(&X)
== void_ptr(&M)); } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = true; | | static const bool do_times = true; | |
| | | | |
| const T1& M; | | const T1& M; | |
| }; | | }; | |
| | | | |
| template<typename T1, bool condition> | | template<typename T1, bool condition> | |
| struct partial_unwrap_neg_redirect {}; | | struct partial_unwrap_neg_redirect {}; | |
| | | | |
| | | | |
| skipping to change at line 1455 | | skipping to change at line 1455 | |
| { | | { | |
| typedef Mat<eT> stored_type; | | typedef Mat<eT> stored_type; | |
| | | | |
| inline | | inline | |
| partial_unwrap(const eOp<Mat<eT>,eop_neg>& A) | | partial_unwrap(const eOp<Mat<eT>,eop_neg>& A) | |
| : M(A.P.Q) | | : M(A.P.Q) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| inline eT get_val() const { return eT(-1); } | | arma_inline eT get_val() const { return eT(-1); } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>& X) const { return (void
_ptr(&X) == void_ptr(&M)); } | | arma_inline bool is_alias(const Mat<eT>& X) const { return (void_ptr(&X)
== void_ptr(&M)); } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = true; | | static const bool do_times = true; | |
| | | | |
| const Mat<eT>& M; | | const Mat<eT>& M; | |
| }; | | }; | |
| | | | |
| template<typename eT> | | template<typename eT> | |
| struct partial_unwrap< eOp<Row<eT>, eop_neg> > | | struct partial_unwrap< eOp<Row<eT>, eop_neg> > | |
| { | | { | |
| typedef Row<eT> stored_type; | | typedef Row<eT> stored_type; | |
| | | | |
| inline | | inline | |
| partial_unwrap(const eOp<Row<eT>,eop_neg>& A) | | partial_unwrap(const eOp<Row<eT>,eop_neg>& A) | |
| : M(A.P.Q) | | : M(A.P.Q) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| inline eT get_val() const { return eT(-1); } | | arma_inline eT get_val() const { return eT(-1); } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>& X) const { return (void
_ptr(&X) == void_ptr(&M)); } | | arma_inline bool is_alias(const Mat<eT>& X) const { return (void_ptr(&X)
== void_ptr(&M)); } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = true; | | static const bool do_times = true; | |
| | | | |
| const Row<eT>& M; | | const Row<eT>& M; | |
| }; | | }; | |
| | | | |
| template<typename eT> | | template<typename eT> | |
| struct partial_unwrap< eOp<Col<eT>, eop_neg> > | | struct partial_unwrap< eOp<Col<eT>, eop_neg> > | |
| { | | { | |
| typedef Col<eT> stored_type; | | typedef Col<eT> stored_type; | |
| | | | |
| inline | | inline | |
| partial_unwrap(const eOp<Col<eT>,eop_neg>& A) | | partial_unwrap(const eOp<Col<eT>,eop_neg>& A) | |
| : M(A.P.Q) | | : M(A.P.Q) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| inline eT get_val() const { return eT(-1); } | | arma_inline eT get_val() const { return eT(-1); } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>& X) const { return (void
_ptr(&X) == void_ptr(&M)); } | | arma_inline bool is_alias(const Mat<eT>& X) const { return (void_ptr(&X)
== void_ptr(&M)); } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = true; | | static const bool do_times = true; | |
| | | | |
| const Col<eT>& M; | | const Col<eT>& M; | |
| }; | | }; | |
| | | | |
| template<typename eT> | | template<typename eT> | |
| struct partial_unwrap< eOp<subview_col<eT>, eop_neg> > | | struct partial_unwrap< eOp<subview_col<eT>, eop_neg> > | |
| { | | { | |
| typedef Col<eT> stored_type; | | typedef Col<eT> stored_type; | |
| | | | |
| inline | | inline | |
| partial_unwrap(const eOp<subview_col<eT>,eop_neg>& A) | | partial_unwrap(const eOp<subview_col<eT>,eop_neg>& A) | |
| : orig( A.P.Q.m ) | | : orig( A.P.Q.m ) | |
| , M ( const_cast<eT*>( A.P.Q.colptr(0) ), A.P.Q.n_rows, false, false
) | | , M ( const_cast<eT*>( A.P.Q.colptr(0) ), A.P.Q.n_rows, false, false
) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(-1); } | | arma_inline eT get_val() const { return eT(-1); } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>& X) const { return (void
_ptr(&X) == void_ptr(&orig)); } | | arma_inline bool is_alias(const Mat<eT>& X) const { return (void_ptr(&X)
== void_ptr(&orig)); } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = true; | | static const bool do_times = true; | |
| | | | |
| const Mat<eT>& orig; | | const Mat<eT>& orig; | |
| const Col<eT> M; | | const Col<eT> M; | |
| }; | | }; | |
| | | | |
| template<typename eT> | | template<typename eT> | |
| struct partial_unwrap< eOp<subview_row<eT>, eop_neg> > | | struct partial_unwrap< eOp<subview_row<eT>, eop_neg> > | |
| { | | { | |
| typedef Row<eT> stored_type; | | typedef Row<eT> stored_type; | |
| | | | |
| inline | | inline | |
| partial_unwrap(const eOp<subview_row<eT>,eop_neg>& A) | | partial_unwrap(const eOp<subview_row<eT>,eop_neg>& A) | |
| : M(A.P.Q) | | : M(A.P.Q) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(-1); } | | arma_inline eT get_val() const { return eT(-1); } | |
| | | | |
|
| arma_hot arma_inline bool is_alias(const Mat<eT>&) const { return false;
} | | arma_inline bool is_alias(const Mat<eT>&) const { return false; } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = true; | | static const bool do_times = true; | |
| | | | |
| const Row<eT> M; | | const Row<eT> M; | |
| }; | | }; | |
| | | | |
| // | | // | |
| | | | |
| template<typename T1> | | template<typename T1> | |
| | | | |
| skipping to change at line 1570 | | skipping to change at line 1570 | |
| typedef typename T1::elem_type eT; | | typedef typename T1::elem_type eT; | |
| typedef Mat<eT> stored_type; | | typedef Mat<eT> stored_type; | |
| | | | |
| inline | | inline | |
| partial_unwrap_check_default(const T1& A, const Mat<eT>&) | | partial_unwrap_check_default(const T1& A, const Mat<eT>&) | |
| : M(A) | | : M(A) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| const Mat<eT> M; | | const Mat<eT> M; | |
| }; | | }; | |
| | | | |
| template<typename T1> | | template<typename T1> | |
| struct partial_unwrap_check_fixed | | struct partial_unwrap_check_fixed | |
| { | | { | |
| | | | |
| skipping to change at line 1600 | | skipping to change at line 1600 | |
| } | | } | |
| | | | |
| inline | | inline | |
| ~partial_unwrap_check_fixed() | | ~partial_unwrap_check_fixed() | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| | | | |
| if(M_local) { delete M_local; } | | if(M_local) { delete M_local; } | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| const T1* M_local; | | const T1* M_local; | |
| const T1& M; | | const T1& M; | |
| }; | | }; | |
| | | | |
| template<typename T1, bool condition> | | template<typename T1, bool condition> | |
| struct partial_unwrap_check_redirect {}; | | struct partial_unwrap_check_redirect {}; | |
| | | | |
| skipping to change at line 1650 | | skipping to change at line 1650 | |
| } | | } | |
| | | | |
| inline | | inline | |
| ~partial_unwrap_check() | | ~partial_unwrap_check() | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| | | | |
| if(M_local) { delete M_local; } | | if(M_local) { delete M_local; } | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| // the order below is important | | // the order below is important | |
| const Mat<eT>* M_local; | | const Mat<eT>* M_local; | |
| const Mat<eT>& M; | | const Mat<eT>& M; | |
| }; | | }; | |
| | | | |
| template<typename eT> | | template<typename eT> | |
| | | | |
| skipping to change at line 1681 | | skipping to change at line 1681 | |
| } | | } | |
| | | | |
| inline | | inline | |
| ~partial_unwrap_check() | | ~partial_unwrap_check() | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| | | | |
| if(M_local) { delete M_local; } | | if(M_local) { delete M_local; } | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| // the order below is important | | // the order below is important | |
| const Row<eT>* M_local; | | const Row<eT>* M_local; | |
| const Row<eT>& M; | | const Row<eT>& M; | |
| }; | | }; | |
| | | | |
| template<typename eT> | | template<typename eT> | |
| | | | |
| skipping to change at line 1712 | | skipping to change at line 1712 | |
| } | | } | |
| | | | |
| inline | | inline | |
| ~partial_unwrap_check() | | ~partial_unwrap_check() | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| | | | |
| if(M_local) { delete M_local; } | | if(M_local) { delete M_local; } | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| // the order below is important | | // the order below is important | |
| const Col<eT>* M_local; | | const Col<eT>* M_local; | |
| const Col<eT>& M; | | const Col<eT>& M; | |
| }; | | }; | |
| | | | |
| // NOTE: we can get away with this shortcut as the partial_unwrap_check cla
ss is only used by the glue_times class, | | // NOTE: we can get away with this shortcut as the partial_unwrap_check cla
ss is only used by the glue_times class, | |
| | | | |
| skipping to change at line 1736 | | skipping to change at line 1736 | |
| { | | { | |
| typedef Col<eT> stored_type; | | typedef Col<eT> stored_type; | |
| | | | |
| arma_hot inline | | arma_hot inline | |
| partial_unwrap_check(const subview_col<eT>& A, const Mat<eT>& B) | | partial_unwrap_check(const subview_col<eT>& A, const Mat<eT>& B) | |
| : M ( const_cast<eT*>( A.colptr(0) ), A.n_rows, (&(A.m) == &B), false
) | | : M ( const_cast<eT*>( A.colptr(0) ), A.n_rows, (&(A.m) == &B), false
) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| const Col<eT> M; | | const Col<eT> M; | |
| }; | | }; | |
| | | | |
| template<typename T1> | | template<typename T1> | |
| struct partial_unwrap_check_htrans_default | | struct partial_unwrap_check_htrans_default | |
| { | | { | |
| typedef typename T1::elem_type eT; | | typedef typename T1::elem_type eT; | |
| typedef Mat<eT> stored_type; | | typedef Mat<eT> stored_type; | |
| | | | |
| inline | | inline | |
| partial_unwrap_check_htrans_default(const Op<T1, op_htrans>& A, const Mat
<eT>&) | | partial_unwrap_check_htrans_default(const Op<T1, op_htrans>& A, const Mat
<eT>&) | |
| : M(A.m) | | : M(A.m) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
| static const bool do_trans = true; | | static const bool do_trans = true; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| const Mat<eT> M; | | const Mat<eT> M; | |
| }; | | }; | |
| | | | |
| template<typename T1> | | template<typename T1> | |
| struct partial_unwrap_check_htrans_fixed | | struct partial_unwrap_check_htrans_fixed | |
| { | | { | |
| | | | |
| skipping to change at line 1787 | | skipping to change at line 1787 | |
| } | | } | |
| | | | |
| inline | | inline | |
| ~partial_unwrap_check_htrans_fixed() | | ~partial_unwrap_check_htrans_fixed() | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| | | | |
| if(M_local) { delete M_local; } | | if(M_local) { delete M_local; } | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
| static const bool do_trans = true; | | static const bool do_trans = true; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| const T1* M_local; | | const T1* M_local; | |
| const T1& M; | | const T1& M; | |
| }; | | }; | |
| | | | |
| template<typename T1, bool condition> | | template<typename T1, bool condition> | |
| struct partial_unwrap_check_htrans_redirect {}; | | struct partial_unwrap_check_htrans_redirect {}; | |
| | | | |
| skipping to change at line 1837 | | skipping to change at line 1837 | |
| } | | } | |
| | | | |
| inline | | inline | |
| ~partial_unwrap_check() | | ~partial_unwrap_check() | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| | | | |
| if(M_local) { delete M_local; } | | if(M_local) { delete M_local; } | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
| static const bool do_trans = true; | | static const bool do_trans = true; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| // the order below is important | | // the order below is important | |
| const Mat<eT>* M_local; | | const Mat<eT>* M_local; | |
| const Mat<eT>& M; | | const Mat<eT>& M; | |
| }; | | }; | |
| | | | |
| template<typename eT> | | template<typename eT> | |
| | | | |
| skipping to change at line 1868 | | skipping to change at line 1868 | |
| } | | } | |
| | | | |
| inline | | inline | |
| ~partial_unwrap_check() | | ~partial_unwrap_check() | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| | | | |
| if(M_local) { delete M_local; } | | if(M_local) { delete M_local; } | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
| static const bool do_trans = true; | | static const bool do_trans = true; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| // the order below is important | | // the order below is important | |
| const Row<eT>* M_local; | | const Row<eT>* M_local; | |
| const Row<eT>& M; | | const Row<eT>& M; | |
| }; | | }; | |
| | | | |
| template<typename eT> | | template<typename eT> | |
| | | | |
| skipping to change at line 1899 | | skipping to change at line 1899 | |
| } | | } | |
| | | | |
| inline | | inline | |
| ~partial_unwrap_check() | | ~partial_unwrap_check() | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| | | | |
| if(M_local) { delete M_local; } | | if(M_local) { delete M_local; } | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
| static const bool do_trans = true; | | static const bool do_trans = true; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| // the order below is important | | // the order below is important | |
| const Col<eT>* M_local; | | const Col<eT>* M_local; | |
| const Col<eT>& M; | | const Col<eT>& M; | |
| }; | | }; | |
| | | | |
| // NOTE: we can get away with this shortcut as the partial_unwrap_check cla
ss is only used by the glue_times class, | | // NOTE: we can get away with this shortcut as the partial_unwrap_check cla
ss is only used by the glue_times class, | |
| | | | |
| skipping to change at line 1923 | | skipping to change at line 1923 | |
| { | | { | |
| typedef Col<eT> stored_type; | | typedef Col<eT> stored_type; | |
| | | | |
| arma_hot inline | | arma_hot inline | |
| partial_unwrap_check(const Op< subview_col<eT>, op_htrans>& A, const Mat<
eT>& B) | | partial_unwrap_check(const Op< subview_col<eT>, op_htrans>& A, const Mat<
eT>& B) | |
| : M ( const_cast<eT*>( A.m.colptr(0) ), A.m.n_rows, (&(A.m.m) == &B),
false ) | | : M ( const_cast<eT*>( A.m.colptr(0) ), A.m.n_rows, (&(A.m.m) == &B),
false ) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(1); } | | arma_inline eT get_val() const { return eT(1); } | |
| | | | |
| static const bool do_trans = true; | | static const bool do_trans = true; | |
| static const bool do_times = false; | | static const bool do_times = false; | |
| | | | |
| const Col<eT> M; | | const Col<eT> M; | |
| }; | | }; | |
| | | | |
| template<typename T1> | | template<typename T1> | |
| struct partial_unwrap_check_htrans2_default | | struct partial_unwrap_check_htrans2_default | |
| { | | { | |
| | | | |
| skipping to change at line 2339 | | skipping to change at line 2339 | |
| typedef typename T1::elem_type eT; | | typedef typename T1::elem_type eT; | |
| typedef Mat<eT> stored_type; | | typedef Mat<eT> stored_type; | |
| | | | |
| inline | | inline | |
| partial_unwrap_check_neg_default(const eOp<T1, eop_neg>& A, const Mat<eT>
&) | | partial_unwrap_check_neg_default(const eOp<T1, eop_neg>& A, const Mat<eT>
&) | |
| : M(A.P.Q) | | : M(A.P.Q) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(-1); } | | arma_inline eT get_val() const { return eT(-1); } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = true; | | static const bool do_times = true; | |
| | | | |
| const Mat<eT> M; | | const Mat<eT> M; | |
| }; | | }; | |
| | | | |
| template<typename T1> | | template<typename T1> | |
| struct partial_unwrap_check_neg_fixed | | struct partial_unwrap_check_neg_fixed | |
| { | | { | |
| | | | |
| skipping to change at line 2369 | | skipping to change at line 2369 | |
| } | | } | |
| | | | |
| inline | | inline | |
| ~partial_unwrap_check_neg_fixed() | | ~partial_unwrap_check_neg_fixed() | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| | | | |
| if(M_local) { delete M_local; } | | if(M_local) { delete M_local; } | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(-1); } | | arma_inline eT get_val() const { return eT(-1); } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = true; | | static const bool do_times = true; | |
| | | | |
| const T1* M_local; | | const T1* M_local; | |
| const T1& M; | | const T1& M; | |
| }; | | }; | |
| | | | |
| template<typename T1, bool condition> | | template<typename T1, bool condition> | |
| struct partial_unwrap_check_neg_redirect {}; | | struct partial_unwrap_check_neg_redirect {}; | |
| | | | |
| skipping to change at line 2419 | | skipping to change at line 2419 | |
| } | | } | |
| | | | |
| inline | | inline | |
| ~partial_unwrap_check() | | ~partial_unwrap_check() | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| | | | |
| if(M_local) { delete M_local; } | | if(M_local) { delete M_local; } | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(-1); } | | arma_inline eT get_val() const { return eT(-1); } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = true; | | static const bool do_times = true; | |
| | | | |
| const Mat<eT>* M_local; | | const Mat<eT>* M_local; | |
| const Mat<eT>& M; | | const Mat<eT>& M; | |
| }; | | }; | |
| | | | |
| template<typename eT> | | template<typename eT> | |
| struct partial_unwrap_check< eOp<Row<eT>, eop_neg> > | | struct partial_unwrap_check< eOp<Row<eT>, eop_neg> > | |
| | | | |
| skipping to change at line 2449 | | skipping to change at line 2449 | |
| } | | } | |
| | | | |
| inline | | inline | |
| ~partial_unwrap_check() | | ~partial_unwrap_check() | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| | | | |
| if(M_local) { delete M_local; } | | if(M_local) { delete M_local; } | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(-1); } | | arma_inline eT get_val() const { return eT(-1); } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = true; | | static const bool do_times = true; | |
| | | | |
| const Row<eT>* M_local; | | const Row<eT>* M_local; | |
| const Row<eT>& M; | | const Row<eT>& M; | |
| }; | | }; | |
| | | | |
| template<typename eT> | | template<typename eT> | |
| struct partial_unwrap_check< eOp<Col<eT>, eop_neg> > | | struct partial_unwrap_check< eOp<Col<eT>, eop_neg> > | |
| | | | |
| skipping to change at line 2479 | | skipping to change at line 2479 | |
| } | | } | |
| | | | |
| inline | | inline | |
| ~partial_unwrap_check() | | ~partial_unwrap_check() | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| | | | |
| if(M_local) { delete M_local; } | | if(M_local) { delete M_local; } | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(-1); } | | arma_inline eT get_val() const { return eT(-1); } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = true; | | static const bool do_times = true; | |
| | | | |
| const Col<eT>* M_local; | | const Col<eT>* M_local; | |
| const Col<eT>& M; | | const Col<eT>& M; | |
| }; | | }; | |
| | | | |
| // NOTE: we can get away with this shortcut as the partial_unwrap_check cla
ss is only used by the glue_times class, | | // NOTE: we can get away with this shortcut as the partial_unwrap_check cla
ss is only used by the glue_times class, | |
| // NOTE: which relies on partial_unwrap_check to check for aliasing | | // NOTE: which relies on partial_unwrap_check to check for aliasing | |
| | | | |
| skipping to change at line 2502 | | skipping to change at line 2502 | |
| { | | { | |
| typedef Col<eT> stored_type; | | typedef Col<eT> stored_type; | |
| | | | |
| arma_hot inline | | arma_hot inline | |
| partial_unwrap_check(const eOp<subview_col<eT>,eop_neg>& A, const Mat<eT>
& B) | | partial_unwrap_check(const eOp<subview_col<eT>,eop_neg>& A, const Mat<eT>
& B) | |
| : M ( const_cast<eT*>( A.P.Q.colptr(0) ), A.P.Q.n_rows, (&(A.P.Q.m) ==
&B), false ) | | : M ( const_cast<eT*>( A.P.Q.colptr(0) ), A.P.Q.n_rows, (&(A.P.Q.m) ==
&B), false ) | |
| { | | { | |
| arma_extra_debug_sigprint(); | | arma_extra_debug_sigprint(); | |
| } | | } | |
| | | | |
|
| arma_hot arma_inline eT get_val() const { return eT(-1); } | | arma_inline eT get_val() const { return eT(-1); } | |
| | | | |
| static const bool do_trans = false; | | static const bool do_trans = false; | |
| static const bool do_times = true; | | static const bool do_times = true; | |
| | | | |
| const Col<eT> M; | | const Col<eT> M; | |
| }; | | }; | |
| | | | |
| //! @} | | //! @} | |
| | | | |
End of changes. 62 change blocks. |
| 62 lines changed or deleted | | 62 lines changed or added | |
|