Skip to main content

Computational number theory. Pure Python. Zero dependencies. Unreasonably fast.

Project description

NumThy

Computational number theory. Pure Python. Zero dependencies. Unreasonably fast.

Installation

pip install numthy

Or just drop numthy.py into your project.

Quick Start

import numthy as nt

# Primality
nt.is_prime(2**89 - 1)  # True

# Factorization (SIQS handles 50+ digits)
nt.prime_factors(2**128 + 1)  # (59649589127497217, 5704689200685129054721)

# Prime counting
nt.count_primes(10**9)  # 50847534

# Discrete log
nt.discrete_log(1000, 3, 65537)  # 50921 (i.e., 1000 ≡ 3^50921 mod 65537)

# Diophantine equations
# Solve 2x² + 3xy - 3y² + 7x - 10y - 24 = 0
solutions = nt.conic(2, 3, -3, 7, -10, -24)
next(solutions)  # (8, 10)
next(solutions)  # (376, -174)
next(solutions)  # (17304, 25218)

Demo

Try NumThy in the browser: ini.github.io/numthy/demo

Documentation

See API.md for the full reference.

Under The Hood

One file, with everything implemented from scratch. Simple API, with heavy-duty algorithms under the hood:

  • Extra-strong variant of the Baillie-PSW primality test
  • Lagarias-Miller-Odlyzko (LMO) algorithm for prime counting, generalized to sums over primes of any arbitrary completely multiplicative function
  • Two-stage Lenstra's ECM factorization with Montgomery curves and Suyama parametrization
  • Self-initializing quadratic sieve (SIQS) with triple-large-prime variation
  • Cantor-Zassenhaus → Hensel lifting → Chinese Remainder Theorem pipeline for finding modular roots of polynomials
  • Adleman-Manders-Miller algorithm for general n-th roots over finite fields
  • General solver for all binary quadratic Diophantine equations (ax² + bxy + cy² + dx + ey + f = 0)
  • Lenstra–Lenstra–Lovász lattice basis reduction algorithm with automatic precision escalation
  • Jochemsz-May generalization of Coppersmith's method for multivariate polynomials with any number of variables

Requirements

Python 3.10+

That's it.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

numthy-0.2.0.tar.gz (109.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

numthy-0.2.0-py3-none-any.whl (66.5 kB view details)

Uploaded Python 3

File details

Details for the file numthy-0.2.0.tar.gz.

File metadata

  • Download URL: numthy-0.2.0.tar.gz
  • Upload date:
  • Size: 109.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for numthy-0.2.0.tar.gz
Algorithm Hash digest
SHA256 ddf1104d507c27025b4fb29d1c0ebca3699659122713b85dcdb5b6be3cca06c7
MD5 a0fcc92fdceec9efddd87429332af959
BLAKE2b-256 580ff8cfc321a7247361b11f48a5838bd3ca422eadcffed9fae33cb8f7ef7fd4

See more details on using hashes here.

File details

Details for the file numthy-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: numthy-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 66.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for numthy-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 71004cdb84fb5f96bf0fefe9282c771894399fb2159d286a6256bffa2ba9fa0c
MD5 b146df0c71f157c94dd0272f0a8f2315
BLAKE2b-256 6279b7478ace39c073119c7fb79a98acd5af49eb3b4976e816251f7a5c60b9ab

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page