diff options
Diffstat (limited to 'ao-tools/lib/cmath.h')
| -rw-r--r-- | ao-tools/lib/cmath.h | 179 | 
1 files changed, 179 insertions, 0 deletions
diff --git a/ao-tools/lib/cmath.h b/ao-tools/lib/cmath.h new file mode 100644 index 00000000..2751aecf --- /dev/null +++ b/ao-tools/lib/cmath.h @@ -0,0 +1,179 @@ +/* + * Grace - GRaphing, Advanced Computation and Exploration of data + * + * Home page: http://plasma-gate.weizmann.ac.il/Grace/ + * + * Copyright (c) 1991-1995 Paul J Turner, Portland, OR + * Copyright (c) 1996-2000 Grace Development Team + * + * Maintained by Evgeny Stambulchik <fnevgeny@plasma-gate.weizmann.ac.il> + * + * + *                           All Rights Reserved + * + *    This program is free software; you can redistribute it and/or modify + *    it under the terms of the GNU General Public License as published by + *    the Free Software Foundation; either version 2 of the License, or + *    (at your option) any later version. + * + *    This program is distributed in the hope that it will be useful, + *    but WITHOUT ANY WARRANTY; without even the implied warranty of + *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + *    GNU General Public License for more details. + * + *    You should have received a copy of the GNU General Public License + *    along with this program; if not, write to the Free Software + *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* cmath.h - replacement for math.h or missing in libm functions */ + +#if defined(HAVE_MATH_H) +#  include <math.h> +#endif +#if defined(HAVE_FLOAT_H) +#  include <float.h> +#endif +#if defined(HAVE_IEEEFP_H) +#  include <ieeefp.h> +#endif + +#ifndef __GRACE_SOURCE_ + +#ifndef MACHEP +extern double MACHEP; +#endif + +#ifndef UFLOWTHRESH +extern double UFLOWTHRESH; +#endif + +#ifndef MAXNUM +extern double MAXNUM; +#endif + +#endif /* __GRACE_SOURCE_ */ + +#ifndef M_PI +#  define M_PI  3.14159265358979323846 +#endif + +#ifndef M_SQRT2 +#  define M_SQRT2     1.41421356237309504880      /* sqrt(2) */ +#endif + +#ifndef M_SQRT1_2 +#  define M_SQRT1_2   0.70710678118654752440      /* 1/sqrt(2) */ +#endif + +#ifndef M_SQRT1_3 +#  define M_SQRT1_3   0.57735026918962576451      /* 1/sqrt(3) */ +#endif + +#ifndef HAVE_HYPOT +#  define hypot(x, y) sqrt((x)*(x) + (y)*(y)) +#endif + +extern double round ( double x ); +#ifndef HAVE_RINT +#  define rint round +#else +#  ifndef HAVE_RINT_DECL +extern double rint ( double x ); +#  endif +#endif + +#ifndef HAVE_CBRT_DECL +extern double cbrt ( double x ); +#endif + +/* Cygnus gnuwin32 has the log2 macro */ +#ifdef log2 +#  undef log2 +#endif + +#ifndef HAVE_LOG2_DECL +extern double log2 ( double x ); +#endif + +#ifndef HAVE_LGAMMA +extern int sgngam; +#  define lgamma lgam +#  define signgam sgngam +extern double lgam ( double x ); +#else +#  ifndef HAVE_LGAMMA_DECL +extern double lgamma ( double x ); +#  endif +#  ifndef HAVE_SIGNGAM_DECL +extern int signgam; +#  endif +#  define lgam lgamma +#  define sgngam signgam +#endif + +#ifndef HAVE_ACOSH_DECL +extern double acosh ( double x ); +#endif + +#ifndef HAVE_ASINH_DECL +extern double asinh ( double x ); +#endif + +#ifndef HAVE_ATANH_DECL +extern double atanh ( double x ); +#endif + +#ifndef HAVE_ERF_DECL +extern double erf ( double x ); +#endif + +#ifndef HAVE_ERFC_DECL +extern double erfc ( double x ); +#endif + +#ifndef HAVE_Y0_DECL +extern double y0 ( double x ); +#endif +#ifndef HAVE_Y1_DECL +extern double y1 ( double x ); +#endif +#ifndef HAVE_YN_DECL +extern double yn ( int n, double x ); +#endif +#ifndef HAVE_J0_DECL +extern double j0 ( double x ); +#endif +#ifndef HAVE_J1_DECL +extern double j1 ( double x ); +#endif +#ifndef HAVE_JN_DECL +extern double jn ( int n, double x ); +#endif + +/* isfinite is a macro */ +#ifdef isfinite +#  define HAVE_ISFINITE_MACRO +#endif + +#ifndef HAVE_FINITE +#  define finite isfinite +#  if !defined(HAVE_ISFINITE_DECL) && !defined(HAVE_ISFINITE_MACRO) +extern int isfinite ( double x ); +#  endif +#else +#  ifndef HAVE_FINITE_DECL +extern int finite ( double x ); +#  endif +#endif + +#ifndef HAVE_ISNAN_DECL +#ifdef __FreeBSD__ +#  include <sys/param.h> +#  if __FreeBSD_version < 500100 +extern int isnan ( double x ); +#  endif +#endif +#else +extern int isnan ( double x ); +#endif  | 
