dydx 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,88 +1,129 @@
1
- # Dydx
2
- It always happens you want to differentiate some formulas with ruby. right?.....
1
+ # Dydx is new math DSL in Ruby
2
+
3
+ ### Since you report a bug, I will fix it within 24 hours.
4
+
5
+ The most important thing in this DSL is
6
+
7
+ we can handle math in the same sense sense of the math on paper.
8
+
9
+ ex. limit, trigonometric functions and logarithmic.
10
+
3
11
 
4
12
  After `inlcude Dydx` , ruby become like other language.
5
13
 
6
- ```
14
+ ## Outline
15
+ ```ruby:
7
16
  require 'dydx'
8
17
  include Dydx
9
18
 
10
- # There are three types of differential interface
11
-
12
- ( d/dx(x^2) ).to_s
13
- => "( 2 * x )"
19
+ # Define the function. syntax is not good enough...
20
+ f(x) <= x ^ 2
14
21
 
15
- log(z).d(z).to_s
16
- => "( 1 / z )"
22
+ f(3)
23
+ => 9
17
24
 
18
- $y = e ^ x
19
- (dy/dx).to_s
20
- => "( e ^ x )"
25
+ f(x).to_s
26
+ => "( x ^ 2 )"
21
27
 
22
- ```
28
+ f(x) == eval('f(x).to_s')
29
+ => true
23
30
 
24
- You may wonder why undefined `x` , `e` and `z` are handleable?
31
+ # Differentiate
32
+ g(x) <= d/dx(f(x))
25
33
 
26
- `method_missing` solve this problem by converting undefine variable into internal class object.
34
+ g(3)
35
+ => 6
27
36
 
28
- Like this.
37
+ g(x).to_s
38
+ => '2 * x'
29
39
 
40
+ # Integrate
41
+ S(f(x), dx)[0, 1]
42
+ => 0.3333333333333334
30
43
  ```
31
- x + x
32
- => #<Dydx::Algebra::Formula:0x007fb0a4039fb0 @f=#<Dydx::Algebra::Set::Num:0x007fb0a48169e0 @n=2>, @operator=:*, @g=:x>
33
44
 
34
- e
35
- => #<Dydx::Algebra::Set::E:0x007fb0a383e9f0>
36
45
 
37
- log(sin(x))
38
- => #<Dydx::Algebra::Set::Log:0x007fe7cd971528 @f=#<Dydx::Algebra::Set::Sin:0x007fe7cd971550 @x=:x>>
39
- ```
46
+ #### limit, trigonometric functions and logarithmic.
47
+ ```ruby:
40
48
 
41
- And this DSL has strong simplify.
49
+ f(z) <= log(z)
50
+ S(f(z), dz)[0,1]
51
+ => -Infinity
42
52
 
43
- ```
44
- ((x * y) + (z * x)).to_s
45
- => "( x * ( y + z ) )"
53
+ ( d/dx(log(x)) ).to_s
54
+ => "( 1 / x )"
46
55
 
47
- ((x ^ y) / (x ^ z)).to_s
48
- => "( x ^ ( y - z ) )"
56
+ ( d/dx(cos(x)) ).to_s
57
+ => "( - sin( x ) )"
49
58
 
50
- (x + x).to_s
51
- => "( 2 * x )"
52
- ```
59
+ ( d/dx(e ^ x) ).to_s
60
+ => "( e ^ x )"
53
61
 
54
- I show some differential calculus.
62
+ f(x) <= sin(x)
63
+ S(f(x), dx)[0, Math::PI/2]
64
+ => 1.000000000021139
55
65
 
66
+ # standard normal distribution;
67
+ f(x) <= (1.0 / ( ( 2.0 * pi ) ^ 0.5 ) ) * ( e ^ (- (x ^ 2) / 2) )
68
+ S(f(x), dx)[-oo, oo]
69
+ => 0.9952054164466917
56
70
  ```
57
- # pretermit '#to_s'
58
71
 
59
- d/dz(log(z))
60
- => "( 1 / z )"
72
+ #### it's like a magic...
61
73
 
62
- d/dx(x^n)
63
- => "( n * ( x ^ ( n - 1 ) ) )"
74
+ ```ruby:
75
+ f(x) <= x ^ 2
64
76
 
