glue_times_bones.hpp
Go to the documentation of this file.
1 // Copyright (C) 2008-2010 NICTA (www.nicta.com.au)
2 // Copyright (C) 2008-2010 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 
23 
24 template<typename glue_type, typename T1>
25 struct depth_lhs
26  {
27  static const uword num = 0;
28  };
29 
30 template<typename glue_type, typename T1, typename T2>
31 struct depth_lhs< glue_type, Glue<T1,T2,glue_type> >
32  {
34  };
35 
36 
37 
38 template<uword N>
40  {
41  template<typename T1, typename T2>
42  inline static void apply(Mat<typename T1::elem_type>& out, const Glue<T1,T2,glue_times>& X);
43  };
44 
45 
46 template<>
48  {
49  template<typename T1, typename T2, typename T3>
50  inline static void apply(Mat<typename T1::elem_type>& out, const Glue< Glue<T1,T2,glue_times>,T3,glue_times>& X);
51  };
52 
53 
54 template<>
56  {
57  template<typename T1, typename T2, typename T3, typename T4>
58  inline static void apply(Mat<typename T1::elem_type>& out, const Glue< Glue< Glue<T1,T2,glue_times>, T3, glue_times>, T4, glue_times>& X);
59  };
60 
61 
62 
65  {
66  public:
67 
68 
69  template<typename T1, typename T2>
70  inline static void apply(Mat<typename T1::elem_type>& out, const Glue<T1,T2,glue_times>& X);
71 
72 
73  template<typename T1>
74  inline static void apply_inplace(Mat<typename T1::elem_type>& out, const T1& X);
75 
76  template<typename T1, typename T2>
77  arma_hot inline static void apply_inplace_plus(Mat<typename T1::elem_type>& out, const Glue<T1, T2, glue_times>& X, const sword sign);
78 
79  template<typename eT1, typename eT2>
80  inline static void apply_mixed(Mat<typename promote_type<eT1,eT2>::result>& out, const Mat<eT1>& X, const Mat<eT2>& Y);
81 
82 
83  template<typename eT>
84  arma_inline static uword mul_storage_cost(const Mat<eT>& A, const Mat<eT>& B, const bool do_trans_A, const bool do_trans_B);
85 
86  template<typename eT>
87  arma_hot inline static void apply(Mat<eT>& out, const Mat<eT>& A, const Mat<eT>& B, const eT val, const bool do_trans_A, const bool do_trans_B, const bool do_scalar_times);
88 
89  template<typename eT>
90  inline static void apply(Mat<eT>& out, const Mat<eT>& A, const Mat<eT>& B, const Mat<eT>& C, const eT val, const bool do_trans_A, const bool do_trans_B, const bool do_trans_C, const bool do_scalar_times);
91 
92  template<typename eT>
93  inline static void apply(Mat<eT>& out, const Mat<eT>& A, const Mat<eT>& B, const Mat<eT>& C, const Mat<eT>& D, const eT val, const bool do_trans_A, const bool do_trans_B, const bool do_trans_C, const bool do_trans_D, const bool do_scalar_times);
94 
95  };
96 
97 
98 
100  {
101  public:
102 
103  template<typename T1, typename T2>
104  arma_hot inline static void apply(Mat<typename T1::elem_type>& out, const Glue<T1, T2, glue_times_diag>& X);
105 
106  };
107 
108 
109 
111 
is_promotable< T1, T2 >::result result
Class which implements the immediate multiplication of two or more matrices.
u32 uword
Definition: typedef.hpp:85
static const uword num
Dense matrix class.
#define arma_inline
#define arma_hot
s32 sword
Definition: typedef.hpp:86
Template metaprogram depth_lhs calculates the number of Glue<Tx,Ty, glue_type> instances on the left ...


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