GRAYBYTE WORDPRESS FILE MANAGER3060

Server IP : 198.54.121.189 / Your IP : 216.73.216.140
System : Linux premium69.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
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /opt/alt/python312/include/python3.12/internal/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /opt/alt/python312/include/python3.12/internal//pycore_long.h
#ifndef Py_INTERNAL_LONG_H
#define Py_INTERNAL_LONG_H
#ifdef __cplusplus
extern "C" {
#endif

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

#include "pycore_global_objects.h"  // _PY_NSMALLNEGINTS
#include "pycore_runtime.h"       // _PyRuntime

/*
 * Default int base conversion size limitation: Denial of Service prevention.
 *
 * Chosen such that this isn't wildly slow on modern hardware and so that
 * everyone's existing deployed numpy test suite passes before
 * https://github.com/numpy/numpy/issues/22098 is widely available.
 *
 * $ python -m timeit -s 's = "1"*4300' 'int(s)'
 * 2000 loops, best of 5: 125 usec per loop
 * $ python -m timeit -s 's = "1"*4300; v = int(s)' 'str(v)'
 * 1000 loops, best of 5: 311 usec per loop
 * (zen2 cloud VM)
 *
 * 4300 decimal digits fits a ~14284 bit number.
 */
#define _PY_LONG_DEFAULT_MAX_STR_DIGITS 4300
/*
 * Threshold for max digits check.  For performance reasons int() and
 * int.__str__() don't checks values that are smaller than this
 * threshold.  Acts as a guaranteed minimum size limit for bignums that
 * applications can expect from CPython.
 *
 * % python -m timeit -s 's = "1"*640; v = int(s)' 'str(int(s))'
 * 20000 loops, best of 5: 12 usec per loop
 *
 * "640 digits should be enough for anyone." - gps
 * fits a ~2126 bit decimal number.
 */
#define _PY_LONG_MAX_STR_DIGITS_THRESHOLD 640

#if ((_PY_LONG_DEFAULT_MAX_STR_DIGITS != 0) && \
   (_PY_LONG_DEFAULT_MAX_STR_DIGITS < _PY_LONG_MAX_STR_DIGITS_THRESHOLD))
# error "_PY_LONG_DEFAULT_MAX_STR_DIGITS smaller than threshold."
#endif


/* runtime lifecycle */

extern PyStatus _PyLong_InitTypes(PyInterpreterState *);
extern void _PyLong_FiniTypes(PyInterpreterState *interp);


/* other API */

#define _PyLong_SMALL_INTS _Py_SINGLETON(small_ints)

// _PyLong_GetZero() and _PyLong_GetOne() must always be available
// _PyLong_FromUnsignedChar must always be available
#if _PY_NSMALLPOSINTS < 257
#  error "_PY_NSMALLPOSINTS must be greater than or equal to 257"
#endif

// Return a borrowed reference to the zero singleton.
// The function cannot return NULL.
static inline PyObject* _PyLong_GetZero(void)
{ return (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS]; }

// Return a borrowed reference to the one singleton.
// The function cannot return NULL.
static inline PyObject* _PyLong_GetOne(void)
{ return (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS+1]; }

static inline PyObject* _PyLong_FromUnsignedChar(unsigned char i)
{
    return Py_NewRef((PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS+i]);
}

PyObject *_PyLong_Add(PyLongObject *left, PyLongObject *right);
PyObject *_PyLong_Multiply(PyLongObject *left, PyLongObject *right);
PyObject *_PyLong_Subtract(PyLongObject *left, PyLongObject *right);

/* Used by Python/mystrtoul.c, _PyBytes_FromHex(),
   _PyBytes_DecodeEscape(), etc. */
PyAPI_DATA(unsigned char) _PyLong_DigitValue[256];

/* Format the object based on the format_spec, as defined in PEP 3101
   (Advanced String Formatting). */
PyAPI_FUNC(int) _PyLong_FormatAdvancedWriter(
    _PyUnicodeWriter *writer,
    PyObject *obj,
    PyObject *format_spec,
    Py_ssize_t start,
    Py_ssize_t end);

PyAPI_FUNC(int) _PyLong_FormatWriter(
    _PyUnicodeWriter *writer,
    PyObject *obj,
    int base,
    int alternate);

PyAPI_FUNC(char*) _PyLong_FormatBytesWriter(
    _PyBytesWriter *writer,
    char *str,
    PyObject *obj,
    int base,
    int alternate);

