continued_fractions 2.0.1 → 2.1.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 +2 -3
  3. data/lib/continued_fractions.rb +24 -9
  4. metadata +21 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3fc86b49a35fff8bfffba3ee95a21ee8f2c09e30e4bba04a25aac57a49cacfef
4
- data.tar.gz: 27b47d0bd7c4e75bb89741bf383dad99c2bd5f4919d7fb5c47936f8de442e175
3
+ metadata.gz: 0dc6cd2a45f726fa6342ebf0efb882e1987e809bdf5527423e824dff1d20e4c2
4
+ data.tar.gz: c9c654e3bc9de045ceab233afabd54c716e576e968edbaddd020c225104efda6
5
5
  SHA512:
6
- metadata.gz: e915584d227d3fd295ff5ad5a09a11e0dbfa1073e61761d5edcb6ab229a6b7b3b855260265fcb816c5847e4304c2463b85927b9bfb2a7ac3076b4bd8dd75b778
7
- data.tar.gz: 1756e4b64ad3a71db1852db5c8faa6a42cbc99f0223a771e870cc19ec1f2135f0eafd5d1ad35f4235c8f56696f45cd6e27c818696392441ae10f4dae716ac0d2
6
+ metadata.gz: 718056486dce496d4ba77442b501885f870a030e03cf4c4e86c682ff9000fae47f942f72b6df32991ba32c292339087f1df8f05feb42378442d66b7d21fb4b2f
7
+ data.tar.gz: a0f29e4141936a1187babdb6b44f9eb712e8f04499e3b82e569321cf96f8cefa034bc5d10d7d1fc5df086b8804ca911e1ace9ffebd332496dbfcc92947766fbc
data/README.md CHANGED
@@ -18,16 +18,15 @@ Generates quotients and convergents for a given number.
18
18
 
19
19
  cf.convergents
20
20
  => [(3/1), (22/7), (333/106), (355/113), (103993/33102), (104348/33215), (208341/66317), (312689/99532), (833719/265381), (1146408/364913)]
21
-
22
- cf.convergent(1)
23
- => (22/7)
24
21
 
25
22
  cf.quotients
26
23
  => [3, 7, 15, 1, 292, 1, 1, 1, 2, 1]
27
24
 
28
25
  # Add, subtract, multiply and divide continued fractions. The limit of the result is the max limit of the operands.
26
+
29
27
  cf2 = ContinuedFraction.new(rand,20)
30
28
  => 0.9465929215086878, quotients: [0, 1, 17, 1, 2, 1, 1, 1, 1, 1, 41, 1, 1, 2, 22, 1, 1, 11, 1, 3], convergents: [(0/1), (1/1), (17/18), (18/19), (53/56), (71/75), (124/131), (195/206), (319/337), (514/543), (21393/22600), (21907/23143), (43300/45743), (108507/114629), (2430454/2567581), (2538961/2682210), (4969415/5249791), (57202526/60429911), (62171941/65679702), (243718349/257469017)]
29
+
31
30
  cf + cf2
32
31
  => 4.088185575098481, quotients: [4, 11, 2, 1, 16, 1, 2, 1, 1, 1, 1, 25, 7, 1, 3, 1, 3], convergents: [(4/1), (45/11), (94/23), (139/34), (2318/567), (2457/601), (7232/1769), (9689/2370), (16921/4139), (26610/6509), (43531/10648), (1114885/272709), (7847726/1919611), (8962611/2192320), (34735559/8496571), (43698170/10688891), (165830069/40563244)]
33
32
 
@@ -6,15 +6,6 @@ require 'continued_fractions/include'
6
6
  #
7
7
  # @author Jose Hales-Garcia
8
8
  #
9
- # @attr_reader number [Numeric]
10
- # The number who's continued fraction is being calculated
11
- # @attr_reader quotients [Array]
12
- # The array of quotients of the continued fraction
13
- # @attr_reader convergents [Array]
14
- # The convergents of the continued fraction
15
- # @attr_reader limit [Integer]
16
- # The limit to calculate. Practical for real numbers, although they're limited by the system.
17
- #
18
9
  class ContinuedFraction
19
10
  include Comparable
20
11
 
@@ -71,6 +62,30 @@ class ContinuedFraction
71
62
  end
72
63
  end
73
64
 
65
+ # @return [ContinuedFraction] the result from the provided array of quotients
66
+ # @example
67
+ # ContinuedFraction.from_quotients(2, 1, 2, 1, 1, 4, 1, 1, 6, 1, 1, 8, 1, 1, 10)
68
+ # => 2.7182818284454013, quotients: [2, 1, 2, 1, 1, 4, 1, 1, 6, 1, 1, 8, 1, 1, 9], convergents: [(2/1), (3/1), (8/3), (11/4), (19/7), (87/32), (106/39), (193/71), (1264/465), (1457/536), (2721/1001), (23225/8544), (25946/9545), (49171/18089), (468485/172346)]
69
+ # @param quotients [Array] or comma separated list of quotients
70
+ #
71
+ def self.from_quotients(*quotients)
72
+ quotients = quotients.flatten
73
+ return quotients.first if quotients.size == 1
74
+
75
+ p_minus_2, p_minus_1 = 0, 1
76
+ q_minus_2, q_minus_1 = 1, 0
77
+
78
+ quotients.each do |quotient|
79
+ p = quotient * p_minus_1 + p_minus_2
80
+ q = quotient * q_minus_1 + q_minus_2
81
+
82
+ p_minus_2, p_minus_1 = p_minus_1, p
83
+ q_minus_2, q_minus_1 = q_minus_1, q
84
+ end
85
+
86
+ ContinuedFraction.new((p_minus_1.to_r / q_minus_1).to_f, quotients.length)
87
+ end
88
+
74
89
  def <=>(other)
75
90
  number <=> other.number
76
91
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: continued_fractions
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jose Hales-Garcia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-12-06 00:00:00.000000000 Z
11
+ date: 2023-12-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -38,14 +38,25 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '11.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: yard
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.9'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.9'
41
55
  description: Class for working with continued fractions
42
56
  email: jose@halesgarcia.com
43
57
  executables: []
44
58
  extensions: []
45
- extra_rdoc_files:
46
- - LICENSE
47
- - README.md
48
- - lib/continued_fractions.rb
59
+ extra_rdoc_files: []
49
60
  files:
50
61
  - LICENSE
51
62
  - README.md
@@ -56,13 +67,9 @@ licenses:
56
67
  - MIT
57
68
  metadata:
58
69
  source_code_uri: https://github.com/jolohaga/continued_fractions
70
+ documentation_uri: https://jolohaga.github.io/continued_fractions
59
71
  post_install_message:
60
- rdoc_options:
61
- - "--line-numbers"
62
- - "--title"
63
- - continued_fractions
64
- - "--main"
65
- - README.md
72
+ rdoc_options: []
66
73
  require_paths:
67
74
  - lib
68
75
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -74,9 +81,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
81
  requirements:
75
82
  - - ">="
76
83
  - !ruby/object:Gem::Version
77
- version: '1.2'
84
+ version: '3.1'
78
85
  requirements: []
79
- rubygems_version: 3.4.22
86
+ rubygems_version: 3.5.1
80
87
  signing_key:
81
88
  specification_version: 4
82
89
  summary: Generate continued fractions