__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
"""Python implementations of some algorithms for use by longobject.c.
The goal is to provide asymptotically faster algorithms that can be
used for operations on integers with many digits.  In those cases, the
performance overhead of the Python implementation is not significant
since the asymptotic behavior is what dominates runtime. Functions
provided by this module should be considered private and not part of any
public API.

Note: for ease of maintainability, please prefer clear code and avoid
"micro-optimizations".  This module will only be imported and used for
integers with a huge number of digits.  Saving a few microseconds with
tricky or non-obvious code is not worth it.  For people looking for
maximum performance, they should use something like gmpy2."""

import re
import decimal
try:
    import _decimal
except ImportError:
    _decimal = None

# A number of functions have this form, where `w` is a desired number of
# digits in base `base`:
#
#    def inner(...w...):
#        if w <= LIMIT:
#            return something
#        lo = w >> 1
#        hi = w - lo
#        something involving base**lo, inner(...lo...), j, and inner(...hi...)
#    figure out largest w needed
#    result = inner(w)
#
# They all had some on-the-fly scheme to cache `base**lo` results for reuse.
# Power is costly.
#
# This routine aims to compute all amd only the needed powers in advance, as
# efficiently as reasonably possible. This isn't trivial, and all the
# on-the-fly methods did needless work in many cases. The driving code above
# changes to:
#
#    figure out largest w needed
#    mycache = compute_powers(w, base, LIMIT)
#    result = inner(w)
#
# and `mycache[lo]` replaces `base**lo` in the inner function.
#
# While this does give minor speedups (a few percent at best), the primary
# intent is to simplify the functions using this, by eliminating the need for
# them to craft their own ad-hoc caching schemes.
def compute_powers(w, base, more_than, show=False):
    seen = set()
    need = set()
    ws = {w}
    while ws:
        w = ws.pop() # any element is fine to use next
        if w in seen or w <= more_than:
            continue
        seen.add(w)
        lo = w >> 1
        # only _need_ lo here; some other path may, or may not, need hi
        need.add(lo)
        ws.add(lo)
        if w & 1:
            ws.add(lo + 1)

    d = {}
    if not need:
        return d
    it = iter(sorted(need))
    first = next(it)
    if show:
        print("pow at", first)
    d[first] = base ** first
    for this in it:
        if this - 1 in d:
            if show:
                print("* base at", this)
            d[this] = d[this - 1] * base # cheap
        else:
            lo = this >> 1
            hi = this - lo
            assert lo in d
            if show:
                print("square at", this)
            # Multiplying a bigint by itself (same object!) is about twice
            # as fast in CPython.
            sq = d[lo] * d[lo]
            if hi != lo:
                assert hi == lo + 1
                if show:
                    print("    and * base")
                sq *= base
            d[this] = sq
    return d

_unbounded_dec_context = decimal.getcontext().copy()
_unbounded_dec_context.prec = decimal.MAX_PREC
_unbounded_dec_context.Emax = decimal.MAX_EMAX
_unbounded_dec_context.Emin = decimal.MIN_EMIN
_unbounded_dec_context.traps[decimal.Inexact] = 1 # sanity check

def int_to_decimal(n):
    """Asymptotically fast conversion of an 'int' to Decimal."""

    # Function due to Tim Peters.  See GH issue #90716 for details.
    # https://github.com/python/cpython/issues/90716
    #
    # The implementation in longobject.c of base conversion algorithms
    # between power-of-2 and non-power-of-2 bases are quadratic time.
    # This function implements a divide-and-conquer algorithm that is
    # faster for large numbers.  Builds an equal decimal.Decimal in a
    # "clever" recursive way.  If we want a string representation, we
    # apply str to _that_.

    from decimal import Decimal as D
    BITLIM = 200

    # Don't bother caching the "lo" mask in this; the time to compute it is
    # tiny compared to the multiply.
    def inner(n, w):
        if w <= BITLIM:
            return D(n)
        w2 = w >> 1
        hi = n >> w2
        lo = n & ((1 << w2) - 1)
        return inner(lo, w2) + inner(hi, w - w2) * w2pow[w2]

    with decimal.localcontext(_unbounded_dec_context):
        nbits = n.bit_length()
        w2pow = compute_powers(nbits, D(2), BITLIM)
        if n < 0:
            negate = True
            n = -n
        else:
            negate = False
        result = inner(n, nbits)
        if negate:
            result = -result
    return result

def int_to_decimal_string(n):
    """Asymptotically fast conversion of an 'int' to a decimal string."""
    w = n.bit_length()
    if w > 450_000 and _decimal is not None:
        # It is only usable with the C decimal implementation.
        # _pydecimal.py calls str() on very large integers, which in its
        # turn calls int_to_decimal_string(), causing very deep recursion.
        return str(int_to_decimal(n))

    # Fallback algorithm for the case when the C decimal module isn't
    # available.  This algorithm is asymptotically worse than the algorithm
    # using the decimal module, but better than the quadratic time
    # implementation in longobject.c.

    DIGLIM = 1000
    def inner(n, w):
        if w <= DIGLIM:
            return str(n)
        w2 = w >> 1
        hi, lo = divmod(n, pow10[w2])
        return inner(hi, w - w2) + inner(lo, w2).zfill(w2)

    # The estimation of the number of decimal digits.
    # There is no harm in small error.  If we guess too large, there may
    # be leading 0's that need to be stripped.  If we guess too small, we
    # may need to call str() recursively for the remaining highest digits,
    # which can still potentially be a large integer. This is manifested
    # only if the number has way more than 10**15 digits, that exceeds
    # the 52-bit physical address limit in both Intel64 and AMD64.
    w = int(w * 0.3010299956639812 + 1)  # log10(2)
    pow10 = compute_powers(w, 5, DIGLIM)
    for k, v in pow10.items():
        pow10[k] = v << k # 5**k << k == 5**k * 2**k == 10**k
    if n < 0:
        n = -n
        sign = '-'
    else:
        sign = ''
    s = inner(n, w)
    if s[0] == '0' and n:
        # If our guess of w is too large, there may be leading 0's that
        # need to be stripped.
        s = s.lstrip('0')
    return sign + s

def _str_to_int_inner(s):
    """Asymptotically fast conversion of a 'str' to an 'int'."""

    # Function due to Bjorn Martinsson.  See GH issue #90716 for details.
    # https://github.com/python/cpython/issues/90716
    #
    # The implementation in longobject.c of base conversion algorithms
    # between power-of-2 and non-power-of-2 bases are quadratic time.
    # This function implements a divide-and-conquer algorithm making use
    # of Python's built in big int multiplication. Since Python uses the
    # Karatsuba algorithm for multiplication, the time complexity
    # of this function is O(len(s)**1.58).

    DIGLIM = 2048

    def inner(a, b):
        if b - a <= DIGLIM:
            return int(s[a:b])
        mid = (a + b + 1) >> 1
        return (inner(mid, b)
                + ((inner(a, mid) * w5pow[b - mid])
                    << (b - mid)))

    w5pow = compute_powers(len(s), 5, DIGLIM)
    return inner(0, len(s))


def int_from_string(s):
    """Asymptotically fast version of PyLong_FromString(), conversion
    of a string of decimal digits into an 'int'."""
    # PyLong_FromString() has already removed leading +/-, checked for invalid
    # use of underscore characters, checked that string consists of only digits
    # and underscores, and stripped leading whitespace.  The input can still
    # contain underscores and have trailing whitespace.
    s = s.rstrip().replace('_', '')
    return _str_to_int_inner(s)

def str_to_int(s):
    """Asymptotically fast version of decimal string to 'int' conversion."""
    # FIXME: this doesn't support the full syntax that int() supports.
    m = re.match(r'\s*([+-]?)([0-9_]+)\s*', s)
    if not m:
        raise ValueError('invalid literal for int() with base 10')
    v = int_from_string(m.group(2))
    if m.group(1) == '-':
        v = -v
    return v


