diff --git a/configure.in b/configure.in index 9820716eb..774c1e990 100644 --- a/configure.in +++ b/configure.in @@ -596,7 +596,17 @@ AC_CHECK_LIB(m, sqrt) AC_CHECK_HEADERS(float.h limits.h values.h ieeefp.h) dnl Check for a few mathematical functions: -AC_CHECK_FUNCS(erfc logb scalb scalbn asinh acosh atanh isnan) +AC_CHECK_FUNCS(erfc logb scalb scalbn asinh acosh atanh finite) +dnl According POSIX we should look for macros first +AC_CHECK_DECLS([isinf], [], [], [[#include ]]) +AC_CHECK_DECLS([isnan], [], [], [[#include ]]) +dnl But may be we have still functions +if test "$ac_cv_have_decl_isinf" != yes; then + AC_CHECK_FUNC(isinf) +fi +if test "$ac_cv_have_decl_isnan" != yes; then + AC_CHECK_FUNC(isnan) +fi dnl Check for the random function: AC_CHECK_FUNCS(random,,AC_CHECK_LIB(iberty,random,AC_DEFINE([HAVE_RANDOM],1,[Have random in libiberty]) LIBS="$LIBS -liberty")) @@ -846,10 +856,10 @@ if test "$enable_adms" = "yes"; then fi AC_DEFINE(ADMS,[1],[Support for Verilog-A(MS) models]) - VLADEVDIR=" adms/hicum0 \ + VLADEVDIR=" adms/ekv \ + adms/hicum0 \ adms/hicum2 \ adms/mextram \ - adms/ekv \ adms/psp102 " VLAMKF=" src/spicelib/devices/adms/ekv/Makefile \ @@ -860,10 +870,10 @@ if test "$enable_adms" = "yes"; then NOTVLADEVDIR="" - VLADEV=" spicelib/devices/adms/hicum0/libhicum0.la \ + VLADEV=" spicelib/devices/adms/ekv/libekv.la \ + spicelib/devices/adms/hicum0/libhicum0.la \ spicelib/devices/adms/hicum2/libhicum2.la \ spicelib/devices/adms/mextram/libmextram.la \ - spicelib/devices/adms/ekv/libekv.la \ spicelib/devices/adms/psp102/libpsp102.la " else diff --git a/src/include/missing_math.h b/src/include/missing_math.h index cfa9ed42f..4cfbf393f 100644 --- a/src/include/missing_math.h +++ b/src/include/missing_math.h @@ -26,8 +26,20 @@ extern double scalb(double, double); extern double scalbn(double, int); #endif +#ifndef HAVE_DECL_ISNAN #ifndef HAVE_ISNAN extern int isnan(double); #endif +#endif + +#ifndef HAVE_DECL_ISINF +# ifndef HAVE_ISINF +# if defined(HAVE_FINITE) && (defined (HAVE_DECL_ISNAN) || defined (HAVE_ISNAN)) +# define isinf(x) (!finite(x) && !isnan(x)) +# endif +# else +extern int isinf(double); +# endif +#endif #endif /* MISSING_MATH_H_INCLUDED */ diff --git a/src/maths/misc/isnan.c b/src/maths/misc/isnan.c index 87e0ad110..8e36e7b2c 100644 --- a/src/maths/misc/isnan.c +++ b/src/maths/misc/isnan.c @@ -1,9 +1,6 @@ -/********** -Copyright 1991 Regents of the University of California. All rights reserved. -**********/ - #include "ngspice.h" +#ifndef HAVE_DECL_ISNAN #ifndef HAVE_ISNAN /* isnan (originally) for SOI devices in MINGW32 hvogt (dev.c) */ @@ -51,3 +48,4 @@ isnan(double value) #else /* HAVE_ISNAN */ int Dummy_Symbol_4; #endif /* HAVE_ISNAN */ +#endif /* HAVE_DECL_ISNAN */