Skip to content

Generates infinite sequences of plane, space, and multidimensional figurate numbers based on the book ‘Figurate Numbers’ (2012) by Elena Deza and Michel Deza. The methods are implemented using the Enumerator class and are designed for use in Sonic Pi.

License

Notifications You must be signed in to change notification settings

edelveart/figurate_numbers_sonic_pi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Figurate Numbers

Gem Version

figurate_numbers is a Ruby module that implements 151 infinite number sequences based on the formulas from the wonderful book

Figurate Numbers (2012) by Elena Deza and Michel Deza.

This implementation uses the Enumerator class to deal with INFINITE SEQUENCES.

Following the order of the book, the methods are divided into 3 types according to the spatial dimension (see complete list below):

  1. Plane figurate numbers implemented = 74
  2. Space figurate numbers implemented = 42
  3. Multidimensional figurate numbers implemented = 29

Additionally we have the sequences mentioned in chapter 6:

  1. Zoo of figurate-related numbers implemented = 6
  • TOTAL = 151 infinite sequences of figurate numbers implemented

Installation and use

  • gem install figurate_numbers

How to use in Ruby

If the sequence is defined with lazy, to make the numbers explicit we must include the converter method to_a at the end.

require 'figurate_numbers'

## Using take(integer)
FigurateNumbers.pronic_numbers.take(10).to_a

## Storing and iterating
f = FigurateNumbers.centered_octagonal_pyramid_numbers
f.next
f.next
f.next

How to use in Sonic Pi

  1. Locate or download the file in the path lib/figurate_numbers.rb
  2. Drag the file to a buffer in Sonic Pi (this generates the <PATH>)
run_file "<PATH>"

pol_num = FigurateNumbers.polygonal_numbers(8)
80.times do
  play pol_num.next % 12 * 7  # Some mathematical function or transformation
  sleep 0.25
end

List of implemented sequences

1. Plane Figurate Numbers

  1. polygonal_numbers(m)
  2. triangular_numbers
  3. square_numbers
  4. pentagonal_numbers
  5. hexagonal_numbers
  6. heptagonal_numbers
  7. octagonal_numbers
  8. nonagonal_numbers
  9. decagonal_numbers
  10. hendecagonal_numbers
  11. dodecagonal_numbers
  12. tridecagonal_numbers
  13. tetradecagonal_numbers
  14. pentadecagonal_numbers
  15. hexadecagonal_numbers
  16. heptadecagonal_numbers
  17. octadecagonal_numbers
  18. nonadecagonal_numbers
  19. icosagonal_numbers
  20. icosihenagonal_numbers
  21. icosidigonal_numbers
  22. icositrigonal_numbers
  23. icositetragonal_numbers
  24. icosipentagonal_numbers
  25. icosihexagonal_numbers
  26. icosiheptagonal_numbers
  27. icosioctagonal_numbers
  28. icosinonagonal_numbers
  29. triacontagonal_numbers
  30. centered_triangular_numbers
  31. centered_square_numbers
  32. centered_pentagonal_numbers
  33. centered_hexagonal_numbers
  34. centered_heptagonal_numbers
  35. centered_octagonal_numbers
  36. centered_nonagonal_numbers
  37. centered_decagonal_numbers
  38. centered_hendecagonal_numbers
  39. centered_dodecagonal_numbers = star numbers (equality only by quantity)
  40. star_numbers
  41. centered_tridecagonal_numbers
  42. centered_tetradecagonal_numbers
  43. centered_pentadecagonal_numbers
  44. centered_hexadecagonal_numbers
  45. centered_heptadecagonal_numbers
  46. centered_octadecagonal_numbers
  47. centered_nonadecagonal_numbers
  48. centered_icosagonal_numbers
  49. centered_icosihenagonal_numbers
  50. centered_icosidigonal_numbers
  51. centered_icositrigonal_numbers
  52. centered_icositetragonal_numbers
  53. centered_icosipentagonal_numbers
  54. centered_icosihexagonal_numbers
  55. centered_icosiheptagonal_numbers
  56. centered_icosioctagonal_numbers
  57. centered_icosinonagonal_numbers
  58. centered_triacontagonal_numbers
  59. centered_mgonal_numbers(m)
  60. pronic_numbers
  61. cross_numbers
  62. aztec_diamond_numbers
  63. polygram_numbers(m) = centered star polygonal numbers
  64. centered_star_polygonal_numbers(m)
  65. gnomic_numbers
  66. truncated_triangular_numbers
  67. truncated_square_numbers
  68. truncated_pronic_numbers
  69. truncated_center_pol_numbers(k)
  70. truncated_centered_triangular_numbers
  71. truncated_centered_square_numbers
  72. truncated_centered_pentagonal_numbers
  73. truncated_centered_hexagonal_numbers
  74. generalized_mgonal_numbers(m, left_index = 0)
  75. generalized_centered_pol_numbers(m, left_index = 0)
  76. generalized_pronic_numbers(left_index = 0)

