FigurateNum collects 235 figurate number sequences and their generating functions, based on the book Figurate Numbers by Elena Deza and Michel Marie Deza (2012).
Phase Portraits of Generalized Pronic (2D) and Centered Hypertetrahedron (4D)
ComplexViz plots generating functions as enhanced phase portraits, inspired by Elias Wegert (2012). The graphs are customizable through matplotlib.
# Stable version (only generators)
pip install figuratenum
# Install discrete visualization (includes FigurateViz, requires numpy and matplotlib)
pip install figuratenum[figurate-viz]
# Alpha version (includes full visualization ComplexViz and DiscreteViz, requires numpy, sympy, and matplotlib)
pip install figuratenum[figurate-viz]==3.0.0a0- Access all figurate number sequences via the main
FigurateNumclass. - The package offers specific classes for each dimension:
- Optional visualization with the
ComplexVizandDiscreteVizclasses.
from figuratenum import FigurateNum, MultidimensionalFigurateNum
# Using the main class FigurateNum
seq = FigurateNum().hyperdodecahedral()
print([next(seq) for _ in range(4)])
# [1, 600, 4983, 19468]
# Using the specific class MultidimensionalFigurateNum
seq = MultidimensionalFigurateNum().k_dimensional_centered_hypertetrahedron(21)
print([next(seq) for _ in range(7)])
# [1, 23, 276, 2300, 14950, 80730, 376740]Both classes provide: visualize_plane(), visualize_space(), visualize_multidim().
from figuratenum.figurate_viz import ComplexViz, DiscreteViz
# Phase portrait plots using ComplexViz
c = ComplexViz(plot_type="enhanced_phase_portrait",
poincare_disk=True, num_lines=10)
c.visualize_plane(
"square",
cmap_color="twilight",
poincare_disk_radius=2.0,
show_axes=True, brightness=0.76
)
# Modular plots using DiscreteViz
d = DiscreteViz()
d.visualize_multidim(
"five_dimensional_hyperoctahedron", n_terms=704,
circ_color="m", bg_color="k", num_text=False,
num_color="g", ext_circle=True, rotate=-1, show=True
)Discrete plot of 5D Hyperoctahedron and Phase Portrait of Square Numbers
Show 79 sequences of the PlaneFigurateNum class
polygonaltriangularsquarepentagonalhexagonalheptagonaloctagonalnonagonaldecagonalhendecagonaldodecagonaltridecagonaltetradecagonalpentadecagonalhexadecagonalheptadecagonaloctadecagonalnonadecagonalicosagonalicosihenagonalicosidigonalicositrigonalicositetragonalicosipentagonalicosihexagonalicosiheptagonalicosioctagonalicosinonagonaltriacontagonalcentered_triangularcentered_square=diamondcentered_pentagonalcentered_hexagonalcentered_heptagonalcentered_octagonalcentered_nonagonalcentered_decagonalcentered_hendecagonalcentered_dodecagonal=starcentered_tridecagonalcentered_tetradecagonalcentered_pentadecagonalcentered_hexadecagonalcentered_heptadecagonalcentered_octadecagonalcentered_nonadecagonalcentered_icosagonalcentered_icosihenagonalcentered_icosidigonalcentered_icositrigonalcentered_icositetragonalcentered_icosipentagonalcentered_icosihexagonalcentered_icosiheptagonalcentered_icosioctagonalcentered_icosinonagonalcentered_triacontagonalcentered_mgonal(m)pronic=heteromecic = oblongpoliteimpolitecrossaztec_diamondpolygram(m)=centered_star_polygonal(m)pentagramgnomonictruncated_triangulartruncated_squaretruncated_pronictruncated_centered_pol(m)=truncated_centered_mgonal(m)truncated_centered_triangulartruncated_centered_squaretruncated_centered_pentagonaltruncated_centered_hexagonal=truncated_hexgeneralized_mgonal(m, start_numb)generalized_pentagonal(start_numb)generalized_hexagonal(start_numb)generalized_centered_pol(m, start_numb)generalized_pronic(start_numb)
Show 86 sequences of the SpaceFigurateNum class
m_pyramidal(m)triangular_pyramidalsquare_pyramidal=pyramidalpentagonal_pyramidalhexagonal_pyramidalheptagonal_pyramidaloctagonal_pyramidalnonagonal_pyramidaldecagonal_pyramidalhendecagonal_pyramidaldodecagonal_pyramidaltridecagonal_pyramidaltetradecagonal_pyramidalpentadecagonal_pyramidalhexadecagonal_pyramidalheptadecagonal_pyramidaloctadecagonal_pyramidalnonadecagonal_pyramidalicosagonal_pyramidalicosihenagonal_pyramidalicosidigonal_pyramidalicositrigonal_pyramidalicositetragonal_pyramidalicosipentagonal_pyramidalicosihexagonal_pyramidalicosiheptagonal_pyramidalicosioctagonal_pyramidalicosinonagonal_pyramidaltriacontagonal_pyramidaltriangular_tetrahedral[finite]triangular_square_pyramidal[finite]square_tetrahedral[finite]square_square_pyramidal[finite]tetrahedral_square_pyramidal[finite]cubictetrahedraloctahedraldodecahedralicosahedraltruncated_tetrahedraltruncated_cubictruncated_octahedralstella_octangulacentered_cuberhombic_dodecahedralhauy_rhombic_dodecahedralcentered_tetrahedron=centered_tetrahedralcentered_square_pyramid=centered_pyramidcentered_mgonal_pyramid(m)centered_pentagonal_pyramidcentered_hexagonal_pyramidcentered_heptagonal_pyramidcentered_octagonal_pyramidcentered_octahedroncentered_icosahedron=centered_cuboctahedroncentered_dodecahedroncentered_truncated_tetrahedroncentered_truncated_cubecentered_truncated_octahedroncentered_mgonal_pyramidal(m)centered_triangular_pyramidalcentered_square_pyramidalcentered_pentagonal_pyramidalcentered_heptagonal_pyramidalcentered_octagonal_pyramidalcentered_nonagonal_pyramidalcentered_decagonal_pyramidalcentered_hendecagonal_pyramidalcentered_dodecagonal_pyramidalcentered_hexagonal_pyramidal=hex_pyramidalhexagonal_prismmgonal_prism(m)generalized_mgonal_pyramidal(m, start_num)generalized_pentagonal_pyramidal(start_num)generalized_hexagonal_pyramidal(start_num)generalized_cubic(start_num)generalized_octahedral(start_num)generalized_icosahedral(start_num)generalized_dodecahedral(start_num)generalized_centered_cube(start_num)generalized_centered_tetrahedron(start_num)generalized_centered_square_pyramid(start_num)generalized_rhombic_dodecahedral(start_num)generalized_centered_mgonal_pyramidal(m, start_num)generalized_mgonal_prism(m, start_num)generalized_hexagonal_prism(start_num)
Show 68 sequences of the MultidimensionalFigurateNum class
k_dimensional_hypertetrahedron(k)=k_hypertetrahedron(k)=regular_k_polytopic(k)=figurate_of_order_k(k)five_dimensional_hypertetrahedronsix_dimensional_hypertetrahedronk_dimensional_hypercube(k)=k_hypercube(k)five_dimensional_hypercubesix_dimensional_hypercubehypertetrahedral=pentachoron=pentatope=triangulotriangular=cell_5hypercube=octachoron=tesseract=biquadratic=cell_8hyperoctahedral=hexadecachoron=four_cross_polytope=four_orthoplex=cell_16hypericosahedral=hexacosichoron=polytetrahedron=tetraplex=cell_600hyperdodecahedral=hecatonicosachoron=dodecaplex=polydodecahedron=cell_120polyoctahedral=icositetrachoron=octaplex=hyperdiamond=cell_24four_dimensional_hyperoctahedronfive_dimensional_hyperoctahedronsix_dimensional_hyperoctahedronseven_dimensional_hyperoctahedroneight_dimensional_hyperoctahedronnine_dimensional_hyperoctahedronten_dimensional_hyperoctahedronk_dimensional_hyperoctahedron(k)=k_cross_polytope(k)four_dimensional_mgonal_pyramidal(m)=mgonal_pyramidal_of_the_second_order(m)four_dimensional_square_pyramidalfour_dimensional_pentagonal_pyramidalfour_dimensional_hexagonal_pyramidalfour_dimensional_heptagonal_pyramidalfour_dimensional_octagonal_pyramidalfour_dimensional_nonagonal_pyramidalfour_dimensional_decagonal_pyramidalfour_dimensional_hendecagonal_pyramidalfour_dimensional_dodecagonal_pyramidalk_dimensional_mgonal_pyramidal(k, m)=mgonal_pyramidal_of_the_k_2_th_order(k, m)five_dimensional_mgonal_pyramidal(m)five_dimensional_square_pyramidalfive_dimensional_pentagonal_pyramidalfive_dimensional_hexagonal_pyramidalfive_dimensional_heptagonal_pyramidalfive_dimensional_octagonal_pyramidalsix_dimensional_mgonal_pyramidal(m)six_dimensional_square_pyramidalsix_dimensional_pentagonal_pyramidalsix_dimensional_hexagonal_pyramidalsix_dimensional_heptagonal_pyramidalsix_dimensional_octagonal_pyramidalcentered_biquadratick_dimensional_centered_hypercube(k)five_dimensional_centered_hypercubesix_dimensional_centered_hypercubecentered_polytopek_dimensional_centered_hypertetrahedron(k)five_dimensional_centered_hypertetrahedronsix_dimensional_centered_hypertetrahedroncentered_hyperoctahedral=orthoplexnexus(k)k_dimensional_centered_hyperoctahedron(k)five_dimensional_centered_hyperoctahedronsix_dimensional_centered_hyperoctahedrongeneralized_pentatope(start_num = 0)generalized_k_dimensional_hypertetrahedron(k = 5, start_num = 0)generalized_biquadratic(start_num = 0)generalized_k_dimensional_hypercube(k = 5, start_num = 0)generalized_hyperoctahedral(start_num = 0)generalized_k_dimensional_hyperoctahedron(k = 5, start_num = 0)generalized_hyperdodecahedral(start_num = 0)generalized_hypericosahedral(start_num = 0)generalized_polyoctahedral(start_num = 0)generalized_k_dimensional_mgonal_pyramidal(k, m, start_num = 0)generalized_k_dimensional_centered_hypercube(k, start_num = 0)generalized_nexus(k, start_num = 0)
Show 2 sequences of the ZooFigurateNum class
cuban_primepell
FigurateNum is under active development, and we warmly welcome your contributions. Fork the repository and submit a pull request:
- Add new sequences or improve tests, documentation, and errata (located at
docs/errata/errata-figuratenum.tex). - Follow conventional commit prefixes:
feat,refactor,fix,docs, andtest.
By default, FigurateNum uses optimized, mathematically equivalent versions that are significantly faster, especially for multidimensional figurate numbers. Incremental computation and precomputed values allow step-by-step results without recalculating everything. The original formulas from the book are available via the *_from_book() methods for reference and testing.
🚨 Version 2.0.0 includes renamed methods and changes in class usage. These changes are incompatible with previous versions. Please review the updated usage instructions below to adapt your code to the new structure.
If you use FigurateNum in your research, thesis, or project, please cite it:


