polynomials 0.3.0 → 0.4.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.
data/README.markdown CHANGED
@@ -4,51 +4,50 @@
4
4
 
5
5
  <pre><code>
6
6
  require 'polynomials'
7
- require 'gnuplot'
8
- include Polynomials
7
+ require 'gnuplot'
8
+ include Polynomials
9
9
 
10
10
 
11
- polynomial = Polynomial.parse(ARGV[0])
11
+ polynomial = Polynomial.parse(ARGV[0])
12
12
 
13
- points = polynomial.roots | polynomial.local_extrema | polynomial.inflection_points
13
+ points = polynomial.roots | polynomial.local_extrema | polynomial.inflection_points
14
14
 
15
- max_x = points.max_by(&amp;:x).x
16
- min_x = points.min_by(&amp;:x).x
15
+ max_x = points.max_by(&amp;:x).x
16
+ min_x = points.min_by(&amp;:x).x
17
17
 
18
- start = (min_x - 0.1)
19
- stop = (max_x + 0.1)
18
+ start = (min_x - min_x.abs/2)
19
+ stop = (max_x + max_x.abs/2)
20
20
 
21
- x = start
22
- data_x,data_y = [],[]
23
- while x &lt; stop
24
- data_x &lt;&lt; x
25
- data_y &lt;&lt; polynomial.(x)
26
- x += 0.005
27
- end
21
+ step = (max_x-min_x).abs/200
28
22
 
29
- Gnuplot.open do |gp|
30
- Gnuplot::Plot.new(gp) do |plot|
31
- plot.xrange &quot;[#{start}:#{stop}]&quot;
32
- plot.title &quot;Polynomial&quot;
33
- plot.ylabel &quot;f(x)&quot;
34
- plot.xlabel &quot;x&quot;
35
- plot.grid
36
- plot.data &lt;&lt; Gnuplot::DataSet.new( [data_x,data_y] ) do |ds|
37
- ds.with = &quot;lines&quot;
38
- ds.linewidth = 0.1
39
- ds.title = &quot;f(x) = #{polynomial}&quot;
40
- end
23
+ pointset = polynomials.pointset(start,stop,step)
24
+
25
+ data_x = pointset.map(&:x)
26
+ data_y = pointset.map(&:y)
27
+
28
+ Gnuplot.open do |gp|
29
+ Gnuplot::Plot.new(gp) do |plot|
30
+ plot.xrange &quot;[#{start}:#{stop}]&quot;
31
+ plot.title &quot;Polynomial&quot;
32
+ plot.ylabel &quot;f(x)&quot;
33
+ plot.xlabel &quot;x&quot;
34
+ plot.grid
35
+ plot.data &lt;&lt; Gnuplot::DataSet.new( [data_x,data_y] ) do |ds|
36
+ ds.with = &quot;lines&quot;
37
+ ds.linewidth = 0.2
38
+ ds.title = &quot;f(x) = #{polynomial}&quot;
39
+ end
41
40
 
42
- [:inflection_point,:root, :maximum, :minimum].each do |kind_of_point|
43
- selected_points = points.select(&amp;:&quot;#{kind_of_point}?&quot;)
44
- plot.data &lt;&lt; Gnuplot::DataSet.new([selected_points.map(&amp;:x), selected_points.map(&amp;:y)]) do |ds|
45
- ds.with = &quot;points&quot;
46
- ds.linewidth = 2
47
- ds.title = kind_of_point.to_s.pluralize.titleize
48
- end
41
+ [:inflection_point,:root, :maximum, :minimum].each do |kind_of_point|
42
+ selected_points = points.select(&amp;:&quot;#{kind_of_point}?&quot;)
43
+ plot.data &lt;&lt; Gnuplot::DataSet.new([selected_points.map(&amp;:x), selected_points.map(&amp;:y)]) do |ds|
44
+ ds.with = &quot;points&quot;
45
+ ds.linewidth = 2
46
+ ds.title = kind_of_point.to_s.pluralize.titleize
49
47
  end
50
48
  end
51
49
  end
50
+ end
52
51
  </code></pre>
53
52
 
54
53
  ### Bash Command
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.4.0
@@ -7,19 +7,20 @@ polynomial = Polynomial.parse(ARGV[0])
7
7
 
8
8
  points = polynomial.roots | polynomial.local_extrema | polynomial.inflection_points
9
9
 
10
- max_x = points.max_by(&:x).x
11
- min_x = points.min_by(&:x).x
12
-
13
- start = (min_x - 0.1)
14
- stop = (max_x + 0.1)
15
-
16
- x = start
17
- data_x,data_y = [],[]
18
- while x < stop
19
- data_x << x
20
- data_y << polynomial.(x)
21
- x += 0.005
22
- end
10
+ max_x = points.max_by(&:x)
11
+ min_x = points.min_by(&:x)
12
+ max_x = max_x ? max_x.x : 1
13
+ min_x = min_x ? min_x.x : -1
14
+
15
+ difference = (max_x-min_x).abs
16
+
17
+ start = min_x - difference/4.0
18
+ stop = max_x + difference/4.0
19
+ step = difference/200.0
20
+
21
+ pointset = polynomial.pointset(start,stop,step)
22
+ data_x= pointset.map(&:first)
23
+ data_y = pointset.map(&:last)
23
24
 
24
25
  Gnuplot.open do |gp|
25
26
  Gnuplot::Plot.new(gp) do |plot|
@@ -30,7 +31,7 @@ Gnuplot.open do |gp|
30
31
  plot.grid
31
32
  plot.data << Gnuplot::DataSet.new( [data_x,data_y] ) do |ds|
32
33
  ds.with = "lines"
33
- ds.linewidth = 0.1
34
+ ds.linewidth = 0.2
34
35
  ds.title = "f(x) = #{polynomial}"
35
36
  end
36
37
 
@@ -44,4 +45,3 @@ Gnuplot.open do |gp|
44
45
  end
45
46
  end
46
47
  end
47
-
data/lib/polynomials.rb CHANGED
@@ -7,13 +7,21 @@ ActiveSupport::Inflector.inflections do |inflect|
7
7
  inflect.singular /ma$/, '\1mum'
8
8
  end
9
9
 
10
- require 'polynomial'
10
+ require 'exceptions'
11
+ require 'formulas'
11
12
  require 'set'
12
- require 'term'
13
13
  require 'point'
14
- require 'formulas'
15
- require 'exceptions'
14
+ require 'term'
15
+ require 'analyzable'
16
+ require 'polynomial'
16
17
 
17
18
 
18
19
  module Polynomials
20
+ Infinity = 1.0/0
21
+ end
22
+
23
+ class Numeric
24
+ def sign
25
+ self/self.abs
26
+ end
19
27
  end
@@ -0,0 +1,54 @@
1
+ module Polynomials
2
+ module Analyzable
3
+ AfterExtremaCurvatureMapping = { maximum: :right, minimum: :left }
4
+ MinimumOrMaximum = {[1.0,-1.0] => :maximum,[-1.0,1.0] => :minimum}
5
+
6
+ def strives_for
7
+ roots = self.roots.map(&:x)
8
+ return nil if roots.empty?
9
+ [self.(roots.min - 1).sign, self.(roots.max + 1).sign].map { |d| d * Infinity }
10
+ end
11
+
12
+ def inflection_points
13
+ self.derivative.local_extrema.map { |p| InflectionPoint.new(p.x,self.calculate(p.x)) }.to_set
14
+ end
15
+
16
+ def local_extrema
17
+ derivative = self.derivative
18
+ possible_extrema = derivative.roots.sort.map(&:x)
19
+
20
+ return Set[] if possible_extrema.empty?
21
+
22
+ samples = possible_extrema.sort.each_cons(2).map do |before,after|
23
+ (before + after)/2
24
+ end
25
+
26
+ samples.unshift possible_extrema.first - 1
27
+ samples.push possible_extrema.last + 1
28
+
29
+ possible_extrema.zip(samples.each_cons(2)).inject(Set[]) do |set,(pe,sample)|
30
+ directions = sample.map { |x| derivative.(x).sign}
31
+ kind_of_extremum = MinimumOrMaximum[directions]
32
+ next set unless kind_of_extremum
33
+ set << Extremum.new(pe,self.calculate(pe), kind_of_extremum)
34
+ end
35
+ end
36
+
37
+ def curvature_behaviour
38
+ hash = Hash.new {|h,k|h[k]=[]}
39
+
40
+ dd = self.derivative.derivative
41
+ return nil if !(strives_for = derivative.strives_for) || dd.(dd.roots.sort.last.to_f + 1) == 0
42
+
43
+ ([[-Infinity,strives_for[0]]] + derivative.local_extrema.sort + [[Infinity,strives_for[-1]]]).each_cons(2).chunk do |b,_|
44
+ if b.is_a? Point
45
+ AfterExtremaCurvatureMapping[b.kind_of_extremum]
46
+ else
47
+ b.last < 0 ? :left : :right
48
+ end
49
+ end.with_index.inject(hash) do |hash,((curvature,values),i)|
50
+ hash.tap { |h| h[curvature].concat values.each {|a| a.map! { |p| (p.is_a? Point) ? p.x : p.first }}}
51
+ end
52
+ end
53
+ end
54
+ end
@@ -2,6 +2,7 @@ module Polynomials
2
2
  class Point
3
3
  include Comparable
4
4
  attr_accessor :x, :y
5
+ alias to_f x
5
6
 
6
7
  def self.inherited(subclass)
7
8
  self.class_eval do
@@ -1,9 +1,6 @@
1
1
  module Polynomials
2
2
  class Polynomial
3
-
4
- MinMaxMapping = { 1.0 => :maximum, -1.0 => :minimum }
5
- AfterExtremaCurvatureMapping = { maximum: :right, minimum: :left }
6
- NegPosMinMaxExtremumMapping = {[1.0,-1.0] => :maximum,[-1.0,1.0] => :minimum}
3
+ include Analyzable
7
4
 
8
5
  attr_accessor :terms
9
6
 
@@ -59,30 +56,6 @@ module Polynomials
59
56
  end
60
57
  end
61
58
 
62
- def local_extrema
63
- derivative = self.derivative
64
- possible_extrema = derivative.roots.sort.map(&:x)
65
- return Set[] if possible_extrema.empty?
66
- samples = ([possible_extrema.first - 1] + possible_extrema.sort + [possible_extrema.last + 1]).each_cons(2).map do |before,after|
67
- (before + after)/2
68
- end
69
- possible_extrema.zip(samples.each_cons(2)).inject(Set[]) do |set,(pe,(after,before))|
70
- yafter = derivative.calculate(after)
71
- ybefore = derivative.calculate(before)
72
- kind_of_extremum = NegPosMinMaxExtremumMapping[[yafter/yafter.abs,ybefore/ybefore.abs]]
73
- set << Extremum.new(pe,self.calculate(pe), kind_of_extremum) if kind_of_extremum
74
- set
75
- end
76
- end
77
-
78
- def curvature_behaviour
79
- hash = Hash.new {|h,k|h[k]=Set.new}
80
- return hash if self.degree > 5
81
- self.derivative.extrema.sort.each_cons(2).group_by do |start,_|
82
- kind_of_curvature = AfterExtremaCurvatureMapping[start.kind_of_extremum]
83
- end.tap { |h| h.values.each { |v| v.map! { |s,e| Range.new(s.x,e.x) }}}
84
- end
85
-
86
59
  def degree
87
60
  self.terms.keys.max || 0
88
61
  end
@@ -99,22 +72,6 @@ module Polynomials
99
72
  self.terms.delete_if(&delete_zeros) == other.terms.delete_if(&delete_zeros)
100
73
  end
101
74
 
102
- def extrema
103
- extrema = local_extrema
104
- unless self.degree == 0
105
- a = self.gt.coefficient
106
- max_or_min = (self.degree.even? ? [1.0,1.0] : [-1.0,1.0]).map { |n| (n * a)/a.abs }
107
- max_or_min.zip([-Infinity,Infinity]).each do |kind_of_extremum, x|
108
- extrema << Extremum.new(x,nil,MinMaxMapping[kind_of_extremum])
109
- end
110
- end
111
- return extrema
112
- end
113
-
114
- def inflection_points
115
- self.derivative.local_extrema.map { |p| InflectionPoint.new(p.x,self.calculate(p.x)) }.to_set
116
- end
117
-
118
75
  def gt
119
76
  self.terms[self.degree]
120
77
  end
@@ -123,6 +80,16 @@ module Polynomials
123
80
  self.terms[self.terms.min_by{ |_,t| t.exponent}.first]
124
81
  end
125
82
 
83
+ def pointset(start,stop,step=0.1)
84
+ data = []
85
+ x = start
86
+ while x < stop
87
+ data << [x,self.(x)]
88
+ x += step
89
+ end
90
+ data << [stop,self.(stop)]
91
+ end
92
+
126
93
  def coefficients_till(n)
127
94
  coefficients = []
128
95
  (0..n).each do |e|
@@ -141,4 +108,5 @@ module Polynomials
141
108
  end
142
109
  protected :alter
143
110
  end
111
+
144
112
  end
data/polynomials.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{polynomials}
8
- s.version = "0.3.0"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Manuel Korfmann"]
12
- s.date = %q{2011-05-15}
12
+ s.date = %q{2011-05-18}
13
13
  s.description = %q{
14
14
  This is a gem dedicated to parsing, manipulating and finding roots,extrema and inflection points of polynomials.
15
15
  It can solve polynomial equations with a degree up to 4 by implementing formulas for solving quadratic, cubic and quartic functions.
@@ -29,12 +29,14 @@ It can solve polynomial equations with a degree up to 4 by implementing formulas
29
29
  "VERSION",
30
30
  "examples/plot_only_mutual_data.rb",
31
31
  "lib/polynomials.rb",
32
+ "lib/polynomials/analyzable.rb",
32
33
  "lib/polynomials/exceptions.rb",
33
34
  "lib/polynomials/formulas.rb",
34
35
  "lib/polynomials/point.rb",
35
36
  "lib/polynomials/polynomial.rb",
36
37
  "lib/polynomials/term.rb",
37
38
  "polynomials.gemspec",
39
+ "test/analyzable_test.rb",
38
40
  "test/formulas_test.rb",
39
41
  "test/point_test.rb",
40
42
  "test/polynomial_test.rb",
@@ -44,11 +46,10 @@ It can solve polynomial equations with a degree up to 4 by implementing formulas
44
46
  s.homepage = %q{http://github.com/mkorfmann/polynomials}
45
47
  s.licenses = ["MIT"]
46
48
  s.require_paths = ["lib"]
47
- s.rubygems_version = %q{1.3.7}
49
+ s.rubygems_version = %q{1.6.2}
48
50
  s.summary = %q{parsing and computing data on polynomials}
49
51
 
50
52
  if s.respond_to? :specification_version then
51
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
52
53
  s.specification_version = 3
53
54
 
54
55
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
@@ -0,0 +1,76 @@
1
+ require "#{File.dirname(File.expand_path(__FILE__))}/test_helper"
2
+ Infinity = 1.0/0
3
+ class TestAnalyzable < MiniTest::Unit::TestCase
4
+ include Polynomials
5
+
6
+ def test_local_extrema
7
+ polynomial = Polynomial.parse('3x^2 + 2x + 1')
8
+ assert_set_eql(Set[ Extremum.new(-2.0/6.0,polynomial.calculate(-2.0/6.0), :minimum) ], polynomial.local_extrema)
9
+ end
10
+
11
+ def test_local_extrema_with_slope_of_derivative_equal_to_zero
12
+ polynomial = Polynomial.parse('1x^4')
13
+ assert_set_eql(Set[ Extremum.new(0.0,polynomial.calculate(0.0), :minimum) ], polynomial.local_extrema)
14
+ end
15
+
16
+ def test_no_local_extrema
17
+ polynomial = Polynomial.parse('6x^6 - 5x + 50')
18
+ assert_equal(Set[], polynomial.local_extrema)
19
+ end
20
+
21
+ def test_curvature_behaviour_no_inflection_points
22
+ polynomial = Polynomial.parse('1 x^4')
23
+ assert_equal({ left: [[-1.0/0,+1.0/0]] }, polynomial.curvature_behaviour)
24
+
25
+ polynomial = Polynomial.parse('-1 x^4')
26
+ assert_equal({ right: [[-1.0/0,+1.0/0]] }, polynomial.curvature_behaviour)
27
+
28
+ polynomial = Polynomial.parse('5x^2')
29
+ assert_equal({ left: [[-1.0/0,+1.0/0]] }, polynomial.curvature_behaviour)
30
+ end
31
+
32
+ def test_no_curvature
33
+ polynomials = []
34
+ polynomials << Polynomial.parse('0')
35
+ polynomials << Polynomial.parse('4')
36
+ polynomials.each do |polynomial|
37
+ assert_equal(nil, polynomial.curvature_behaviour)
38
+ end
39
+ end
40
+
41
+ def test_no_local_extrema_of_derivative_leads_to_no_curvature
42
+ polynomial = Polynomial.parse('50x^10 - 20x^2')
43
+ assert_equal({:left=>[[-Infinity, Infinity]]}, polynomial.curvature_behaviour)
44
+ end
45
+
46
+ def test_curvature_behaviour_two_inflection_points
47
+ polynomial = Polynomial.parse('+ 1.0 x^4 + 5.0 x^3 - 1.0 x^2 + 3.0 x + 5.0')
48
+ assert_equal({left:[[-1.0/0,-2.5649778198], [0.0649778198,1.0/0]], right: [[-2.5649778198,0.0649778198]] } , polynomial.curvature_behaviour)
49
+ end
50
+
51
+ def test_curvature_behaviour_three_inflection_points
52
+ polynomial = Polynomial.new(20,4,0,-1,-200)
53
+ assert_equal( {:right=>[[(-1/10),0.0]], :left=>[[-Infinity,(-1/10)], [0.0,Infinity]]}, polynomial.curvature_behaviour)
54
+ end
55
+
56
+ def test_inflection_points
57
+ polynomial = Polynomial.new(20,4,0,-1,-200)
58
+ assert_set_eql Set[InflectionPoint.new(-1/10,polynomial.(-1/10)),InflectionPoint.new(0,polynomial.(0))], polynomial.inflection_points
59
+ end
60
+
61
+ def test_strives_for
62
+ polynomial = Polynomial.new(2,0,0)
63
+ assert_equal [Infinity,Infinity], polynomial.strives_for
64
+ polynomial = Polynomial.new(-2,0,0)
65
+ assert_equal [-Infinity,-Infinity], polynomial.strives_for
66
+ polynomial = Polynomial.new(2,0,0,0)
67
+ assert_equal [-Infinity,Infinity], polynomial.strives_for
68
+ polynomial = Polynomial.new(-2,0,0,0)
69
+ assert_equal [Infinity,-Infinity], polynomial.strives_for
70
+ polynomial = Polynomial.new(2)
71
+ assert_equal nil, polynomial.strives_for
72
+
73
+ polynomial = Polynomial.parse('+ 1.0 x^4 + 5.0 x^3 - 1.0 x^2 + 3.0 x + 5.0').derivative
74
+ assert_equal [-Infinity,Infinity], polynomial.strives_for
75
+ end
76
+ end
@@ -44,65 +44,6 @@ class TestPolynomial < MiniTest::Unit::TestCase
44
44
  assert_equal 5,Polynomial.parse('3x^5 - 5 x + 3').degree
45
45
  end
46
46
 
47
- def test_extrema
48
- polynomial = Polynomial.parse('3x^2 + 2x + 1')
49
- assert_set_eql(Set[ Extremum.new(-2.0/6.0,polynomial.calculate(-2.0/6.0), :minimum) ], polynomial.local_extrema)
50
- polynomial = Polynomial.parse('5x^3 - 5x^2 + 2x - 2')
51
- end
52
-
53
- def test_extrema_with_slope_of_derivative_equal_to_zero
54
- polynomial = Polynomial.parse('1x^4')
55
- assert_set_eql(Set[ Extremum.new(0.0,polynomial.calculate(0.0), :minimum) ], polynomial.local_extrema)
56
- assert_set_eql(Set[*[Infinity,-Infinity].map { |x| Extremum.new(x,nil, :maximum)}, Extremum.new(0.0,polynomial.calculate(0.0), :minimum) ], polynomial.extrema)
57
- end
58
-
59
- def test_no_local_extrema
60
- polynomial = Polynomial.parse('6x^6 - 5x + 50')
61
- assert_equal(Set[], polynomial.local_extrema)
62
- assert_set_eql(Set[*[ -1.0/0, 1.0/0 ].map { |x| Extremum.new(x, nil, :maximum)}], polynomial.extrema)
63
- end
64
-
65
- def test_curvature_behaviour_no_inflection_points
66
- polynomial = Polynomial.parse('1 x^4')
67
- assert_equal({ left: [-1.0/0..+1.0/0] }, polynomial.curvature_behaviour)
68
-
69
- polynomial = Polynomial.parse('-1 x^4')
70
- assert_equal({ right: [-1.0/0..+1.0/0] }, polynomial.curvature_behaviour)
71
-
72
- polynomial = Polynomial.parse('5x^2')
73
- assert_equal({ left: [-1.0/0..+1.0/0] }, polynomial.curvature_behaviour)
74
- end
75
-
76
- def test_no_extremums
77
- polynomial = Polynomial.parse('5')
78
- assert_equal(Set[], polynomial.extrema)
79
- end
80
-
81
- def test_no_curvature
82
- polynomials = []
83
- polynomials << Polynomial.parse('5 x + 4')
84
- polynomials << Polynomial.parse('4')
85
- polynomials.each do |polynomial|
86
- assert_equal({}, polynomial.curvature_behaviour)
87
- end
88
- end
89
-
90
- def test_local_extrema_of_derivative_leads_to_no_curvature
91
- polynomial = Polynomial.parse('50x^10 - 20x^2')
92
- assert_equal({}, polynomial.curvature_behaviour)
93
- end
94
-
95
- def test_curvature_behaviour_two_inflection_points
96
- polynomial = Polynomial.parse('+ 1.0 x^4 + 5.0 x^3 - 1.0 x^2 + 3.0 x + 5.0')
97
- assert_equal({left:[-1.0/0..-2.5649778198, 0.0649778198..1.0/0], right: [-2.5649778198..0.0649778198] } , polynomial.curvature_behaviour)
98
- end
99
-
100
- def test_curvature_behaviour_three_inflection_points
101
- polynomial = Polynomial.new(20,4,0,-1,-200)
102
- assert_equal( {:right=>[(-1/10)..0.0], :left=>[-Infinity..(-1/10), 0.0..Infinity]}, polynomial.curvature_behaviour)
103
- end
104
-
105
-
106
47
  def test_efficient_roots_calculation
107
48
  polynomial = Polynomial.parse('200x^2342435 + 6x^20')
108
49
  assert_set_eql(Set[Root.new(0.0)], polynomial.roots)
@@ -123,8 +64,13 @@ class TestPolynomial < MiniTest::Unit::TestCase
123
64
  assert_equal '5x^3 + 2x - 1', polynomial.to_s
124
65
  end
125
66
 
126
- def test_inflection_points
127
- polynomial = Polynomial.new(20,4,0,-1,-200)
128
- assert_set_eql Set[InflectionPoint.new(-1/10,polynomial.(-1/10)),InflectionPoint.new(0,polynomial.(0))], polynomial.inflection_points
67
+ def test_pointset
68
+ polynomial = Polynomial.new(1,0,0)
69
+ assert_equal (-2..2).step(0.5).map { |x| [x,x**2] }, polynomial.pointset(-2,2,0.5)
70
+ end
71
+
72
+ def test_pointset_with_float_start
73
+ polynomial = Polynomial.new(1,0,0)
74
+ assert_equal [[0.1,0.1**2],[0.2,0.2**2],[0.25,0.25**2]], polynomial.pointset(0.1,0.25,0.1)
129
75
  end
130
76
  end
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polynomials
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 3
8
- - 0
9
- version: 0.3.0
4
+ prerelease:
5
+ version: 0.4.0
10
6
  platform: ruby
11
7
  authors:
12
8
  - Manuel Korfmann
@@ -14,7 +10,7 @@ autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
12
 
17
- date: 2011-05-15 00:00:00 +02:00
13
+ date: 2011-05-18 00:00:00 +02:00
18
14
  default_executable:
19
15
  dependencies:
20
16
  - !ruby/object:Gem::Dependency
@@ -24,10 +20,6 @@ dependencies:
24
20
  requirements:
25
21
  - - ~>
26
22
  - !ruby/object:Gem::Version
27
- segments:
28
- - 1
29
- - 0
30
- - 0
31
23
  version: 1.0.0
32
24
  type: :development
33
25
  prerelease: false
@@ -39,10 +31,6 @@ dependencies:
39
31
  requirements:
40
32
  - - ~>
41
33
  - !ruby/object:Gem::Version
42
- segments:
43
- - 1
44
- - 6
45
- - 0
46
34
  version: 1.6.0
47
35
  type: :development
48
36
  prerelease: false
@@ -54,8 +42,6 @@ dependencies:
54
42
  requirements:
55
43
  - - ">="
56
44
  - !ruby/object:Gem::Version
57
- segments:
58
- - 0
59
45
  version: "0"
60
46
  type: :development
61
47
  prerelease: false
@@ -67,8 +53,6 @@ dependencies:
67
53
  requirements:
68
54
  - - ">="
69
55
  - !ruby/object:Gem::Version
70
- segments:
71
- - 0
72
56
  version: "0"
73
57
  type: :development
74
58
  prerelease: false
@@ -80,8 +64,6 @@ dependencies:
80
64
  requirements:
81
65
  - - ">="
82
66
  - !ruby/object:Gem::Version
83
- segments:
84
- - 0
85
67
  version: "0"
86
68
  type: :development
87
69
  prerelease: false
@@ -93,8 +75,6 @@ dependencies:
93
75
  requirements:
94
76
  - - ">="
95
77
  - !ruby/object:Gem::Version
96
- segments:
97
- - 0
98
78
  version: "0"
99
79
  type: :development
100
80
  prerelease: false
@@ -120,12 +100,14 @@ files:
120
100
  - VERSION
121
101
  - examples/plot_only_mutual_data.rb
122
102
  - lib/polynomials.rb
103
+ - lib/polynomials/analyzable.rb
123
104
  - lib/polynomials/exceptions.rb
124
105
  - lib/polynomials/formulas.rb
125
106
  - lib/polynomials/point.rb
126
107
  - lib/polynomials/polynomial.rb
127
108
  - lib/polynomials/term.rb
128
109
  - polynomials.gemspec
110
+ - test/analyzable_test.rb
129
111
  - test/formulas_test.rb
130
112
  - test/point_test.rb
131
113
  - test/polynomial_test.rb
@@ -145,7 +127,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
145
127
  requirements:
146
128
  - - ">="
147
129
  - !ruby/object:Gem::Version
148
- hash: -1053346155644578569
130
+ hash: 1327775676768691689
149
131
  segments:
150
132
  - 0
151
133
  version: "0"
@@ -154,13 +136,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
136
  requirements:
155
137
  - - ">="
156
138
  - !ruby/object:Gem::Version
157
- segments:
158
- - 0
159
139
  version: "0"
160
140
  requirements: []
161
141
 
162
142
  rubyforge_project:
163
- rubygems_version: 1.3.7
143
+ rubygems_version: 1.6.2
164
144
  signing_key:
165
145
  specification_version: 3
166
146
  summary: parsing and computing data on polynomials