56 elem(1) = (rhs.
elem() >> S(12)) & S(4095);
57 elem(2) = (rhs.
elem() >> S(24)) & S(4095);
79 for(
int i=0; i < 4; ++i)
86#if defined(QDP_USE_ARRAY_INITIALIZER)
93 for(
int i=0; i < 4; ++i)
99 T&
elem(
int i) {
return F[i];}
100 const T&
elem(
int i)
const {
return F[i];}
112 for(
int i=0; i < 4; ++i)
123 for(
int i=0; i < 4; ++i)
134 s << d.
elem(0) <<
" " << d.
elem(1) <<
" " << d.
elem(2) <<
" " << d.
elem(3) <<
"\n";
143 s << d.
elem(0) <<
" " << d.
elem(1) <<
" " << d.
elem(2) <<
" " << d.
elem(3) <<
"\n";
152 for(
int i=0; i < 4; ++i)
163 for(
int i=0; i < 4; ++i)
164 txt << d.
elem(i) <<
"\n";
169#ifdef QDP_USE_LIBXML2
173XMLWriter&
operator<<(XMLWriter& xml,
const PSeed<T>& d)
178 for(
int i=0; i < 4; ++i)
198 read(xml, path +
"/Seed", ff);
200 for(
int i=0; i < 4; ++i)
202 d.elem(i) = S(ff[i]);
259template<
class T1,
class T2 >
271template<
class T1,
class T2>
276template<
class T1,
class T2>
289template<
class T1,
class T2>
294template<
class T1,
class T2>
332template<
class T1,
class T2>
337template<
class T1,
class T2>
365 d.elem(0) = i0 & S(4095);
371 d.elem(1) = i1 & S(4095);
377 d.elem(2) = i2 & S(4095);
382 d.elem(3) = i3 & S(2047);
388template<
class T1,
class T2>
393template<
class T1,
class T2>
410template<
class T1,
class T2>
415template<
class T1,
class T2>
433template<
class T1,
class T2>
438template<
class T1,
class T2>
452 d.elem(0) = i0 & S(4095);
455 d.elem(1) = i1 & S(4095);
458 d.elem(2) = i2 & S(4095);
461 d.elem(3) = i3 & S(2047);
480 S twom11(1.0 / 2048.0);
481 S twom12(1.0 / 4096.0);
486 d.elem() = twom12 * S(s1.
elem(0));
490 fs2 = fs1 + d.elem();
491 d.elem() = twom12 * fs2;
495 fs2 = fs1 + d.elem();
496 d.elem() = twom12 * fs2;
500 fs2 = fs1 + d.elem();
501 d.elem() = twom11 * fs2;
520 for(
int i=0; i < 4; ++i)
533 for(
int i=0; i < 4; ++i)
539template<
class T,
class T1>
543 for(
int i=0; i < 4; ++i)
PSeed(const PSeed &a)
Deep copy constructor.
const T & elem(int i) const
PSeed & assign(const PScalar< T1 > &rhs)
PSeed = PScalar.
PSeed(const PScalar< T1 > &rhs)
construct dest = const
PSeed & operator=(const PSeed< T1 > &rhs)
PSeed = PSeed.
PSeed & operator=(const PScalar< T1 > &rhs)
PSeed = PScalar.
StandardOutputStream class.
Container for a multi-dimensional 1D array.
TextWriter & operator<<(TextWriter &txt, const std::string &output)
TextReader & operator>>(TextReader &txt, std::string &input)
void read(BinaryReader &bin, std::string &input, size_t maxBytes)
void zero_rep(IScalar< T > &dest)
dest = 0
void copymask(IScalar< T > &d, const IScalar< T1 > &mask, const IScalar< T > &s1)
dest = (mask) ? s1 : dest
UnaryReturn< IScalar< T >, FnGetSite >::Type_t getSite(const IScalar< T > &s1, int innersite)
Yet another random number generator.
MakeReturn< UnaryNode< FnSeedToFloat, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnSeedToFloat >::Type_t >::Expression_t seedToFloat(const QDPExpr< T1, C1 > &l)
MakeReturn< BinaryNode< OpEQ, typenameCreateLeaf< QDPType< T1, C1 > >::Leaf_t, typenameCreateLeaf< QDPExpr< T2, C2 > >::Leaf_t >, typenameBinaryReturn< C1, C2, OpEQ >::Type_t >::Expression_t operator==(const QDPType< T1, C1 > &l, const QDPExpr< T2, C2 > &r)
MakeReturn< BinaryNode< OpMultiply, typenameCreateLeaf< QDPType< T1, C1 > >::Leaf_t, typenameCreateLeaf< QDPExpr< T2, C2 > >::Leaf_t >, typenameBinaryReturn< C1, C2, OpMultiply >::Type_t >::Expression_t operator*(const QDPType< T1, C1 > &l, const QDPExpr< T2, C2 > &r)
MakeReturn< BinaryNode< OpBitwiseOr, typenameCreateLeaf< QDPType< T1, C1 > >::Leaf_t, typenameCreateLeaf< QDPExpr< T2, C2 > >::Leaf_t >, typenameBinaryReturn< C1, C2, OpBitwiseOr >::Type_t >::Expression_t operator|(const QDPType< T1, C1 > &l, const QDPExpr< T2, C2 > &r)
MakeReturn< BinaryNode< OpNE, typenameCreateLeaf< QDPType< T1, C1 > >::Leaf_t, typenameCreateLeaf< QDPExpr< T2, C2 > >::Leaf_t >, typenameBinaryReturn< C1, C2, OpNE >::Type_t >::Expression_t operator!=(const QDPType< T1, C1 > &l, const QDPExpr< T2, C2 > &r)
PSeed< typename BinaryReturn< T1, T2, OpBitwiseOr >::Type_t > Type_t
PSeed< typename BinaryReturn< T1, T2, OpLeftShift >::Type_t > Type_t
PSeed< typename BinaryReturn< T1, T2, OpBitwiseOr >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, OpEQ >::Type_t > Type_t
PSeed< typename BinaryReturn< T1, T2, OpMultiply >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, OpNE >::Type_t > Type_t
Promote< T1, T2 >::Type_t Type_t
PSeed< typename DoublePrecType< T1 >::Type_t > Type_t
PScalar< typename InternalScalar< T >::Type_t > Type_t
Construct simple word type used at some level within primitives.
PSeed< typename LatticeScalar< T >::Type_t > Type_t
Makes a lattice scalar leaving primitive indices alone.
PScalar< typename PrimitiveScalar< T >::Type_t > Type_t
Makes a primitive scalar leaving grid alone.
Construct simple word type used at some level within primitives.
PSeed< typename SinglePrecType< T1 >::Type_t > Type_t
PSeed< typename UnaryReturn< T, FnGetSite >::Type_t > Type_t
PScalar< typename UnaryReturn< T, FnSeedToFloat >::Type_t > Type_t
WordType< T1 >::Type_t Type_t
Find the underlying word type of a field.