Mercurial > repos > yating-l > jbrowsearchivecreator
annotate test/include/python2.7/pymath.h @ 3:7d1a9a91b989 draft
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
| author | yating-l |
|---|---|
| date | Thu, 18 May 2017 18:37:28 -0400 |
| parents | |
| children |
| rev | line source |
|---|---|
|
3
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
1 #ifndef Py_PYMATH_H |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
2 #define Py_PYMATH_H |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
3 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
4 #include "pyconfig.h" /* include for defines */ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
5 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
6 /************************************************************************** |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
7 Symbols and macros to supply platform-independent interfaces to mathematical |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
8 functions and constants |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
9 **************************************************************************/ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
10 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
11 /* Python provides implementations for copysign, round and hypot in |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
12 * Python/pymath.c just in case your math library doesn't provide the |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
13 * functions. |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
14 * |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
15 *Note: PC/pyconfig.h defines copysign as _copysign |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
16 */ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
17 #ifndef HAVE_COPYSIGN |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
18 extern double copysign(double, double); |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
19 #endif |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
20 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
21 #ifndef HAVE_ROUND |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
22 extern double round(double); |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
23 #endif |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
24 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
25 #ifndef HAVE_HYPOT |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
26 extern double hypot(double, double); |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
27 #endif |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
28 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
29 /* extra declarations */ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
30 #ifndef _MSC_VER |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
31 #ifndef __STDC__ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
32 extern double fmod (double, double); |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
33 extern double frexp (double, int *); |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
34 extern double ldexp (double, int); |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
35 extern double modf (double, double *); |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
36 extern double pow(double, double); |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
37 #endif /* __STDC__ */ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
38 #endif /* _MSC_VER */ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
39 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
40 #ifdef _OSF_SOURCE |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
41 /* OSF1 5.1 doesn't make these available with XOPEN_SOURCE_EXTENDED defined */ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
42 extern int finite(double); |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
43 extern double copysign(double, double); |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
44 #endif |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
45 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
46 /* High precision defintion of pi and e (Euler) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
47 * The values are taken from libc6's math.h. |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
48 */ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
49 #ifndef Py_MATH_PIl |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
50 #define Py_MATH_PIl 3.1415926535897932384626433832795029L |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
51 #endif |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
52 #ifndef Py_MATH_PI |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
53 #define Py_MATH_PI 3.14159265358979323846 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
54 #endif |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
55 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
56 #ifndef Py_MATH_El |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
57 #define Py_MATH_El 2.7182818284590452353602874713526625L |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
58 #endif |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
59 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
60 #ifndef Py_MATH_E |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
61 #define Py_MATH_E 2.7182818284590452354 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
62 #endif |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
63 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
64 /* On x86, Py_FORCE_DOUBLE forces a floating-point number out of an x87 FPU |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
65 register and into a 64-bit memory location, rounding from extended |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
66 precision to double precision in the process. On other platforms it does |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
67 nothing. */ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
68 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
69 /* we take double rounding as evidence of x87 usage */ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
70 #ifndef Py_FORCE_DOUBLE |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
71 # ifdef X87_DOUBLE_ROUNDING |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
72 PyAPI_FUNC(double) _Py_force_double(double); |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
73 # define Py_FORCE_DOUBLE(X) (_Py_force_double(X)) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
74 # else |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
75 # define Py_FORCE_DOUBLE(X) (X) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
76 # endif |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
77 #endif |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
78 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
79 #ifdef HAVE_GCC_ASM_FOR_X87 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
80 PyAPI_FUNC(unsigned short) _Py_get_387controlword(void); |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
81 PyAPI_FUNC(void) _Py_set_387controlword(unsigned short); |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
82 #endif |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
83 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
84 /* Py_IS_NAN(X) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
85 * Return 1 if float or double arg is a NaN, else 0. |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
86 * Caution: |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
87 * X is evaluated more than once. |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
88 * This may not work on all platforms. Each platform has *some* |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
89 * way to spell this, though -- override in pyconfig.h if you have |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
90 * a platform where it doesn't work. |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
91 * Note: PC/pyconfig.h defines Py_IS_NAN as _isnan |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
92 */ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
93 #ifndef Py_IS_NAN |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
94 #if defined HAVE_DECL_ISNAN && HAVE_DECL_ISNAN == 1 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
95 #define Py_IS_NAN(X) isnan(X) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
96 #else |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
97 #define Py_IS_NAN(X) ((X) != (X)) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
98 #endif |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
99 #endif |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
100 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
101 /* Py_IS_INFINITY(X) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
102 * Return 1 if float or double arg is an infinity, else 0. |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
103 * Caution: |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
104 * X is evaluated more than once. |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
105 * This implementation may set the underflow flag if |X| is very small; |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
106 * it really can't be implemented correctly (& easily) before C99. |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
107 * Override in pyconfig.h if you have a better spelling on your platform. |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
108 * Py_FORCE_DOUBLE is used to avoid getting false negatives from a |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
109 * non-infinite value v sitting in an 80-bit x87 register such that |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
110 * v becomes infinite when spilled from the register to 64-bit memory. |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
111 * Note: PC/pyconfig.h defines Py_IS_INFINITY as _isinf |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
112 */ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
113 #ifndef Py_IS_INFINITY |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
114 # if defined HAVE_DECL_ISINF && HAVE_DECL_ISINF == 1 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
115 # define Py_IS_INFINITY(X) isinf(X) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
116 # else |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
117 # define Py_IS_INFINITY(X) ((X) && \ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
118 (Py_FORCE_DOUBLE(X)*0.5 == Py_FORCE_DOUBLE(X))) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
119 # endif |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
120 #endif |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
121 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
122 /* Py_IS_FINITE(X) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
123 * Return 1 if float or double arg is neither infinite nor NAN, else 0. |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
124 * Some compilers (e.g. VisualStudio) have intrisics for this, so a special |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
125 * macro for this particular test is useful |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
126 * Note: PC/pyconfig.h defines Py_IS_FINITE as _finite |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
127 */ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
128 #ifndef Py_IS_FINITE |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
129 #if defined HAVE_DECL_ISFINITE && HAVE_DECL_ISFINITE == 1 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
130 #define Py_IS_FINITE(X) isfinite(X) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
131 #elif defined HAVE_FINITE |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
132 #define Py_IS_FINITE(X) finite(X) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
133 #else |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
134 #define Py_IS_FINITE(X) (!Py_IS_INFINITY(X) && !Py_IS_NAN(X)) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
135 #endif |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
136 #endif |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
137 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
138 /* HUGE_VAL is supposed to expand to a positive double infinity. Python |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
139 * uses Py_HUGE_VAL instead because some platforms are broken in this |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
140 * respect. We used to embed code in pyport.h to try to worm around that, |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
141 * but different platforms are broken in conflicting ways. If you're on |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
142 * a platform where HUGE_VAL is defined incorrectly, fiddle your Python |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
143 * config to #define Py_HUGE_VAL to something that works on your platform. |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
144 */ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
145 #ifndef Py_HUGE_VAL |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
146 #define Py_HUGE_VAL HUGE_VAL |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
147 #endif |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
148 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
149 /* Py_NAN |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
150 * A value that evaluates to a NaN. On IEEE 754 platforms INF*0 or |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
151 * INF/INF works. Define Py_NO_NAN in pyconfig.h if your platform |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
152 * doesn't support NaNs. |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
153 */ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
154 #if !defined(Py_NAN) && !defined(Py_NO_NAN) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
155 #if !defined(__INTEL_COMPILER) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
156 #define Py_NAN (Py_HUGE_VAL * 0.) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
157 #else /* __INTEL_COMPILER */ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
158 #if defined(ICC_NAN_STRICT) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
159 #pragma float_control(push) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
160 #pragma float_control(precise, on) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
161 #pragma float_control(except, on) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
162 #if defined(_MSC_VER) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
163 __declspec(noinline) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
164 #else /* Linux */ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
165 __attribute__((noinline)) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
166 #endif /* _MSC_VER */ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
167 static double __icc_nan() |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
168 { |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
169 return sqrt(-1.0); |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
170 } |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
171 #pragma float_control (pop) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
172 #define Py_NAN __icc_nan() |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
173 #else /* ICC_NAN_RELAXED as default for Intel Compiler */ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
174 static union { unsigned char buf[8]; double __icc_nan; } __nan_store = {0,0,0,0,0,0,0xf8,0x7f}; |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
175 #define Py_NAN (__nan_store.__icc_nan) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
176 #endif /* ICC_NAN_STRICT */ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
177 #endif /* __INTEL_COMPILER */ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
178 #endif |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
179 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
180 /* Py_OVERFLOWED(X) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
181 * Return 1 iff a libm function overflowed. Set errno to 0 before calling |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
182 * a libm function, and invoke this macro after, passing the function |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
183 * result. |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
184 * Caution: |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
185 * This isn't reliable. C99 no longer requires libm to set errno under |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
186 * any exceptional condition, but does require +- HUGE_VAL return |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
187 * values on overflow. A 754 box *probably* maps HUGE_VAL to a |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
188 * double infinity, and we're cool if that's so, unless the input |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
189 * was an infinity and an infinity is the expected result. A C89 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
190 * system sets errno to ERANGE, so we check for that too. We're |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
191 * out of luck if a C99 754 box doesn't map HUGE_VAL to +Inf, or |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
192 * if the returned result is a NaN, or if a C89 box returns HUGE_VAL |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
193 * in non-overflow cases. |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
194 * X is evaluated more than once. |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
195 * Some platforms have better way to spell this, so expect some #ifdef'ery. |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
196 * |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
197 * OpenBSD uses 'isinf()' because a compiler bug on that platform causes |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
198 * the longer macro version to be mis-compiled. This isn't optimal, and |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
199 * should be removed once a newer compiler is available on that platform. |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
200 * The system that had the failure was running OpenBSD 3.2 on Intel, with |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
201 * gcc 2.95.3. |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
202 * |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
203 * According to Tim's checkin, the FreeBSD systems use isinf() to work |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
204 * around a FPE bug on that platform. |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
205 */ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
206 #if defined(__FreeBSD__) || defined(__OpenBSD__) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
207 #define Py_OVERFLOWED(X) isinf(X) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
208 #else |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
209 #define Py_OVERFLOWED(X) ((X) != 0.0 && (errno == ERANGE || \ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
210 (X) == Py_HUGE_VAL || \ |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
211 (X) == -Py_HUGE_VAL)) |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
212 #endif |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
213 |
|
7d1a9a91b989
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff
changeset
|
214 #endif /* Py_PYMATH_H */ |
