modular_forms 0.0.3 → 0.0.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f9b49161da093d436c9afd089b0d2935a43fafb71d1b1eece1af75cc3ef08833
4
- data.tar.gz: 54672d7ef27bc439d12747a919a024e9c9fa58d76a3d4b3ae1fa3f807226be6b
3
+ metadata.gz: 1e77e70af5b9ca9fa2bcc7543c8eaa45ac1603bf168d0fd2c9fa73aa639836de
4
+ data.tar.gz: 2df87ac5d2f7c6c950fb5312226422dc146a180e250ca3ce2e31abbb100a18d2
5
5
  SHA512:
6
- metadata.gz: d8ad361a6edc83f140ac815bb4b04a6a627100204f523e2192edfaa4cdc8e7b1022cd1c4e6651526582d287818231193d546dd2fb99b859d39401cb5002b3861
7
- data.tar.gz: 2a7223689108395ebc2f389d1e1ae9b6e61a5165e9da9885624b7758500131ca01f983c433dc045928c433608d773b6ea22410d2196b43b2261cb88c40933b27
6
+ metadata.gz: 90ec48ab7fad347c8ab257bdc65f71d21f34c2dfc50822695d178f6babc624358477d448bb947fc681e6767ece07a8b1cb8c168fe0f6ca364a2a33a03d288b59
7
+ data.tar.gz: ee4e8a42d6b2953c8de928d6582d487447364847e455f7ae74a2a5e3a1d96d597fdc95cb8e7bcdba4121cf9decca5c1ee0e960528fa5173ece1dba0f5a474235
data/README.md CHANGED
@@ -42,6 +42,7 @@ Given the vastness of the field, this tool intentionally focuses on a limited su
42
42
  - [Newform Invariants](#newform-invariants)
43
43
  - [L-functions](#l-functions)
44
44
  - [p-adic Fields](#p-adic-fields)
45
+ - [Number Fields](#number-fields)
45
46
 
46
47
  ### Not Optimized for Computational Efficiency
47
48
 
@@ -122,17 +123,29 @@ Unlike the structured Fermat example, this finite loop explores more abstract te
122
123
  ```rb
123
124
  require "<PATH>/modular_forms.rb"
124
125
 
125
- eisenstein_melody = ModularForms.eisenstein_series(8)
126
126
  p = 3
127
- ellc = ModularForms.elliptic_curve_q([2, 5])
128
- disc = ModularForms.discriminant_q(ellc)
127
+ eisenstein_melody = ModularForms.eisenstein_series(8)
129
128
  e8 = eisenstein_melody.take(58)
130
129
  hecke_op = ModularForms.hecke_operator_prime_non_cusp(e8, p, 8, 20)
130
+
131
+ ellc = ModularForms.elliptic_curve_q([2, 5])
132
+ disc = ModularForms.discriminant_q(ellc)
133
+
131
134
  j_func = ModularForms.j_function(40)
132
135
  newform_ac = ModularForms.analytic_conductor(15, 2)
133
136
  pol = ModularForms.def_pol_2deg(41)
134
137
 
138
+ x = 7
139
+ dirichlet_char_group = []
140
+ (1..x).each do |i|
141
+ dirichlet_char_group << ModularForms.conrey_p_pminus1(x, i)
142
+ end
143
+
135
144
  (disc * -1).times do
145
+ synth :zawa,
146
+ note: ModularForms.zeta_coeffs_deg2(dirichlet_char_group, 30)
147
+ .tick(:zeta) + 72, amp: rrand(0.3, 0.6)
148
+
136
149
  synth :subpulse, note: ModularForms.padic_valuation(eisenstein_melody.next, p) % 7 + 70,
137
150
  release: 0.25 if (spread (disc % 6), 7).tick(:d)
138
151
 
@@ -243,6 +256,10 @@ end
243
256
  49. `ModularForms.padic_expansion(num_b10, p, prec = 11, reverse_trim = false)`
244
257
  50. `ModularForms.def_pol_2deg(p = 2, c = 0, num = 1)`
245
258
 
259
+ ### Number Fields
260
+
261
+ 51. `ModularForms.zeta_coeffs_deg2(dirichlet_char_group, n)`
262
+
246
263
  ## 🧪 Testing
247
264
 
248
265
  Install dependencies first:
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ModularForms
4
+ module Core
5
+ # ModularForms::Core::NumberFields
6
+ #
7
+ # This module provides methods and objects related to number fields,
8
+ # such as zeta_coefficients and utility helpers.
9
+ module NumberFields
10
+ def self.fill_arr_with_interval(length, num, interval)
11
+ arr = Array.new(length, 0)
12
+ (interval - 1).step(length - 1, interval) do |i|
13
+ arr[i] = num
14
+ end
15
+ arr
16
+ end
17
+
18
+ def self.zeta_coeffs_deg2(dirichlet_char_group, num_coeffs)
19
+ ded_zeta_to_dir_serie = []
20
+ dirichlet_char_group.each_with_index do |i, j|
21
+ a = 1
22
+ while a <= num_coeffs
23
+ ded_zeta_to_dir_serie << fill_arr_with_interval(num_coeffs, i, j + a)
24
+ a += dirichlet_char_group.length
25
+ end
26
+ end
27
+ ded_zeta_to_dir_serie.transpose.map { |component| component.sum } # rubocop:disable Style/SymbolProc
28
+ end
29
+ end
30
+ end
31
+ end
@@ -13,3 +13,4 @@ require_relative 'core/dirichlet_characters'
13
13
  require_relative 'core/newform_invariants'
14
14
  require_relative 'core/l_functions'
15
15
  require_relative 'core/padic_fields'
16
+ require_relative 'core/number_fields'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ModularForms
4
- VERSION = '0.0.3'
4
+ VERSION = '0.0.4'
5
5
  end
data/lib/modular_forms.rb CHANGED
@@ -212,4 +212,8 @@ module ModularForms # rubocop:disable Metrics/ModuleLength
212
212
  def def_pol_2deg(p = 2, c = 0, num = 1)
213
213
  Core::PAdicFields.def_pol_2deg(p, c, num)
214
214
  end
215
+
216
+ def zeta_coeffs_deg2(dirichlet_char_group, n)
217
+ Core::NumberFields.zeta_coeffs_deg2(dirichlet_char_group, n)
218
+ end
215
219
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: modular_forms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Edgar Armando Delgado Vega
@@ -33,6 +33,7 @@ files:
33
33
  - lib/modular_forms/core/klein_j_invariant.rb
34
34
  - lib/modular_forms/core/l_functions.rb
35
35
  - lib/modular_forms/core/newform_invariants.rb
36
+ - lib/modular_forms/core/number_fields.rb
36
37
  - lib/modular_forms/core/numeric_helpers/numeric_helpers.rb
37
38
  - lib/modular_forms/core/padic_fields.rb
38
39
  - lib/modular_forms/core/padic_pol/data_pol_2deg.rb