/* Define to empty if the keyword `volatile' does not work. Warning: valid
   code using `volatile' can become incorrect without. Disable with care. */
#undef volatile

/* Use 0 and 1 for EXIT_SUCCESS and EXIT_FAILURE if we don't have them */
#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1

/* Define this if printf can handle %Lf for long double */
#undef HAVE_PRINTF_LONGDOUBLE

/* Define one of these if you have a known IEEE arithmetic interface */
#undef HAVE_GNUSPARC_IEEE_INTERFACE
#undef HAVE_GNUM68K_IEEE_INTERFACE
#undef HAVE_GNUPPC_IEEE_INTERFACE
#undef HAVE_GNUX86_IEEE_INTERFACE
#undef HAVE_SUNOS4_IEEE_INTERFACE
#undef HAVE_SOLARIS_IEEE_INTERFACE
#undef HAVE_HPUX11_IEEE_INTERFACE
#undef HAVE_HPUX_IEEE_INTERFACE
#undef HAVE_TRU64_IEEE_INTERFACE
#undef HAVE_IRIX_IEEE_INTERFACE
#undef HAVE_AIX_IEEE_INTERFACE
#undef HAVE_FREEBSD_IEEE_INTERFACE
#undef HAVE_OS2EMX_IEEE_INTERFACE
#undef HAVE_NETBSD_IEEE_INTERFACE
#undef HAVE_OPENBSD_IEEE_INTERFACE
#undef HAVE_DARWIN_IEEE_INTERFACE

/* Define this is IEEE comparisons work correctly (e.g. NaN != NaN) */
#undef HAVE_IEEE_COMPARISONS

/* Define this is IEEE denormalized numbers are available */
#undef HAVE_IEEE_DENORMALS

/* Define a rounding function which moves extended precision values
   out of registers and rounds them to double-precision. This should
   be used *sparingly*, in places where it is necessary to keep
   double-precision rounding for critical expressions while running in
   extended precision. For example, the following code should ensure
   exact equality, even when extended precision registers are in use,

      double q = GSL_COERCE_DBL(3.0/7.0) ;
      if (q == GSL_COERCE_DBL(3.0/7.0)) { ... } ;

   It carries a penalty even when the program is running in double
   precision mode unless you compile a separate version of the
   library with HAVE_EXTENDED_PRECISION_REGISTERS turned off. */

#undef HAVE_EXTENDED_PRECISION_REGISTERS

#ifdef HAVE_EXTENDED_PRECISION_REGISTERS
#define GSL_COERCE_DBL(x) (gsl_coerce_double(x))
#else
#define GSL_COERCE_DBL(x) (x)
#endif

/* Substitute gsl functions for missing system functions */

#ifndef HAVE_DECL_HYPOT
#define hypot gsl_hypot
#endif

#ifndef HAVE_DECL_LOG1P
#define log1p gsl_log1p
#endif

#ifndef HAVE_DECL_EXPM1
#define expm1 gsl_expm1
#endif

//#ifndef HAVE_DECL_ACOSH
#define acosh gsl_acosh
//#endif

#ifndef HAVE_DECL_ASINH
#define asinh gsl_asinh
#endif

#ifndef HAVE_DECL_ATANH
#define atanh gsl_atanh
#endif

#ifndef HAVE_DECL_LDEXP
#define ldexp gsl_ldexp
#endif

#ifndef HAVE_DECL_FREXP
#define frexp gsl_frexp
#endif

#ifndef HAVE_DECL_ISINF
#define isinf gsl_isinf
#endif

#ifndef HAVE_DECL_FINITE
#ifdef HAVE_DECL_ISFINITE
#define finite isfinite
#else
#define finite gsl_finite
#endif
#endif

#ifndef HAVE_DECL_ISNAN
#define isnan gsl_isnan
#endif

#ifdef __GNUC__
#define DISCARD_POINTER(p) do { ; } while(p ? 0 : 0);
#else
#define DISCARD_POINTER(p) /* ignoring discarded pointer */
#endif

#define GSL_RANGE_CHECK 0  /* turn off range checking by default */

#ifndef _SIZE_T
#define _SIZE_T
typedef unsigned long size_t;
#endif
#define INT_MAX		0x7fffffff
#define INT_MIN		(-INT_MAX-1)
