Functions | |
template<typename T1 > | |
arma_inline const eOp< T1, eop_scalar_times > | operator* (const Base< typename T1::elem_type, T1 > &X, const typename T1::elem_type k) |
Base * scalar. | |
template<typename T1 > | |
arma_inline const eOp< T1, eop_scalar_times > | operator* (const typename T1::elem_type k, const Base< typename T1::elem_type, T1 > &X) |
scalar * Base | |
template<typename T1 > | |
arma_inline Mat< typename std::complex< typename T1::pod_type > > | operator* (const Base< typename T1::pod_type, T1 > &X, const std::complex< typename T1::pod_type > &k) |
non-complex Base * complex scalar (experimental) | |
template<typename T1 > | |
arma_inline Mat< typename std::complex< typename T1::pod_type > > | operator* (const std::complex< typename T1::pod_type > &k, const Base< typename T1::pod_type, T1 > &X) |
complex scalar * non-complex Base (experimental) | |
template<typename T1 > | |
arma_inline const Op< T1, op_trans2 > | operator* (const typename T1::elem_type k, const Op< T1, op_trans > &X) |
scalar * trans(T1) | |
template<typename T1 > | |
arma_inline const Op< T1, op_trans2 > | operator* (const Op< T1, op_trans > &X, const typename T1::elem_type k) |
trans(T1) * scalar | |
template<typename T1 , typename T2 > | |
arma_inline const Glue< T1, Op < T2, op_diagmat > , glue_times_diag > | operator* (const Base< typename T2::elem_type, T1 > &X, const Op< T2, op_diagmat > &Y) |
Base * diagmat. | |
template<typename T1 , typename T2 > | |
arma_inline const Glue< Op< T1, op_diagmat >, T2, glue_times_diag > | operator* (const Op< T1, op_diagmat > &X, const Base< typename T1::elem_type, T2 > &Y) |
diagmat * Base | |
template<typename T1 , typename T2 > | |
arma_inline Mat< typename promote_type< typename T1::elem_type, typename T2::elem_type >::result > | operator* (const Op< T1, op_diagmat > &X, const Op< T2, op_diagmat > &Y) |
diagmat * diagmat | |
template<typename T1 , typename T2 > | |
arma_inline const Glue< T1, T2, glue_times > | operator* (const Base< typename T1::elem_type, T1 > &X, const Base< typename T1::elem_type, T2 > &Y) |
multiplication of Base objects with same element type | |
template<typename T1 , typename T2 > | |
arma_inline Mat< typename promote_type< typename T1::elem_type, typename T2::elem_type >::result > | operator* (const Base< typename force_different_type< typename T1::elem_type, typename T2::elem_type >::T1_result, T1 > &X, const Base< typename force_different_type< typename T1::elem_type, typename T2::elem_type >::T2_result, T2 > &Y) |
multiplication of Base objects with different element types |
arma_inline const eOp<T1, eop_scalar_times> operator* | ( | const Base< typename T1::elem_type, T1 > & | X, | |
const typename T1::elem_type | k | |||
) | [inline] |
Base * scalar.
Definition at line 28 of file operator_times.hpp.
References Base< elem_type, derived >::get_ref().
00029 { 00030 arma_extra_debug_sigprint(); 00031 00032 return eOp<T1, eop_scalar_times>(X.get_ref(),k); 00033 }
arma_inline const eOp<T1, eop_scalar_times> operator* | ( | const typename T1::elem_type | k, | |
const Base< typename T1::elem_type, T1 > & | X | |||
) | [inline] |
scalar * Base
Definition at line 42 of file operator_times.hpp.
References Base< elem_type, derived >::get_ref().
00043 { 00044 arma_extra_debug_sigprint(); 00045 00046 return eOp<T1, eop_scalar_times>(X.get_ref(),k); // NOTE: order is swapped 00047 }
arma_inline Mat<typename std::complex<typename T1::pod_type> > operator* | ( | const Base< typename T1::pod_type, T1 > & | X, | |
const std::complex< typename T1::pod_type > & | k | |||
) | [inline] |
non-complex Base * complex scalar (experimental)
Definition at line 56 of file operator_times.hpp.
References Base< elem_type, derived >::get_ref().
00060 { 00061 arma_extra_debug_sigprint(); 00062 00063 typedef typename std::complex<typename T1::pod_type> eT; 00064 typedef typename T1::pod_type T; 00065 00066 const Proxy<T1> A(X.get_ref()); 00067 00068 Mat<eT> out(A.n_rows, A.n_cols); 00069 00070 const u32 n_elem = A.n_elem; 00071 eT* out_mem = out.memptr(); 00072 00073 for(u32 i=0; i<n_elem; ++i) 00074 { 00075 out_mem[i] = A[i] * k; 00076 } 00077 00078 return out; 00079 }
arma_inline Mat<typename std::complex<typename T1::pod_type> > operator* | ( | const std::complex< typename T1::pod_type > & | k, | |
const Base< typename T1::pod_type, T1 > & | X | |||
) | [inline] |
complex scalar * non-complex Base (experimental)
Definition at line 88 of file operator_times.hpp.
References Base< elem_type, derived >::get_ref().
00092 { 00093 arma_extra_debug_sigprint(); 00094 00095 typedef typename std::complex<typename T1::pod_type> eT; 00096 typedef typename T1::pod_type T; 00097 00098 const Proxy<T1> A(X.get_ref()); 00099 00100 Mat<eT> out(A.n_rows, A.n_cols); 00101 00102 const u32 n_elem = A.n_elem; 00103 eT* out_mem = out.memptr(); 00104 00105 for(u32 i=0; i<n_elem; ++i) 00106 { 00107 out_mem[i] = k * A[i]; 00108 } 00109 00110 return out; 00111 }
arma_inline const Op<T1, op_trans2> operator* | ( | const typename T1::elem_type | k, | |
const Op< T1, op_trans > & | X | |||
) | [inline] |
scalar * trans(T1)
Definition at line 120 of file operator_times.hpp.
00121 { 00122 arma_extra_debug_sigprint(); 00123 00124 return Op<T1, op_trans2>(X.m, k); 00125 }
arma_inline const Op<T1, op_trans2> operator* | ( | const Op< T1, op_trans > & | X, | |
const typename T1::elem_type | k | |||
) | [inline] |
trans(T1) * scalar
Definition at line 134 of file operator_times.hpp.
References Op< T1, op_type >::m.
00135 { 00136 arma_extra_debug_sigprint(); 00137 00138 return Op<T1, op_trans2>(X.m, k); 00139 }
arma_inline const Glue<T1, Op<T2, op_diagmat>, glue_times_diag> operator* | ( | const Base< typename T2::elem_type, T1 > & | X, | |
const Op< T2, op_diagmat > & | Y | |||
) | [inline] |
Base * diagmat.
Definition at line 148 of file operator_times.hpp.
References Base< elem_type, derived >::get_ref().
00149 { 00150 arma_extra_debug_sigprint(); 00151 00152 return Glue<T1, Op<T2, op_diagmat>, glue_times_diag>(X.get_ref(), Y); 00153 }
arma_inline const Glue<Op<T1, op_diagmat>, T2, glue_times_diag> operator* | ( | const Op< T1, op_diagmat > & | X, | |
const Base< typename T1::elem_type, T2 > & | Y | |||
) | [inline] |
diagmat * Base
Definition at line 162 of file operator_times.hpp.
References Base< T1::elem_type, Op< T1, op_type > >::get_ref().
00163 { 00164 arma_extra_debug_sigprint(); 00165 00166 return Glue<Op<T1, op_diagmat>, T2, glue_times_diag>(X, Y.get_ref()); 00167 }
arma_inline Mat< typename promote_type<typename T1::elem_type, typename T2::elem_type>::result > operator* | ( | const Op< T1, op_diagmat > & | X, | |
const Op< T2, op_diagmat > & | Y | |||
) | [inline] |
diagmat * diagmat
Definition at line 176 of file operator_times.hpp.
References upgrade_val< T1, T2 >::apply(), Mat< eT >::at(), promote_type< T1, T2 >::check(), Op< T1, op_type >::m, diagmat_proxy< T1 >::n_elem, and Mat< eT >::zeros().
00177 { 00178 arma_extra_debug_sigprint(); 00179 00180 typedef typename T1::elem_type eT1; 00181 typedef typename T2::elem_type eT2; 00182 00183 typedef typename promote_type<eT1,eT2>::result out_eT; 00184 00185 promote_type<eT1,eT2>::check(); 00186 00187 const diagmat_proxy<T1> A(X.m); 00188 const diagmat_proxy<T2> B(Y.m); 00189 00190 arma_debug_assert_mul_size(A.n_elem, A.n_elem, B.n_elem, B.n_elem, "matrix multiply"); 00191 00192 const u32 N = A.n_elem; 00193 00194 Mat<out_eT> out(N,N); 00195 00196 out.zeros(); 00197 00198 for(u32 i=0; i<N; ++i) 00199 { 00200 out.at(i,i) = upgrade_val<eT1,eT2>::apply( A[i] ) * upgrade_val<eT1,eT2>::apply( B[i] ); 00201 } 00202 00203 return out; 00204 }
arma_inline const Glue<T1, T2, glue_times> operator* | ( | const Base< typename T1::elem_type, T1 > & | X, | |
const Base< typename T1::elem_type, T2 > & | Y | |||
) | [inline] |
multiplication of Base objects with same element type
Definition at line 213 of file operator_times.hpp.
References Base< elem_type, derived >::get_ref().
00214 { 00215 arma_extra_debug_sigprint(); 00216 00217 return Glue<T1, T2, glue_times>(X.get_ref(), Y.get_ref()); 00218 }
arma_inline Mat<typename promote_type<typename T1::elem_type, typename T2::elem_type>::result> operator* | ( | const Base< typename force_different_type< typename T1::elem_type, typename T2::elem_type >::T1_result, T1 > & | X, | |
const Base< typename force_different_type< typename T1::elem_type, typename T2::elem_type >::T2_result, T2 > & | Y | |||
) | [inline] |
multiplication of Base objects with different element types
Definition at line 227 of file operator_times.hpp.
References glue_times::apply_mixed(), promote_type< T1, T2 >::check(), and Base< elem_type, derived >::get_ref().
00231 { 00232 arma_extra_debug_sigprint(); 00233 00234 typedef typename T1::elem_type eT1; 00235 typedef typename T2::elem_type eT2; 00236 00237 typedef typename promote_type<eT1,eT2>::result out_eT; 00238 00239 promote_type<eT1,eT2>::check(); 00240 00241 const unwrap<T1> tmp1(X.get_ref()); 00242 const unwrap<T2> tmp2(Y.get_ref()); 00243 00244 const Mat<eT1>& A = tmp1.M; 00245 const Mat<eT2>& B = tmp2.M; 00246 00247 Mat<out_eT> out; 00248 00249 glue_times::apply_mixed(out, A, B); 00250 00251 return out; 00252 }