QMCPACK
SmallMatrixDetCalculator< T > Struct Template Reference

Function class calculates multi determinant ratio from matrix elements needs to be the size of your result matrix or larger includes manual expansions for smaller evaluations. More...

+ Inheritance diagram for SmallMatrixDetCalculator< T >:
+ Collaboration diagram for SmallMatrixDetCalculator< T >:

Public Types

template<typename DT >
using OffloadMatrix = Matrix< DT, OffloadPinnedAllocator< DT > >
 default implementation of MultiDiracDeterminant::CustomizedMatrixDet If you don't have a perfect square below 25 of dots this is what you hit dots must be a 2n by 2n Matrix iter must be size n^2 this object must have been resized to n More...
 

Public Member Functions

void resize (int n)
 
template<typename ITER >
evaluate (const OffloadMatrix< T > &dots, ITER it, int n)
 

Static Public Member Functions

static T evaluate (T a11, T a12, T a21, T a22)
 
static T evaluate (T a11, T a12, T a13, T a21, T a22, T a23, T a31, T a32, T a33)
 
static T evaluate (T a11, T a12, T a13, T a14, T a21, T a22, T a23, T a24, T a31, T a32, T a33, T a34, T a41, T a42, T a43, T a44)
 
static T evaluate (T a11, T a12, T a13, T a14, T a15, T a21, T a22, T a23, T a24, T a25, T a31, T a32, T a33, T a34, T a35, T a41, T a42, T a43, T a44, T a45, T a51, T a52, T a53, T a54, T a55)
 

Public Attributes

std::vector< T > M
 
std::vector< int > Pivot
 

Detailed Description

template<typename T>
struct qmcplusplus::SmallMatrixDetCalculator< T >

Function class calculates multi determinant ratio from matrix elements needs to be the size of your result matrix or larger includes manual expansions for smaller evaluations.

Definition at line 33 of file SmallMatrixDetCalculator.h.

Member Typedef Documentation

◆ OffloadMatrix

default implementation of MultiDiracDeterminant::CustomizedMatrixDet If you don't have a perfect square below 25 of dots this is what you hit dots must be a 2n by 2n Matrix iter must be size n^2 this object must have been resized to n

Definition at line 135 of file SmallMatrixDetCalculator.h.

Member Function Documentation

◆ evaluate() [1/5]

◆ evaluate() [2/5]

static T evaluate ( a11,
a12,
a13,
a21,
a22,
a23,
a31,
a32,
a33 
)
inlinestatic

Definition at line 46 of file SmallMatrixDetCalculator.h.

47  {
48  return (a11 * (a22 * a33 - a32 * a23) - a21 * (a12 * a33 - a32 * a13) + a31 * (a12 * a23 - a22 * a13));
49  }

◆ evaluate() [3/5]

static T evaluate ( a11,
a12,
a13,
a14,
a21,
a22,
a23,
a24,
a31,
a32,
a33,
a34,
a41,
a42,
a43,
a44 
)
inlinestatic

Definition at line 51 of file SmallMatrixDetCalculator.h.

67  {
68  return (a11 * (a22 * (a33 * a44 - a43 * a34) - a32 * (a23 * a44 - a43 * a24) + a42 * (a23 * a34 - a33 * a24)) -
69  a21 * (a12 * (a33 * a44 - a43 * a34) - a32 * (a13 * a44 - a43 * a14) + a42 * (a13 * a34 - a33 * a14)) +
70  a31 * (a12 * (a23 * a44 - a43 * a24) - a22 * (a13 * a44 - a43 * a14) + a42 * (a13 * a24 - a23 * a14)) -
71  a41 * (a12 * (a23 * a34 - a33 * a24) - a22 * (a13 * a34 - a33 * a14) + a32 * (a13 * a24 - a23 * a14)));
72  }

◆ evaluate() [4/5]

static T evaluate ( a11,
a12,
a13,
a14,
a15,
a21,
a22,
a23,
a24,
a25,
a31,
a32,
a33,
a34,
a35,
a41,
a42,
a43,
a44,
a45,
a51,
a52,
a53,
a54,
a55 
)
inlinestatic

Definition at line 74 of file SmallMatrixDetCalculator.h.

