__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
#ifndef Py_PYMATH_H
#define Py_PYMATH_H
#include "pyconfig.h" /* include for defines */
/**************************************************************************
Symbols and macros to supply platform-independent interfaces to mathematical
functions and constants
**************************************************************************/
/* Python provides implementations for copysign, round and hypot in
* Python/pymath.c just in case your math library doesn't provide the
* functions.
*
*Note: PC/pyconfig.h defines copysign as _copysign
*/
#ifndef HAVE_COPYSIGN
extern double copysign(double, double);
#endif
#ifndef HAVE_ROUND
extern double round(double);
#endif
#ifndef HAVE_HYPOT
extern double hypot(double, double);
#endif
/* extra declarations */
#ifndef _MSC_VER
#ifndef __STDC__
extern double fmod (double, double);
extern double frexp (double, int *);
extern double ldexp (double, int);
extern double modf (double, double *);
extern double pow(double, double);
#endif /* __STDC__ */
#endif /* _MSC_VER */
#ifdef _OSF_SOURCE
/* OSF1 5.1 doesn't make these available with XOPEN_SOURCE_EXTENDED defined */
extern int finite(double);
extern double copysign(double, double);
#endif
/* High precision defintion of pi and e (Euler)
* The values are taken from libc6's math.h.
*/
#ifndef Py_MATH_PIl
#define Py_MATH_PIl 3.1415926535897932384626433832795029L
#endif
#ifndef Py_MATH_PI
#define Py_MATH_PI 3.14159265358979323846
#endif
#ifndef Py_MATH_El
#define Py_MATH_El 2.7182818284590452353602874713526625L
#endif
#ifndef Py_MATH_E
#define Py_MATH_E 2.7182818284590452354
#endif
/* On x86, Py_FORCE_DOUBLE forces a floating-point number out of an x87 FPU
register and into a 64-bit memory location, rounding from extended
precision to double precision in the process. On other platforms it does
nothing. */
/* we take double rounding as evidence of x87 usage */
#ifndef Py_FORCE_DOUBLE
# ifdef X87_DOUBLE_ROUNDING
PyAPI_FUNC(double) _Py_force_double(double);
# define Py_FORCE_DOUBLE(X) (_Py_force_double(X))
# else
# define Py_FORCE_DOUBLE(X) (X)
# endif
#endif
#ifdef HAVE_GCC_ASM_FOR_X87
PyAPI_FUNC(unsigned short) _Py_get_387controlword(void);
PyAPI_FUNC(void) _Py_set_387controlword(unsigned short);
#endif
/* Py_IS_NAN(X)
* Return 1 if float or double arg is a NaN, else 0.
* Caution:
* X is evaluated more than once.
* This may not work on all platforms. Each platform has *some*
* way to spell this, though -- override in pyconfig.h if you have
* a platform where it doesn't work.
* Note: PC/pyconfig.h defines Py_IS_NAN as _isnan
*/
#ifndef Py_IS_NAN
#if defined HAVE_DECL_ISNAN && HAVE_DECL_ISNAN == 1
#define Py_IS_NAN(X) isnan(X)
#else
#define Py_IS_NAN(X) ((X) != (X))
#endif
#endif
/* Py_IS_INFINITY(X)
* Return 1 if float or double arg is an infinity, else 0.
* Caution:
* X is evaluated more than once.
* This implementation may set the underflow flag if |X| is very small;
* it really can't be implemented correctly (& easily) before C99.
* Override in pyconfig.h if you have a better spelling on your platform.
* Py_FORCE_DOUBLE is used to avoid getting false negatives from a
* non-infinite value v sitting in an 80-bit x87 register such that
* v becomes infinite when spilled from the register to 64-bit memory.
* Note: PC/pyconfig.h defines Py_IS_INFINITY as _isinf
*/
#ifndef Py_IS_INFINITY
# if defined HAVE_DECL_ISINF && HAVE_DECL_ISINF == 1
# define Py_IS_INFINITY(X) isinf(X)
# else
# define Py_IS_INFINITY(X) ((X) && \
(Py_FORCE_DOUBLE(X)*0.5 == Py_FORCE_DOUBLE(X)))
# endif
#endif
/* Py_IS_FINITE(X)
* Return 1 if float or double arg is neither infinite nor NAN, else 0.
* Some compilers (e.g. VisualStudio) have intrisics for this, so a special
* macro for this particular test is useful
* Note: PC/pyconfig.h defines Py_IS_FINITE as _finite
*/
#ifndef Py_IS_FINITE
#if defined HAVE_DECL_ISFINITE && HAVE_DECL_ISFINITE == 1
#define Py_IS_FINITE(X) isfinite(X)
#elif defined HAVE_FINITE
#define Py_IS_FINITE(X) finite(X)
#else
#define Py_IS_FINITE(X) (!Py_IS_INFINITY(X) && !Py_IS_NAN(X))
#endif
#endif
/* HUGE_VAL is supposed to expand to a positive double infinity. Python
* uses Py_HUGE_VAL instead because some platforms are broken in this
* respect. We used to embed code in pyport.h to try to worm around that,
* but different platforms are broken in conflicting ways. If you're on
* a platform where HUGE_VAL is defined incorrectly, fiddle your Python
* config to #define Py_HUGE_VAL to something that works on your platform.
*/
#ifndef Py_HUGE_VAL
#define Py_HUGE_VAL HUGE_VAL
#endif
/* Py_NAN
* A value that evaluates to a NaN. On IEEE 754 platforms INF*0 or
* INF/INF works. Define Py_NO_NAN in pyconfig.h if your platform
* doesn't support NaNs.
*/
#if !defined(Py_NAN) && !defined(Py_NO_NAN)
#define Py_NAN (Py_HUGE_VAL * 0.)
#endif
/* Py_OVERFLOWED(X)
* Return 1 iff a libm function overflowed. Set errno to 0 before calling
* a libm function, and invoke this macro after, passing the function
* result.
* Caution:
* This isn't reliable. C99 no longer requires libm to set errno under
* any exceptional condition, but does require +- HUGE_VAL return
* values on overflow. A 754 box *probably* maps HUGE_VAL to a
* double infinity, and we're cool if that's so, unless the input
* was an infinity and an infinity is the expected result. A C89
* system sets errno to ERANGE, so we check for that too. We're
* out of luck if a C99 754 box doesn't map HUGE_VAL to +Inf, or
* if the returned result is a NaN, or if a C89 box returns HUGE_VAL
* in non-overflow cases.
* X is evaluated more than once.
* Some platforms have better way to spell this, so expect some #ifdef'ery.
*
* OpenBSD uses 'isinf()' because a compiler bug on that platform causes
* the longer macro version to be mis-compiled. This isn't optimal, and
* should be removed once a newer compiler is available on that platform.
* The system that had the failure was running OpenBSD 3.2 on Intel, with
* gcc 2.95.3.
*
* According to Tim's checkin, the FreeBSD systems use isinf() to work
* around a FPE bug on that platform.
*/
#if defined(__FreeBSD__) || defined(__OpenBSD__)
#define Py_OVERFLOWED(X) isinf(X)
#else
#define Py_OVERFLOWED(X) ((X) != 0.0 && (errno == ERANGE || \
(X) == Py_HUGE_VAL || \
(X) == -Py_HUGE_VAL))
#endif
#endif /* Py_PYMATH_H */
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| Python-ast.h | File | 20.62 KB | 0644 |
|
| Python.h | File | 4.23 KB | 0644 |
|
| abstract.h | File | 43.96 KB | 0644 |
|
| asdl.h | File | 1.07 KB | 0644 |
|
| ast.h | File | 230 B | 0644 |
|
| bitset.h | File | 792 B | 0644 |
|
| boolobject.h | File | 912 B | 0644 |
|
| bufferobject.h | File | 922 B | 0644 |
|
| bytearrayobject.h | File | 1.9 KB | 0644 |
|
| bytes_methods.h | File | 2.74 KB | 0644 |
|
| bytesobject.h | File | 1.13 KB | 0644 |
|
| cStringIO.h | File | 1.96 KB | 0644 |
|
| cellobject.h | File | 651 B | 0644 |
|
| ceval.h | File | 4.87 KB | 0644 |
|
| classobject.h | File | 2.93 KB | 0644 |
|
| cobject.h | File | 2.86 KB | 0644 |
|
| code.h | File | 3.8 KB | 0644 |
|
| codecs.h | File | 4.9 KB | 0644 |
|
| compile.h | File | 1.04 KB | 0644 |
|
| complexobject.h | File | 1.81 KB | 0644 |
|
| datetime.h | File | 8.12 KB | 0644 |
|
| descrobject.h | File | 2.42 KB | 0644 |
|
| dictobject.h | File | 6.52 KB | 0644 |
|
| dtoa.h | File | 338 B | 0644 |
|
| enumobject.h | File | 253 B | 0644 |
|
| errcode.h | File | 1.37 KB | 0644 |
|
| eval.h | File | 557 B | 0644 |
|
| fileobject.h | File | 3.58 KB | 0644 |
|
| floatobject.h | File | 5.49 KB | 0644 |
|
| frameobject.h | File | 3.16 KB | 0644 |
|
| funcobject.h | File | 2.92 KB | 0644 |
|
| genobject.h | File | 891 B | 0644 |
|
| graminit.h | File | 1.87 KB | 0644 |
|
| grammar.h | File | 1.97 KB | 0644 |
|
| import.h | File | 2.17 KB | 0644 |
|
| intobject.h | File | 2.77 KB | 0644 |
|
| intrcheck.h | File | 274 B | 0644 |
|
| iterobject.h | File | 522 B | 0644 |
|
| listobject.h | File | 2.51 KB | 0644 |
|
| longintrepr.h | File | 3.82 KB | 0644 |
|
| longobject.h | File | 5.67 KB | 0644 |
|
| marshal.h | File | 713 B | 0644 |
|
| memoryobject.h | File | 2.76 KB | 0644 |
|
| metagrammar.h | File | 253 B | 0644 |
|
| methodobject.h | File | 3.28 KB | 0644 |
|
| modsupport.h | File | 4.91 KB | 0644 |
|
| moduleobject.h | File | 609 B | 0644 |
|
| node.h | File | 956 B | 0644 |
|
| object.h | File | 38.09 KB | 0644 |
|
| objimpl.h | File | 13.64 KB | 0644 |
|
| opcode.h | File | 4.7 KB | 0644 |
|
| osdefs.h | File | 1.03 KB | 0644 |
|
| parsetok.h | File | 1.74 KB | 0644 |
|
| patchlevel.h | File | 1.41 KB | 0644 |
|
| pgen.h | File | 253 B | 0644 |
|
| pgenheaders.h | File | 1.12 KB | 0644 |
|
| py_curses.h | File | 4.06 KB | 0644 |
|
| pyarena.h | File | 2.63 KB | 0644 |
|
| pycapsule.h | File | 1.64 KB | 0644 |
|
| pyconfig-64.h | File | 35.95 KB | 0644 |
|
| pyconfig.h | File | 162 B | 0644 |
|
| pyctype.h | File | 1.24 KB | 0644 |
|
| pydebug.h | File | 1.29 KB | 0644 |
|
| pyerrors.h | File | 11.38 KB | 0644 |
|
| pyexpat.h | File | 2.07 KB | 0644 |
|
| pyfpe.h | File | 8.29 KB | 0644 |
|
| pygetopt.h | File | 348 B | 0644 |
|
| pymacconfig.h | File | 2.92 KB | 0644 |
|
| pymactoolbox.h | File | 7.76 KB | 0644 |
|
| pymath.h | File | 6.37 KB | 0644 |
|
| pymem.h | File | 4.59 KB | 0644 |
|
| pyport.h | File | 31.42 KB | 0644 |
|
| pystate.h | File | 6.25 KB | 0644 |
|
| pystrcmp.h | File | 463 B | 0644 |
|
| pystrtod.h | File | 1.54 KB | 0644 |
|
| pythonrun.h | File | 7.11 KB | 0644 |
|
| pythread.h | File | 1.22 KB | 0644 |
|
| rangeobject.h | File | 646 B | 0644 |
|
| setobject.h | File | 3.06 KB | 0644 |
|
| sliceobject.h | File | 1.3 KB | 0644 |
|
| stringobject.h | File | 7.79 KB | 0644 |
|
| structmember.h | File | 2.83 KB | 0644 |
|
| structseq.h | File | 862 B | 0644 |
|
| symtable.h | File | 3.64 KB | 0644 |
|
| sysmodule.h | File | 815 B | 0644 |
|
| timefuncs.h | File | 541 B | 0644 |
|
| token.h | File | 1.76 KB | 0644 |
|
| traceback.h | File | 697 B | 0644 |
|
| tupleobject.h | File | 2.18 KB | 0644 |
|
| ucnhash.h | File | 924 B | 0644 |
|
| unicodeobject.h | File | 51 KB | 0644 |
|
| warnings.h | File | 635 B | 0644 |
|
| weakrefobject.h | File | 2.89 KB | 0644 |
|