|
Packit |
67cb25 |
/* If BASE is undefined we use function names like gsl_name()
|
|
Packit |
67cb25 |
and assume that we are using doubles.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
If BASE is defined we used function names like gsl_BASE_name()
|
|
Packit |
67cb25 |
and use BASE as the base datatype */
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#if defined(BASE_GSL_COMPLEX_LONG)
|
|
Packit |
67cb25 |
#define BASE gsl_complex_long_double
|
|
Packit |
67cb25 |
#define SHORT complex_long_double
|
|
Packit |
67cb25 |
#define SHORT_REAL long_double
|
|
Packit |
67cb25 |
#define ATOMIC long double
|
|
Packit |
67cb25 |
#define USES_LONGDOUBLE 1
|
|
Packit |
67cb25 |
#define MULTIPLICITY 2
|
|
Packit |
67cb25 |
#define FP 1
|
|
Packit |
67cb25 |
#define IN_FORMAT "%Lg"
|
|
Packit |
67cb25 |
#define OUT_FORMAT "%Lg"
|
|
Packit |
67cb25 |
#define ATOMIC_IO ATOMIC
|
|
Packit |
67cb25 |
#define ZERO {{0.0L,0.0L}}
|
|
Packit |
67cb25 |
#define ONE {{1.0L,0.0L}}
|
|
Packit |
67cb25 |
#define BASE_EPSILON GSL_DBL_EPSILON
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#elif defined(BASE_GSL_COMPLEX)
|
|
Packit |
67cb25 |
#if defined(_MSC_VER) && defined(complex)
|
|
Packit |
67cb25 |
#undef complex
|
|
Packit |
67cb25 |
#endif
|
|
Packit |
67cb25 |
#define BASE gsl_complex
|
|
Packit |
67cb25 |
#define SHORT complex
|
|
Packit |
67cb25 |
#define SHORT_REAL
|
|
Packit |
67cb25 |
#define ATOMIC double
|
|
Packit |
67cb25 |
#define MULTIPLICITY 2
|
|
Packit |
67cb25 |
#define FP 1
|
|
Packit |
67cb25 |
#define IN_FORMAT "%lg"
|
|
Packit |
67cb25 |
#define OUT_FORMAT "%g"
|
|
Packit |
67cb25 |
#define ATOMIC_IO ATOMIC
|
|
Packit |
67cb25 |
#define ZERO {{0.0,0.0}}
|
|
Packit |
67cb25 |
#define ONE {{1.0,0.0}}
|
|
Packit |
67cb25 |
#define BASE_EPSILON GSL_DBL_EPSILON
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#elif defined(BASE_GSL_COMPLEX_FLOAT)
|
|
Packit |
67cb25 |
#define BASE gsl_complex_float
|
|
Packit |
67cb25 |
#define SHORT complex_float
|
|
Packit |
67cb25 |
#define SHORT_REAL float
|
|
Packit |
67cb25 |
#define ATOMIC float
|
|
Packit |
67cb25 |
#define MULTIPLICITY 2
|
|
Packit |
67cb25 |
#define FP 1
|
|
Packit |
67cb25 |
#define IN_FORMAT "%g"
|
|
Packit |
67cb25 |
#define OUT_FORMAT "%g"
|
|
Packit |
67cb25 |
#define ATOMIC_IO ATOMIC
|
|
Packit |
67cb25 |
#define ZERO {{0.0F,0.0F}}
|
|
Packit |
67cb25 |
#define ONE {{1.0F,0.0F}}
|
|
Packit |
67cb25 |
#define BASE_EPSILON GSL_FLT_EPSILON
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#elif defined(BASE_LONG_DOUBLE)
|
|
Packit |
67cb25 |
#define BASE long double
|
|
Packit |
67cb25 |
#define SHORT long_double
|
|
Packit |
67cb25 |
#define ATOMIC long double
|
|
Packit |
67cb25 |
#define USES_LONGDOUBLE 1
|
|
Packit |
67cb25 |
#define MULTIPLICITY 1
|
|
Packit |
67cb25 |
#define FP 1
|
|
Packit |
67cb25 |
#define IN_FORMAT "%Lg"
|
|
Packit |
67cb25 |
#define OUT_FORMAT "%Lg"
|
|
Packit |
67cb25 |
#define ATOMIC_IO ATOMIC
|
|
Packit |
67cb25 |
#define ZERO 0.0L
|
|
Packit |
67cb25 |
#define ONE 1.0L
|
|
Packit |
67cb25 |
#define BASE_EPSILON GSL_DBL_EPSILON
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#elif defined(BASE_DOUBLE)
|
|
Packit |
67cb25 |
#define BASE double
|
|
Packit |
67cb25 |
#define SHORT
|
|
Packit |
67cb25 |
#define ATOMIC double
|
|
Packit |
67cb25 |
#define MULTIPLICITY 1
|
|
Packit |
67cb25 |
#define FP 1
|
|
Packit |
67cb25 |
#define IN_FORMAT "%lg"
|
|
Packit |
67cb25 |
#define OUT_FORMAT "%g"
|
|
Packit |
67cb25 |
#define ATOMIC_IO ATOMIC
|
|
Packit |
67cb25 |
#define ZERO 0.0
|
|
Packit |
67cb25 |
#define ONE 1.0
|
|
Packit |
67cb25 |
#define BASE_EPSILON GSL_DBL_EPSILON
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#elif defined(BASE_FLOAT)
|
|
Packit |
67cb25 |
#define BASE float
|
|
Packit |
67cb25 |
#define SHORT float
|
|
Packit |
67cb25 |
#define ATOMIC float
|
|
Packit |
67cb25 |
#define MULTIPLICITY 1
|
|
Packit |
67cb25 |
#define FP 1
|
|
Packit |
67cb25 |
#define IN_FORMAT "%g"
|
|
Packit |
67cb25 |
#define OUT_FORMAT "%g"
|
|
Packit |
67cb25 |
#define ATOMIC_IO ATOMIC
|
|
Packit |
67cb25 |
#define ZERO 0.0F
|
|
Packit |
67cb25 |
#define ONE 1.0F
|
|
Packit |
67cb25 |
#define BASE_EPSILON GSL_FLT_EPSILON
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#elif defined(BASE_ULONG)
|
|
Packit |
67cb25 |
#define BASE unsigned long
|
|
Packit |
67cb25 |
#define SHORT ulong
|
|
Packit |
67cb25 |
#define ATOMIC unsigned long
|
|
Packit |
67cb25 |
#define MULTIPLICITY 1
|
|
Packit |
67cb25 |
#define IN_FORMAT "%lu"
|
|
Packit |
67cb25 |
#define OUT_FORMAT "%lu"
|
|
Packit |
67cb25 |
#define ATOMIC_IO ATOMIC
|
|
Packit |
67cb25 |
#define ZERO 0UL
|
|
Packit |
67cb25 |
#define ONE 1UL
|
|
Packit |
67cb25 |
#define UNSIGNED 1
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#elif defined(BASE_LONG)
|
|
Packit |
67cb25 |
#define BASE long
|
|
Packit |
67cb25 |
#define SHORT long
|
|
Packit |
67cb25 |
#define ATOMIC long
|
|
Packit |
67cb25 |
#define MULTIPLICITY 1
|
|
Packit |
67cb25 |
#define IN_FORMAT "%ld"
|
|
Packit |
67cb25 |
#define OUT_FORMAT "%ld"
|
|
Packit |
67cb25 |
#define ATOMIC_IO ATOMIC
|
|
Packit |
67cb25 |
#define ZERO 0L
|
|
Packit |
67cb25 |
#define ONE 1L
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#elif defined(BASE_UINT)
|
|
Packit |
67cb25 |
#define BASE unsigned int
|
|
Packit |
67cb25 |
#define SHORT uint
|
|
Packit |
67cb25 |
#define ATOMIC unsigned int
|
|
Packit |
67cb25 |
#define MULTIPLICITY 1
|
|
Packit |
67cb25 |
#define IN_FORMAT "%u"
|
|
Packit |
67cb25 |
#define OUT_FORMAT "%u"
|
|
Packit |
67cb25 |
#define ATOMIC_IO ATOMIC
|
|
Packit |
67cb25 |
#define ZERO 0U
|
|
Packit |
67cb25 |
#define ONE 1U
|
|
Packit |
67cb25 |
#define UNSIGNED 1
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#elif defined(BASE_INT)
|
|
Packit |
67cb25 |
#define BASE int
|
|
Packit |
67cb25 |
#define SHORT int
|
|
Packit |
67cb25 |
#define ATOMIC int
|
|
Packit |
67cb25 |
#define MULTIPLICITY 1
|
|
Packit |
67cb25 |
#define IN_FORMAT "%d"
|
|
Packit |
67cb25 |
#define OUT_FORMAT "%d"
|
|
Packit |
67cb25 |
#define ATOMIC_IO ATOMIC
|
|
Packit |
67cb25 |
#define ZERO 0
|
|
Packit |
67cb25 |
#define ONE 1
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#elif defined(BASE_USHORT)
|
|
Packit |
67cb25 |
#define BASE unsigned short
|
|
Packit |
67cb25 |
#define SHORT ushort
|
|
Packit |
67cb25 |
#define ATOMIC unsigned short
|
|
Packit |
67cb25 |
#define MULTIPLICITY 1
|
|
Packit |
67cb25 |
#define IN_FORMAT "%hu"
|
|
Packit |
67cb25 |
#define OUT_FORMAT "%hu"
|
|
Packit |
67cb25 |
#define ATOMIC_IO ATOMIC
|
|
Packit |
67cb25 |
#define ZERO 0U
|
|
Packit |
67cb25 |
#define ONE 1U
|
|
Packit |
67cb25 |
#define UNSIGNED 1
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#elif defined(BASE_SHORT)
|
|
Packit |
67cb25 |
#define BASE short
|
|
Packit |
67cb25 |
#define SHORT short
|
|
Packit |
67cb25 |
#define ATOMIC short
|
|
Packit |
67cb25 |
#define MULTIPLICITY 1
|
|
Packit |
67cb25 |
#define IN_FORMAT "%hd"
|
|
Packit |
67cb25 |
#define OUT_FORMAT "%hd"
|
|
Packit |
67cb25 |
#define ATOMIC_IO ATOMIC
|
|
Packit |
67cb25 |
#define ZERO 0
|
|
Packit |
67cb25 |
#define ONE 1
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#elif defined(BASE_UCHAR)
|
|
Packit |
67cb25 |
#define BASE unsigned char
|
|
Packit |
67cb25 |
#define SHORT uchar
|
|
Packit |
67cb25 |
#define ATOMIC unsigned char
|
|
Packit |
67cb25 |
#define MULTIPLICITY 1
|
|
Packit |
67cb25 |
#define IN_FORMAT "%u"
|
|
Packit |
67cb25 |
#define OUT_FORMAT "%u"
|
|
Packit |
67cb25 |
#define ATOMIC_IO unsigned int
|
|
Packit |
67cb25 |
#define ZERO 0U
|
|
Packit |
67cb25 |
#define ONE 1U
|
|
Packit |
67cb25 |
#define UNSIGNED 1
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#elif defined(BASE_CHAR)
|
|
Packit |
67cb25 |
#define BASE char
|
|
Packit |
67cb25 |
#define SHORT char
|
|
Packit |
67cb25 |
#define ATOMIC char
|
|
Packit |
67cb25 |
#define MULTIPLICITY 1
|
|
Packit |
67cb25 |
#define IN_FORMAT "%d"
|
|
Packit |
67cb25 |
#define OUT_FORMAT "%d"
|
|
Packit |
67cb25 |
#define ATOMIC_IO int
|
|
Packit |
67cb25 |
#define ZERO 0
|
|
Packit |
67cb25 |
#define ONE 1
|
|
Packit |
67cb25 |
#ifdef __CHAR_UNSIGNED__
|
|
Packit |
67cb25 |
#define UNSIGNED 1
|
|
Packit |
67cb25 |
#endif
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#else
|
|
Packit |
67cb25 |
#error unknown BASE_ directive in source.h
|
|
Packit |
67cb25 |
#endif
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#define CONCAT2x(a,b) a ## _ ## b
|
|
Packit |
67cb25 |
#define CONCAT2(a,b) CONCAT2x(a,b)
|
|
Packit |
67cb25 |
#define CONCAT3x(a,b,c) a ## _ ## b ## _ ## c
|
|
Packit |
67cb25 |
#define CONCAT3(a,b,c) CONCAT3x(a,b,c)
|
|
Packit |
67cb25 |
#define CONCAT4x(a,b,c,d) a ## _ ## b ## _ ## c ## _ ## d
|
|
Packit |
67cb25 |
#define CONCAT4(a,b,c,d) CONCAT4x(a,b,c,d)
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#ifndef USE_QUALIFIER
|
|
Packit |
67cb25 |
#define QUALIFIER
|
|
Packit |
67cb25 |
#endif
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#ifdef USE_QUALIFIER
|
|
Packit |
67cb25 |
#if defined(BASE_DOUBLE)
|
|
Packit |
67cb25 |
#define FUNCTION(dir,name) CONCAT3(dir,QUALIFIER,name)
|
|
Packit |
67cb25 |
#define TYPE(dir) dir
|
|
Packit |
67cb25 |
#define VIEW(dir,name) CONCAT2(dir,name)
|
|
Packit |
67cb25 |
#define QUALIFIED_TYPE(dir) QUALIFIER dir
|
|
Packit |
67cb25 |
#define QUALIFIED_VIEW(dir,name) CONCAT3(dir,QUALIFIER,name)
|
|
Packit |
67cb25 |
#else
|
|
Packit |
67cb25 |
#define FUNCTION(a,c) CONCAT4(a,SHORT,QUALIFIER,c)
|
|
Packit |
67cb25 |
#define TYPE(dir) CONCAT2(dir,SHORT)
|
|
Packit |
67cb25 |
#define VIEW(dir,name) CONCAT3(dir,SHORT,name)
|
|
Packit |
67cb25 |
#define QUALIFIED_TYPE(dir) QUALIFIER CONCAT2(dir,SHORT)
|
|
Packit |
67cb25 |
#define QUALIFIED_VIEW(dir,name) CONCAT4(dir,SHORT,QUALIFIER,name)
|
|
Packit |
67cb25 |
#endif
|
|
Packit |
67cb25 |
#if defined(BASE_GSL_COMPLEX)
|
|
Packit |
67cb25 |
#define REAL_TYPE(dir) dir
|
|
Packit |
67cb25 |
#define REAL_VIEW(dir,name) CONCAT2(dir,name)
|
|
Packit |
67cb25 |
#define QUALIFIED_REAL_TYPE(dir) QUALIFIER dir
|
|
Packit |
67cb25 |
#define QUALIFIED_REAL_VIEW(dir,name) CONCAT3(dir,QUALIFIER,name)
|
|
Packit |
67cb25 |
#else
|
|
Packit |
67cb25 |
#define REAL_TYPE(dir) CONCAT2(dir,SHORT_REAL)
|
|
Packit |
67cb25 |
#define REAL_VIEW(dir,name) CONCAT3(dir,SHORT_REAL,name)
|
|
Packit |
67cb25 |
#define QUALIFIED_REAL_TYPE(dir) QUALIFIER CONCAT2(dir,SHORT_REAL)
|
|
Packit |
67cb25 |
#define QUALIFIED_REAL_VIEW(dir,name) CONCAT4(dir,SHORT_REAL,QUALIFIER,name)
|
|
Packit |
67cb25 |
#endif
|
|
Packit |
67cb25 |
#else
|
|
Packit |
67cb25 |
#if defined(BASE_DOUBLE)
|
|
Packit |
67cb25 |
#define FUNCTION(dir,name) CONCAT2(dir,name)
|
|
Packit |
67cb25 |
#define TYPE(dir) dir
|
|
Packit |
67cb25 |
#define VIEW(dir,name) CONCAT2(dir,name)
|
|
Packit |
67cb25 |
#define QUALIFIED_TYPE(dir) TYPE(dir)
|
|
Packit |
67cb25 |
#define QUALIFIED_VIEW(dir,name) CONCAT2(dir,name)
|
|
Packit |
67cb25 |
#else
|
|
Packit |
67cb25 |
#define FUNCTION(a,c) CONCAT3(a,SHORT,c)
|
|
Packit |
67cb25 |
#define TYPE(dir) CONCAT2(dir,SHORT)
|
|
Packit |
67cb25 |
#define VIEW(dir,name) CONCAT3(dir,SHORT,name)
|
|
Packit |
67cb25 |
#define QUALIFIED_TYPE(dir) TYPE(dir)
|
|
Packit |
67cb25 |
#define QUALIFIED_VIEW(dir,name) CONCAT3(dir,SHORT,name)
|
|
Packit |
67cb25 |
#endif
|
|
Packit |
67cb25 |
#if defined(BASE_GSL_COMPLEX)
|
|
Packit |
67cb25 |
#define REAL_TYPE(dir) dir
|
|
Packit |
67cb25 |
#define REAL_VIEW(dir,name) CONCAT2(dir,name)
|
|
Packit |
67cb25 |
#define QUALIFIED_REAL_TYPE(dir) dir
|
|
Packit |
67cb25 |
#define QUALIFIED_REAL_VIEW(dir,name) CONCAT2(dir,name)
|
|
Packit |
67cb25 |
#else
|
|
Packit |
67cb25 |
#define REAL_TYPE(dir) CONCAT2(dir,SHORT_REAL)
|
|
Packit |
67cb25 |
#define REAL_VIEW(dir,name) CONCAT3(dir,SHORT_REAL,name)
|
|
Packit |
67cb25 |
#define QUALIFIED_REAL_TYPE(dir) CONCAT2(dir,SHORT_REAL)
|
|
Packit |
67cb25 |
#define QUALIFIED_REAL_VIEW(dir,name) CONCAT3(dir,SHORT_REAL,name)
|
|
Packit |
67cb25 |
#endif
|
|
Packit |
67cb25 |
#endif
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#define STRING(x) #x
|
|
Packit |
67cb25 |
#define EXPAND(x) STRING(x)
|
|
Packit |
67cb25 |
#define NAME(x) EXPAND(TYPE(x))
|