SILENT KILLERPanel

Current Path: > > opt > alt > python311 > include > > python3.11 > > internal


Operation   : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //opt/alt/python311/include//python3.11//internal

NameTypeSizeLast ModifiedActions
pycore_abstract.h File 611 bytes June 03 2025 18:38:25.
pycore_accu.h File 1126 bytes June 03 2025 18:38:25.
pycore_asdl.h File 3031 bytes June 03 2025 18:38:25.
pycore_ast.h File 29315 bytes June 03 2025 18:38:25.
pycore_ast_state.h File 6549 bytes June 03 2025 18:38:25.
pycore_atomic.h File 16979 bytes June 03 2025 18:38:25.
pycore_atomic_funcs.h File 2438 bytes June 03 2025 18:38:25.
pycore_bitutils.h File 6062 bytes June 03 2025 18:38:25.
pycore_blocks_output_buffer.h File 8688 bytes June 03 2025 18:38:25.
pycore_bytes_methods.h File 3384 bytes June 03 2025 18:38:25.
pycore_bytesobject.h File 1424 bytes June 03 2025 18:38:25.
pycore_call.h File 3475 bytes June 03 2025 18:38:25.
pycore_ceval.h File 4409 bytes June 03 2025 18:38:25.
pycore_code.h File 15930 bytes June 03 2025 18:38:25.
pycore_compile.h File 1045 bytes June 03 2025 18:38:25.
pycore_condvar.h File 2839 bytes June 03 2025 18:38:25.
pycore_context.h File 1239 bytes June 03 2025 18:38:25.
pycore_dict.h File 5684 bytes June 03 2025 18:38:25.
pycore_dtoa.h File 704 bytes June 03 2025 18:38:25.
pycore_emscripten_signal.h File 562 bytes June 03 2025 18:38:25.
pycore_exceptions.h File 842 bytes June 03 2025 18:38:25.
pycore_fileutils.h File 7403 bytes June 03 2025 18:38:25.
pycore_floatobject.h File 1307 bytes June 03 2025 18:38:25.
pycore_format.h File 480 bytes June 03 2025 18:38:25.
pycore_frame.h File 7567 bytes June 03 2025 18:38:25.
pycore_function.h File 413 bytes June 03 2025 18:38:25.
pycore_gc.h File 6895 bytes June 03 2025 18:38:25.
pycore_genobject.h File 1164 bytes June 03 2025 18:38:25.
pycore_getopt.h File 490 bytes June 03 2025 18:38:25.
pycore_gil.h File 1565 bytes June 03 2025 18:38:25.
pycore_global_objects.h File 1436 bytes June 03 2025 18:38:25.
pycore_global_strings.h File 12980 bytes June 03 2025 18:38:25.
pycore_hamt.h File 3696 bytes June 03 2025 18:38:25.
pycore_hashtable.h File 4197 bytes June 03 2025 18:38:25.
pycore_import.h File 743 bytes June 03 2025 18:38:25.
pycore_initconfig.h File 5800 bytes June 03 2025 18:38:25.
pycore_interp.h File 6671 bytes June 03 2025 18:38:25.
pycore_interpreteridobject.h File 562 bytes June 03 2025 18:38:25.
pycore_list.h File 1352 bytes June 03 2025 18:38:25.
pycore_long.h File 3516 bytes June 03 2025 18:38:25.
pycore_moduleobject.h File 1040 bytes June 03 2025 18:38:25.
pycore_namespace.h File 392 bytes June 03 2025 18:38:25.
pycore_object.h File 10037 bytes June 03 2025 18:38:25.
pycore_opcode.h File 18986 bytes June 03 2025 18:38:25.
pycore_parser.h File 626 bytes June 03 2025 18:38:25.
pycore_pathconfig.h File 606 bytes June 03 2025 18:38:25.
pycore_pyarena.h File 2733 bytes June 03 2025 18:38:25.
pycore_pyerrors.h File 2494 bytes June 03 2025 18:38:25.
pycore_pyhash.h File 206 bytes June 03 2025 18:38:25.
pycore_pylifecycle.h File 3507 bytes June 03 2025 18:38:25.
pycore_pymath.h File 9435 bytes June 03 2025 18:38:25.
pycore_pymem.h File 3708 bytes June 03 2025 18:38:25.
pycore_pystate.h File 4250 bytes June 03 2025 18:38:25.
pycore_runtime.h File 5988 bytes June 03 2025 18:38:25.
pycore_runtime_init.h File 49092 bytes June 03 2025 18:38:25.
pycore_signal.h File 937 bytes June 03 2025 18:38:25.
pycore_sliceobject.h File 336 bytes June 03 2025 18:38:25.
pycore_strhex.h File 937 bytes June 03 2025 18:38:25.
pycore_structseq.h File 580 bytes June 03 2025 18:38:25.
pycore_symtable.h File 5638 bytes June 03 2025 18:38:25.
pycore_sysmodule.h File 605 bytes June 03 2025 18:38:25.
pycore_traceback.h File 3501 bytes June 03 2025 18:38:25.
pycore_tuple.h File 2089 bytes June 03 2025 18:38:25.
pycore_typeobject.h File 1158 bytes June 03 2025 18:38:25.
pycore_ucnhash.h File 898 bytes June 03 2025 18:38:25.
pycore_unicodeobject.h File 1716 bytes June 03 2025 18:38:25.
pycore_unionobject.h File 678 bytes June 03 2025 18:38:25.
pycore_warnings.h File 740 bytes June 03 2025 18:38:25.

Reading File: //opt/alt/python311/include//python3.11//internal/pycore_pymath.h

#ifndef Py_INTERNAL_PYMATH_H
#define Py_INTERNAL_PYMATH_H
#ifdef __cplusplus
extern "C" {
#endif

#ifndef Py_BUILD_CORE
#  error "this header requires Py_BUILD_CORE define"
#endif


/* _Py_ADJUST_ERANGE1(x)
 * _Py_ADJUST_ERANGE2(x, y)
 * Set errno to 0 before calling a libm function, and invoke one of these
 * macros after, passing the function result(s) (_Py_ADJUST_ERANGE2 is useful
 * for functions returning complex results).  This makes two kinds of
 * adjustments to errno:  (A) If it looks like the platform libm set
 * errno=ERANGE due to underflow, clear errno. (B) If it looks like the
 * platform libm overflowed but didn't set errno, force errno to ERANGE.  In
 * effect, we're trying to force a useful implementation of C89 errno
 * behavior.
 * 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.
 */
static inline void _Py_ADJUST_ERANGE1(double x)
{
    if (errno == 0) {
        if (x == Py_HUGE_VAL || x == -Py_HUGE_VAL) {
            errno = ERANGE;
        }
    }
    else if (errno == ERANGE && x == 0.0) {
        errno = 0;
    }
}

static inline void _Py_ADJUST_ERANGE2(double x, double y)
{
    if (x == Py_HUGE_VAL || x == -Py_HUGE_VAL ||
        y == Py_HUGE_VAL || y == -Py_HUGE_VAL)
    {
        if (errno == 0) {
            errno = ERANGE;
        }
    }
    else if (errno == ERANGE) {
        errno = 0;
    }
}

// Return whether integral type *type* is signed or not.
#define _Py_IntegralTypeSigned(type) \
    ((type)(-1) < 0)

// Return the maximum value of integral type *type*.
#define _Py_IntegralTypeMax(type) \
    ((_Py_IntegralTypeSigned(type)) ? (((((type)1 << (sizeof(type)*CHAR_BIT - 2)) - 1) << 1) + 1) : ~(type)0)

// Return the minimum value of integral type *type*.
#define _Py_IntegralTypeMin(type) \
    ((_Py_IntegralTypeSigned(type)) ? -_Py_IntegralTypeMax(type) - 1 : 0)

// Check whether *v* is in the range of integral type *type*. This is most
// useful if *v* is floating-point, since demoting a floating-point *v* to an
// integral type that cannot represent *v*'s integral part is undefined
// behavior.
#define _Py_InIntegralTypeRange(type, v) \
    (_Py_IntegralTypeMin(type) <= v && v <= _Py_IntegralTypeMax(type))


//--- HAVE_PY_SET_53BIT_PRECISION macro ------------------------------------
//
// The functions _Py_dg_strtod() and _Py_dg_dtoa() in Python/dtoa.c (which are
// required to support the short float repr introduced in Python 3.1) require
// that the floating-point unit that's being used for arithmetic operations on
// C doubles is set to use 53-bit precision.  It also requires that the FPU
// rounding mode is round-half-to-even, but that's less often an issue.
//
// If your FPU isn't already set to 53-bit precision/round-half-to-even, and
// you want to make use of _Py_dg_strtod() and _Py_dg_dtoa(), then you should:
//
//     #define HAVE_PY_SET_53BIT_PRECISION 1
//
// and also give appropriate definitions for the following three macros:
//
// * _Py_SET_53BIT_PRECISION_HEADER: any variable declarations needed to
//   use the two macros below.
// * _Py_SET_53BIT_PRECISION_START: store original FPU settings, and
//   set FPU to 53-bit precision/round-half-to-even
// * _Py_SET_53BIT_PRECISION_END: restore original FPU settings
//
// The macros are designed to be used within a single C function: see
// Python/pystrtod.c for an example of their use.


// Get and set x87 control word for gcc/x86
#ifdef HAVE_GCC_ASM_FOR_X87
#define HAVE_PY_SET_53BIT_PRECISION 1

// Functions defined in Python/pymath.c
extern unsigned short _Py_get_387controlword(void);
extern void _Py_set_387controlword(unsigned short);

#define _Py_SET_53BIT_PRECISION_HEADER                                  \
    unsigned short old_387controlword, new_387controlword
#define _Py_SET_53BIT_PRECISION_START                                   \
    do {                                                                \
        old_387controlword = _Py_get_387controlword();                  \
        new_387controlword = (old_387controlword & ~0x0f00) | 0x0200;   \
        if (new_387controlword != old_387controlword) {                 \
            _Py_set_387controlword(new_387controlword);                 \
        }                                                               \
    } while (0)
#define _Py_SET_53BIT_PRECISION_END                                     \
    do {                                                                \
        if (new_387controlword != old_387controlword) {                 \
            _Py_set_387controlword(old_387controlword);                 \
        }                                                               \
    } while (0)
#endif

// Get and set x87 control word for VisualStudio/x86.
// x87 is not supported in 64-bit or ARM.
#if defined(_MSC_VER) && !defined(_WIN64) && !defined(_M_ARM)
#define HAVE_PY_SET_53BIT_PRECISION 1

#include <float.h>                // __control87_2()

#define _Py_SET_53BIT_PRECISION_HEADER \
    unsigned int old_387controlword, new_387controlword, out_387controlword
    // We use the __control87_2 function to set only the x87 control word.
    // The SSE control word is unaffected.
#define _Py_SET_53BIT_PRECISION_START                                   \
    do {                                                                \
        __control87_2(0, 0, &old_387controlword, NULL);                 \
        new_387controlword =                                            \
          (old_387controlword & ~(_MCW_PC | _MCW_RC)) | (_PC_53 | _RC_NEAR); \
        if (new_387controlword != old_387controlword) {                 \
            __control87_2(new_387controlword, _MCW_PC | _MCW_RC,        \
                          &out_387controlword, NULL);                   \
        }                                                               \
    } while (0)
#define _Py_SET_53BIT_PRECISION_END                                     \
    do {                                                                \
        if (new_387controlword != old_387controlword) {                 \
            __control87_2(old_387controlword, _MCW_PC | _MCW_RC,        \
                          &out_387controlword, NULL);                   \
        }                                                               \
    } while (0)
#endif


// MC68881
#ifdef HAVE_GCC_ASM_FOR_MC68881
#define HAVE_PY_SET_53BIT_PRECISION 1
#define _Py_SET_53BIT_PRECISION_HEADER \
    unsigned int old_fpcr, new_fpcr
#define _Py_SET_53BIT_PRECISION_START                                   \
    do {                                                                \
        __asm__ ("fmove.l %%fpcr,%0" : "=g" (old_fpcr));                \
        /* Set double precision / round to nearest.  */                 \
        new_fpcr = (old_fpcr & ~0xf0) | 0x80;                           \
        if (new_fpcr != old_fpcr) {                                     \
              __asm__ volatile ("fmove.l %0,%%fpcr" : : "g" (new_fpcr));\
        }                                                               \
    } while (0)
#define _Py_SET_53BIT_PRECISION_END                                     \
    do {                                                                \
        if (new_fpcr != old_fpcr) {                                     \
            __asm__ volatile ("fmove.l %0,%%fpcr" : : "g" (old_fpcr));  \
        }                                                               \
    } while (0)
#endif

// Default definitions are empty
#ifndef _Py_SET_53BIT_PRECISION_HEADER
#  define _Py_SET_53BIT_PRECISION_HEADER
#  define _Py_SET_53BIT_PRECISION_START
#  define _Py_SET_53BIT_PRECISION_END
#endif


//--- _PY_SHORT_FLOAT_REPR macro -------------------------------------------

// If we can't guarantee 53-bit precision, don't use the code
// in Python/dtoa.c, but fall back to standard code.  This
// means that repr of a float will be long (17 significant digits).
//
// Realistically, there are two things that could go wrong:
//
// (1) doubles aren't IEEE 754 doubles, or
// (2) we're on x86 with the rounding precision set to 64-bits
//     (extended precision), and we don't know how to change
//     the rounding precision.
#if !defined(DOUBLE_IS_LITTLE_ENDIAN_IEEE754) && \
    !defined(DOUBLE_IS_BIG_ENDIAN_IEEE754) && \
    !defined(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754)
#  define _PY_SHORT_FLOAT_REPR 0
#endif

// Double rounding is symptomatic of use of extended precision on x86.
// If we're seeing double rounding, and we don't have any mechanism available
// for changing the FPU rounding precision, then don't use Python/dtoa.c.
#if defined(X87_DOUBLE_ROUNDING) && !defined(HAVE_PY_SET_53BIT_PRECISION)
#  define _PY_SHORT_FLOAT_REPR 0
#endif

#ifndef _PY_SHORT_FLOAT_REPR
#  define _PY_SHORT_FLOAT_REPR 1
#endif


#ifdef __cplusplus
}
#endif
#endif /* !Py_INTERNAL_PYMATH_H */

SILENT KILLER Tool