65
- $y = cos(x)
66
- dy/dx
67
- => "( - sin( x ) )"
77
+ f(a + b).to_s
78
+ => "( ( a + b ) ^ 2 )"
68
79
 
69
- $x = a * ( (t ^ 2) / 2 )
70
- dx/dt
71
- => "( a * t )"
80
+ #↓it"s magic!!!
81
+ g(a, b) <= f(a + b)
72
82
 
73
- d/dt(dx/dt)
74
- =>"a"
83
+ g(a, b).to_s
84
+ => "( ( a + b ) ^ 2 )"
75
85
 
76
- ((x ^ 2) * y).d(x)
77
- => "( ( 2 * x ) * y )"
86
+ g(2, 2)
87
+ => 16
78
88
 
79
- ((x ^ 2) * y).d(x).d(y)
80
- => "( 2 * x )"
89
+ ( d/da(g(a, b)) ).to_s
90
+ => "( 2 * ( a + b ) )"
81
91
 
92
+ # simplify
93
+ ((x * y) + (z * x)).to_s
94
+ => "( x * ( y + z ) )"
95
+
96
+ ((x ^ y) / (x ^ z)).to_s
97
+ => "( x ^ ( y - z ) )"
98
+
99
+ (x + x).to_s
100
+ => "( 2 * x )"
82
101
  ```
83
102
 
84
103
 
85
- (That's wonderful!!!!! ..............)
104
+ ## Documents
105
+ I'm going to write now...cominng soon....
106
+
107
+ ### Module, class configuration
108
+
109
+ ```
110
+ Dydx
111
+ |- Algebra
112
+ | |- Set
113
+ | | |- Num
114
+ | | |- ....
115
+ | |
116
+ | |- Operator
117
+ | | |- Interface
118
+ | | |- ....
119
+ | |
120
+ | |- Formula
121
+ | |- inverse
122
+ |
123
+ |- Function
124
+ |- Delta
125
+ |- Integrand
126
+ ```
86
127
 
87
128
  ## Installation
88
129
 
@@ -115,6 +156,6 @@ Or install it yourself as:
115
156
  run `bundle exec rake spec`
116
157
 
117
158
  ```
