figurate-numbers
Pure-Python library for polygonal and figurate numbers. Zero runtime dependencies.
Provides forward generation, membership testing, and inverse lookup for the full k-gonal family, plus pyramidal numbers, generalized centered polygonal numbers, star, pronic, and Catalan numbers.
Install
pip install figurate-numbers
Quick start
from figurate_numbers import (
triangular, pentagonal, hexagonal, polygonal,
is_triangular, is_polygonal,
inverse_triangular, inverse_polygonal,
tetrahedral, square_pyramidal,
is_tetrahedral, inverse_tetrahedral,
centered_polygonal, is_centered_polygonal,
)
triangular(10) # 55
pentagonal(7) # 70
hexagonal(5) # 45
polygonal(10, 3) # 55 (same as triangular)
is_triangular(28) # True
is_triangular(50) # False
is_polygonal(70, 5) # True (pentagonal)
inverse_triangular(55) # 10
inverse_polygonal(45, 6) # 5
# Pyramidal numbers (3D figurate)
tetrahedral(5) # 35
square_pyramidal(5) # 55
is_tetrahedral(20) # True
inverse_tetrahedral(20) # 4
# Generalized centered polygonal
centered_polygonal(3, 4) # 19 (centered triangular)
centered_polygonal(6, 3) # 19 (centered hexagonal, same as centered_hexagonal(3))
is_centered_polygonal(4, 25) # True (centered square)
API
Generators
| Function | Formula | OEIS |
|---|---|---|
triangular(n) |
n(n+1)/2 | A000217 |
square(n) |
n^2 | A000290 |
pentagonal(n) |
n(3n-1)/2 | A000326 |
hexagonal(n) |
n(2n-1) | A000384 |
heptagonal(n) |
n(5n-3)/2 | A000566 |
octagonal(n) |
n(3n-2) | A000567 |
polygonal(n, k) |
n((k-2)n-(k-4))/2 | |
pronic(n) |
n(n+1) | A002378 |
centered_hexagonal(n) |
3n(n-1)+1 | A003215 |
star(n) |
6n(n-1)+1 | A003154 |
catalan(n) |
C(2n,n)/(n+1) | A000108 |
tetrahedral(n) |
n(n+1)(n+2)/6 | A000292 |
square_pyramidal(n) |
n(n+1)(2n+1)/6 | A000330 |
centered_polygonal(sides, n) |
sidesn(n-1)/2+1 | (sides=3: A005448, sides=4: A001844, sides=6: A003215) |
All generators require n >= 1. polygonal additionally requires k >= 3. centered_polygonal additionally requires sides >= 3.
Membership
is_triangular, is_square, is_pentagonal, is_hexagonal, is_heptagonal, is_octagonal - test whether an integer belongs to the sequence.
is_polygonal(m, k) - general k-gonal membership test. Requires k >= 3.
is_tetrahedral(m), is_square_pyramidal(m) - pyramidal membership tests (integer cube-root + exact verification).
is_centered_polygonal(sides, m) - centered s-gonal membership test. Requires sides >= 3.
All membership functions use integer arithmetic only (no floats in results).
Inverse lookup
inverse_triangular(m) - returns n such that triangular(n) == m, or None.
inverse_polygonal(m, k) - returns n such that polygonal(n, k) == m, or None. Requires k >= 3.
inverse_tetrahedral(m) - returns n such that tetrahedral(n) == m, or None.
inverse_square_pyramidal(m) - returns n such that square_pyramidal(n) == m, or None.
Development
uv venv .venv
uv pip install -e ".[dev]"
pytest
ruff check .
mypy src
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file figurate_numbers-0.2.0.tar.gz.
File metadata
- Download URL: figurate_numbers-0.2.0.tar.gz
- Upload date:
- Size: 814.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef12ad8da2b1231ed69991f3dc339ac816935aa03f64f7cf4c048a2c090f5994
|
|
| MD5 |
a8210fad79b0a2c3e5263054b6eb9a98
|
|
| BLAKE2b-256 |
494cd44410de279b9bb2e8bdf479dd31d86d45a7c5194d526b4ddf6c5a72bebf
|
File details
Details for the file figurate_numbers-0.2.0-py3-none-any.whl.
File metadata
- Download URL: figurate_numbers-0.2.0-py3-none-any.whl
- Upload date:
- Size: 7.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c652215cfadc1bfdc2c73ed28fd1467054b4a3e04e52451e92babf5374c00209
|
|
| MD5 |
fb98adbc446d5984d1556dfc7b5b1ea8
|
|
| BLAKE2b-256 |
9c96e1f8843cd0d5fe49d35c2dca43ee6278490ce9c2162d43978da04da98838
|