18#ifndef _spm_datatypes_h_
19#define _spm_datatypes_h_
22#include "spm/config.h"
51#define SPM_MPI_INT MPI_INTEGER8
52#define SPM_INT_MAX INT64_MAX
54#elif defined(SPM_INT32)
58#define SPM_MPI_INT MPI_INTEGER4
59#define SPM_INT_MAX INT32_MAX
61#elif defined(SPM_LONG)
65#define SPM_MPI_INT MPI_LONG
66#define SPM_INT_MAX LONG_MAX
72#define SPM_MPI_INT MPI_INT
73#define SPM_INT_MAX INT_MAX
99 return ( a < b ) ? a : b;
121 return ( a > b ) ? a : b;
143 return ( a + b - 1 ) / b;
155#if defined(_MSC_VER) && !defined(__INTEL_COMPILER)
159typedef std::complex<double> spm_complex64_t;
162typedef double _Complex spm_complex64_t;
165#if !defined(__cplusplus) && defined(HAVE_COMPLEX_H)
173#ifndef DOXYGEN_SHOULD_SKIP_THIS
174extern double cabs ( spm_complex64_t z );
175extern double creal( spm_complex64_t z );
176extern double cimag( spm_complex64_t z );
182extern spm_complex64_t conj ( spm_complex64_t z );
183extern spm_complex64_t csqrt( spm_complex64_t z );
215 return sizeof( float );
217 return sizeof( double );
219 return 2 *
sizeof( float );
221 return 2 *
sizeof( double );
223 fprintf( stderr,
"spm_size_of: invalid type parameter\n" );
225 return sizeof( double );
static size_t spm_size_of(spm_coeftype_t type)
Double datatype that is not converted through precision generator functions.
double spm_fixdbl_t
Double datatype that is not converted through precision generator functions.
static spm_int_t spm_iceil(spm_int_t a, spm_int_t b)
Internal function to compute ceil(a,b)
static spm_int_t spm_imin(spm_int_t a, spm_int_t b)
Internal function to compute min(a,b)
float _Complex spm_complex32_t
static spm_int_t spm_imax(spm_int_t a, spm_int_t b)
Internal function to compute max(a,b)
enum spm_coeftype_e spm_coeftype_t
Arithmetic types.
unsigned int spm_uint_t
The main unsigned integer datatype used in spm arrays.
int spm_int_t
The main integer datatype used in spm arrays.
The sparse matrix data structure.