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 }