/* Long value tag bits:
 * 0-1: Sign bits value = (1-sign), ie. negative=2, positive=0, zero=1.
 * 2: Reserved for immortality bit
 * 3+ Unsigned digit count
 */
#define SIGN_MASK 3
#define SIGN_ZERO 1
#define SIGN_NEGATIVE 2
#define NON_SIZE_BITS 3

/* The functions _PyLong_IsCompact and _PyLong_CompactValue are defined
 * in Include/cpython/longobject.h, since they need to be inline.
 *
 * "Compact" values have at least one bit to spare,
 * so that addition and subtraction can be performed on the values
 * without risk of overflow.
 *
 * The inline functions need tag bits.
 * For readability, rather than do `#define SIGN_MASK _PyLong_SIGN_MASK`
 * we define them to the numbers in both places and then assert that
 * they're the same.
 */
static_assert(SIGN_MASK == _PyLong_SIGN_MASK, "SIGN_MASK does not match _PyLong_SIGN_MASK");
static_assert(NON_SIZE_BITS == _PyLong_NON_SIZE_BITS, "NON_SIZE_BITS does not match _PyLong_NON_SIZE_BITS");

/* All *compact" values are guaranteed to fit into
 * a Py_ssize_t with at least one bit to spare.
 * In other words, for 64 bit machines, compact
 * will be signed 63 (or fewer) bit values
 */

/* Return 1 if the argument is compact int */
static inline int
_PyLong_IsNonNegativeCompact(const PyLongObject* op) {
    assert(PyLong_Check(op));
    return op->long_value.lv_tag <= (1 << NON_SIZE_BITS);
}


static inline int
_PyLong_BothAreCompact(const PyLongObject* a, const PyLongObject* b) {
    assert(PyLong_Check(a));
    assert(PyLong_Check(b));
    return (a->long_value.lv_tag | b->long_value.lv_tag) < (2 << NON_SIZE_BITS);
}

static inline bool
_PyLong_IsZero(const PyLongObject *op)
{
    return (op->long_value.lv_tag & SIGN_MASK) == SIGN_ZERO;
}

static inline bool
_PyLong_IsNegative(const PyLongObject *op)
{
    return (op->long_value.lv_tag & SIGN_MASK) == SIGN_NEGATIVE;
}

static inline bool
_PyLong_IsPositive(const PyLongObject *op)
{
    return (op->long_value.lv_tag & SIGN_MASK) == 0;
}

static inline Py_ssize_t
_PyLong_DigitCount(const PyLongObject *op)
{
    assert(PyLong_Check(op));
    return op->long_value.lv_tag >> NON_SIZE_BITS;
}

/* Equivalent to _PyLong_DigitCount(op) * _PyLong_NonCompactSign(op) */
static inline Py_ssize_t
_PyLong_SignedDigitCount(const PyLongObject *op)
{
    assert(PyLong_Check(op));
    Py_ssize_t sign = 1 - (op->long_value.lv_tag & SIGN_MASK);
    return sign * (Py_ssize_t)(op->long_value.lv_tag >> NON_SIZE_BITS);
}

static inline int
_PyLong_CompactSign(const PyLongObject *op)
{
    assert(PyLong_Check(op));
    assert(_PyLong_IsCompact(op));
    return 1 - (op->long_value.lv_tag & SIGN_MASK);
}

static inline int
_PyLong_NonCompactSign(const PyLongObject *op)
{
    assert(PyLong_Check(op));
    assert(!_PyLong_IsCompact(op));
    return 1 - (op->long_value.lv_tag & SIGN_MASK);
}

/* Do a and b have the same sign? */
static inline int
_PyLong_SameSign(const PyLongObject *a, const PyLongObject *b)
{
    return (a->long_value.lv_tag & SIGN_MASK) == (b->long_value.lv_tag & SIGN_MASK);
}

#define TAG_FROM_SIGN_AND_SIZE(sign, size) ((1 - (sign)) | ((size) << NON_SIZE_BITS))

static inline void
_PyLong_SetSignAndDigitCount(PyLongObject *op, int sign, Py_ssize_t size)
{
    assert(size >= 0);
    assert(-1 <= sign && sign <= 1);
    assert(sign != 0 || size == 0);
    op->long_value.lv_tag = TAG_FROM_SIGN_AND_SIZE(sign, (size_t)size);
}