2. Space Figurate Numbers

  1. r_pyramidal_numbers(r)
  2. cubic_numbers = hex pyramidal numbers (equality only by quantity)
  3. tetrahedral_numbers
  4. octahedral_numbers
  5. dodecahedral_numbers
  6. icosahedral_numbers
  7. truncated_tetrahedral_numbers
  8. truncated_cubic_numbers
  9. truncated_octahedral_numbers
  10. stella_octangula_numbers
  11. centered_cube_numbers
  12. rhombic_dodecahedral_numbers
  13. hauy_rhombic_dodecahedral_numbers
  14. centered_tetrahedral_numbers
  15. centered_square_pyramid_numbers
  16. centered_pentagonal_pyramid_numbers = centered octahedron numbers (equality only in quantity)
  17. centered_hexagonal_pyramid_numbers
  18. centered_heptagonal_pyramid_numbers
  19. centered_octagonal_pyramid_numbers
  20. centered_octahedron_numbers
  21. centered_icosahedron_numbers = centered cuboctahedron numbers
  22. centered_cuboctahedron_numbers
  23. centered_dodecahedron_numbers
  24. centered_truncated_tetrahedron_numbers
  25. centered_truncated_cube_numbers
  26. centered_truncated_octahedron_numbers
  27. centered_mgonal_pyramid_numbers(m)
  28. centered_triangular_pyramidal_numbers
  29. centered_square_pyramidal_numbers
  30. centered_pentagonal_pyramidal_numbers
  31. centered_hexagonal_pyramidal_numbers = hex_pyramidal_numbers
  32. hex_pyramidal_numbers
  33. centered_mgonal_pyramidal_numbers(m)
  34. hexagonal_prism_numbers
  35. mgonal_prism_numbers(m)
  36. generalized_mgonal_pyramidal_numbers(m, left_index = 0)
  37. generalized_cubic_numbers(left_index = 0)
  38. generalized_octahedral_numbers(left_index = 0)
  39. generalized_icosahedral_numbers(left_index = 0)
  40. generalized_dodecahedral_numbers(left_index = 0)
  41. generalized_centered_cube_numbers(left_index = 0)
  42. generalized_centered_tetrahedron_numbers(left_index = 0)
  43. generalized_centered_square_pyramid_numbers(left_index = 0)
  44. generalized_rhombic_dodecahedral_numbers(left_index = 0)
  45. generalized_centered_mgonal_pyramidal_numbers(m, left_index = 0)
  46. generalized_hexagonal_prism_numbers(left_index = 0)

3. Multidimensional figurate numbers

  1. pentatope_numbers = hypertetrahedral_number = triangulotriangular_number
  2. hypertetrahedral_number
  3. triangulotriangular_number
  4. k_dimensional_hypertetrahedron_numbers(k) = k hypertetrahedron numbers = regular k-polytopic number = figurate number of order k = k-simplex numbers
  5. k_hypertetrahedron_numbers(k)
  6. regular_k_polytopic_numbers(k)
  7. figurate_number_of_order_k(k)
  8. five_dimensional_hypertetrahedron_numbers
  9. six_dimensional_hypertetrahedron_numbers
  10. biquadratic_numbers
  11. k_dimensional_hypercube_numbers(k) = k-measure polytope numbers
  12. five_dimensional_hypercube_numbers
  13. six_dimensional_hypercube_numbers
  14. hyperoctahedral_numbers = 4D hyperoctahedron numbers = hexadecachoron_numbers = four_cross_polytope_numbers = four_orthoplex_numbers
  15. hexadecachoron_numbers
  16. four_cross_polytope_numbers
  17. four_orthoplex_numbers
  18. hypericosahedral_numbers = tetraplex numbers = polytetrahedron numbers
  19. tetraplex_numbers
  20. polytetrahedron_numbers
  21. hexacosichoron_numbers
  22. hyperdodecahedral_numbers = hecatonicosachoron_numbers = dodecaplex numbers = polydodecahedron numbers
  23. hecatonicosachoron_numbers
  24. dodecaplex_numbers
  25. polydodecahedron_numbers,
  26. polyoctahedral_numbers = icositetrachoron numbers = octaplex numbers = hyperdiamond numbers
  27. icositetrachoron_numbers
  28. octaplex_numbers
  29. hyperdiamond_numbers
  30. four_dimensional_hyperoctahedron_numbers
  31. five_dimensional_hyperoctahedron_numbers
  32. six_dimensional_hyperoctahedron_numbers
  33. seven_dimensional_hyperoctahedron_numbers
  34. eight_dimensional_hyperoctahedron_numbers
  35. nine_dimensional_hyperoctahedron_numbers
  36. ten_dimensional_hyperoctahedron_numbers
  37. k_dimensional_hyperoctahedron_numbers(k) = k-cross polytope numbers
  38. k_cross_polytope_numbers(k)
  39. four_dimensional_mgonal_pyramidal_numbers(m) = mgonal pyramidal number of the second order
  40. mgonal_pyramidal_number_of_the_second_order(m)
  41. four_dimensional_square_pyramidal_numbers
  42. four_dimensional_pentagonal_pyramidal_numbers
  43. four_dimensional_hexagonal_pyramidal_numbers
  44. four_dimensional_heptagonal_pyramidal_numbers
  45. four_dimensional_octagonal_pyramidal_numbers
  46. four_dimensional_nonagonal_pyramidal_numbers
  47. four_dimensional_decagonal_pyramidal_numbers
  48. four_dimensional_hendecagonal_pyramidal_numbers
  49. four_dimensional_dodecagonal_pyramidal_numbers
  50. five_dimensional_mgonal_pyramidal_numbers(m)
  51. six_dimensional_mgonal_pyramidal_numbers(m)
  52. k_dimensional_mgonal_pyramidal_numbers(k, m) = mgonal pyramidal of the (k-2)-th order
  53. mgonal_pyramidal_number_of_the_k_2_th_order(k, m)
  54. centered_biquadratic_numbers
  55. k_dimensional_centered_hypercube_numbers(k)
  56. five_dimensional_centered_hypercube_numbers
  57. six_dimensional_centered_hypercube_numbers
  58. centered_polytope_numbers
  59. k_dimensional_centered_hypertetrahedron_numbers(k)
  60. five_dimensional_centered_hypertetrahedron_numbers(k)
  61. six_dimensional_centered_hypertetrahedron_numbers(k)
  62. centered_hyperotahedral_numbers = orthoplex numbers
  63. orthoplex numbers
  64. nexus_numbers(k)
  65. k_dimensional_centered_hyperoctahedron_numbers(k)
  66. five_dimensional_centered_hyperoctahedron_numbers(k)
  67. six_dimensional_centered_hyperoctahedron_numbers(k)
  68. generalized_pentatope_numbers(left_index = 0)
  69. generalized_k_dimensional_hypertetrahedron_numbers(k = 5, left_index = 0)
  70. generalized_k_dimensional_hypercube_numbers(k = 5, left_index = 0)
  71. generalized_k_dimensional_hyperoctahedron_numbers(k = 5, left_index = 0) = even or odd dimension only changes sign
  72. generalized_nexus_numbers(k, left_index = 0) = even or odd dimension only changes sign

