diff options
| author | ziejd2 | 2017-09-14 15:39:41 -0500 |
|---|---|---|
| committer | ziejd2 | 2017-09-14 15:57:50 -0500 |
| commit | c4f926438dcb8abe805e910399940f79ff643c4b (patch) | |
| tree | 3146d05ada5cf4b48d9bdd16c1baa498e8df7192 /sourcecodes/localscore/Arith.h | |
| parent | 57ebf49403b75dcf8482d174b59f7fd2a961d98e (diff) | |
| download | BNW-c4f926438dcb8abe805e910399940f79ff643c4b.tar.gz | |
Add files via upload
Diffstat (limited to 'sourcecodes/localscore/Arith.h')
| -rw-r--r-- | sourcecodes/localscore/Arith.h | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/sourcecodes/localscore/Arith.h b/sourcecodes/localscore/Arith.h new file mode 100644 index 00000000..4a0030f1 --- /dev/null +++ b/sourcecodes/localscore/Arith.h @@ -0,0 +1,87 @@ +/* + * R : A Computer Language for Statistical Data Analysis + * Copyright (C) 1995, 1996 Robert Gentleman and Ross Ihaka + * Copyright (C) 1998--2007 The R Core Team. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, a copy is available at + * http://www.r-project.org/Licenses/ + */ + +/* Included by R.h: API */ + +#ifndef R_ARITH_H_ +#define R_ARITH_H_ + +/* Only for use where config.h has not already been included */ +#if defined(HAVE_GLIBC2) && !defined(_BSD_SOURCE) +/* ensure that finite and isnan are declared */ +# define _BSD_SOURCE 1 +#endif + +#include "libextern.h" +#ifdef __cplusplus +extern "C" { +#elif !defined(NO_C_HEADERS) +/* needed for isnan and isfinite, neither of which are used under C++ */ +# include <math.h> +#endif + +/* implementation of these : ../../main/arithmetic.c */ +LibExtern double R_NaN; /* IEEE NaN */ +LibExtern double R_PosInf; /* IEEE Inf */ +LibExtern double R_NegInf; /* IEEE -Inf */ +LibExtern double R_NaReal; /* NA_REAL: IEEE */ +LibExtern int R_NaInt; /* NA_INTEGER:= INT_MIN currently */ +#ifdef __MAIN__ +#undef extern +#undef LibExtern +#endif + +#define NA_LOGICAL R_NaInt +#define NA_INTEGER R_NaInt +/* #define NA_FACTOR R_NaInt unused */ +#define NA_REAL R_NaReal +/* NA_STRING is a SEXP, so defined in Rinternals.h */ + +int R_IsNA(double); /* True for R's NA only */ +int R_IsNaN(double); /* True for special NaN, *not* for NA */ +int R_finite(double); /* True if none of NA, NaN, +/-Inf */ +#define ISNA(x) R_IsNA(x) + +/* ISNAN(): True for *both* NA and NaN. + NOTE: some systems do not return 1 for TRUE. + Also note that C++ math headers specifically undefine + isnan if it is a macro (it is on OS X and in C99), + hence the workaround. This code also appears in Rmath.h +*/ +#ifdef __cplusplus + int R_isnancpp(double); /* in arithmetic.c */ +# define ISNAN(x) R_isnancpp(x) +#else +# define ISNAN(x) (isnan(x)!=0) +#endif + +/* The following is only defined inside R */ +#ifdef HAVE_WORKING_ISFINITE +/* isfinite is defined in <math.h> according to C99 */ +# define R_FINITE(x) isfinite(x) +#else +# define R_FINITE(x) R_finite(x) +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* R_ARITH_H_ */ |