99  {
100  return (
101  a11 *
102  (a22 * (a33 * (a44 * a55 - a54 * a45) - a43 * (a34 * a55 - a54 * a35) + a53 * (a34 * a45 - a44 * a35)) -
103  a32 * (a23 * (a44 * a55 - a54 * a45) - a43 * (a24 * a55 - a54 * a25) + a53 * (a24 * a45 - a44 * a25)) +
104  a42 * (a23 * (a34 * a55 - a54 * a35) - a33 * (a24 * a55 - a54 * a25) + a53 * (a24 * a35 - a34 * a25)) -
105  a52 * (a23 * (a34 * a45 - a44 * a35) - a33 * (a24 * a45 - a44 * a25) + a43 * (a24 * a35 - a34 * a25))) -
106  a21 *
107  (a12 * (a33 * (a44 * a55 - a54 * a45) - a43 * (a34 * a55 - a54 * a35) + a53 * (a34 * a45 - a44 * a35)) -
108  a32 * (a13 * (a44 * a55 - a54 * a45) - a43 * (a14 * a55 - a54 * a15) + a53 * (a14 * a45 - a44 * a15)) +
109  a42 * (a13 * (a34 * a55 - a54 * a35) - a33 * (a14 * a55 - a54 * a15) + a53 * (a14 * a35 - a34 * a15)) -
110  a52 * (a13 * (a34 * a45 - a44 * a35) - a33 * (a14 * a45 - a44 * a15) + a43 * (a14 * a35 - a34 * a15))) +
111  a31 *
112  (a12 * (a23 * (a44 * a55 - a54 * a45) - a43 * (a24 * a55 - a54 * a25) + a53 * (a24 * a45 - a44 * a25)) -
113  a22 * (a13 * (a44 * a55 - a54 * a45) - a43 * (a14 * a55 - a54 * a15) + a53 * (a14 * a45 - a44 * a15)) +
114  a42 * (a13 * (a24 * a55 - a54 * a25) - a23 * (a14 * a55 - a54 * a15) + a53 * (a14 * a25 - a24 * a15)) -
115  a52 * (a13 * (a24 * a45 - a44 * a25) - a23 * (a14 * a45 - a44 * a15) + a43 * (a14 * a25 - a24 * a15))) -
116  a41 *
117  (a12 * (a23 * (a34 * a55 - a54 * a35) - a33 * (a24 * a55 - a54 * a25) + a53 * (a24 * a35 - a34 * a25)) -
118  a22 * (a13 * (a34 * a55 - a54 * a35) - a33 * (a14 * a55 - a54 * a15) + a53 * (a14 * a35 - a34 * a15)) +
119  a32 * (a13 * (a24 * a55 - a54 * a25) - a23 * (a14 * a55 - a54 * a15) + a53 * (a14 * a25 - a24 * a15)) -
120  a52 * (a13 * (a24 * a35 - a34 * a25) - a23 * (a14 * a35 - a34 * a15) + a33 * (a14 * a25 - a24 * a15))) +
121  a51 *
122  (a12 * (a23 * (a34 * a45 - a44 * a35) - a33 * (a24 * a45 - a44 * a25) + a43 * (a24 * a35 - a34 * a25)) -
123  a22 * (a13 * (a34 * a45 - a44 * a35) - a33 * (a14 * a45 - a44 * a15) + a43 * (a14 * a35 - a34 * a15)) +
124  a32 * (a13 * (a24 * a45 - a44 * a25) - a23 * (a14 * a45 - a44 * a15) + a43 * (a14 * a25 - a24 * a15)) -
125  a42 * (a13 * (a24 * a35 - a34 * a25) - a23 * (a14 * a35 - a34 * a15) + a33 * (a14 * a25 - a24 * a15))));
126  }

◆ evaluate() [5/5]

T evaluate ( const OffloadMatrix< T > &  dots,
ITER  it,
int  n 
)
inline

Definition at line 137 of file SmallMatrixDetCalculator.h.

138  {
139  typename std::vector<T>::iterator d = M.begin();
140  for (int i = 0; i < n; i++)
141  for (int j = 0; j < n; j++)
142  {
143  //performance through proper iterator indistiquishable from data pointer
144  *(d++) = dots(*(it + i), *(it + n + j));
145  }
146  return Determinant(M.data(), n, n, Pivot.data());
147  }
T Determinant(T *restrict x, int n, int m, int *restrict pivot)
determinant of a matrix

◆ resize()

void resize ( int  n)
inline

Member Data Documentation

◆ M

◆ Pivot


The documentation for this struct was generated from the following file: