5template<
typename Ftype>
15 throw std::runtime_error(
"Unsupported type");
45 return MPI_C_DOUBLE_COMPLEX;
50template <
typename Ftype>
52 std::is_same<Ftype, float>::value,
54 typename std::conditional<
55 std::is_same<Ftype, double>::value || std::is_same<Ftype, doublecomplex>::value,
61template <
typename Ftype>
63 std::is_same<Ftype, float>::value,
65 typename std::conditional<
66 std::is_same<Ftype, double>::value || std::is_same<Ftype, doublecomplex>::value,
74template <
typename Ftype>
76 std::is_same<Ftype, double>::value,
78 typename std::conditional<
79 std::is_same<Ftype, float>::value,
81 typename std::conditional<
82 std::is_same<Ftype, doublecomplex>::value,
89template <
typename Ftype>
91 std::is_same<Ftype, double>::value,
93 typename std::conditional<
94 std::is_same<Ftype, float>::value,
96 typename std::conditional<
97 std::is_same<Ftype, doublecomplex>::value,
104template <
typename Ftype>
106 std::is_same<Ftype, double>::value,
108 typename std::conditional<
109 std::is_same<Ftype, float>::value,
111 typename std::conditional<
112 std::is_same<Ftype, doublecomplex>::value,
119template <
typename Ftype>
121 std::is_same<Ftype, double>::value,
123 typename std::conditional<
124 std::is_same<Ftype, float>::value,
126 typename std::conditional<
127 std::is_same<Ftype, doublecomplex>::value,
134template <
typename Ftype>
136 std::is_same<Ftype, double>::value,
138 typename std::conditional<
139 std::is_same<Ftype, float>::value,
141 typename std::conditional<
142 std::is_same<Ftype, doublecomplex>::value,
203 return atomicAdd(address, val);
209 return atomicAdd(address, val);
217 atomicAdd (&address->
r, val.
r);
218 atomicAdd (&address->
i, val.
i);
226 return {a.
r - b.
r, a.
i - b.
i};
232 return (a.
r == b.
r) && (a.
i == b.
i);
238 double denom = b.
r * b.
r + b.
i * b.
i;
239 return {(a.
r * b.
r + a.
i * b.
i) / denom, (a.
i * b.
r - a.
r * b.
i) / denom};
253 double tr = a.
r * b.
r - a.
i * b.
i;
254 double ti = a.
r * b.
i + a.
i * b.
r;
276 return (
double) value * (double) value;
282 return value * value;
288 return value.
r * value.
r + value.
i * value.
i;
__host__ __device__ bool operator==(const doublecomplex &a, const doublecomplex &b)
Definition: luAuxStructTemplated.hpp:231
doublecomplex zeroT< doublecomplex >()
Definition: luAuxStructTemplated.hpp:191
MPI_Datatype get_mpi_type< double >()
Definition: luAuxStructTemplated.hpp:31
MPI_Datatype get_mpi_type< float >()
Definition: luAuxStructTemplated.hpp:25
typename std::conditional< std::is_same< Ftype, double >::value, dLocalLU_t, typename std::conditional< std::is_same< Ftype, float >::value, sLocalLU_t, typename std::conditional< std::is_same< Ftype, doublecomplex >::value, zLocalLU_t, void >::type >::type >::type LocalLU_type
Definition: luAuxStructTemplated.hpp:117
typename std::conditional< std::is_same< Ftype, double >::value, dLUstruct_t, typename std::conditional< std::is_same< Ftype, float >::value, sLUstruct_t, typename std::conditional< std::is_same< Ftype, doublecomplex >::value, zLUstruct_t, void >::type >::type >::type LUStruct_type
Definition: luAuxStructTemplated.hpp:102
doublecomplex one< doublecomplex >()
Definition: luAuxStructTemplated.hpp:168
typename std::conditional< std::is_same< Ftype, double >::value, dtrf3Dpartition_t, typename std::conditional< std::is_same< Ftype, float >::value, strf3Dpartition_t, typename std::conditional< std::is_same< Ftype, doublecomplex >::value, ztrf3Dpartition_t, void >::type >::type >::type trf3dpartitionType
Definition: luAuxStructTemplated.hpp:87
MPI_Datatype get_mpi_type< doublecomplex >()
Definition: luAuxStructTemplated.hpp:43
typename std::conditional< std::is_same< Ftype, float >::value, float, typename std::conditional< std::is_same< Ftype, double >::value||std::is_same< Ftype, doublecomplex >::value, double, float >::type >::type threshPivValType
Definition: luAuxStructTemplated.hpp:70
double zeroT< double >()
Definition: luAuxStructTemplated.hpp:179
typename std::conditional< std::is_same< Ftype, double >::value, dLUValSubBuf_t, typename std::conditional< std::is_same< Ftype, float >::value, sLUValSubBuf_t, typename std::conditional< std::is_same< Ftype, doublecomplex >::value, zLUValSubBuf_t, void >::type >::type >::type LUValSubBuf_type
Definition: luAuxStructTemplated.hpp:132
__device__ T atomicAddT(T *address, T val)
double atomicAddT< double >(double *address, double val)
Definition: luAuxStructTemplated.hpp:202
typename std::conditional< std::is_same< Ftype, float >::value, float, typename std::conditional< std::is_same< Ftype, double >::value||std::is_same< Ftype, doublecomplex >::value, double, float >::type >::type AnormType
Definition: luAuxStructTemplated.hpp:59
float one< float >()
Definition: luAuxStructTemplated.hpp:162
double sqnorm(float value)
Definition: luAuxStructTemplated.hpp:275
double one< double >()
Definition: luAuxStructTemplated.hpp:156
MPI_Datatype get_mpi_type()
Definition: luAuxStructTemplated.hpp:13
MPI_Datatype get_mpi_type< int >()
Definition: luAuxStructTemplated.hpp:19
float atomicAddT< float >(float *address, float val)
Definition: luAuxStructTemplated.hpp:208
__host__ __device__ doublecomplex operator-(const doublecomplex &a, const doublecomplex &b)
Definition: luAuxStructTemplated.hpp:225
__host__ __device__ doublecomplex & operator*=(doublecomplex &a, const doublecomplex &b)
Definition: luAuxStructTemplated.hpp:252
__host__ __device__ doublecomplex & operator-=(doublecomplex &a, const doublecomplex &b)
Definition: luAuxStructTemplated.hpp:262
__host__ __device__ doublecomplex operator/(const doublecomplex &a, const doublecomplex &b)
Definition: luAuxStructTemplated.hpp:237
void setDiagToThreshold(double *diagptr, double thresh)
Definition: luAuxStructTemplated.hpp:297
typename std::conditional< std::is_same< Ftype, double >::value, ddiagFactBufs_t, typename std::conditional< std::is_same< Ftype, float >::value, sdiagFactBufs_t, typename std::conditional< std::is_same< Ftype, doublecomplex >::value, zdiagFactBufs_t, void >::type >::type >::type diagFactBufs_type
Definition: luAuxStructTemplated.hpp:147
doublecomplex atomicAddT< doublecomplex >(doublecomplex *address, doublecomplex val)
Definition: luAuxStructTemplated.hpp:214
float zeroT< float >()
Definition: luAuxStructTemplated.hpp:185
Definition: superlu_ddefs.h:310
Definition: superlu_ddefs.h:340
Definition: superlu_ddefs.h:97
Definition: superlu_ddefs.h:467
Definition: luAuxStructTemplated.hpp:6
Ftype * BlockLFactor
Definition: luAuxStructTemplated.hpp:7
Ftype * BlockUFactor
Definition: luAuxStructTemplated.hpp:8
Definition: dcomplex.h:30
double i
Definition: dcomplex.h:30
double r
Definition: dcomplex.h:30
Definition: superlu_ddefs.h:318
Definition: superlu_sdefs.h:310
Definition: superlu_sdefs.h:340
Definition: superlu_sdefs.h:97
Definition: superlu_sdefs.h:467
Definition: superlu_sdefs.h:318
Definition: superlu_zdefs.h:310
Definition: superlu_zdefs.h:340
Definition: superlu_zdefs.h:97
Definition: superlu_zdefs.h:467
Definition: superlu_zdefs.h:318
Definitions which are precision-neutral.
Distributed SuperLU data types and function prototypes.