static inline void
_PyLong_SetDigitCount(PyLongObject *op, Py_ssize_t size)
{
    assert(size >= 0);
    op->long_value.lv_tag = (((size_t)size) << NON_SIZE_BITS) | (op->long_value.lv_tag & SIGN_MASK);
}

#define NON_SIZE_MASK ~((1 << NON_SIZE_BITS) - 1)

static inline void
_PyLong_FlipSign(PyLongObject *op) {
    unsigned int flipped_sign = 2 - (op->long_value.lv_tag & SIGN_MASK);
    op->long_value.lv_tag &= NON_SIZE_MASK;
    op->long_value.lv_tag |= flipped_sign;
}

#define _PyLong_DIGIT_INIT(val) \
    { \
        .ob_base = _PyObject_HEAD_INIT(&PyLong_Type) \
        .long_value  = { \
            .lv_tag = TAG_FROM_SIGN_AND_SIZE( \
                (val) == 0 ? 0 : ((val) < 0 ? -1 : 1), \
                (val) == 0 ? 0 : 1), \
            { ((val) >= 0 ? (val) : -(val)) }, \
        } \
    }

#define _PyLong_FALSE_TAG TAG_FROM_SIGN_AND_SIZE(0, 0)
#define _PyLong_TRUE_TAG TAG_FROM_SIGN_AND_SIZE(1, 1)

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

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
May 13 2025 08:38:42
root / linksafe
0755
pycore_abstract.h
0.597 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_asdl.h
2.964 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_ast.h
30.555 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_ast_state.h
6.591 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_atexit.h
1.122 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_atomic.h
16.581 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_atomic_funcs.h
2.381 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_bitutils.h
5.92 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_blocks_output_buffer.h
8.484 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_bytes_methods.h
3.305 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_bytesobject.h
1.308 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_call.h
3.828 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_ceval.h
5.142 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_ceval_state.h
2.68 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_code.h
15.464 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_compile.h
3.372 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_condvar.h
2.841 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_context.h
1.271 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_descrobject.h
0.487 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_dict.h
6.234 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_dict_state.h
1.069 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_dtoa.h
1.577 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_emscripten_signal.h
0.549 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_exceptions.h
0.822 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_faulthandler.h
2.168 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_fileutils.h
7.725 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_fileutils_windows.h
2.66 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_floatobject.h
1.541 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_flowgraph.h
4.521 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_format.h
0.469 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_frame.h
9.038 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_function.h
0.597 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_gc.h
7.479 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_genobject.h
1.158 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_getopt.h
0.479 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_gil.h
1.528 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_global_objects.h
2.964 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_global_objects_fini_generated.h
112.657 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_global_strings.h
24.842 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_hamt.h
3.654 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_hashtable.h
4.186 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_import.h
6.209 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_initconfig.h
5.572 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_instruments.h
2.928 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_interp.h
8.873 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_intrinsics.h
1.364 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_list.h
1.934 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_long.h
7.622 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_memoryobject.h
0.374 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_moduleobject.h
1.164 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_namespace.h
0.383 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_object.h
14.567 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_object_state.h
0.992 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_obmalloc.h
26.645 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_obmalloc_init.h
2.036 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_opcode.h
19.61 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_opcode_utils.h
2.623 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_parser.h
1.326 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_pathconfig.h
0.592 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_pyarena.h
2.669 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_pyerrors.h
3.037 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_pyhash.h
0.692 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_pylifecycle.h
3.286 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_pymath.h
8.398 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_pymem.h
2.969 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_pymem_init.h
2.592 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_pystate.h
4.865 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_pythread.h
2.026 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_range.h
0.338 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_runtime.h
8.231 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_runtime_init.h
5.773 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_runtime_init_generated.h
44.679 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_signal.h
2.55 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_sliceobject.h
0.404 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_strhex.h
0.915 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_structseq.h
0.901 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_symtable.h
6.87 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_sysmodule.h
0.976 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_time.h
0.379 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_token.h
2.979 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_traceback.h
3.419 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_tracemalloc.h
3.003 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_tuple.h
2.146 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_typeobject.h
4.62 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_typevarobject.h
0.745 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_ucnhash.h
0.877 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_unicodeobject.h
2.595 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_unicodeobject_generated.h
122.574 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_unionobject.h
0.666 KB
April 08 2025 11:35:47
root / linksafe
0644
pycore_warnings.h
0.723 KB
April 08 2025 11:35:47
root / linksafe
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF