continued_fractions 1.6.1 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/continued_fractions.rb +1 -1
- data/spec/continued_fractions/continued_fraction_spec.rb +16 -50
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6e470cce2d4c42db6d51b74ebb62cd551cf91142e63bd18345bca3b222fc5eb3
|
4
|
+
data.tar.gz: af28baf19c09d53d4143629061266773ef9506f0fb5672acb68d0e2cf7c66f94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14403e28b7828dd596491b97a676ad5bf3a6c2e11bceadcd636cdef637ba6cc6ea6dc5d5c455de15a87bf03f6f2b8d55f7619b7ab73442b4cf7e530f07a0a819
|
7
|
+
data.tar.gz: 2740a521fb624d61b58e9b62e7f3f48bc9b6bc53b58caa65a1a0ef92c7d938e7c6c8f95b099e90ca814cb6e6b4a3a699f591909ef6cb8f3b5831a7f49dd58825
|
data/lib/continued_fractions.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), "/../spec_helper")
|
2
2
|
|
3
3
|
describe ContinuedFraction do
|
4
|
-
let(:cf) { described_class.new(number,10) }
|
4
|
+
let(:cf) { described_class.new(number, 10) }
|
5
5
|
let(:number) { rand }
|
6
6
|
|
7
7
|
describe '#convergents' do
|
@@ -12,7 +12,7 @@ describe ContinuedFraction do
|
|
12
12
|
context 'with irrational numbers' do
|
13
13
|
it "accurately calculates the convergents" do
|
14
14
|
# First 10 convergents of PI are...
|
15
|
-
convs = [
|
15
|
+
convs = [3/1r, 22/7r, 333/106r, 355/113r, 103993/33102r, 104348/33215r, 208341/66317r, 312689/99532r, 833719/265381r, 1146408/364913r]
|
16
16
|
cf = described_class.new(Math::PI,10)
|
17
17
|
expect((cf.convergents_as_rationals - convs)).to be_empty
|
18
18
|
end
|
@@ -38,7 +38,7 @@ describe ContinuedFraction do
|
|
38
38
|
end
|
39
39
|
|
40
40
|
it 'calculates the convergents' do
|
41
|
-
convs = [
|
41
|
+
convs = [ 1/1r, 3/2r ]
|
42
42
|
expect(described_class.new(1.5, 10).convergents_as_rationals - convs).to be_empty
|
43
43
|
end
|
44
44
|
end
|
@@ -51,54 +51,20 @@ describe ContinuedFraction do
|
|
51
51
|
end
|
52
52
|
|
53
53
|
describe 'operators' do
|
54
|
+
let(:cf2) { described_class.new(rand, 20) }
|
55
|
+
|
56
|
+
%i{+ - * /}.each do |op|
|
57
|
+
describe "#{op}" do
|
58
|
+
[3, 3.0, 3/1r, described_class.new(rand, 20)].each do |rhs|
|
59
|
+
it "#{rhs.class.name} operates on the right-hand side and returns a ContinuedFraction" do
|
60
|
+
expect(cf.send(op, rhs)).to be_kind_of(ContinuedFraction)
|
61
|
+
end
|
62
|
+
end
|
54
63
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
end
|
60
|
-
|
61
|
-
describe '+' do
|
62
|
-
it "adds a number on the right-hand-side with a continued fraction and returns a continued fraction" do
|
63
|
-
expect((cf + 3)).to be_kind_of(ContinuedFraction)
|
64
|
-
end
|
65
|
-
|
66
|
-
it "adds a continued fraction with another continued fraction and returns a continued fraction" do
|
67
|
-
c = described_class.new(rand,20)
|
68
|
-
expect((cf + c)).to be_kind_of(ContinuedFraction)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
describe '-' do
|
73
|
-
it "subtracts a number on the right-hand-side from a continued fraction and returns a continued fraction" do
|
74
|
-
expect((cf - 3)).to be_kind_of(ContinuedFraction)
|
75
|
-
end
|
76
|
-
|
77
|
-
it "subtracts a continued fraction with another continued fraction and returns a continued fraction" do
|
78
|
-
c = described_class.new(rand,20)
|
79
|
-
expect((cf - c)).to be_kind_of(ContinuedFraction)
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
describe '*' do
|
84
|
-
it "multiplies a number on the right-hand-side with a continued fraction and returns a continued fraction" do
|
85
|
-
expect((cf * 3)).to be_kind_of(ContinuedFraction)
|
86
|
-
end
|
87
|
-
|
88
|
-
it "multiplies a continued fraction with another continued fraction and returns a continued fraction" do
|
89
|
-
c = described_class.new(rand,20)
|
90
|
-
expect((cf * c)).to be_kind_of(ContinuedFraction)
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
describe '/' do
|
95
|
-
it "divides a number on the right-hand-side with a continued fraction and returns a continued fraction" do
|
96
|
-
expect((cf / 3)).to be_kind_of(ContinuedFraction)
|
97
|
-
end
|
98
|
-
|
99
|
-
it "divides a continued fraction with another continued fraction and returns a continued fraction" do
|
100
|
-
c = described_class.new(rand,20)
|
101
|
-
expect((cf / c)).to be_kind_of(ContinuedFraction)
|
64
|
+
it "Assigns the max limit of the two operands" do
|
65
|
+
result = cf.send(op, cf2)
|
66
|
+
expect(result.limit).to eq [cf.limit, cf2.limit].max
|
67
|
+
end
|
102
68
|
end
|
103
69
|
end
|
104
70
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: continued_fractions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jose Hales-Garcia
|
@@ -65,8 +65,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
65
65
|
- !ruby/object:Gem::Version
|
66
66
|
version: '1.2'
|
67
67
|
requirements: []
|
68
|
-
|
69
|
-
rubygems_version: 2.5.1
|
68
|
+
rubygems_version: 3.0.3
|
70
69
|
signing_key:
|
71
70
|
specification_version: 4
|
72
71
|
summary: Generate continued fractions
|