FEDRA emulsion software from the OPERA Collaboration
MatrixFunctions.hh File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  MatrixMulOp< MatrixA, MatrixB, T, D >
 
struct  meta_col_dot< I >
 
struct  meta_col_dot< 0 >
 
struct  meta_matrix_dot< I >
 
struct  meta_matrix_dot< 0 >
 
struct  meta_row_dot< I >
 
struct  meta_row_dot< 0 >
 
class  TransposeOp< Matrix, T, D1, D2 >
 
class  VectorMatrixColOp< Vector, Matrix, D1 >
 
class  VectorMatrixRowOp< Matrix, Vector, D2 >
 

Functions

template<class A , class B , class T , unsigned int D1, unsigned int D2>
Expr< VectorMatrixColOp< Expr< A, T, D1 >, Expr< B, T, D1, D2 >, D1 >, T, D2 > operator* (const Expr< A, T, D1 > &lhs, const Expr< B, T, D1, D2 > &rhs)
 
template<class A , class T , unsigned int D1, unsigned int D2>
Expr< VectorMatrixColOp< Expr< A, T, D1 >, SMatrix< T, D1, D2 >, D1 >, T, D2 > operator* (const Expr< A, T, D1 > &lhs, const SMatrix< T, D1, D2 > &rhs)
 
template<class A , class B , class T , unsigned int D1, unsigned int D, unsigned int D2>
Expr< MatrixMulOp< Expr< A, T, D1, D >, Expr< B, T, D, D2 >, T, D >, T, D1, D2 > operator* (const Expr< A, T, D1, D > &lhs, const Expr< B, T, D, D2 > &rhs)
 
template<class A , class T , unsigned int D1, unsigned int D, unsigned int D2>
Expr< MatrixMulOp< Expr< A, T, D1, D >, SMatrix< T, D, D2 >, T, D >, T, D1, D2 > operator* (const Expr< A, T, D1, D > &lhs, const SMatrix< T, D, D2 > &rhs)
 
template<class A , class B , class T , unsigned int D1, unsigned int D2>
Expr< VectorMatrixRowOp< Expr< A, T, D1, D2 >, Expr< B, T, D2 >, D2 >, T, D1 > operator* (const Expr< A, T, D1, D2 > &lhs, const Expr< B, T, D2 > &rhs)
 
template<class A , class T , unsigned int D1, unsigned int D2>
Expr< VectorMatrixRowOp< Expr< A, T, D1, D2 >, SVector< T, D2 >, D2 >, T, D1 > operator* (const Expr< A, T, D1, D2 > &lhs, const SVector< T, D2 > &rhs)
 
template<class A , class T , unsigned int D1, unsigned int D, unsigned int D2>
Expr< MatrixMulOp< SMatrix< T, D1, D >, Expr< A, T, D, D2 >, T, D >, T, D1, D2 > operator* (const SMatrix< T, D1, D > &lhs, const Expr< A, T, D, D2 > &rhs)
 
template<class T , unsigned int D1, unsigned int D, unsigned int D2>
Expr< MatrixMulOp< SMatrix< T, D1, D >, SMatrix< T, D, D2 >, T, D >, T, D1, D2 > operator* (const SMatrix< T, D1, D > &lhs, const SMatrix< T, D, D2 > &rhs)
 
template<class A , class T , unsigned int D1, unsigned int D2>
Expr< VectorMatrixRowOp< SMatrix< T, D1, D2 >, Expr< A, T, D2 >, D2 >, T, D1 > operator* (const SMatrix< T, D1, D2 > &lhs, const Expr< A, T, D2 > &rhs)
 
template<class T , unsigned int D1, unsigned int D2>
Expr< VectorMatrixRowOp< SMatrix< T, D1, D2 >, SVector< T, D2 >, D2 >, T, D1 > operator* (const SMatrix< T, D1, D2 > &lhs, const SVector< T, D2 > &rhs)
 
template<class A , class T , unsigned int D1, unsigned int D2>
Expr< VectorMatrixColOp< SVector< T, D1 >, Expr< A, T, D1, D2 >, D1 >, T, D2 > operator* (const SVector< T, D1 > &lhs, const Expr< A, T, D1, D2 > &rhs)
 
template<class T , unsigned int D1, unsigned int D2>
Expr< VectorMatrixColOp< SVector< T, D1 >, SMatrix< T, D1, D2 >, D1 >, T, D2 > operator* (const SVector< T, D1 > &lhs, const SMatrix< T, D1, D2 > &rhs)
 
template<class A , class B , class T , unsigned int D>
product (const Expr< A, T, D > &lhs, const Expr< B, T, D, D > &rhs)
 
template<class A , class T , unsigned int D>
product (const Expr< A, T, D > &lhs, const SMatrix< T, D > &rhs)
 
template<class A , class B , class T , unsigned int D>
product (const Expr< A, T, D, D > &lhs, const Expr< B, T, D > &rhs)
 
template<class A , class T , unsigned int D>
product (const Expr< A, T, D, D > &lhs, const SVector< T, D > &rhs)
 
template<class A , class T , unsigned int D>
product (const SMatrix< T, D > &lhs, const Expr< A, T, D > &rhs)
 
template<class T , unsigned int D>
product (const SMatrix< T, D > &lhs, const SVector< T, D > &rhs)
 
template<class A , class T , unsigned int D>
product (const SVector< T, D > &lhs, const Expr< A, T, D, D > &rhs)
 
template<class T , unsigned int D>
product (const SVector< T, D > &lhs, const SMatrix< T, D > &rhs)
 
template<class A , class T , unsigned int D1, unsigned int D2>
Expr< TransposeOp< Expr< A, T, D1, D2 >, T, D1, D2 >, T, D2, D1 > transpose (const Expr< A, T, D1, D2 > &rhs)
 
template<class T , unsigned int D1, unsigned int D2>
Expr< TransposeOp< SMatrix< T, D1, D2 >, T, D1, D2 >, T, D2, D1 > transpose (const SMatrix< T, D1, D2 > &rhs)
 

Function Documentation

◆ operator*() [1/12]

template<class A , class B , class T , unsigned int D1, unsigned int D2>
Expr< VectorMatrixColOp< Expr< A, T, D1 >, Expr< B, T, D1, D2 >, D1 >, T, D2 > operator* ( const Expr< A, T, D1 > &  lhs,
const Expr< B, T, D1, D2 > &  rhs 
)
inline
229 {
230
232 return Expr<VMOp, T, D2>(VMOp(lhs,rhs));
233}
Definition: Expression.hh:43
Definition: MatrixFunctions.hh:128

◆ operator*() [2/12]

template<class A , class T , unsigned int D1, unsigned int D2>
Expr< VectorMatrixColOp< Expr< A, T, D1 >, SMatrix< T, D1, D2 >, D1 >, T, D2 > operator* ( const Expr< A, T, D1 > &  lhs,
const SMatrix< T, D1, D2 > &  rhs 
)
inline
218 {
219
221 return Expr<VMOp, T, D2>(VMOp(lhs,rhs));
222}
Definition: SMatrix.hh:53

◆ operator*() [3/12]

template<class A , class B , class T , unsigned int D1, unsigned int D, unsigned int D2>
Expr< MatrixMulOp< Expr< A, T, D1, D >, Expr< B, T, D, D2 >, T, D >, T, D1, D2 > operator* ( const Expr< A, T, D1, D > &  lhs,
const Expr< B, T, D, D2 > &  rhs 
)
inline
325 {
326 typedef MatrixMulOp<Expr<A,T,D1,D>, Expr<B,T,D,D2>, T,D> MatMulOp;
327
328 return Expr<MatMulOp,T,D1,D2>(MatMulOp(lhs,rhs));
329}
Definition: MatrixFunctions.hh:267

◆ operator*() [4/12]

template<class A , class T , unsigned int D1, unsigned int D, unsigned int D2>
Expr< MatrixMulOp< Expr< A, T, D1, D >, SMatrix< T, D, D2 >, T, D >, T, D1, D2 > operator* ( const Expr< A, T, D1, D > &  lhs,
const SMatrix< T, D, D2 > &  rhs 
)
inline
314 {
315 typedef MatrixMulOp<Expr<A,T,D1,D>, SMatrix<T,D,D2>,T,D> MatMulOp;
316
317 return Expr<MatMulOp,T,D1,D2>(MatMulOp(lhs,rhs));
318}

◆ operator*() [5/12]

template<class A , class B , class T , unsigned int D1, unsigned int D2>
Expr< VectorMatrixRowOp< Expr< A, T, D1, D2 >, Expr< B, T, D2 >, D2 >, T, D1 > operator* ( const Expr< A, T, D1, D2 > &  lhs,
const Expr< B, T, D2 > &  rhs 
)
inline
185 {
186
188 return Expr<VMOp, T, D1>(VMOp(lhs,rhs));
189}
Definition: MatrixFunctions.hh:78

◆ operator*() [6/12]

template<class A , class T , unsigned int D1, unsigned int D2>
Expr< VectorMatrixRowOp< Expr< A, T, D1, D2 >, SVector< T, D2 >, D2 >, T, D1 > operator* ( const Expr< A, T, D1, D2 > &  lhs,
const SVector< T, D2 > &  rhs 
)
inline
174 {
175
177 return Expr<VMOp, T, D1>(VMOp(lhs,rhs));
178}
Definition: SVector.hh:51

◆ operator*() [7/12]

template<class A , class T , unsigned int D1, unsigned int D, unsigned int D2>
Expr< MatrixMulOp< SMatrix< T, D1, D >, Expr< A, T, D, D2 >, T, D >, T, D1, D2 > operator* ( const SMatrix< T, D1, D > &  lhs,
const Expr< A, T, D, D2 > &  rhs 
)
inline
303 {
304 typedef MatrixMulOp<SMatrix<T,D1,D>, Expr<A,T,D,D2>,T,D> MatMulOp;
305
306 return Expr<MatMulOp,T,D1,D2>(MatMulOp(lhs,rhs));
307}

◆ operator*() [8/12]

template<class T , unsigned int D1, unsigned int D, unsigned int D2>
Expr< MatrixMulOp< SMatrix< T, D1, D >, SMatrix< T, D, D2 >, T, D >, T, D1, D2 > operator* ( const SMatrix< T, D1, D > &  lhs,
const SMatrix< T, D, D2 > &  rhs 
)
inline
292 {
293 typedef MatrixMulOp<SMatrix<T,D1,D>, SMatrix<T,D,D2>, T,D> MatMulOp;
294
295 return Expr<MatMulOp,T,D1,D2>(MatMulOp(lhs,rhs));
296}

◆ operator*() [9/12]

template<class A , class T , unsigned int D1, unsigned int D2>
Expr< VectorMatrixRowOp< SMatrix< T, D1, D2 >, Expr< A, T, D2 >, D2 >, T, D1 > operator* ( const SMatrix< T, D1, D2 > &  lhs,
const Expr< A, T, D2 > &  rhs 
)
inline
163 {
164
166 return Expr<VMOp, T, D1>(VMOp(lhs,rhs));
167}

◆ operator*() [10/12]

template<class T , unsigned int D1, unsigned int D2>
Expr< VectorMatrixRowOp< SMatrix< T, D1, D2 >, SVector< T, D2 >, D2 >, T, D1 > operator* ( const SMatrix< T, D1, D2 > &  lhs,
const SVector< T, D2 > &  rhs 
)
inline
152 {
153
155 return Expr<VMOp, T, D1>(VMOp(lhs,rhs));
156}

◆ operator*() [11/12]

