QMCPACK
ConvertPosUnit< ParticleAttrib< TinyVector< T, 2 > >, Tensor< T, 2 >, 2 > Struct Template Reference

Specialized ConvertPosUnit for ParticleAttrib<T,2>, Tensor<T,2> More...

+ Collaboration diagram for ConvertPosUnit< ParticleAttrib< TinyVector< T, 2 > >, Tensor< T, 2 >, 2 >:

Public Types

using Array_t = ParticleAttrib< TinyVector< T, 2 > >
 
using Transformer_t = Tensor< T, 2 >
 

Static Public Member Functions

static void apply (const Array_t &pin, const Transformer_t &X, Array_t &pout, int first, int last)
 
static void apply (const Transformer_t &X, const Array_t &pin, Array_t &pout, int first, int last)
 
static void apply (Array_t &pinout, const Transformer_t &X, int first, int last)
 
static void apply (const Transformer_t &X, Array_t &pinout, int first, int last)
 

Detailed Description

template<class T>
struct qmcplusplus::ConvertPosUnit< ParticleAttrib< TinyVector< T, 2 > >, Tensor< T, 2 >, 2 >

Specialized ConvertPosUnit for ParticleAttrib<T,2>, Tensor<T,2>

Definition at line 97 of file FastParticleOperators.h.

Member Typedef Documentation

◆ Array_t

Definition at line 99 of file FastParticleOperators.h.

◆ Transformer_t

using Transformer_t = Tensor<T, 2>

Definition at line 100 of file FastParticleOperators.h.

Member Function Documentation

◆ apply() [1/4]

static void apply ( const Array_t pin,
const Transformer_t X,
Array_t pout,
int  first,
int  last 
)
inlinestatic

Definition at line 102 of file FastParticleOperators.h.

103  {
104  T x00 = X[0], x01 = X[1], x10 = X[2], x11 = X[3];
105 #pragma ivdep
106  for (int i = first; i < last; i++)
107  {
108  pout[i][0] = pin[i][0] * x00 + pin[i][1] * x10;
109  pout[i][1] = pin[i][0] * x01 + pin[i][1] * x11;
110  }
111  }

◆ apply() [2/4]

static void apply ( const Transformer_t X,
const Array_t pin,
Array_t pout,
int  first,
int  last 
)
inlinestatic

Definition at line 113 of file FastParticleOperators.h.

114  {
115  T x00 = X[0], x01 = X[1], x10 = X[2], x11 = X[3];
116 #pragma ivdep
117  for (int i = first; i < last; i++)
118  {
119  pout[i][0] = pin[i][0] * x00 + pin[i][1] * x01;
120  pout[i][1] = pin[i][0] * x10 + pin[i][1] * x11;
121  }
122  }

◆ apply() [3/4]

static void apply ( Array_t pinout,
const Transformer_t X,
int  first,
int  last 
)
inlinestatic

Definition at line 124 of file FastParticleOperators.h.

125  {
126  T x00 = X[0], x01 = X[1], x10 = X[2], x11 = X[3];
127 #pragma ivdep
128  for (int i = first; i < last; i++)
129  {
130  T _x(pinout[i][0]), _y(pinout[i][1]);
131  pinout[i][0] = _x * x00 + _y * x10;
132  pinout[i][1] = _x * x01 + _y * x11;
133  }
134  }

◆ apply() [4/4]

static void apply ( const Transformer_t X,
Array_t pinout,
int  first,
int  last 
)
inlinestatic

Definition at line 136 of file FastParticleOperators.h.

137  {
138  T x00 = X[0], x01 = X[1], x10 = X[2], x11 = X[3];
139 #pragma ivdep
140  for (int i = first; i < last; i++)
141  {
142  T _x(pinout[i][0]), _y(pinout[i][1]);
143  pinout[i][0] = _x * x00 + _y * x01;
144  pinout[i][1] = _x * x10 + _y * x11;
145  }
146  }

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