# Fast integer division, based on code from Mark Dickinson, fast_div.py
# GH-47701. Additional refinements and optimizations by Bjorn Martinsson.  The
# algorithm is due to Burnikel and Ziegler, in their paper "Fast Recursive
# Division".

_DIV_LIMIT = 4000


def _div2n1n(a, b, n):
    """Divide a 2n-bit nonnegative integer a by an n-bit positive integer
    b, using a recursive divide-and-conquer algorithm.

    Inputs:
      n is a positive integer
      b is a positive integer with exactly n bits
      a is a nonnegative integer such that a < 2**n * b

    Output:
      (q, r) such that a = b*q+r and 0 <= r < b.

    """
    if a.bit_length() - n <= _DIV_LIMIT:
        return divmod(a, b)
    pad = n & 1
    if pad:
        a <<= 1
        b <<= 1
        n += 1
    half_n = n >> 1
    mask = (1 << half_n) - 1
    b1, b2 = b >> half_n, b & mask
    q1, r = _div3n2n(a >> n, (a >> half_n) & mask, b, b1, b2, half_n)
    q2, r = _div3n2n(r, a & mask, b, b1, b2, half_n)
    if pad:
        r >>= 1
    return q1 << half_n | q2, r


def _div3n2n(a12, a3, b, b1, b2, n):
    """Helper function for _div2n1n; not intended to be called directly."""
    if a12 >> n == b1:
        q, r = (1 << n) - 1, a12 - (b1 << n) + b1
    else:
        q, r = _div2n1n(a12, b1, n)
    r = (r << n | a3) - q * b2
    while r < 0:
        q -= 1
        r += b
    return q, r