template<class A , class T , unsigned int D1, unsigned int D2>
Expr< VectorMatrixColOp< SVector< T, D1 >, Expr< A, T, D1, D2 >, D1 >, T, D2 > operator* ( const SVector< T, D1 > &  lhs,
const Expr< A, T, D1, D2 > &  rhs 
)
inline
207 {
208
210 return Expr<VMOp, T, D2>(VMOp(lhs,rhs));
211}

◆ operator*() [12/12]

template<class T , unsigned int D1, unsigned int D2>
Expr< VectorMatrixColOp< SVector< T, D1 >, SMatrix< T, D1, D2 >, D1 >, T, D2 > operator* ( const SVector< T, D1 > &  lhs,
const SMatrix< T, D1, D2 > &  rhs 
)
inline
196 {
197
199 return Expr<VMOp, T, D2>(VMOp(lhs,rhs));
200}

◆ product() [1/8]

template<class A , class B , class T , unsigned int D>
T product ( const Expr< A, T, D > &  lhs,
const Expr< B, T, D, D > &  rhs 
)
inline
507 {
508 return dot(lhs, rhs * lhs);
509}
T dot(const SVector< T, D > &lhs, const SVector< T, D > &rhs)
Definition: Functions.hh:132

◆ product() [2/8]

template<class A , class T , unsigned int D>
T product ( const Expr< A, T, D > &  lhs,
const SMatrix< T, D > &  rhs 
)
inline
475 {
476 return dot(lhs, rhs * lhs);
477}

◆ product() [3/8]

template<class A , class B , class T , unsigned int D>
T product ( const Expr< A, T, D, D > &  lhs,
const Expr< B, T, D > &  rhs 
)
inline
499 {
500 return dot(rhs, lhs * rhs);
501}

◆ product() [4/8]

template<class A , class T , unsigned int D>
T product ( const Expr< A, T, D, D > &  lhs,
const SVector< T, D > &  rhs 
)
inline
491 {
492 return dot(rhs, lhs * rhs);
493}

◆ product() [5/8]

template<class A , class T , unsigned int D>
T product ( const SMatrix< T, D > &  lhs,
const Expr< A, T, D > &  rhs 
)
inline
467 {
468 return dot(rhs, lhs * rhs);
469}

◆ product() [6/8]

template<class T , unsigned int D>
T product ( const SMatrix< T, D > &  lhs,
const SVector< T, D > &  rhs 
)
inline
451 {
452 return dot(rhs, lhs * rhs);
453}

◆ product() [7/8]

template<class A , class T , unsigned int D>
T product ( const SVector< T, D > &  lhs,
const Expr< A, T, D, D > &  rhs 
)
inline
483 {
484 return dot(lhs, rhs * lhs);
485}

◆ product() [8/8]

template<class T , unsigned int D>
T product ( const SVector< T, D > &  lhs,
const SMatrix< T, D > &  rhs 
)
inline
459 {
460 return dot(lhs, rhs * lhs);
461}

◆ transpose() [1/2]

template<class A , class T , unsigned int D1, unsigned int D2>
Expr< TransposeOp< Expr< A, T, D1, D2 >, T, D1, D2 >, T, D2, D1 > transpose ( const Expr< A, T, D1, D2 > &  rhs)
inline
441 {
442 typedef TransposeOp<Expr<A,T,D1,D2>,T,D1,D2> MatTrOp;
443
444 return Expr<MatTrOp, T, D2, D1>(MatTrOp(rhs));
445}
Definition: MatrixFunctions.hh:406

◆ transpose() [2/2]

template<class T , unsigned int D1, unsigned int D2>
Expr< TransposeOp< SMatrix< T, D1, D2 >, T, D1, D2 >, T, D2, D1 > transpose ( const SMatrix< T, D1, D2 > &  rhs)
inline
430 {
431 typedef TransposeOp<SMatrix<T,D1,D2>,T,D1,D2> MatTrOp;
432
433 return Expr<MatTrOp, T, D2, D1>(MatTrOp(rhs));
434}