4#ifndef ROOT_Math_MatrixRepresentationsStatic 
    5#define ROOT_Math_MatrixRepresentationsStatic 1 
   52   template <
class T, 
unsigned int D1, 
unsigned int D2=D1>
 
   59      inline const T& 
operator()(
unsigned int i, 
unsigned int j)
 const {
 
   77         for(
unsigned int i=0; i<
kSize; ++i) 
fArray[i] += rhs[i];
 
   83         for(
unsigned int i=0; i<
kSize; ++i) 
fArray[i] -= rhs[i];
 
   89         for(
unsigned int i=0; i<
kSize; ++i) 
fArray[i] = rhs[i];
 
   96         for(
unsigned int i=0; i<
kSize; ++i) {
 
   97            rc = rc && (
fArray[i] == rhs[i]);
 
  129   template<
unsigned int D>
 
  134         for (
unsigned int i=1; i<D; ++i)
 
  136         for (
unsigned int i=0; i<D; ++i) {
 
  137            for (
unsigned int j=0; j<=i; ++j)
 
  138               fOff[i*D+j] = 
v[i]+j;
 
  139            for (
unsigned int j=i+1; j<D; ++j)
 
  140               fOff[i*D+j] = 
v[j]+i ;
 
  143      inline int operator()(
unsigned int i, 
unsigned int j)
 const { 
return fOff[i*D+j]; }
 
  144      inline int apply(
unsigned int i)
 const { 
return fOff[i]; }
 
  148  namespace rowOffsetsUtils {
 
  154    template<
int I, 
class IndexTuple, 
int N>
 
  157    template<
int I, 
int... Indices, 
int N>
 
  164    template<
int N, 
int... Indices>
 
  175    template<
int I0, 
class F, 
int... 
I>
 
  176    constexpr std::array<decltype(std::declval<F>()(std::declval<int>())), 
sizeof...(I)>
 
  179      return  std::array<decltype(std::declval<F>()(std::declval<int>())),
 
  180          sizeof...(I)>{{ 
f(I0 + 
I)... }};
 
  183    template<
int N, 
int I0 = 0, 
class F>
 
  184    constexpr std::array<decltype(std::declval<F>()(std::declval<int>())), 
N>
 
  211   template <
class T, 
unsigned int D>
 
  249                      Cannot_assign_general_to_symmetric_matrix_representation);
 
  263                      Cannot_add_general_to_symmetric_matrix_representation);
 
  277                      Cannot_substract_general_to_symmetric_matrix_representation);
 
  287         for(
unsigned int i=0; i<D*D; ++i) {
 
  302     static constexpr int off0(
int i) { 
return i==0 ? 0 : 
off0(i-1)+i;}
 
  303     static constexpr int off2(
int i, 
int j) { 
return j<i ? 
off0(i)+j : 
off0(j)+i; }
 
  304     static constexpr int off1(
int i) { 
return off2(i/D, i%D);}
 
  307       static constexpr auto v = rowOffsetsUtils::make<D*D>(
off1);
 
  311     static inline constexpr unsigned int 
#define R(a, b, c, d, e, f, g, h, i)
 
#define STATIC_CHECK(expr, msg)
 
Expression wrapper class for Matrix objects.
 
bool operator==(const R &rhs) const
 
T & operator[](unsigned int i)
 
const T & operator()(unsigned int i, unsigned int j) const
 
T apply(unsigned int i) const
 
@ kCols
return no. of matrix columns
 
@ kSize
return no of elements: rows*columns
 
@ kRows
return no. of matrix rows
 
MatRepStd< T, D1, D2 > & operator-=(const R &rhs)
 
MatRepStd< T, D1, D2 > & operator+=(const R &rhs)
 
T & operator()(unsigned int i, unsigned int j)
 
const T & operator[](unsigned int i) const
 
MatRepStd< T, D1, D2 > & operator=(const R &rhs)
 
MatRepSym Matrix storage representation for a symmetric matrix of dimension NxN This class is a templ...
 
MatRepSym< T, D > & operator-=(const R &)
self subtraction : only symmetric to symmetric allowed
 
static constexpr int off1(int i)
 
bool operator==(const R &rhs) const
 
MatRepSym< T, D > & operator+=(const MatRepSym &rhs)
 
static constexpr int off0(int i)
 
T & operator[](unsigned int i)
 
T const & operator()(unsigned int i, unsigned int j) const
 
MatRepSym< T, D > & operator=(const R &)
assignment : only symmetric to symmetric allowed
 
MatRepSym< T, D > & operator-=(const MatRepSym &rhs)
 
MatRepSym< T, D > & operator=(const MatRepSym &rhs)
 
static constexpr int off2(int i, int j)
 
T apply(unsigned int i) const
 
MatRepSym< T, D > & operator+=(const R &)
self addition : only symmetric to symmetric allowed
 
T const & operator[](unsigned int i) const
 
static constexpr unsigned int offset(unsigned int i, unsigned int j)
 
@ kCols
return no. of matrix columns
 
@ kRows
return no. of matrix rows
 
@ kSize
return no of elements: rows*columns
 
T & operator()(unsigned int i, unsigned int j)
 
Namespace for new Math classes and functions.
 
constexpr std::array< decltype(std::declval< F >()(std::declval< int >())), sizeof...(I)> do_make(F f, indices< I... >)
 
constexpr std::array< decltype(std::declval< F >()(std::declval< int >())), N > make(F f)
 
Static structure to keep the conversion from (i,j) to offsets in the storage data for a symmetric mat...
 
int apply(unsigned int i) const
 
int operator()(unsigned int i, unsigned int j) const
 
make_indices_impl< I+1, indices< Indices..., I >, N >::type type
 
indices< Indices... > type