def _int2digits(a, n):
    """Decompose non-negative int a into base 2**n

    Input:
      a is a non-negative integer

    Output:
      List of the digits of a in base 2**n in little-endian order,
      meaning the most significant digit is last. The most
      significant digit is guaranteed to be non-zero.
      If a is 0 then the output is an empty list.

    """
    a_digits = [0] * ((a.bit_length() + n - 1) // n)

    def inner(x, L, R):
        if L + 1 == R:
            a_digits[L] = x
            return
        mid = (L + R) >> 1
        shift = (mid - L) * n
        upper = x >> shift
        lower = x ^ (upper << shift)
        inner(lower, L, mid)
        inner(upper, mid, R)

    if a:
        inner(a, 0, len(a_digits))
    return a_digits


def _digits2int(digits, n):
    """Combine base-2**n digits into an int. This function is the
    inverse of `_int2digits`. For more details, see _int2digits.
    """

    def inner(L, R):
        if L + 1 == R:
            return digits[L]
        mid = (L + R) >> 1
        shift = (mid - L) * n
        return (inner(mid, R) << shift) + inner(L, mid)

    return inner(0, len(digits)) if digits else 0


def _divmod_pos(a, b):
    """Divide a non-negative integer a by a positive integer b, giving
    quotient and remainder."""
    # Use grade-school algorithm in base 2**n, n = nbits(b)
    n = b.bit_length()
    a_digits = _int2digits(a, n)

    r = 0
    q_digits = []
    for a_digit in reversed(a_digits):
        q_digit, r = _div2n1n((r << n) + a_digit, b, n)
        q_digits.append(q_digit)
    q_digits.reverse()
    q = _digits2int(q_digits, n)
    return q, r


def int_divmod(a, b):
    """Asymptotically fast replacement for divmod, for 'int'.
    Its time complexity is O(n**1.58), where n = #bits(a) + #bits(b).
    """
    if b == 0:
        raise ZeroDivisionError
    elif b < 0:
        q, r = int_divmod(-a, -b)
        return q, -r
    elif a < 0:
        q, r = int_divmod(~a, b)
        return ~q, b + ~r
    else:
        return _divmod_pos(a, b)

Filemanager

Name Type Size Permission Actions
__phello__ Folder 0755
__pycache__ Folder 0755
_pyrepl Folder 0755
asyncio Folder 0755
collections Folder 0755
concurrent Folder 0755
config-3.13-x86_64-linux-gnu Folder 0755
ctypes Folder 0755
curses Folder 0755
dbm Folder 0755
email Folder 0755
encodings Folder 0755
html Folder 0755
http Folder 0755
importlib Folder 0755
json Folder 0755
lib-dynload Folder 0755
logging Folder 0755
multiprocessing Folder 0755
pathlib Folder 0755
pydoc_data Folder 0755
re Folder 0755
sqlite3 Folder 0755
sysconfig Folder 0755
test Folder 0755
tomllib Folder 0755
unittest Folder 0755
urllib Folder 0755
venv Folder 0755
wsgiref Folder 0755
xml Folder 0755
xmlrpc Folder 0755
zipfile Folder 0755
zoneinfo Folder 0755
EXTERNALLY-MANAGED File 645 B 0644
LICENSE.txt File 13.49 KB 0644
__future__.py File 5.1 KB 0644
__hello__.py File 227 B 0644
_aix_support.py File 3.93 KB 0644
_android_support.py File 6.73 KB 0644
_apple_support.py File 2.2 KB 0644
_collections_abc.py File 31.51 KB 0644
_colorize.py File 2.78 KB 0644
_compat_pickle.py File 8.53 KB 0644
_compression.py File 5.55 KB 0644
_distutils_system_mod.py File 5.58 KB 0644
_ios_support.py File 2.61 KB 0644
_markupbase.py File 14.31 KB 0644
_opcode_metadata.py File 9.05 KB 0644
_osx_support.py File 21.51 KB 0644
_py_abc.py File 6.04 KB 0644
_pydatetime.py File 89.83 KB 0644
_pydecimal.py File 221.96 KB 0644
_pyio.py File 91.1 KB 0644
_pylong.py File 11.55 KB 0644
_sitebuiltins.py File 3.05 KB 0644
_strptime.py File 28.69 KB 0644
_sysconfigdata__linux_x86_64-linux-gnu.py File 46.85 KB 0644
_sysconfigdata__x86_64-linux-gnu.py File 46.85 KB 0644
_threading_local.py File 7.05 KB 0644
_weakrefset.py File 5.75 KB 0644
abc.py File 6.38 KB 0644
antigravity.py File 500 B 0644
argparse.py File 99.65 KB 0644
ast.py File 63.91 KB 0644
base64.py File 21.12 KB 0755
bdb.py File 34.51 KB 0644
bisect.py File 3.34 KB 0644
bz2.py File 11.69 KB 0644
cProfile.py File 6.47 KB 0755
calendar.py File 25.47 KB 0644
cmd.py File 14.96 KB 0644
code.py File 12.86 KB 0644
codecs.py File 36.06 KB 0644
codeop.py File 5.69 KB 0644
colorsys.py File 3.97 KB 0644
compileall.py File 20.27 KB 0644
configparser.py File 52.51 KB 0644
contextlib.py File 27.15 KB 0644
contextvars.py File 129 B 0644
copy.py File 8.76 KB 0644
copyreg.py File 7.44 KB 0644
csv.py File 18.73 KB 0644
dataclasses.py File 63.03 KB 0644
datetime.py File 268 B 0644
decimal.py File 2.73 KB 0644
difflib.py File 81.41 KB 0644
dis.py File 40 KB 0644
doctest.py File 106.77 KB 0644
enum.py File 83.48 KB 0644
filecmp.py File 10.4 KB 0644
fileinput.py File 15.35 KB 0644
fnmatch.py File 6.04 KB 0644
fractions.py File 39.08 KB 0644
ftplib.py File 33.92 KB 0644
functools.py File 38.21 KB 0644
genericpath.py File 6.1 KB 0644
getopt.py File 7.31 KB 0644
getpass.py File 6.09 KB 0644
gettext.py File 21.45 KB 0644
glob.py File 19.26 KB 0644
graphlib.py File 9.42 KB 0644
gzip.py File 24.06 KB 0644
hashlib.py File 9.13 KB 0644
heapq.py File 22.48 KB 0644
hmac.py File 7.54 KB 0644
imaplib.py File 52.77 KB 0644
inspect.py File 124.36 KB 0644
io.py File 3.5 KB 0644
ipaddress.py File 79.23 KB 0644
keyword.py File 1.05 KB 0644
linecache.py File 7.11 KB 0644
locale.py File 77.13 KB 0644
lzma.py File 13.08 KB 0644
mailbox.py File 79.73 KB 0644
mimetypes.py File 23.29 KB 0644
modulefinder.py File 23.23 KB 0644
netrc.py File 6.76 KB 0644
ntpath.py File 30.12 KB 0644
nturl2path.py File 2.32 KB 0644
numbers.py File 11.2 KB 0644
opcode.py File 2.76 KB 0644
operator.py File 10.72 KB 0644
optparse.py File 58.95 KB 0644
os.py File 40.62 KB 0644
pdb.py File 88.79 KB 0755
pickle.py File 65.39 KB 0644
pickletools.py File 91.85 KB 0644
pkgutil.py File 17.85 KB 0644
platform.py File 46.24 KB 0755
plistlib.py File 29.1 KB 0644
poplib.py File 14.26 KB 0644
posixpath.py File 17.81 KB 0644
pprint.py File 23.59 KB 0644
profile.py File 22.6 KB 0755
pstats.py File 28.61 KB 0644
pty.py File 5.99 KB 0644
py_compile.py File 7.65 KB 0644
pyclbr.py File 11.13 KB 0644
pydoc.py File 107.65 KB 0755
queue.py File 13.17 KB 0644
quopri.py File 7.01 KB 0755
random.py File 36.14 KB 0644
reprlib.py File 7.02 KB 0644
rlcompleter.py File 7.73 KB 0644
runpy.py File 12.58 KB 0644
sched.py File 6.2 KB 0644
secrets.py File 1.94 KB 0644
selectors.py File 19 KB 0644
shelve.py File 8.6 KB 0644
shlex.py File 13.04 KB 0644
shutil.py File 56.12 KB 0644
signal.py File 2.44 KB 0644
site.py File 25.85 KB 0644
sitecustomize.py File 155 B 0644
smtplib.py File 42.51 KB 0755
socket.py File 36.87 KB 0644
socketserver.py File 27.41 KB 0644
sre_compile.py File 231 B 0644
sre_constants.py File 232 B 0644
sre_parse.py File 229 B 0644
ssl.py File 51.47 KB 0644
stat.py File 6 KB 0644
statistics.py File 60.38 KB 0644
string.py File 11.51 KB 0644
stringprep.py File 12.61 KB 0644
struct.py File 257 B 0644
subprocess.py File 87.15 KB 0644
symtable.py File 13.87 KB 0644
tabnanny.py File 11.26 KB 0755
tarfile.py File 111.49 KB 0755
tempfile.py File 39.15 KB 0644
textwrap.py File 19.47 KB 0644
this.py File 1003 B 0644
threading.py File 53.87 KB 0644
timeit.py File 13.15 KB 0755
token.py File 2.43 KB 0644
tokenize.py File 21.06 KB 0644
trace.py File 29.02 KB 0755
traceback.py File 64.31 KB 0644
tracemalloc.py File 17.62 KB 0644
tty.py File 1.99 KB 0644
turtle.py File 141.92 KB 0644
types.py File 10.94 KB 0644
typing.py File 129.61 KB 0644
uuid.py File 28.46 KB 0644
warnings.py File 26.32 KB 0644
wave.py File 22.69 KB 0644
weakref.py File 21.01 KB 0644
webbrowser.py File 23.71 KB 0755
zipapp.py File 8.42 KB 0644
zipimport.py File 32.12 KB 0644
Filemanager