6. Zoo of figurate-related numbers

  1. cuban_numbers = cuban prime numbers
  2. quartan_numbers = Needs to improve the algorithmic complexity for n > 70
  3. pell_numbers
  4. carmichael_numbers = Needs to improve the algorithmic complexity for n > 20
  5. stern_prime_numbers(infty = false) = Quick calculations up to 8 terms.
  6. apocalyptic_numbers

Errata

  • Chapter 1, formula in the table on page 6 says:

    Name Formula
    Square 1/2 (n^2 - 0 * n)

    It should be:

    Name Formula
    Square 1/2 (2n^2 - 0 * n)
  • Chapter 1, formula in the table on page 51 says:

    Name Formula
    Cent. icosihexagonal 1/3n^2 - 13 * n + 1 546, 728, 936, 1170

    It should be:

    Name Formula
    Cent. icosihexagonal 1/3n^2 - 13 * n + 1 547, 729, 937, 1171
  • Chapter 1, formula in the table on page 51 says:

    Name Formula
    Cent. icosiheptagonal 972

    It should be:

    Name Formula
    Cent. icosiheptagonal 973
  • Chapter 1, formula in the table on page 51 says:

    Name Formula
    Cent. icosioctagonal 84

    It should be:

    Name Formula
    Cent. icosioctagonal 85
  • Chapter 1, formula (truncated centered pentagonal numbers) of page 72 says:

    TCSS_5(n) = (35n^2 - 55n) / 2 + 3

    It should be:

    TCSS_5(n) = (35n^2 - 55n) / 2 + 11

  • Chapter 2, page 140 says:

    centered square pyramidal numbers are 1, 6, 19, 44, 85, 111, 146, 231, ...

    This sequence must exclude the number 111:

    centered square pyramidal numbers are 1, 6, 19, 44, 85, 111, 146, 231, ...

  • Chapter 2, page 155 (generalized centered tetrahedron numbers) says:

    S_3^3(n) = ((2n - 1)(n^2 + n + 3)) / 3

    Formula must have a negative sign:

    S_3^3(n) = ((2n - 1)(n^2 - n + 3)) / 3

  • Chapter 2, page 156 (generalized centered square pyramid numbers) says:

    S_4^3(n) = ((2n - 1) * (n^2 - n + 2)^2) / 3

    Formula must write:

    S_4^3(n) = ((2n - 1) * (n^2 - n + 2)) / 2

  • Chapter 3, page 188 (hyperoctahedral numbers) says:

    hexadecahoron numbers

    It should read:

    hexadecachoron numbers

  • Chapter 3, page 190 (hypericosahedral numbers) says:

    hexacisihoron numbers

    It should read:

    hexacosichoron numbers

About

Generates infinite sequences of plane, space, and multidimensional figurate numbers based on the book ‘Figurate Numbers’ (2012) by Elena Deza and Michel Deza. The methods are implemented using the Enumerator class and are designed for use in Sonic Pi.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages