figurate_numbers 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +13 -12
  3. data/lib/figurate_numbers.rb +47 -6
  4. metadata +8 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a5641cd56367a1aeafe786f318638aec399ee4d19370ab1438495c5cad50192d
4
- data.tar.gz: 5c3ced655af6fea90399cc5c233780b70a215d704c876acaef9f5dca54508dba
3
+ metadata.gz: 3ce2e9677b127bf7f73fb6776128e8691fa53353495f6ed7fc61e60961f39abb
4
+ data.tar.gz: d0596c55e684e9716c32c6e495c5feef10a4d0d25e91daac7914f49af652561b
5
5
  SHA512:
6
- metadata.gz: 0b5d5c83119c203b0f0fcee6e47ac52b2b1cd4f43cf9518626237e535f6c08f7644021533b0f917d79863416f8fe98665b331445453c185ec3fe935b9fac1b1b
7
- data.tar.gz: '095f5efba3092a8e0168629950742620014a366bbbddc385e55e23c83e1b7dc3388cc03026af15ca66103d1d56acaa1c87fcb90521f014d6e4b62fe173059049'
6
+ metadata.gz: a6b1da7cb33f30eed0179311888195fc837c06e8a419984d38c352e892a71d46724297930810a302edaf3fd699052cd7b8c7e737e5b17e327c81105f28658c92
7
+ data.tar.gz: e3fc3b4415f2576c7222c029d9a030bfa44bf86270700e4022c24ce82fa6e73b541cbfc1ee3eceb415f2186a6dec5bf7954629a3ad14d67f08fd73e9cc511eae
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Figurate Numbers
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/figurate_numbers.svg)](https://badge.fury.io/rb/figurate_numbers)
3
+ ![Gem Version](https://img.shields.io/gem/v/figurate_numbers)
4
+ ![Gem Total Downloads](https://img.shields.io/gem/dt/figurate_numbers)
5
+ ![GitHub License](https://img.shields.io/github/license/edelveart/figurate_numbers)
4
6
 
5
7
  `figurate_numbers` is a Ruby module that implements `239 infinite number sequences` based on the formulas from the wonderful book
6
8
  > [Figurate Numbers (2012)](https://books.google.com.pe/books/about/Figurate_Numbers.html?id=ERS7CgAAQBAJ&redir_esc=y) by Elena Deza and Michel Deza.
@@ -11,10 +13,10 @@ Following the order of the book, the methods are divided into 3 types according
11
13
 
12
14
  1. **Plane** figurate numbers implemented = `79`
13
15
  2. **Space** figurate numbers implemented = `86`
14
- 3. **Multidimensional** figurate numbers implemented = `68`
16
+ 3. **Multidimensional** figurate numbers implemented = `70`
15
17
  4. **Zoo of figurate-related numbers** implemented = `6`
16
18
 
17
- - [x] **TOTAL** = `239` infinite sequences of figurate numbers implemented
19
+ - [x] **TOTAL** = `241` infinite sequences of figurate numbers implemented
18
20
 
19
21
  ## Installation and use
20
22
 
@@ -192,7 +194,7 @@ end
192
194
  <li><code>centered_tetrahedron_numbers = centered_tetrahedral_numbers</code></li>
193
195
  <li><code>centered_square_pyramid_numbers = centered_pyramid_numbers</code></li>
194
196
  <li><code>centered_mgonal_pyramid_numbers(m)</code></li>
195
- <li><code>centered_pentagonal_pyramid_numbers != centered octahedron numbers (equality only in quantity)</code></li>
197
+ <li><code>centered_pentagonal_pyramid_numbers != centered_octahedron_numbers (equality only in quantity)</code></li>
196
198
  <li><code>centered_hexagonal_pyramid_numbers</code></li>
197
199
  <li><code>centered_heptagonal_pyramid_numbers</code></li>
198
200
  <li><code>centered_octagonal_pyramid_numbers</code></li>
@@ -236,8 +238,8 @@ end
236
238
 
237
239
  ### 3. Multidimensional figurate numbers
238
240
  <ol>
239
- <li><code>pentatope_numbers = hypertetrahedral_number = triangulotriangular_number</code></li>
240
- <li><code>k_dimensional_hypertetrahedron_numbers(k) = k_hypertetrahedron_numbers(k) = regular_k_polytopic_numbers(k) = figurate_number_of_order_k(k)</code></li>
241
+ <li><code>pentatope_numbers = hypertetrahedral_numbers = triangulotriangular_numbers</code></li>
242
+ <li><code>k_dimensional_hypertetrahedron_numbers(k) = k_hypertetrahedron_numbers(k) = regular_k_polytopic_numbers(k) = figurate_numbers_of_order_k(k)</code></li>
241
243
  <li><code>five_dimensional_hypertetrahedron_numbers</code></li>
242
244
  <li><code>six_dimensional_hypertetrahedron_numbers</code></li>
243
245
  <li><code>biquadratic_numbers</code></li>
@@ -258,7 +260,7 @@ end
258
260
  <li><code>ten_dimensional_hyperoctahedron_numbers</code></li>
259
261
  <li><code>k_dimensional_hyperoctahedron_numbers(k) = k_cross_polytope_numbers(k)</code></li>
260
262
 
261
- <li><code>four_dimensional_mgonal_pyramidal_numbers(m) = mgonal_pyramidal_number_of_the_second_order(m)</code></li>
263
+ <li><code>four_dimensional_mgonal_pyramidal_numbers(m) = mgonal_pyramidal_numbers_of_the_second_order(m)</code></li>
262
264
  <li><code>four_dimensional_square_pyramidal_numbers</code></li>
263
265
  <li><code>four_dimensional_pentagonal_pyramidal_numbers</code></li>
264
266
  <li><code>four_dimensional_hexagonal_pyramidal_numbers</code></li>
@@ -269,8 +271,8 @@ end
269
271
  <li><code>four_dimensional_hendecagonal_pyramidal_numbers</code></li>
270
272
  <li><code>four_dimensional_dodecagonal_pyramidal_numbers</code></li>
271
273
 
272
- <li><code>k_dimensional_mgonal_pyramidal_numbers(k, m) = mgonal_pyramidal_number_of_the_k_2_th_order(k, m)</code></li>
273
- <li><code>five_dimensional_mgonal_pyramidal_numbers</code></li>
274
+ <li><code>k_dimensional_mgonal_pyramidal_numbers(k, m) = mgonal_pyramidal_numbers_of_the_k_2_th_order(k, m)</code></li>
275
+ <li><code>five_dimensional_mgonal_pyramidal_numbers(m)</code></li>
274
276
  <li><code>five_dimensional_square_pyramidal_numbers</code></li>
275
277
  <li><code>five_dimensional_pentagonal_pyramidal_numbers</code></li>
276
278
  <li><code>five_dimensional_hexagonal_pyramidal_numbers</code></li>
@@ -309,9 +311,8 @@ end
309
311
  <li><code>generalized_k_dimensional_mgonal_pyramidal_numbers(k, m, left_index = 0)</code></li>
310
312
  <li><code>generalized_k_dimensional_centered_hypercube_numbers(k, left_index = 0)</code></li>
311
313
 
312
- <!-- * Problems with math definition via binomial coeff in helper functions, n < 0 -->
313
- <!-- <li><code>generalized_k_dimensional_centered_hypertetrahedron_numbers(k, left_index = 0)</code></li>
314
- <li><code>generalized_k_dimensional_centered_hyperoctahedron_numbers(k, left_index = 0)</code></li> -->
314
+ <li><code>generalized_k_dimensional_centered_hypertetrahedron_numbers(k, left_index = 0)[provisional symmetry]</code></li>
315
+ <li><code>generalized_k_dimensional_centered_hyperoctahedron_numbers(k, left_index = 0)[provisional symmetry]</code></li>
315
316
 
316
317
  <li><code>generalized_nexus_numbers(k, left_index = 0) [even or odd dimension only changes sign]</code></li>
317
318
  </ol>
@@ -1367,8 +1367,8 @@ module FigurateNumbers
1367
1367
  end
1368
1368
  end
1369
1369
 
1370
- alias_method :hypertetrahedral_number, :pentatope_numbers
1371
- alias_method :triangulotriangular_number, :pentatope_numbers
1370
+ alias_method :hypertetrahedral_numbers, :pentatope_numbers
1371
+ alias_method :triangulotriangular_numbers, :pentatope_numbers
1372
1372
 
1373
1373
  def rising_factorial(n, k)
1374
1374
  t = 1
@@ -1388,7 +1388,7 @@ module FigurateNumbers
1388
1388
 
1389
1389
  alias_method :k_hypertetrahedron_numbers, :k_dimensional_hypertetrahedron_numbers
1390
1390
  alias_method :regular_k_polytopic_numbers, :k_dimensional_hypertetrahedron_numbers
1391
- alias_method :figurate_number_of_order_k, :k_dimensional_hypertetrahedron_numbers
1391
+ alias_method :figurate_numbers_of_order_k, :k_dimensional_hypertetrahedron_numbers
1392
1392
 
1393
1393
 
1394
1394
  def five_dimensional_hypertetrahedron_numbers
@@ -1575,7 +1575,7 @@ module FigurateNumbers
1575
1575
  end
1576
1576
  end
1577
1577
 
1578
- alias_method :mgonal_pyramidal_number_of_the_second_order, :four_dimensional_mgonal_pyramidal_numbers
1578
+ alias_method :mgonal_pyramidal_numbers_of_the_second_order, :four_dimensional_mgonal_pyramidal_numbers
1579
1579
 
1580
1580
  def four_dimensional_square_pyramidal_numbers
1581
1581
  Enumerator.new do |y|
@@ -1673,7 +1673,7 @@ module FigurateNumbers
1673
1673
  end
1674
1674
  end
1675
1675
 
1676
- alias_method :mgonal_pyramidal_number_of_the_k_2_th_order, :k_dimensional_mgonal_pyramidal_numbers
1676
+ alias_method :mgonal_pyramidal_numbers_of_the_k_2_th_order, :k_dimensional_mgonal_pyramidal_numbers
1677
1677
 
1678
1678
  def five_dimensional_mgonal_pyramidal_numbers(m)
1679
1679
  Enumerator.new do |y|
@@ -1909,7 +1909,6 @@ module FigurateNumbers
1909
1909
 
1910
1910
  def ext_int_double_summation(k, n)
1911
1911
  t = ((2**(1)) * binomial_coefficient(k, 1) * binomial_coefficient(1, 0))
1912
- return (t + 1) if n == 1
1913
1912
  a = 0
1914
1913
  (1..(n - 1)).each do |j|
1915
1914
  (0..(k - 1)).each do |i|
@@ -2041,6 +2040,48 @@ module FigurateNumbers
2041
2040
  end
2042
2041
  end
2043
2042
 
2043
+ def gen_acc_helper_centered_hypertetrahedron(k, n)
2044
+ a = 0
2045
+ (1..n.abs).each do |j|
2046
+ a += helper_centered_hypertetrahedron(k, j)
2047
+ end
2048
+ n > 0 ? a : -a
2049
+ end
2050
+
2051
+ private_class_method :gen_acc_helper_centered_hypertetrahedron
2052
+
2053
+ def generalized_k_dimensional_centered_hypertetrahedron_numbers(k, left_index = 0)
2054
+ Enumerator.new do |y|
2055
+ ((-1 * left_index.abs)..Float::INFINITY).each do |n|
2056
+ y << gen_acc_helper_centered_hypertetrahedron(k, n)
2057
+ end
2058
+ end
2059
+ end
2060
+
2061
+ def gen_ext_int_double_summation(k, n)
2062
+ is_positive_n = n
2063
+ n = n.abs
2064
+ t = ((2) * binomial_coefficient(k, 1) * binomial_coefficient(1, 0))
2065
+ a = 0
2066
+ (1..(n - 1)).each do |j|
2067
+ (0..(k - 1)).each do |i|
2068
+ a += (2**(1 + i)) * binomial_coefficient(k, 1 + i) * binomial_coefficient(j, i)
2069
+ end
2070
+ end
2071
+ is_positive_n > 0 ? (1 + t + a) : (1 + t + a) * -1
2072
+ end
2073
+
2074
+ private_class_method :gen_ext_int_double_summation
2075
+
2076
+ def generalized_k_dimensional_centered_hyperoctahedron_numbers(k, left_index = 0)
2077
+ Enumerator.new do |y|
2078
+ ((-1 * left_index.abs)..Float::INFINITY).each do |n|
2079
+ y << 1 if n == 1
2080
+ y << gen_ext_int_double_summation(k, n) if n != 0
2081
+ end
2082
+ end
2083
+ end
2084
+
2044
2085
  def generalized_nexus_numbers(k, left_index = 0)
2045
2086
  Enumerator.new do |y|
2046
2087
  ((-1 * left_index.abs)..Float::INFINITY).each do |delta|
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: figurate_numbers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Edgar Armando Delgado Vega
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-07-08 00:00:00.000000000 Z
11
+ date: 2024-07-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: Generates 239 infinite sequences of plane, space, and multidimensional
13
+ description: Generates 241 infinite sequences of plane, space, and multidimensional
14
14
  figurate numbers based on the book ‘Figurate Numbers’ (2012) by Elena Deza and Michel
15
15
  Deza. The methods are implemented using the Enumerator class and are designed for
16
16
  use in your math projects or in Sonic Pi.
@@ -23,13 +23,13 @@ extra_rdoc_files:
23
23
  files:
24
24
  - README.md
25
25
  - lib/figurate_numbers.rb
26
- homepage: https://github.com/edelveart/figurate_numbers_sonic_pi
26
+ homepage: https://github.com/edelveart/figurate_numbers
27
27
  licenses:
28
28
  - MIT
29
29
  metadata:
30
30
  documentation_uri: https://www.rubydoc.info/gems/figurate_numbers
31
- source_code_uri: https://github.com/edelveart/figurate_numbers_sonic_pi
32
- homepage_uri: https://github.com/edelveart/figurate_numbers_sonic_pi
31
+ source_code_uri: https://github.com/edelveart/figurate_numbers
32
+ homepage_uri: https://github.com/edelveart/figurate_numbers
33
33
  post_install_message:
34
34
  rdoc_options:
35
35
  - "--main"
@@ -53,6 +53,6 @@ requirements: []
53
53
  rubygems_version: 3.3.7
54
54
  signing_key:
55
55
  specification_version: 4
56
- summary: Generates 239 infinite sequences of plane, space, and multidimensional figurate
57
- numbers based on the book ‘Figurate Numbers’ (2012) by Elena Deza and Michel Deza.
56
+ summary: Generates 241 infinite sequences of plane, space, and multidimensional figurate
57
+ numbers
58
58
  test_files: []