Blame templates_on.h

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))