118
- Finished in 0.11282 seconds
119
- 231 examples, 0 failures
159
+ Finished in 3.23 seconds
160
+ 309 examples, 0 failures
120
161
  ```
data/dydx.gemspec CHANGED
@@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["gogotanaka"]
10
10
  spec.email = ["qlli.illb@gmail.com"]
11
11
  spec.homepage = "https://github.com/gogotanaka"
12
- spec.summary = %q{We can enjoy the derivative.}
13
- spec.description = %q{It is possible to use the differential using the Symbol and Fixnum by including the Dydx. And, we can use the natural logarithm and log.}
12
+ spec.summary = %q{We can enjoy the math.}
13
+ spec.description = %q{Dydx is new math DSL in Ruby. The most important thing in this DSL is we can handle math in the same sense sense of the math on paper.}
14
14
 
15
15
  spec.license = "MIT"
16
16
 
data/lib/dydx.rb CHANGED
@@ -6,33 +6,18 @@ require 'dydx/integrand'
6
6
 
7
7
  module Dydx
8
8
  include Algebra
9
- # TODO: Refactor
10
9
  %w(f g h).each do |functioner|
11
10
  define_method(functioner) do |*vars|
12
- if function = eval("$#{functioner}")
13
- raise ArgumentError, "invalid number of values (#{vars.count} for #{function.vars.count})" unless function.vars.count == vars.count
14
- return function if function.vars == vars
15
- if function.algebra
16
- if vars.all?{|v| v.is_a?(Numeric)}
17
- string = function.algebra.to_s
18
- .gsub('cos', 'Math.cos')
19
- .gsub('sin', 'Math.sin')
20
- .gsub('log', 'Math.log')
21
- .gsub('e', 'Math::E')
22
- .gsub('pi', 'Math::PI')
23
- else
24
- string = function.algebra.to_s
25
- end
26
- function.vars.each_with_index do |var, i|
27
- string.gsub!(var.to_s, vars[i].to_s)
28
- end
29
- eval(string)
30
- else
31
- function
32
- end
33
- else
34
- eval("$#{functioner} = Function.new(*vars)")
35
- end
11
+ function = eval("$#{functioner}")
12
+ return eval("$#{functioner} = Function.new(*vars)") unless function
13
+
14
+ raise ArgumentError, "invalid number of values (#{vars.count} for #{function.vars.count})" unless function.vars.count == vars.count
15
+ return function if function.vars == vars
16
+ return function unless function.algebra
17
+
18
+ string = substitute(vars, function)
19
+ string = rename_for_calc(string) if all_vars_num?(vars)
20
+ eval(string)
36
21
  end
37
22
  end
38
23
 
@@ -44,6 +29,10 @@ module Dydx
44
29
  Delta.new
45
30
  end
46
31
 
32
+ def reset
33
+ $f, $g, $h = nil, nil, nil
34
+ end
35
+
47
36
  def method_missing(method, *args, &block)
48
37
  method_name = method.to_s
49
38
  if method_name =~ /^d.$/
@@ -54,4 +43,26 @@ module Dydx
54
43
  super
55
44
  end
56
45
  end
46
+
47
+ private
48
+
49
+ def substitute(vars, function)
50
+ string = function.algebra.to_s
51
+ function.vars.each_with_index { |var, i| string.gsub!(var.to_s, vars[i].to_s) }
52
+ string
53
+ end
54
+
55
+ def all_vars_num?(vars)
56
+ vars.all? { |v| v.is_a?(Numeric) }
57
+ end
58
+
59
+ def rename_for_calc(string)
60
+ # TODO: need more refactoring...
61
+ string.gsub!('cos', 'Math.cos')
62
+ string.gsub!('sin', 'Math.sin')
63
+ string.gsub!('log', 'Math.log')
64
+ string.gsub!(' e ', ' Math::E ')
65
+ string.gsub!('pi', 'Math::PI')
66
+ string
67
+ end
57
68
  end
@@ -5,15 +5,14 @@ module Dydx
5
5
  attr_accessor :f, :operator, :g
6
6
 
7
7
  def initialize(f, g, operator)
8
+ g, f = f, g if g.is_num? && operator.commutative?
8
9
  @f, @g, @operator = f, g, operator
9
10
  end
10
11
 
11
12
  def differentiate(sym=:x)
12
13
  case @operator
13
- when :+
14
- f.d(sym) + g.d(sym)
15
- when :*
16
- (f.d(sym) * g) + (f * g.d(sym))
14
+ when :+ then f.d(sym) + g.d(sym)
15
+ when :* then (f.d(sym) * g) + (f * g.d(sym))
17
16
  when :^
18
17
  # TODO:
19
18
  if g.is_num?
@@ -30,18 +29,14 @@ module Dydx
30
29
  alias_method :d, :differentiate
31
30
 
32
31
  def to_s
33
- if (multiplication? && (f.is_minus1? || g.is_minus1?) )
32
+ if (formula?(:*) && (f.is_minus1? || g.is_minus1?) )
34
33
  "( - #{g.to_s} )"
35
- elsif multiplication? && g.inverse?(:*)
36
- "( #{f.to_s} / #{g.x.to_s} )"
37
- elsif multiplication? && f.inverse?(:*)
38
- "( #{g.to_s} / #{f.x.to_s} )"
39
- elsif addition? && g.inverse?(:+)
40
- "( #{f.to_s} - #{g.x.to_s} )"
41
- elsif addition? && f.inverse?(:+)
42
- "( #{g.to_s} - #{f.x.to_s} )"
34
+ elsif g.inverse?(operator)
35
+ "( #{f.to_s} #{inverse_ope(operator)} #{g.x.to_s} )"
36
+ elsif f.inverse?(operator)
37
+ "( #{g.to_s} #{inverse_ope(operator)} #{f.x.to_s} )"
43
38
  else
44
- "( #{f.to_s} #{@operator} #{g.to_s} )"
39
+ "( #{f.to_s} #{operator} #{g.to_s} )"
45
40
  end
46
41
  end
47
42
 
@@ -9,12 +9,9 @@ module Dydx
9
9
  end
10
10
 
11
11
  def to_s
12
- # sym = {'*'=>'/', '+'=>'-'}[operator.to_s]
13
12
  case operator
14
- when :+
15
- "( - #{x} )"
16
- when :*
17
- "( 1 / #{x} )"
13
+ when :+ then "( - #{x} )"
14
+ when :* then "( 1 / #{x} )"
18
15
  end
19
16
  end
20
17
 
@@ -27,10 +24,6 @@ module Dydx
27
24
  end
28
25
  end
29
26
  alias_method :d, :differentiate
30
-
31
- def ==(x)
32
- to_s == x.to_s
33
- end
34
27
  end
35
28
  end
36
- end
29
+ end
@@ -13,6 +13,8 @@ module Dydx
13
13
  else
14
14
  super(x)
15
15
  end
16
+ elsif formula?(sub_ope(operator)) && openable?(operator, x)
17
+ f.send(operator, x).send(sub_ope(operator), g.send(operator, x))
16
18
  elsif formula?(super_ope(operator)) && x.formula?(super_ope(operator))
17
19
  w1, w2 = common_factors(x)
18
20
  return super(x) unless (w1 && w2) && (super_ope(operator).commutative? || w1 == w2)
@@ -49,11 +51,13 @@ module Dydx
49
51
  end
50
52
  end
51
53
 
52
- def ^(x)
53
- if multiplication? && openable?(:^, x)
54
- (f ^ x).send(self.operator, (g ^ x))
55
- else
56
- super(x)
54
+ %w(^).map(&:to_sym).each do |operator|
55
+ define_method(operator) do |x|
56
+ if formula?(sub_ope(operator)) && openable?(operator, x)
57
+ f.send(operator, x).send(sub_ope(operator), g.send(operator, x))
58
+ else
59
+ super(x)
60
+ end
57
61
  end
58
62
  end
59
63
  end
@@ -43,8 +43,8 @@ module Dydx
43
43
  else
44
44
  super(x)
45
45
  end
46
- elsif [:*].include?(operator) && x.inverse?(:+)
47
- inverse(::Algebra::Formula.new(self, x.x, operator.to_sym), :+)
46
+ elsif operator == :* && x.inverse?(:+)
47
+ -(self * x.x)
48
48
  else
49
49
  super(x)
50
50
  end
@@ -4,7 +4,7 @@ module Dydx
4
4
  module Parts
5
5
  module Symbol
6
6
  def *(x)
7
- if x.exponentiation? &&
7
+ if x.formula?(:^) &&
8
8
  self == x.f
9
9
 
10
10
  self ^ (1 + x.g)
@@ -16,10 +16,6 @@ module Dydx
16
16
  def to_s
17
17
  @n.to_s
18
18
  end
19
-
20
- def ==(x)
21
- to_s == x.to_s
22
- end
23
19
  end
24
20
  end
25
21
  end
@@ -12,10 +12,11 @@ module Dydx
12
12
  "sin( #{x.to_s} )"
13
13
  end
14
14
 
15
- def d(sym=:x)
15
+ def differentiate(sym=:x)
16
16
  cos(x) * x.d(sym)
17
17
  end
18
+ alias_method :d, :differentiate
18
19
  end
19
20
  end
20
21
  end
21
- end
22
+ end
data/lib/dydx/helper.rb CHANGED
@@ -61,10 +61,9 @@ module Dydx
61
61
  def combinable?(x, operator)
62
62
  case operator
63
63
  when :+
64
- self == x ||
65
64
  (is_num? && x.is_num?) ||
66
- (multiplication? && (f == x || g == x)) ||
67
- (x.multiplication? && (x.f == self || x.g == self)) ||
65
+ (formula?(:*) && (f.is_num? || g.is_num?)) && x.is_num? ||
66
+ like_term?(x) ||
68
67
  inverse?(:+, x)
69
68
  when :*
70
69
  self == x ||
@@ -75,6 +74,18 @@ module Dydx
75
74
  end
76
75
  end
77
76
 
77
+ def like_term?(x)
78
+ boolean = if self == x
79
+ elsif formula?(:*) && include?(x)
80
+ elsif x.formula?(:*) && x.include?(self)
81
+ elsif ((formula?(:*) && formula?(:*)) && (([f, g] & [x.f, x.g]).any?{|x| x.is_a?(Symbol)}))
82
+ else
83
+ true
84
+ end
85
+
86
+ !boolean
87
+ end
88
+
78
89
  def is_multiple_of(x)
79
90
  if is_0?
80
91
  e0
@@ -100,9 +111,6 @@ module Dydx
100
111
  ([:f, :g] - [f_or_g]).first
101
112
  end
102
113
 
103
- def commutative?
104
- end
105
-
106
114
  def distributable?(operator)
107
115
  end
108
116
 
data/lib/dydx/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Dydx
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
data/spec/dydx_spec.rb CHANGED
@@ -17,8 +17,8 @@ describe Dydx do
17
17
  $b = (:x ^ (:x * 2))
18
18
  let(:d1){ db/dx }
19
19
  let(:d2){ d/dx($b) }
20
- it{ expect(d1.to_s).to eq('( ( x * 2 ) * ( x ^ ( ( x * 2 ) - 1 ) ) )') }
21
- it{ expect(d2.to_s).to eq('( ( x * 2 ) * ( x ^ ( ( x * 2 ) - 1 ) ) )') }
20
+ it{ expect(d1.to_s).to eq('( ( 2 * x ) * ( x ^ ( ( 2 * x ) - 1 ) ) )') }
21
+ it{ expect(d2.to_s).to eq('( ( 2 * x ) * ( x ^ ( ( 2 * x ) - 1 ) ) )') }
22
22
  end
23
23
 
24
24
  context 'ex3' do
@@ -47,10 +47,17 @@ describe Dydx::Algebra::Operator::Parts::Formula do
47
47
  it{ expect((:y - (:x - :y)).to_s).to eq('( ( 2 * y ) - x )') }
48
48
  it{ expect((:y - (:y - :x)).to_s).to eq('x') }
49
49
 
50
- it{ expect(((:x * 2) ^ 2).to_s).to eq('( ( x ^ 2 ) * 4 )') }
50
+ it{ expect((x + 3) * 2).to eq(x * 2 + 6) }
51
+ # it{ expect((x - 3) * 2).to eq(x * 2 - 6) }
52
+ it{ expect((x + 3) * 2).to eq(x * 2 + 6) }
53
+ it{ expect((x + 3) * 2).to eq(x * 2 + 6) }
54
+
55
+ it{ expect(((:x * 2) ^ 2).to_s).to eq('( 4 * ( x ^ 2 ) )') }
51
56
  it{ expect(((:x / 2) ^ 2).to_s).to eq('( ( x ^ 2 ) / 4 )') }
52
57
 
58
+ it{ expect((3*x + 4*(x^2)+ 4*x).to_s).to eq('( ( 7 * x ) + ( 4 * ( x ^ 2 ) ) )') }
59
+
53
60
  # TODO:
54
- it{ expect((2 ^ (:x * 2)).to_s).to eq('( 2 ^ ( x * 2 ) )') }
61
+ it{ expect((2 ^ (:x * 2)).to_s).to eq('( 2 ^ ( 2 * x ) )') }
55
62
  it{ expect((2 ^ (:x / 2)).to_s).to eq('( 2 ^ ( x / 2 ) )') }
56
63
  end
@@ -28,8 +28,8 @@ describe Dydx:Function do
28
28
 
29
29
  it{ expect(h(a, b, c) <= d/db(g(a, b))).to eq(h(a, b, c)) }
30
30
  it{ expect(h(a, b, c) <= d/db(g(a, b))).to eq($h) }
31
- it{ expect(h(a, b, c)).to eq(( ( 2 * b ) + a )) }
32
- it{ expect(h(a, b, c).algebra).to eq(( ( 2 * b ) + a )) }
31
+ it{ expect(h(a, b, c)).to eq(( a + ( 2 * b ) )) }
32
+ it{ expect(h(a, b, c).algebra).to eq(( a + ( 2 * b ) )) }
33
33
 
34
34
  it 'ex.4' do
35
35
  $f = nil
@@ -25,6 +25,11 @@ describe Helper do
25
25
  it{ expect((:x * :y).is_multiple_of(:z)).to be_false }
26
26
  end
27
27
 
28
+ context '#like_term?' do
29
+ it{ expect(x.like_term?(x)).to be_true }
30
+ it{ expect((2 * x).like_term?((3 * x))).to be_true }
31
+ end
32
+
28
33
  context '#combinable?' do
29
34
  it{ expect(:x.combinable?(:x, :+)).to be_true }
30
35
  it{ expect(:x.combinable?(2 * :x, :+)).to be_true }
@@ -1,8 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Dydx:Integrand do
4
+ before(:each) do
5
+ reset
6
+ end
7
+
4
8
  it 'ex1' do
5
- $f = nil
6
9
  f(x, y) <= x * y
7
10
  integrand = S(f(x, y), dx)
8
11
  expect(integrand.function).to eq(f(x, y))
@@ -11,31 +14,26 @@ describe Dydx:Integrand do
11
14
  end
12
15
 
13
16
  it 'ex2' do
14
- $f = nil
15
17
  f(x) <= x * x
16
18
  expect(S(f(x), dx)[0, 1]).to eq(0.3333333333333334)
17
19
  end
18
20
 
19
21
  it 'ex3' do
20
- $f = nil
21
22
  f(x) <= sin(x)
22
23
  expect(S(f(x), dx)[0, Math::PI/2]).to eq(1.000000000021139)
23
24
  end
24
25
 
25
26
  it 'ex4' do
26
- $f = nil
27
27
  f(x) <= cos(x)
28
28
  expect(S(f(x), dx)[0, Math::PI]).to eq(7.440786129085082e-17)
29
29
  end
30
30
 
31
31
  it 'ex5' do
32
- $f = nil
33
32
  f(x) <= log(x)
34
33
  expect(S(f(x), dx)[0, 1]).to eq(-oo)
35
34
  end
36
35
 
37
36
  it 'ex6' do
38
- $f = nil
39
37
  f(x) <= e ^ (- (x ^ 2))
40
38
  expect(f(0)).to eq(1)
41
39
  expect(f(1)).to eq(1.0/Math::E)
@@ -44,13 +42,11 @@ describe Dydx:Integrand do
44
42
  end
45
43
 
46
44
  it 'ex7' do
47
- $f = nil
48
45
  f(x) <= (1.0 / ( ( 2.0 * Math::PI ) ^ 0.5 ) ) * ( e ^ (- (x ^ 2) / 2) )
49
46
  expect(S(f(x), dx)[-1000, 1000, 1000]).to eq(0.9952054164466917)
50
47
  end
51
48
 
52
49
  it 'ex8' do
53
- $f = nil
54
50
  f(x) <= (1.0 / ( ( 2.0 * pi ) ^ 0.5 ) ) * ( e ^ (- (x ^ 2) / 2) )
55
51
  expect(S(f(x), dx)[-oo, oo, 1000]).to eq(0.9952054164466917)
56
52
  end
metadata CHANGED
@@ -1,68 +1,75 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dydx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - gogotanaka
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-05-26 00:00:00.000000000 Z
12
+ date: 2014-05-28 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - "~>"
19
+ - - ~>
18
20
  - !ruby/object:Gem::Version
19
21
  version: '1.6'
20
22
  type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - "~>"
27
+ - - ~>
25
28
  - !ruby/object:Gem::Version
26
29
  version: '1.6'
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: rake
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - ">="
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: '0'
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - ">="
43
+ - - ! '>='
39
44
  - !ruby/object:Gem::Version
40
45
  version: '0'
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: rspec
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
- - - ">="
51
+ - - ! '>='
46
52
  - !ruby/object:Gem::Version
47
53
  version: '0'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
- - - ">="
59
+ - - ! '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
- description: It is possible to use the differential using the Symbol and Fixnum by
56
- including the Dydx. And, we can use the natural logarithm and log.
62
+ description: Dydx is new math DSL in Ruby. The most important thing in this DSL is
63
+ we can handle math in the same sense sense of the math on paper.
57
64
  email:
58
65
  - qlli.illb@gmail.com
59
66
  executables: []
60
67
  extensions: []
61
68
  extra_rdoc_files: []
62
69
  files:
63
- - ".gitignore"
64
- - ".rspec"
65
- - ".travis.yml"
70
+ - .gitignore
71
+ - .rspec
72
+ - .travis.yml
66
73
  - Gemfile
67
74
  - LICENSE.txt
68
75
  - README.md
@@ -125,27 +132,34 @@ files:
125
132
  homepage: https://github.com/gogotanaka
126
133
  licenses:
127
134
  - MIT
128
- metadata: {}
129
135
  post_install_message:
130
136
  rdoc_options: []
131
137
  require_paths:
132
138
  - lib
133
139
  required_ruby_version: !ruby/object:Gem::Requirement
140
+ none: false
134
141
  requirements:
135
- - - ">="
142
+ - - ! '>='
136
143
  - !ruby/object:Gem::Version
137
144
  version: '0'
145
+ segments:
146
+ - 0
147
+ hash: 1610563563432672313
138
148
  required_rubygems_version: !ruby/object:Gem::Requirement
149
+ none: false
139
150
  requirements:
140
- - - ">="
151
+ - - ! '>='
141
152
  - !ruby/object:Gem::Version
142
153
  version: '0'
154
+ segments:
155
+ - 0
156
+ hash: 1610563563432672313
143
157
  requirements: []
144
158
  rubyforge_project:
145
- rubygems_version: 2.2.2
159
+ rubygems_version: 1.8.23
146
160
  signing_key:
147
- specification_version: 4
148
- summary: We can enjoy the derivative.
161
+ specification_version: 3
162
+ summary: We can enjoy the math.
149
163
  test_files:
150
164
  - spec/dydx_spec.rb
151
165
  - spec/lib/algebra/formula_spec.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 05d9adcc67c3ad1cbaf217f11bf2d71a5926588a
4
- data.tar.gz: bd230293d17b20bf98ab7b6af22d03a544454f15
5
- SHA512:
6
- metadata.gz: 96db75da9bb34f1dd34b4f7dc725d380031fd3092d93062e7d9289a41c35132612521ece1e3770ed0649f3c936ebd0daea965b13465a9c060f7b63258e7aa882
7
- data.tar.gz: 47038bba5523d403d3f07153e22236e6f71d15846256d9f2db0772bf679834ac4c0b3ec9a16bd2b86f953ad268ee831e9fb9c6257529e4fe2b35046befafebd5