eGlue_meat.hpp
Go to the documentation of this file.
1 // Copyright (C) 2010-2011 NICTA (www.nicta.com.au)
2 // Copyright (C) 2010-2011 Conrad Sanderson
3 //
4 // This file is part of the Armadillo C++ library.
5 // It is provided without any warranty of fitness
6 // for any purpose. You can redistribute this file
7 // and/or modify it under the terms of the GNU
8 // Lesser General Public License (LGPL) as published
9 // by the Free Software Foundation, either version 3
10 // of the License or (at your option) any later version.
11 // (see http://www.opensource.org/licenses for more info)
12 
13 
16 
17 
18 
19 template<typename T1, typename T2, typename eglue_type>
22  {
24  }
25 
26 
27 
28 template<typename T1, typename T2, typename eglue_type>
30 eGlue<T1,T2,eglue_type>::eGlue(const T1& in_A, const T2& in_B)
31  : P1(in_A)
32  , P2(in_B)
33  {
35 
36  // arma_debug_assert_same_size( P1, P2, eglue_type::text() );
38  (
39  P1.get_n_rows(), P1.get_n_cols(),
40  P2.get_n_rows(), P2.get_n_cols(),
41  eglue_type::text()
42  );
43  }
44 
45 
46 
47 template<typename T1, typename T2, typename eglue_type>
49 uword
51  {
52  return P1.get_n_rows();
53  }
54 
55 
56 
57 template<typename T1, typename T2, typename eglue_type>
59 uword
61  {
62  return P1.get_n_cols();
63  }
64 
65 
66 
67 template<typename T1, typename T2, typename eglue_type>
69 uword
71  {
72  return P1.get_n_elem();
73  }
74 
75 
76 
77 template<typename T1, typename T2, typename eglue_type>
79 typename T1::elem_type
81  {
82  typedef typename T1::elem_type eT;
83 
84  // the optimiser will keep only one return statement
85 
86  if(is_same_type<eglue_type, eglue_plus >::value == true) { return P1[i] + P2[i]; }
87  else if(is_same_type<eglue_type, eglue_minus>::value == true) { return P1[i] - P2[i]; }
88  else if(is_same_type<eglue_type, eglue_div >::value == true) { return P1[i] / P2[i]; }
89  else if(is_same_type<eglue_type, eglue_schur>::value == true) { return P1[i] * P2[i]; }
90  }
91 
92 
93 template<typename T1, typename T2, typename eglue_type>
95 typename T1::elem_type
96 eGlue<T1,T2,eglue_type>::at(const uword row, const uword col) const
97  {
98  typedef typename T1::elem_type eT;
99 
100  // the optimiser will keep only one return statement
101 
102  if(is_same_type<eglue_type, eglue_plus >::value == true) { return P1.at(row,col) + P2.at(row,col); }
103  else if(is_same_type<eglue_type, eglue_minus>::value == true) { return P1.at(row,col) - P2.at(row,col); }
104  else if(is_same_type<eglue_type, eglue_div >::value == true) { return P1.at(row,col) / P2.at(row,col); }
105  else if(is_same_type<eglue_type, eglue_schur>::value == true) { return P1.at(row,col) * P2.at(row,col); }
106  }
107 
108 
109 
110 
arma_inline eGlue(const T1 &in_A, const T2 &in_B)
Definition: eGlue_meat.hpp:30
arma_aligned const Proxy< T2 > P2
Definition: eGlue_bones.hpp:30
arma_inline elem_type at(const uword row, const uword col) const
Definition: eGlue_meat.hpp:96
#define arma_debug_assert_same_size
Definition: debug.hpp:1086
arma_inline elem_type operator[](const uword i) const
Definition: eGlue_meat.hpp:80
arma_inline uword get_n_cols() const
Definition: eGlue_meat.hpp:60
u32 uword
Definition: typedef.hpp:85
arma_inline uword get_n_elem() const
Definition: eGlue_meat.hpp:70
arma_aligned const Proxy< T1 > P1
Definition: eGlue_bones.hpp:29
#define arma_extra_debug_sigprint
Definition: debug.hpp:1116
arma_inline uword get_n_rows() const
Definition: eGlue_meat.hpp:50
#define arma_inline
arma_inline ~eGlue()
Definition: eGlue_meat.hpp:21


armadillo_matrix
Author(s):
autogenerated on Fri Apr 16 2021 02:31:57