18#ifndef dftefeDeviceDataTypeOverloads_syclh
19#define dftefeDeviceDataTypeOverloads_syclh
21#include <sycl/sycl.hpp>
29 template <
typename T1,
typename T2>
35 sycl::memory_order::relaxed,
36 sycl::memory_scope::device,
37 sycl::access::address_space::global_space>(addr[0]);
41 inline std::complex<double>
47 inline std::complex<float>
69 copyValue(std::complex<double> *a,
const std::complex<double> b)
75 copyValue(std::complex<float> *a,
const std::complex<float> b)
96 copyValue(std::complex<double> *a,
const std::complex<float> b)
98 *a = std::complex<double>(b.real(), b.imag());
102 copyValue(std::complex<float> *a,
const std::complex<double> b)
104 *a = std::complex<float>(b.real(), b.imag());
110 *a = std::complex<double>(b, 0);
116 *a = std::complex<float>(b, 0);
122 *a = std::complex<double>(b, 0);
128 *a = std::complex<float>(b, 0);
198 abs(std::complex<double> a)
204 abs(std::complex<float> a)
219 inline unsigned long int
220 conj(
unsigned long int a)
243 inline std::complex<double>
249 inline std::complex<float>
260 mult(
unsigned int a,
unsigned int b)
265 inline unsigned long int
266 mult(
unsigned long int a,
unsigned long int b)
278 mult(
double a,
double b)
284 mult(
float a,
float b)
290 mult(
float a,
double b)
296 mult(
double a,
float b)
306 inline std::complex<double>
307 mult(std::complex<double> a, std::complex<double> b)
312 inline std::complex<float>
313 mult(std::complex<float> a, std::complex<float> b)
323 inline std::complex<double>
324 mult(std::complex<float> a, std::complex<double> b)
326 return std::complex<double>(a.real(), a.imag()) * b;
329 inline std::complex<double>
330 mult(std::complex<double> a, std::complex<float> b)
332 return a * std::complex<double>(b.real(), b.imag());
340 inline std::complex<double>
341 mult(
double a, std::complex<double> b)
343 return std::complex<double>(a * b.real(), a * b.imag());
346 inline std::complex<double>
347 mult(std::complex<double> a,
double b)
349 return std::complex<double>(b * a.real(), b * a.imag());
352 inline std::complex<float>
353 mult(
float a, std::complex<float> b)
355 return std::complex<float>(a * b.real(), a * b.imag());
358 inline std::complex<float>
359 mult(std::complex<float> a,
float b)
361 return std::complex<float>(b * a.real(), b * a.imag());
364 inline std::complex<double>
365 mult(
double a, std::complex<float> b)
367 return std::complex<double>(a * b.real(), a * b.imag());
370 inline std::complex<double>
371 mult(std::complex<float> a,
double b)
373 return std::complex<double>(b * a.real(), b * a.imag());
378 add(
unsigned int a,
unsigned int b)
383 inline unsigned long int
384 add(
unsigned long int a,
unsigned long int b)
396 add(
double a,
double b)
402 add(
float a,
float b)
407 inline std::complex<double>
408 add(std::complex<double> a, std::complex<double> b)
414 inline std::complex<float>
415 add(std::complex<float> a, std::complex<float> b)
421 add(
double a,
float b)
427 add(
float a,
double b)
432 inline std::complex<double>
433 add(std::complex<double> a, std::complex<float> b)
435 return a + std::complex<double>(b.real(), b.imag());
439 inline std::complex<double>
440 add(std::complex<float> a, std::complex<double> b)
442 return std::complex<double>(a.real(), a.imag()) + b;
447 sub(
unsigned int a,
unsigned int b)
452 inline unsigned long int
453 sub(
unsigned long int a,
unsigned long int b)
465 sub(
double a,
double b)
471 sub(
float a,
float b)
476 inline std::complex<double>
477 sub(std::complex<double> a, std::complex<double> b)
482 inline std::complex<float>
483 sub(std::complex<float> a, std::complex<float> b)
489 div(
unsigned int a,
unsigned int b)
494 inline unsigned long int
495 div(
unsigned long int a,
unsigned long int b)
507 div(
double a,
double b)
513 div(
float a,
float b)
519 div(
float a,
double b)
521 return (
double)a / b;
525 div(
double a,
float b)
527 return a / (double)b;
530 inline std::complex<double>
531 div(std::complex<double> a, std::complex<double> b)
536 inline std::complex<float>
537 div(std::complex<float> a, std::complex<float> b)
546 inline std::complex<double>
547 div(std::complex<float> a, std::complex<double> b)
549 return std::complex<double>(a.real(), a.imag()) / b;
552 inline std::complex<double>
553 div(std::complex<double> a, std::complex<float> b)
555 return a / std::complex<double>(b.real(), b.imag());
563 inline std::complex<double>
564 div(
double a, std::complex<double> b)
566 return std::complex<double>(a / b.real(), a / b.imag());
569 inline std::complex<double>
570 div(std::complex<double> a,
double b)
572 return std::complex<double>(b / a.real(), b / a.imag());
575 inline std::complex<float>
576 div(
float a, std::complex<float> b)
578 return std::complex<float>(a / b.real(), a / b.imag());
581 inline std::complex<float>
582 div(std::complex<float> a,
float b)
584 return std::complex<float>(b / a.real(), b / a.imag());
587 inline std::complex<double>
588 div(
double a, std::complex<float> b)
590 return std::complex<double>(a / b.real(), a / b.imag());
593 inline std::complex<double>
594 div(std::complex<float> a,
double b)
596 return std::complex<double>(b / a.real(), b / a.imag());
620 inline const long int *
626 inline long long int *
632 inline const long long int *
639 inline unsigned int *
645 inline const unsigned int *
651 inline unsigned long int *
657 inline const unsigned long int *
663 inline unsigned long long int *
669 inline const unsigned long long int *
681 inline const double *
699 inline std::complex<double> *
705 inline const std::complex<double> *
711 inline std::complex<float> *
717 inline const std::complex<float> *
742 inline unsigned long int
760 inline std::complex<double>
766 inline std::complex<float>
__forceinline__ __device__ void copyValue(double *a, const double b)
Definition: DeviceDataTypeOverloads.cu.h:53
__forceinline__ __device__ unsigned int div(unsigned int a, unsigned int b)
Definition: DeviceDataTypeOverloads.cu.h:482
__forceinline__ __device__ unsigned int mult(unsigned int a, unsigned int b)
Definition: DeviceDataTypeOverloads.cu.h:255
__forceinline__ __device__ double imagPartDevice(double a)
Definition: DeviceDataTypeOverloads.cu.h:156
__forceinline__ __device__ unsigned int sub(unsigned int a, unsigned int b)
Definition: DeviceDataTypeOverloads.cu.h:440
RealType< T >::Type imagPart(const T &x)
Definition: DataTypeOverloads.h:132
__forceinline__ __device__ double realPartDevice(double a)
Definition: DeviceDataTypeOverloads.cu.h:130
__forceinline__ __device__ double abs(double a)
Definition: DeviceDataTypeOverloads.cu.h:182
int * makeDataTypeDeviceCompatible(int *a)
Definition: DeviceDataTypeOverloads.cu.h:595
__forceinline__ __device__ unsigned int conj(unsigned int a)
Definition: DeviceDataTypeOverloads.cu.h:210
__device__ void atomicAddWrapper(T1 *addr, T2 value)
Definition: DeviceDataTypeOverloads.cu.h:32
RealType< T >::Type realPart(const T &x)
Definition: DataTypeOverloads.h:94
__forceinline__ __device__ unsigned int add(unsigned int a, unsigned int b)
Definition: DeviceDataTypeOverloads.cu.h:371
__forceinline__ __device__ cuDoubleComplex makeComplex(double realPart, double imagPart)
Definition: DeviceDataTypeOverloads.cu.h:38
dealii includes
Definition: AtomFieldDataSpherical.cpp:31