Skip to main content

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

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.1.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.1-py3-none-any.whl (66.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for numthy-0.2.1.tar.gz
Algorithm Hash digest
SHA256 c2b4923c921f08c3ba22089e7b428d7370557acdbbb361e0e9fcb7df554bb74e
MD5 597bb124a7b3e439442bdf5514ddac94
BLAKE2b-256 9a88cea069fdc7ec2afc52bb4a122288436a012161f9f6a1aa3e63f661b2ff1c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: numthy-0.2.1-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.9

File hashes

Hashes for numthy-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 025da604b8e68ac7e118d7d36e45a1d8d515f1c9f3d929e44b04c815dddae1db
MD5 5acb9e181f4aa8769a42e102c6ce7668
BLAKE2b-256 79f0eaf079a3b5535b309822cae61cb36ef3461c55ee84472457b9f174ffe033

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 files

0.2.0

2 files

0.1.0

2 files

0.1.0b0

2 files

0.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page