35 namespace colorspinor {
36 template<
typename Float,
typename storeFloat>
struct fieldorder_wrapper;
44 template <
typename ValueType>
46 inline ValueType
cos(ValueType x){
49 template <
typename ValueType>
51 inline ValueType
sin(ValueType x){
54 template <
typename ValueType>
56 inline ValueType
tan(ValueType x){
59 template <
typename ValueType>
61 inline ValueType
acos(ValueType x){
64 template <
typename ValueType>
66 inline ValueType
asin(ValueType x){
69 template <
typename ValueType>
71 inline ValueType
atan(ValueType x){
74 template <
typename ValueType>
76 inline ValueType
atan2(ValueType x,ValueType y){
79 template <
typename ValueType>
81 inline ValueType
cosh(ValueType x){
84 template <
typename ValueType>
86 inline ValueType
sinh(ValueType x){
89 template <
typename ValueType>
91 inline ValueType
tanh(ValueType x){
94 template <
typename ValueType>
96 inline ValueType
exp(ValueType x){
99 template <
typename ValueType>
101 inline ValueType
log(ValueType x){
104 template <
typename ValueType>
106 inline ValueType
log10(ValueType x){
109 template <
typename ValueType,
typename ExponentType>
111 inline ValueType
pow(ValueType x, ExponentType e){
112 #if (CUDA_VERSION < 7050)
113 return std::pow(x,
static_cast<ValueType
>(e));
118 template <
typename ValueType>
120 inline ValueType
sqrt(ValueType x){
123 template <
typename ValueType>
125 inline ValueType
abs(ValueType x){
128 template <
typename ValueType>
130 inline ValueType
conj(ValueType x){
134 template <
typename ValueType>
struct complex;
140 template<
typename ValueType>
142 ValueType
abs(
const complex<ValueType>& z);
144 template<
typename ValueType>
146 ValueType
arg(
const complex<ValueType>& z);
148 template<
typename ValueType>
150 ValueType
norm(
const complex<ValueType>& z);
153 template<
typename ValueType>
155 complex<ValueType>
conj(
const complex<ValueType>& z);
158 template<
typename ValueType>
160 complex<ValueType>
polar(
const ValueType& m,
const ValueType& theta = 0);
164 template <
typename ValueType>
166 inline complex<ValueType>
operator*(
const complex<ValueType>& lhs,
const complex<ValueType>& rhs);
167 template <
typename ValueType>
169 inline complex<ValueType>
operator*(
const complex<ValueType>& lhs,
const ValueType & rhs);
170 template <
typename ValueType>
172 inline complex<ValueType>
operator*(
const ValueType& lhs,
const complex<ValueType>& rhs);
174 template <
typename ValueType>
176 inline complex<ValueType>
operator/(
const complex<ValueType>& lhs,
const complex<ValueType>& rhs);
179 inline complex<float>
operator/(
const complex<float>& lhs,
const complex<float>& rhs);
182 inline complex<double>
operator/(
const complex<double>& lhs,
const complex<double>& rhs);
185 template <
typename ValueType>
187 inline complex<ValueType>
operator+(
const complex<ValueType>& lhs,
const complex<ValueType>& rhs);
188 template <
typename ValueType>
190 inline complex<ValueType>
operator+(
const complex<ValueType>& lhs,
const ValueType & rhs);
191 template <
typename ValueType>
193 inline complex<ValueType>
operator+(
const ValueType& lhs,
const complex<ValueType>& rhs);
195 template <
typename ValueType>
197 inline complex<ValueType>
operator-(
const complex<ValueType>& lhs,
const complex<ValueType>& rhs);
198 template <
typename ValueType>
200 inline complex<ValueType>
operator-(
const complex<ValueType>& lhs,
const ValueType & rhs);
201 template <
typename ValueType>
203 inline complex<ValueType>
operator-(
const ValueType& lhs,
const complex<ValueType>& rhs);
206 template <
typename ValueType>
208 inline complex<ValueType>
operator+(
const complex<ValueType>& rhs);
209 template <
typename ValueType>
211 inline complex<ValueType>
operator-(
const complex<ValueType>& rhs);
215 template <
typename ValueType>
217 complex<ValueType>
cos(
const complex<ValueType>& z);
219 template <
typename ValueType>
221 complex<ValueType>
cosh(
const complex<ValueType>& z);
223 template <
typename ValueType>
225 complex<ValueType>
exp(
const complex<ValueType>& z);
227 template <
typename ValueType>
229 complex<ValueType>
log(
const complex<ValueType>& z);
231 template <
typename ValueType>
233 complex<ValueType>
log10(
const complex<ValueType>& z);
235 template <
typename ValueType>
237 complex<ValueType>
pow(
const complex<ValueType>& z,
const int& n);
239 template <
typename ValueType>
241 complex<ValueType>
pow(
const complex<ValueType>&z,
const ValueType&x);
243 template <
typename ValueType>
245 complex<ValueType>
pow(
const complex<ValueType>&z,
const complex<ValueType>&z2);
247 template <
typename ValueType>
249 complex<ValueType>
pow(
const ValueType& x,
const complex<ValueType>& z);
251 template <
typename ValueType>
253 complex<ValueType>
sin(
const complex<ValueType>&z);
255 template <
typename ValueType>
257 complex<ValueType>
sinh(
const complex<ValueType>&z);
259 template <
typename ValueType>
261 complex<ValueType>
sqrt(
const complex<ValueType>&z);
263 template <
typename ValueType>
265 complex<ValueType>
tan(
const complex<ValueType>&z);
267 template <
typename ValueType>
269 complex<ValueType>
tanh(
const complex<ValueType>&z);
274 template <
typename ValueType>
276 complex<ValueType>
acos(
const complex<ValueType>& z);
278 template <
typename ValueType>
280 complex<ValueType>
asin(
const complex<ValueType>& z);
282 template <
typename ValueType>
284 complex<ValueType>
atan(
const complex<ValueType>& z);
286 template <
typename ValueType>
288 complex<ValueType>
acosh(
const complex<ValueType>& z);
290 template <
typename ValueType>
292 complex<ValueType>
asinh(
const complex<ValueType>& z);
294 template <
typename ValueType>
296 complex<ValueType>
atanh(
const complex<ValueType>& z);
301 template<
typename ValueType,
class charT,
class traits>
302 std::basic_ostream<charT, traits>&
operator<<(std::basic_ostream<charT, traits>& os,
const complex<ValueType>& z);
303 template<
typename ValueType,
typename charT,
class traits>
304 std::basic_istream<charT, traits>&
309 template<
typename ValueType,
class charT,
class traits>
312 os <<
'(' << z.
real() <<
',' << z.
imag() <<
')';
316 template<
typename ValueType,
typename charT,
class traits>
317 std::basic_istream<charT, traits>&
337 is.setstate(std::ios_base::failbit);
346 is.setstate(std::ios_base::failbit);
358 template <
typename T>
362 template <
typename T>
367 template <
typename ValueType>
375 inline complex<ValueType>(
const ValueType & re = ValueType(),
const ValueType& im = ValueType())
397 template <
typename T>
444 __host__ __device__
inline ValueType
real()
const volatile;
445 __host__ __device__
inline ValueType
imag()
const volatile;
446 __host__ __device__
inline ValueType
real()
const;
447 __host__ __device__
inline ValueType
imag()
const;
448 __host__ __device__
inline void real(ValueType)
volatile;
449 __host__ __device__
inline void imag(ValueType)
volatile;
450 __host__ __device__
inline void real(ValueType);
451 __host__ __device__
inline void imag(ValueType);
464 inline complex<float>(
const float & re,
const float& im =
float())
488 template <
typename T>
497 template <
typename T>
551 __host__ __device__
inline float real()
const volatile{
return x; }
552 __host__ __device__
inline float imag()
const volatile{
return y; }
553 __host__ __device__
inline float real()
const{
return x; }
554 __host__ __device__
inline float imag()
const{
return y; }
555 __host__ __device__
inline void real(
float re)
volatile{ x = re; }
556 __host__ __device__
inline void imag(
float im)
volatile{ y = im; }
557 __host__ __device__
inline void real(
float re){ x = re; }
558 __host__ __device__
inline void imag(
float im){ y = im; }
561 inline operator std::complex<float>()
const {
return std::complex<float>(
real(),
imag()); }
562 template <
typename T>
565 template<
typename otherFloat,
typename storeFloat>
568 template<
typename otherFloat,
typename storeFloat>
571 template<
typename otherFloat,
typename storeFloat>
574 template<
typename otherFloat,
typename storeFloat>
609 template <
typename T>
618 template <
typename T>
680 __host__ __device__
inline double real()
const volatile {
return x; }
681 __host__ __device__
inline double imag()
const volatile {
return y; }
682 __host__ __device__
inline double real()
const {
return x; }
683 __host__ __device__
inline double imag()
const {
return y; }
684 __host__ __device__
inline void real(
double re)
volatile{ x = re; }
685 __host__ __device__
inline void imag(
double im)
volatile{ y = im; }
686 __host__ __device__
inline void real(
double re){ x = re; }
687 __host__ __device__
inline void imag(
double im){ y = im; }
690 inline operator std::complex<double>()
const {
return std::complex<double>(
real(),
imag()); }
691 template <
typename T>
694 template<
typename otherFloat,
typename storeFloat>
697 template<
typename otherFloat,
typename storeFloat>
700 template<
typename otherFloat,
typename storeFloat>
703 template<
typename otherFloat,
typename storeFloat>
707 template <>
struct complex<int8_t> :
public char2 {
713 __host__ __device__
inline complex<int8_t>(
const int8_t &re,
const int8_t &im =
float())
735 __host__ __device__
inline int8_t
real()
const volatile {
return x; }
736 __host__ __device__
inline int8_t
imag()
const volatile {
return y; }
737 __host__ __device__
inline int8_t
real()
const {
return x; }
738 __host__ __device__
inline int8_t
imag()
const {
return y; }
739 __host__ __device__
inline void real(int8_t re)
volatile { x = re; }
740 __host__ __device__
inline void imag(int8_t im)
volatile { y = im; }
741 __host__ __device__
inline void real(int8_t re) { x = re; }
742 __host__ __device__
inline void imag(int8_t im) { y = im; }
745 inline operator std::complex<int8_t>()
const {
return std::complex<int8_t>(
real(),
imag()); }
746 template <
typename T>
inline __host__ __device__
operator complex<T>()
const
760 __host__ __device__
inline complex<short>(
const short & re,
const short& im =
float())
782 __host__ __device__
inline short real()
const volatile{
return x; }
783 __host__ __device__
inline short imag()
const volatile{
return y; }
784 __host__ __device__
inline short real()
const{
return x; }
785 __host__ __device__
inline short imag()
const{
return y; }
786 __host__ __device__
inline void real(
short re)
volatile{ x = re; }
787 __host__ __device__
inline void imag(
short im)
volatile{ y = im; }
788 __host__ __device__
inline void real(
short re){ x = re; }
789 __host__ __device__
inline void imag(
short im){ y = im; }
792 inline operator std::complex<short>()
const {
return std::complex<short>(
real(),
imag()); }
793 template <
typename T>
806 __host__ __device__
inline complex<int>(
const int& re,
const int& im =
float())
828 __host__ __device__
inline int real()
const volatile{
return x; }
829 __host__ __device__
inline int imag()
const volatile{
return y; }
830 __host__ __device__
inline int real()
const{
return x; }
831 __host__ __device__
inline int imag()
const{
return y; }
832 __host__ __device__
inline void real(
int re)
volatile{ x = re; }
833 __host__ __device__
inline void imag(
int im)
volatile{ y = im; }
834 __host__ __device__
inline void real(
int re){ x = re; }
835 __host__ __device__
inline void imag(
int im){ y = im; }
838 inline operator std::complex<int>()
const {
return std::complex<int>(
real(),
imag()); }
839 template <
typename T>
848 template<
typename ValueType>
856 template<
typename ValueType>
864 template <
typename ValueType>
870 template <
typename ValueType>
877 template <
typename ValueType>
883 template <
typename ValueType>
889 template <
typename ValueType>
896 template <
typename ValueType>
905 template <
typename ValueType>
912 template <
typename ValueType>
920 template <
typename ValueType>
923 const ValueType cross_norm = lhs.
real() * rhs.
real() + lhs.
imag() * rhs.
imag();
924 const ValueType rhs_norm =
norm(rhs);
934 float s = fabsf(rhs.
real()) + fabsf(rhs.
imag());
935 float oos = 1.0f / s;
936 float ars = lhs.
real() * oos;
937 float ais = lhs.
imag() * oos;
938 float brs = rhs.
real() * oos;
939 float bis = rhs.
imag() * oos;
940 s = (brs * brs) + (bis * bis);
943 ((ais * brs) - (ars * bis)) * oos);
951 double s = fabs(rhs.
real()) + fabs(rhs.
imag());
952 double oos = 1.0 / s;
953 double ars = lhs.
real() * oos;
954 double ais = lhs.
imag() * oos;
955 double brs = rhs.
real() * oos;
956 double bis = rhs.
imag() * oos;
957 s = (brs * brs) + (bis * bis);
960 ((ais * brs) - (ars * bis)) * oos);
963 template <
typename ValueType>
970 template <
typename ValueType>
973 const ValueType cross_norm = lhs * rhs.
real();
974 const ValueType rhs_norm =
norm(rhs);
990 template <
typename ValueType>
995 template <
typename ValueType>
998 return rhs*-ValueType(1);
1002 template <
typename ValueType>
1011 template <
typename ValueType>
1014 if(lhs == rhs.
real() && rhs.
imag() == 0){
1019 template <
typename ValueType>
1022 if(lhs.
real() == rhs && lhs.
imag() == 0){
1029 template <
typename ValueType>
1032 return !(lhs == rhs);
1035 template <
typename ValueType>
1038 return !(lhs == rhs);
1041 template <
typename ValueType>
1044 return !(lhs == rhs);
1048 template <
typename ValueType>
1054 template <
typename ValueType>
1062 return ::hypotf(z.
real(),z.
imag());
1070 template <
typename ValueType>
1086 template <
typename ValueType>
1092 template <
typename ValueType>
1101 return complex<float>(magnitude * ::cosf(angle),magnitude * ::sinf(angle));
1111 template <
typename ValueType>
1114 const ValueType re = z.
real();
1115 const ValueType im = z.
imag();
1122 const float re = z.
real();
1123 const float im = z.
imag();
1124 return complex<float>(cosf(re) * coshf(im), -sinf(re) * sinhf(im));
1127 template <
typename ValueType>
1130 const ValueType re = z.
real();
1131 const ValueType im = z.
imag();
1138 const float re = z.
real();
1139 const float im = z.
imag();
1140 return complex<float>(::coshf(re) * ::cosf(im), ::sinhf(re) * ::sinf(im));
1144 template <
typename ValueType>
1156 template <
typename ValueType>
1169 template <
typename ValueType>
1174 return log(z)/ValueType(2.30258509299404568402);
1178 template <
typename ValueType>
1181 return exp(
log(z)*exponent);
1184 template <
typename ValueType>
1187 return exp(
log(z)*exponent);
1190 template <
typename ValueType>
1193 return exp(::
log(x)*exponent);
1199 return exp(::logf(x)*exponent);
1202 template <
typename ValueType>
1205 return exp(
log(z)*ValueType(exponent));
1208 template <
typename ValueType>
1211 const ValueType re = z.
real();
1212 const ValueType im = z.
imag();
1219 const float re = z.
real();
1220 const float im = z.
imag();
1221 return complex<float>(::sinf(re) * ::coshf(im), ::cosf(re) * ::sinhf(im));
1224 template <
typename ValueType>
1227 const ValueType re = z.
real();
1228 const ValueType im = z.
imag();
1235 const float re = z.
real();
1236 const float im = z.
imag();
1237 return complex<float>(::sinhf(re) * ::cosf(im), ::coshf(re) * ::sinf(im));
1240 template <
typename ValueType>
1252 template <
typename ValueType>
1258 template <
typename ValueType>
1262 return (
exp(ValueType(2)*z)-ValueType(1))/(
exp(ValueType(2)*z)+ValueType(1));
1268 template <
typename ValueType>
1275 template <
typename ValueType>
1279 return -i*
asinh(i*z);
1282 template <
typename ValueType>
1286 return -i*
atanh(i*z);
1289 template <
typename ValueType>
1293 ValueType(2.0) * z.
real() * z.
imag());
1295 if (z.
real() < ValueType(0.0)){
1300 if (ret.
real() < ValueType(0.0)){
1314 template <
typename ValueType>
1317 return log(
sqrt(z*z+ValueType(1))+z);
1320 template <
typename ValueType>
1323 ValueType imag2 = z.
imag() * z.
imag();
1324 ValueType n = ValueType(1.0) + z.
real();
1327 ValueType d = ValueType(1.0) - z.
real();
1331 d = ValueType(1.0) - z.
real() * z.
real() - imag2;
1333 ret.
imag(ValueType(0.5) * ::
atan2(ValueType(2.0) * z.
imag(), d));
1338 template <
typename ValueType>
1342 float n = float(1.0) + z.
real();
1345 float d = float(1.0) - z.
real();
1349 d = float(1.0) - z.
real() * z.
real() - imag2;
1351 ret.
imag(
float(0.5) * ::atan2f(
float(2.0) * z.
imag(), d));
1367 template <
typename real>
__host__ __device__ ValueType conj(ValueType x)
__host__ __device__ complex< real > cmul(const complex< real > &x, const complex< real > &y)
__host__ __device__ complex< ValueType > polar(const ValueType &m, const ValueType &theta=0)
Returns the complex with magnitude m and angle theta in radians.
__host__ __device__ complex< ValueType > acos(const complex< ValueType > &z)
__host__ __device__ ValueType tanh(ValueType x)
__host__ __device__ complex< ValueType > asinh(const complex< ValueType > &z)
__host__ __device__ ValueType log10(ValueType x)
__device__ __host__ ColorSpinor< Float, Nc, Ns > operator*(const S &a, const ColorSpinor< Float, Nc, Ns > &x)
Compute the scalar-vector product y = a * x.
__host__ __device__ ValueType cos(ValueType x)
__host__ __device__ ValueType atan(ValueType x)
__host__ __device__ ValueType acos(ValueType x)
__host__ __device__ complex< ValueType > tan(const complex< ValueType > &z)
__host__ __device__ complex< real > cmac(const complex< real > &x, const complex< real > &y, const complex< real > &z)
__host__ __device__ ValueType atan2(ValueType x, ValueType y)
__host__ __device__ complex< float > log(const complex< float > &z)
__host__ __device__ double abs(const complex< double > &z)
__host__ __device__ complex< ValueType > acosh(const complex< ValueType > &z)
__host__ __device__ ValueType arg(const complex< ValueType > &z)
Returns the phase angle of z.
__host__ __device__ ValueType sin(ValueType x)
__host__ __device__ complex< float > cos(const complex< float > &z)
__host__ __device__ ValueType log(ValueType x)
__host__ __device__ ValueType sqrt(ValueType x)
__host__ __device__ complex< ValueType > log10(const complex< ValueType > &z)
__host__ __device__ complex< ValueType > atanh(const complex< ValueType > &z)
std::basic_istream< charT, traits > & operator>>(std::basic_istream< charT, traits > &is, complex< ValueType > &z)
__host__ __device__ complex< float > sqrt(const complex< float > &z)
__host__ __device__ complex< ValueType > asin(const complex< ValueType > &z)
__host__ __device__ ValueType sinh(ValueType x)
__host__ __device__ complex< float > sinh(const complex< float > &z)
__host__ __device__ complex< float > pow(const float &x, const complex< float > &exponent)
__host__ __device__ complex< float > cosh(const complex< float > &z)
__host__ __device__ complex< ValueType > tanh(const complex< ValueType > &z)
__device__ __host__ ColorSpinor< Float, Nc, Ns > operator+(const ColorSpinor< Float, Nc, Ns > &x, const ColorSpinor< Float, Nc, Ns > &y)
ColorSpinor addition operator.
__host__ __device__ ValueType pow(ValueType x, ExponentType e)
__host__ __device__ ValueType exp(ValueType x)
__host__ __device__ ValueType norm(const complex< ValueType > &z)
Returns the magnitude of z squared.
__host__ __device__ complex< ValueType > atan(const complex< ValueType > &z)
__host__ __device__ ValueType cosh(ValueType x)
__host__ __device__ bool operator==(const complex< ValueType > &lhs, const complex< ValueType > &rhs)
__host__ __device__ ValueType tan(ValueType x)
__host__ __device__ complex< real > i_(const complex< real > &a)
__host__ __device__ bool operator!=(const complex< ValueType > &lhs, const complex< ValueType > &rhs)
__host__ __device__ ValueType asin(ValueType x)
constexpr CommKey operator/(const CommKey &lhs, const CommKey &rhs)
__device__ __host__ ColorSpinor< Float, Nc, Ns > operator-(const ColorSpinor< Float, Nc, Ns > &x, const ColorSpinor< Float, Nc, Ns > &y)
ColorSpinor subtraction operator.
__host__ __device__ complex< float > sin(const complex< float > &z)
__host__ __device__ complex< float > exp(const complex< float > &z)
__host__ __device__ ValueType abs(ValueType x)
std::ostream & operator<<(std::ostream &output, const CloverFieldParam ¶m)
fieldorder_wrapper is an internal class that is used to wrap instances of FieldOrder accessors,...
__host__ __device__ void real(double re)
__host__ __device__ void imag(double im) volatile
__host__ __device__ complex< double > & operator+=(const complex< float > z)
__host__ __device__ double imag() const
__host__ __device__ double real() const
__host__ __device__ complex< double > & operator+=(const complex< double > z)
__host__ __device__ double imag() const volatile
__host__ __device__ volatile complex< double > & operator=(const complex< T > z) volatile
__host__ __device__ complex< double > & operator*=(const double z)
__host__ __device__ void operator=(const colorspinor::fieldorder_wrapper< otherFloat, storeFloat > &a)
__host__ __device__ complex< double > & operator*=(const complex< double > z)
__host__ __device__ void imag(double im)
__host__ __device__ complex< double > & operator=(const complex< T > z)
__host__ __device__ complex< double > & operator/=(const complex< double > z)
__host__ __device__ complex< double > & operator-=(const complex< double > z)
__host__ __device__ void operator=(const gauge::fieldorder_wrapper< otherFloat, storeFloat > &a)
__host__ __device__ double real() const volatile
__host__ __device__ void real(double re) volatile
__host__ __device__ float real() const
__host__ __device__ complex< float > & operator*=(const float z)
__host__ __device__ void real(float re) volatile
__host__ __device__ float imag() const
__host__ __device__ float imag() const volatile
__host__ __device__ complex< float > & operator-=(const complex< float > z)
__host__ __device__ complex< float > & operator=(const complex< T > z)
__host__ __device__ complex< float > & operator+=(const complex< float > z)
__host__ __device__ complex< float > & operator/=(const complex< float > z)
__host__ __device__ void imag(float im)
__host__ __device__ volatile complex< float > & operator=(const complex< T > z) volatile
__host__ __device__ float real() const volatile
__host__ __device__ complex< float > & operator*=(const complex< float > z)
__host__ __device__ void operator=(const colorspinor::fieldorder_wrapper< otherFloat, storeFloat > &a)
__host__ __device__ void imag(float im) volatile
__host__ __device__ void real(float re)
__host__ __device__ void operator=(const gauge::fieldorder_wrapper< otherFloat, storeFloat > &a)
__host__ __device__ void real(int8_t re) volatile
__host__ __device__ int8_t imag() const volatile
__host__ __device__ int8_t imag() const
__host__ __device__ void imag(int8_t im) volatile
__host__ __device__ void real(int8_t re)
__host__ __device__ complex< int8_t > & operator-=(const complex< int8_t > z)
__host__ __device__ complex< int8_t > & operator+=(const complex< int8_t > z)
__host__ __device__ void imag(int8_t im)
__host__ __device__ int8_t real() const volatile
__host__ __device__ int8_t real() const
__host__ __device__ int imag() const
__host__ __device__ void real(int re)
__host__ __device__ void real(int re) volatile
__host__ __device__ int real() const
__host__ __device__ void imag(int im)
__host__ __device__ complex< int > & operator+=(const complex< int > z)
__host__ __device__ int imag() const volatile
__host__ __device__ int real() const volatile
__host__ __device__ void imag(int im) volatile
__host__ __device__ complex< int > & operator-=(const complex< int > z)
__host__ __device__ short imag() const
__host__ __device__ void imag(short im)
__host__ __device__ short real() const
__host__ __device__ void imag(short im) volatile
__host__ __device__ complex< short > & operator+=(const complex< short > z)
__host__ __device__ complex< short > & operator-=(const complex< short > z)
__host__ __device__ short real() const volatile
__host__ __device__ short imag() const volatile
__host__ __device__ void real(short re)
__host__ __device__ void real(short re) volatile
__host__ __device__ ValueType imag() const volatile
__host__ __device__ complex< ValueType > & operator*=(const ValueType z)
__host__ __device__ ValueType real() const volatile
__host__ __device__ void real(ValueType) volatile
__host__ __device__ ValueType real() const
__host__ __device__ complex< ValueType > & operator=(const complex< T > z)
__host__ __device__ complex< ValueType > & operator-=(const complex< ValueType > z)
__host__ __device__ void imag(ValueType) volatile
__host__ __device__ complex< ValueType > & operator/=(const complex< ValueType > z)
__host__ __device__ void imag(ValueType)
__host__ __device__ ValueType imag() const
__host__ __device__ complex< ValueType > & operator*=(const complex< ValueType > z)
__host__ __device__ void real(ValueType)
__host__ __device__ complex< ValueType > & operator+=(const complex< ValueType > z)
fieldorder_wrapper is an internal class that is used to wrap instances of FieldOrder accessors,...