mirror of
https://github.com/paboyle/Grid.git
synced 2026-08-20 17:39:37 +01:00
sComplex and lexLattice prep work
This commit is contained in:
@@ -155,12 +155,27 @@ accelerator_inline vComplexD innerProductD(const vComplexF &l,const vComplexF &r
|
||||
return innerProduct(la,ra) + innerProduct(lb,rb);
|
||||
}
|
||||
accelerator_inline vRealD innerProductD(const vRealF &l,const vRealF &r)
|
||||
{
|
||||
{
|
||||
vRealD la,lb;
|
||||
vRealD ra,rb;
|
||||
Optimization::PrecisionChange::StoD(l.v,la.v,lb.v);
|
||||
Optimization::PrecisionChange::StoD(r.v,ra.v,rb.v);
|
||||
return innerProduct(la,ra) + innerProduct(lb,rb);
|
||||
return innerProduct(la,ra) + innerProduct(lb,rb);
|
||||
}
|
||||
|
||||
accelerator_inline sComplexD innerProductD(const sComplexD &l,const sComplexD &r){ return innerProduct(l,r); }
|
||||
accelerator_inline sRealD innerProductD(const sRealD &l,const sRealD &r){ return innerProduct(l,r); }
|
||||
accelerator_inline sComplexD innerProductD(const sComplexF &l,const sComplexF &r)
|
||||
{
|
||||
sComplexD ret;
|
||||
ret.v = innerProduct(ComplexD(l.v),ComplexD(r.v));
|
||||
return ret;
|
||||
}
|
||||
accelerator_inline sRealD innerProductD(const sRealF &l,const sRealF &r)
|
||||
{
|
||||
sRealD ret;
|
||||
ret.v = innerProduct(RealD(l.v),RealD(r.v));
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Now do it for vector, matrix, scalar
|
||||
@@ -212,6 +227,26 @@ accelerator_inline RealD innerProductD2(const RealF &l,const RealF &r){
|
||||
accelerator_inline vComplexD innerProductD2(const vComplexD &l,const vComplexD &r){ return innerProduct(l,r); }
|
||||
accelerator_inline vRealD innerProductD2(const vRealD &l,const vRealD &r){ return innerProduct(l,r); }
|
||||
|
||||
// Lex chart. One lane, so the promotion is not a doubling and there is no
|
||||
// sComplexD2 counterpart to vComplexD2.
|
||||
accelerator_inline sComplexD innerProductD2(const sComplexD &l,const sComplexD &r){ return innerProduct(l,r); }
|
||||
accelerator_inline sRealD innerProductD2(const sRealD &l,const sRealD &r){ return innerProduct(l,r); }
|
||||
|
||||
accelerator_inline sComplexD innerProductD2(const sComplexF &l,const sComplexF &r)
|
||||
{
|
||||
sComplexD dl,dr;
|
||||
precisionChange(&dl,&l,1);
|
||||
precisionChange(&dr,&r,1);
|
||||
return innerProduct(dl,dr);
|
||||
}
|
||||
accelerator_inline sRealD innerProductD2(const sRealF &l,const sRealF &r)
|
||||
{
|
||||
sRealD dl,dr;
|
||||
precisionChange(&dl,&l,1);
|
||||
precisionChange(&dr,&r,1);
|
||||
return innerProduct(dl,dr);
|
||||
}
|
||||
|
||||
accelerator_inline vComplexD2 innerProductD2(const vComplexF &l,const vComplexF &r)
|
||||
{
|
||||
vComplexD2 dl,dr;
|
||||
|
||||
@@ -56,6 +56,10 @@ NAMESPACE_BEGIN(Grid);
|
||||
template<> struct isGridFundamental<ComplexD> : public std::true_type { static constexpr bool notvalue = false; };
|
||||
template<> struct isGridFundamental<RealF> : public std::true_type { static constexpr bool notvalue = false; };
|
||||
template<> struct isGridFundamental<RealD> : public std::true_type { static constexpr bool notvalue = false; };
|
||||
template<> struct isGridFundamental<sComplexF> : public std::true_type { static constexpr bool notvalue = false; };
|
||||
template<> struct isGridFundamental<sComplexD> : public std::true_type { static constexpr bool notvalue = false; };
|
||||
template<> struct isGridFundamental<sRealF> : public std::true_type { static constexpr bool notvalue = false; };
|
||||
template<> struct isGridFundamental<sRealD> : public std::true_type { static constexpr bool notvalue = false; };
|
||||
template<> struct isGridFundamental<vComplexD2> : public std::true_type { static constexpr bool notvalue = false; };
|
||||
template<> struct isGridFundamental<vRealD2> : public std::true_type { static constexpr bool notvalue = false; };
|
||||
|
||||
@@ -103,6 +107,7 @@ NAMESPACE_BEGIN(Grid);
|
||||
typedef RealD scalar_objectD;
|
||||
typedef ComplexF Complexified;
|
||||
typedef RealF Realified;
|
||||
typedef Integer Integerified;
|
||||
typedef RealD DoublePrecision;
|
||||
typedef RealD DoublePrecision2;
|
||||
};
|
||||
@@ -116,6 +121,7 @@ NAMESPACE_BEGIN(Grid);
|
||||
typedef RealD scalar_objectD;
|
||||
typedef ComplexD Complexified;
|
||||
typedef RealD Realified;
|
||||
typedef Integer Integerified;
|
||||
typedef RealD DoublePrecision;
|
||||
typedef RealD DoublePrecision2;
|
||||
};
|
||||
@@ -129,6 +135,7 @@ NAMESPACE_BEGIN(Grid);
|
||||
typedef ComplexD scalar_objectD;
|
||||
typedef ComplexF Complexified;
|
||||
typedef RealF Realified;
|
||||
typedef Integer Integerified;
|
||||
typedef ComplexD DoublePrecision;
|
||||
typedef ComplexD DoublePrecision2;
|
||||
};
|
||||
@@ -142,6 +149,7 @@ NAMESPACE_BEGIN(Grid);
|
||||
typedef ComplexD scalar_objectD;
|
||||
typedef ComplexD Complexified;
|
||||
typedef RealD Realified;
|
||||
typedef Integer Integerified;
|
||||
typedef ComplexD DoublePrecision;
|
||||
typedef ComplexD DoublePrecision2;
|
||||
};
|
||||
@@ -157,6 +165,7 @@ NAMESPACE_BEGIN(Grid);
|
||||
typedef scalar_typeD scalar_objectD;
|
||||
typedef scalar_type Complexified;
|
||||
typedef RealF Realified;
|
||||
typedef Integer Integerified;
|
||||
typedef scalar_typeD DoublePrecision;
|
||||
typedef scalar_typeD DoublePrecision2;
|
||||
};
|
||||
@@ -170,6 +179,7 @@ NAMESPACE_BEGIN(Grid);
|
||||
typedef scalar_typeD scalar_objectD;
|
||||
typedef scalar_type Complexified;
|
||||
typedef RealD Realified;
|
||||
typedef Integer Integerified;
|
||||
typedef scalar_typeD DoublePrecision;
|
||||
typedef scalar_typeD DoublePrecision2;
|
||||
};
|
||||
@@ -185,6 +195,7 @@ NAMESPACE_BEGIN(Grid);
|
||||
typedef Integer scalar_objectD;
|
||||
typedef void Complexified;
|
||||
typedef void Realified;
|
||||
typedef Integer Integerified;
|
||||
typedef void DoublePrecision;
|
||||
typedef void DoublePrecision2;
|
||||
};
|
||||
@@ -199,6 +210,7 @@ NAMESPACE_BEGIN(Grid);
|
||||
typedef RealD scalar_objectD;
|
||||
typedef vComplexF Complexified;
|
||||
typedef vRealF Realified;
|
||||
typedef vInteger Integerified;
|
||||
typedef vRealD DoublePrecision;
|
||||
typedef vRealD2 DoublePrecision2;
|
||||
};
|
||||
@@ -212,6 +224,7 @@ NAMESPACE_BEGIN(Grid);
|
||||
typedef RealD scalar_objectD;
|
||||
typedef vComplexD Complexified;
|
||||
typedef vRealD Realified;
|
||||
typedef vInteger Integerified;
|
||||
typedef vRealD DoublePrecision;
|
||||
typedef vRealD DoublePrecision2;
|
||||
};
|
||||
@@ -225,6 +238,7 @@ NAMESPACE_BEGIN(Grid);
|
||||
typedef RealD scalar_objectD;
|
||||
typedef vComplexD2 Complexified;
|
||||
typedef vRealD2 Realified;
|
||||
typedef vInteger Integerified;
|
||||
typedef vRealD2 DoublePrecision;
|
||||
typedef vRealD2 DoublePrecision2;
|
||||
};
|
||||
@@ -239,6 +253,7 @@ NAMESPACE_BEGIN(Grid);
|
||||
typedef RealD scalar_objectD;
|
||||
typedef vComplexH Complexified;
|
||||
typedef vRealH Realified;
|
||||
typedef vInteger Integerified;
|
||||
typedef vRealD DoublePrecision;
|
||||
typedef vRealD DoublePrecision2;
|
||||
};
|
||||
@@ -253,6 +268,7 @@ NAMESPACE_BEGIN(Grid);
|
||||
typedef ComplexD scalar_objectD;
|
||||
typedef vComplexH Complexified;
|
||||
typedef vRealH Realified;
|
||||
typedef vInteger Integerified;
|
||||
typedef vComplexD DoublePrecision;
|
||||
typedef vComplexD DoublePrecision2;
|
||||
};
|
||||
@@ -266,6 +282,7 @@ NAMESPACE_BEGIN(Grid);
|
||||
typedef ComplexD scalar_objectD;
|
||||
typedef vComplexF Complexified;
|
||||
typedef vRealF Realified;
|
||||
typedef vInteger Integerified;
|
||||
typedef vComplexD DoublePrecision;
|
||||
typedef vComplexD2 DoublePrecision2;
|
||||
};
|
||||
@@ -279,6 +296,7 @@ NAMESPACE_BEGIN(Grid);
|
||||
typedef ComplexD scalar_objectD;
|
||||
typedef vComplexD Complexified;
|
||||
typedef vRealD Realified;
|
||||
typedef vInteger Integerified;
|
||||
typedef vComplexD DoublePrecision;
|
||||
typedef vComplexD DoublePrecision2;
|
||||
};
|
||||
@@ -292,6 +310,7 @@ NAMESPACE_BEGIN(Grid);
|
||||
typedef ComplexD scalar_objectD;
|
||||
typedef vComplexD2 Complexified;
|
||||
typedef vRealD2 Realified;
|
||||
typedef vInteger Integerified;
|
||||
typedef vComplexD2 DoublePrecision;
|
||||
typedef vComplexD2 DoublePrecision2;
|
||||
};
|
||||
@@ -305,6 +324,77 @@ NAMESPACE_BEGIN(Grid);
|
||||
typedef Integer scalar_objectD;
|
||||
typedef void Complexified;
|
||||
typedef void Realified;
|
||||
typedef vInteger Integerified;
|
||||
typedef void DoublePrecision;
|
||||
typedef void DoublePrecision2;
|
||||
};
|
||||
template<> struct GridTypeMapper<sRealF> : public GridTypeMapper_Base {
|
||||
typedef RealF scalar_type;
|
||||
typedef RealD scalar_typeD;
|
||||
typedef sRealF vector_type;
|
||||
typedef sRealD vector_typeD;
|
||||
typedef sRealF tensor_reduced;
|
||||
typedef RealF scalar_object;
|
||||
typedef RealD scalar_objectD;
|
||||
typedef sComplexF Complexified;
|
||||
typedef sRealF Realified;
|
||||
typedef sInteger Integerified;
|
||||
typedef sRealD DoublePrecision;
|
||||
typedef sRealD DoublePrecision2;
|
||||
};
|
||||
template<> struct GridTypeMapper<sRealD> : public GridTypeMapper_Base {
|
||||
typedef RealD scalar_type;
|
||||
typedef RealD scalar_typeD;
|
||||
typedef sRealD vector_type;
|
||||
typedef sRealD vector_typeD;
|
||||
typedef sRealD tensor_reduced;
|
||||
typedef RealD scalar_object;
|
||||
typedef RealD scalar_objectD;
|
||||
typedef sComplexD Complexified;
|
||||
typedef sRealD Realified;
|
||||
typedef sInteger Integerified;
|
||||
typedef sRealD DoublePrecision;
|
||||
typedef sRealD DoublePrecision2;
|
||||
};
|
||||
template<> struct GridTypeMapper<sComplexF> : public GridTypeMapper_Base {
|
||||
typedef ComplexF scalar_type;
|
||||
typedef ComplexD scalar_typeD;
|
||||
typedef sComplexF vector_type;
|
||||
typedef sComplexD vector_typeD;
|
||||
typedef sComplexF tensor_reduced;
|
||||
typedef ComplexF scalar_object;
|
||||
typedef ComplexD scalar_objectD;
|
||||
typedef sComplexF Complexified;
|
||||
typedef sRealF Realified;
|
||||
typedef sInteger Integerified;
|
||||
typedef sComplexD DoublePrecision;
|
||||
typedef sComplexD DoublePrecision2;
|
||||
};
|
||||
template<> struct GridTypeMapper<sComplexD> : public GridTypeMapper_Base {
|
||||
typedef ComplexD scalar_type;
|
||||
typedef ComplexD scalar_typeD;
|
||||
typedef sComplexD vector_type;
|
||||
typedef sComplexD vector_typeD;
|
||||
typedef sComplexD tensor_reduced;
|
||||
typedef ComplexD scalar_object;
|
||||
typedef ComplexD scalar_objectD;
|
||||
typedef sComplexD Complexified;
|
||||
typedef sRealD Realified;
|
||||
typedef sInteger Integerified;
|
||||
typedef sComplexD DoublePrecision;
|
||||
typedef sComplexD DoublePrecision2;
|
||||
};
|
||||
template<> struct GridTypeMapper<sInteger> : public GridTypeMapper_Base {
|
||||
typedef Integer scalar_type;
|
||||
typedef Integer scalar_typeD;
|
||||
typedef sInteger vector_type;
|
||||
typedef sInteger vector_typeD;
|
||||
typedef sInteger tensor_reduced;
|
||||
typedef Integer scalar_object;
|
||||
typedef Integer scalar_objectD;
|
||||
typedef void Complexified;
|
||||
typedef void Realified;
|
||||
typedef sInteger Integerified;
|
||||
typedef void DoublePrecision;
|
||||
typedef void DoublePrecision2;
|
||||
};
|
||||
@@ -324,6 +414,7 @@ NAMESPACE_BEGIN(Grid);
|
||||
using scalar_objectD = iScalar<typename BaseTraits::scalar_objectD>;
|
||||
using Complexified = iScalar<typename BaseTraits::Complexified>;
|
||||
using Realified = iScalar<typename BaseTraits::Realified>;
|
||||
using Integerified = iScalar<typename BaseTraits::Integerified>;
|
||||
using DoublePrecision = iScalar<typename BaseTraits::DoublePrecision>;
|
||||
using DoublePrecision2= iScalar<typename BaseTraits::DoublePrecision2>;
|
||||
static constexpr int Rank = BaseTraits::Rank + 1;
|
||||
@@ -339,6 +430,7 @@ NAMESPACE_BEGIN(Grid);
|
||||
using scalar_objectD = iVector<typename BaseTraits::scalar_objectD, N>;
|
||||
using Complexified = iVector<typename BaseTraits::Complexified, N>;
|
||||
using Realified = iVector<typename BaseTraits::Realified, N>;
|
||||
using Integerified = iVector<typename BaseTraits::Integerified, N>;
|
||||
using DoublePrecision = iVector<typename BaseTraits::DoublePrecision, N>;
|
||||
using DoublePrecision2= iVector<typename BaseTraits::DoublePrecision2, N>;
|
||||
static constexpr int Rank = BaseTraits::Rank + 1;
|
||||
@@ -354,6 +446,7 @@ NAMESPACE_BEGIN(Grid);
|
||||
using scalar_objectD = iMatrix<typename BaseTraits::scalar_objectD, N>;
|
||||
using Complexified = iMatrix<typename BaseTraits::Complexified, N>;
|
||||
using Realified = iMatrix<typename BaseTraits::Realified, N>;
|
||||
using Integerified = iMatrix<typename BaseTraits::Integerified, N>;
|
||||
using DoublePrecision = iMatrix<typename BaseTraits::DoublePrecision, N>;
|
||||
using DoublePrecision2= iMatrix<typename BaseTraits::DoublePrecision2, N>;
|
||||
static constexpr int Rank = BaseTraits::Rank + 2;
|
||||
|
||||
Reference in New Issue
Block a user