18 #ifndef _pastix_datatypes_h_
19 #define _pastix_datatypes_h_
28 #if defined(PASTIX_INT64)
31 typedef uint64_t pastix_uint_t;
32 #define PASTIX_MPI_INT MPI_INTEGER8
33 #define PASTIX_INT_MAX INT64_MAX
35 #elif defined(PASTIX_INT32)
38 typedef uint32_t pastix_uint_t;
39 #define PASTIX_MPI_INT MPI_INTEGER4
40 #define PASTIX_INT_MAX INT32_MAX
42 #elif defined(PASTIX_LONG)
45 typedef unsigned long pastix_uint_t;
46 #define PASTIX_MPI_INT MPI_LONG
47 #define PASTIX_INT_MAX LONG_MAX
52 typedef unsigned int pastix_uint_t;
53 #define PASTIX_MPI_INT MPI_INT
54 #define PASTIX_INT_MAX INT_MAX
59 #define NAN ( 0. / 0. )
70 #if defined(_MSC_VER) && !defined(__INTEL_COMPILER)
74 typedef std::complex<double> pastix_complex64_t;
77 typedef double _Complex pastix_complex64_t;
80 #if !defined(__cplusplus) && defined(HAVE_COMPLEX_H)
91 extern double cabs (pastix_complex64_t z);
92 extern double creal (pastix_complex64_t z);
93 extern double cimag (pastix_complex64_t z);
99 extern pastix_complex64_t conj (pastix_complex64_t z);
100 extern pastix_complex64_t csqrt (pastix_complex64_t z);
111 #define PASTIX_MPI_COMPLEX64 MPI_C_DOUBLE_COMPLEX
112 #define PASTIX_MPI_COMPLEX32 MPI_C_FLOAT_COMPLEX
113 #define PASTIX_MPI_DOUBLE MPI_DOUBLE
114 #define PASTIX_MPI_FLOAT MPI_FLOAT
120 case PastixFloat:
return sizeof(float);
121 case PastixDouble:
return sizeof(double);
122 case PastixComplex32:
return 2*
sizeof(float);
123 case PastixComplex64:
return 2*
sizeof(double);
125 fprintf(stderr,
"pastix_size_of: invalid type parameter\n");
127 return sizeof(double);
137 typedef struct spmatrix_s spmatrix_t;
140 typedef spmatrix_t pastix_spm_t;
147 typedef struct spmatrix_s pastix_graph_t;
BEGIN_C_DECLS typedef int pastix_int_t
float _Complex pastix_complex32_t
spm_coeftype_t pastix_coeftype_t
Arithmetic types.
Main PaStiX data structure.
Main PaStiX RHS structure.
Solver column block structure.