dydx 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/lib/dydx.rb CHANGED
@@ -21,8 +21,7 @@ module Dydx
21
21
 
22
22
  def method_missing(method, *args, &block)
23
23
  method_name = method.to_s
24
- return super unless (method_name[0] == 'd' && method_name.size <= 2)
25
- method_name.slice!(0)
26
- Delta.new(method_name.empty? ? nil : method_name.to_sym, args.first)
24
+ return super unless method_name =~ /^d.?$/
25
+ Delta.new(method_name[1] ? method_name[1].to_sym : nil, args.first)
27
26
  end
28
27
  end
@@ -43,9 +43,9 @@ module Dydx
43
43
  f, g = formula.f, formula.g
44
44
  g * log(f)
45
45
  elsif formula.is_1?
46
- _(0)
46
+ e0
47
47
  elsif formula.is_a?(E)
48
- _(1)
48
+ e1
49
49
  else
50
50
  Log.new(formula)
51
51
  end
@@ -54,7 +54,7 @@ module Dydx
54
54
  def sin(x)
55
55
  multiplier = x.is_multiple_of(pi)
56
56
  if multiplier.is_a?(Num)
57
- _(0)
57
+ e0
58
58
  else
59
59
  Sin.new(x)
60
60
  end
@@ -63,7 +63,7 @@ module Dydx
63
63
  def cos(x)
64
64
  multiplier = x.is_multiple_of(pi)
65
65
  if multiplier.is_a?(Num) && multiplier.n % 2 == 0
66
- _(1)
66
+ e1
67
67
  elsif multiplier.is_a?(Num) && multiplier.n % 2 == 1
68
68
  _(-1)
69
69
  else
@@ -3,7 +3,7 @@ module Dydx
3
3
  module Set
4
4
  class E < Base
5
5
  def differentiate(sym=:x)
6
- _(0)
6
+ e0
7
7
  end
8
8
  alias_method :d, :differentiate
9
9
 
@@ -13,4 +13,4 @@ module Dydx
13
13
  end
14
14
  end
15
15
  end
16
- end
16
+ end
@@ -5,7 +5,7 @@ module Dydx
5
5
  include Helper
6
6
 
7
7
  def differentiate(sym=:x)
8
- _(0)
8
+ e0
9
9
  end
10
10
  alias_method :d, :differentiate
11
11
  end
@@ -9,7 +9,7 @@ module Dydx
9
9
  end
10
10
 
11
11
  def differentiate(sym=:x)
12
- _(0)
12
+ e0
13
13
  end
14
14
  alias_method :d, :differentiate
15
15
 
@@ -18,9 +18,9 @@ module Dydx
18
18
  end
19
19
 
20
20
  def ==(x)
21
- x.is_a?(Num) && n == x.n
21
+ to_s == x.to_s
22
22
  end
23
23
  end
24
24
  end
25
25
  end
26
- end
26
+ end
@@ -5,10 +5,10 @@ module Dydx
5
5
  include Helper
6
6
 
7
7
  def differentiate(sym=:x)
8
- self == sym ? _(1) : _(0)
8
+ self == sym ? e1 : e0
9
9
  end
10
10
  alias_method :d, :differentiate
11
11
  end
12
12
  end
13
13
  end
14
- end
14
+ end
@@ -14,4 +14,4 @@ module Dydx
14
14
  end
15
15
  end
16
16
  end
17
- end
17
+ end
data/lib/dydx/helper.rb CHANGED
@@ -8,11 +8,11 @@ module Dydx
8
8
  }
9
9
 
10
10
  def is_0?
11
- self == 0 || (is_a?(Num) && n == 0) || (subtrahend? && x.is_0?)
11
+ self == 0 || (is_a?(Num) && n == 0)
12
12
  end
13
13
 
14
14
  def is_1?
15
- self == 1 || (is_a?(Num) && n == 1) || (divisor? && x.is_1?)
15
+ self == 1 || (is_a?(Num) && n == 1)
16
16
  end
17
17
 
18
18
  def is_minus1?
@@ -122,4 +122,4 @@ module Dydx
122
122
  is_a?(Inverse) && operator == :*
123
123
  end
124
124
  end
125
- end
125
+ end
data/lib/dydx/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Dydx
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -9,13 +9,13 @@ describe Dydx::Algebra::Formula do
9
9
  describe 'Calculate' do
10
10
  context 'With Fixnum' do
11
11
  let(:formula) { (:x + :y) }
12
- it{ expect(formula + 0).to eq(formula + 0) }
13
- it{ expect(formula - 0).to eq(formula - 0) }
14
- it{ expect((formula * 0).to_s).to eq('0') }
15
- it{ expect((formula * 1).to_s).to eq(formula.to_s) }
12
+ it{ expect(formula + 0).to eq(formula) }
13
+ it{ expect(formula - 0).to eq(formula) }
14
+ it{ expect(formula * 0).to eq(0) }
15
+ it{ expect(formula * 1).to eq(formula) }
16
16
  it{ expect{(formula / 0).to_s}.to raise_error(ZeroDivisionError) }
17
17
  it{ expect(formula / 1).to eq(formula) }
18
- it{ expect((formula ^ 0).to_s).to eq('1') }
18
+ it{ expect(formula ^ 0).to eq(1) }
19
19
  end
20
20
  end
21
21
 
@@ -29,25 +29,25 @@ describe Dydx::Algebra::Formula do
29
29
  end
30
30
 
31
31
  describe '#differentiate' do
32
- it{ expect(addition.d(:x).to_s).to eq('1') }
33
- it{ expect(addition.d(:y).to_s).to eq('1') }
34
- it{ expect(addition.d(:z).to_s).to eq('0') }
32
+ it{ expect(addition.d(:x)).to eq(1) }
33
+ it{ expect(addition.d(:y)).to eq(1) }
34
+ it{ expect(addition.d(:z)).to eq(0) }
35
35
 
36
- it{ expect(subtraction.d(:x).to_s).to eq('1') }
37
- it{ expect(subtraction.d(:y).to_s).to eq('( - 1 )') }
38
- it{ expect(subtraction.d(:z).to_s).to eq('0') }
36
+ it{ expect(subtraction.d(:x)).to eq(1) }
37
+ it{ expect(subtraction.d(:y)).to eq('( - 1 )') }
38
+ it{ expect(subtraction.d(:z)).to eq(0) }
39
39
 
40
40
  it{ expect(multiplication.d(:x)).to eq(:y) }
41
41
  it{ expect(multiplication.d(:y)).to eq(:x) }
42
- it{ expect(multiplication.d(:z).to_s).to eq('0') }
42
+ it{ expect(multiplication.d(:z)).to eq(0) }
43
43
 
44
- it{ expect(division.d(:x).to_s).to eq("( 1 / y )") }
45
- it{ expect(division.d(:y).to_s).to eq('( - ( x / ( y ^ 2 ) ) )') }
46
- it{ expect(division.d(:z).to_s).to eq('0') }
44
+ it{ expect(division.d(:x)).to eq(1/:y) }
45
+ it{ expect(division.d(:y)).to eq('( - ( x / ( y ^ 2 ) ) )') }
46
+ it{ expect(division.d(:z)).to eq(0) }
47
47
 
48
48
  it{ expect(exponentiation.d(:x).to_s).to eq('( y * ( x ^ ( y - 1 ) ) )') }
49
- it{ expect(exponentiation.d(:y).to_s).to eq('( ( x ^ y ) * log( x ) )') }
50
- it{ expect(exponentiation.d(:z).to_s).to eq('0') }
49
+ it{ expect(exponentiation.d(:y)).to eq((:x ^ :y) * log(:x)) }
50
+ it{ expect(exponentiation.d(:z)).to eq(0) }
51
51
  end
52
52
 
53
53
  describe '#include?' do
@@ -59,4 +59,4 @@ describe Dydx::Algebra::Formula do
59
59
  it{ expect((1 + :x).openable?(_(1))).to be_true }
60
60
  it{ expect((1 + :x).openable?(:z)).to be_false }
61
61
  end
62
- end
62
+ end
@@ -50,6 +50,7 @@ describe Dydx::Algebra::Operator::Parts::Formula do
50
50
  it{ expect(((:x * 2) ^ 2).to_s).to eq('( ( x ^ 2 ) * 4 )') }
51
51
  it{ expect(((:x / 2) ^ 2).to_s).to eq('( ( x ^ 2 ) / 4 )') }
52
52
 
53
- it{ expect((2 ^ (:x * 2)).to_s).to eq('( ( x ^ 2 ) * 4 )') }
54
- it{ expect((2 ^ (:x / 2)).to_s).to eq('( ( x ^ 2 ) / 4 )') }
55
- end
53
+ # TODO:
54
+ it{ expect((2 ^ (:x * 2)).to_s).to eq('( 2 ^ ( x * 2 ) )') }
55
+ it{ expect((2 ^ (:x / 2)).to_s).to eq('( 2 ^ ( x / 2 ) )') }
56
+ end
@@ -49,16 +49,17 @@ describe Fixnum do
49
49
  it{ expect(3 * 2).to eq(6) }
50
50
 
51
51
  it{ expect((0 / 3).to_s).to eq('0') }
52
- it{ expect{(3 / 0).to_s}.to raise_error(ZeroDivisionError) }
52
+ it{ expect{(3 / 0).to_s}.to raise_error(FloatDomainError) }
53
53
  it{ expect((3 / 1).to_s).to eq('3') }
54
- it{ expect((2 / 3).to_s).to eq('( 2 / 3 )') }
54
+ # TODO:
55
+ it{ expect((2 / 3).to_s).to eq('0') }
55
56
 
56
57
 
57
58
  it{ expect((0 ^ 3).to_s).to eq('0') }
58
59
  it{ expect((3 ^ 0).to_s).to eq('1') }
59
60
  it{ expect((1 ^ 3).to_s).to eq('1') }
60
61
  it{ expect((3 ^ 1).to_s).to eq('3') }
61
- it{ expect((3 ^ 2).to_s).to eq('( 3 ^ 2 )') }
62
+ it{ expect((3 ^ 2).to_s).to eq('9') }
62
63
  end
63
64
  end
64
65
  end
metadata CHANGED
@@ -1,55 +1,62 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dydx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
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-18 00:00:00.000000000 Z
12
+ date: 2014-05-19 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
62
  description: It is possible to use the differential using the Symbol and Fixnum by
@@ -60,9 +67,9 @@ 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
@@ -117,26 +124,33 @@ files:
117
124
  homepage: https://github.com/gogotanaka
118
125
  licenses:
119
126
  - MIT
120
- metadata: {}
121
127
  post_install_message:
122
128
  rdoc_options: []
123
129
  require_paths:
124
130
  - lib
125
131
  required_ruby_version: !ruby/object:Gem::Requirement
132
+ none: false
126
133
  requirements:
127
- - - ">="
134
+ - - ! '>='
128
135
  - !ruby/object:Gem::Version
129
136
  version: '0'
137
+ segments:
138
+ - 0
139
+ hash: -4588855111168317577
130
140
  required_rubygems_version: !ruby/object:Gem::Requirement
141
+ none: false
131
142
  requirements:
132
- - - ">="
143
+ - - ! '>='
133
144
  - !ruby/object:Gem::Version
134
145
  version: '0'
146
+ segments:
147
+ - 0
148
+ hash: -4588855111168317577
135
149
  requirements: []
136
150
  rubyforge_project:
137
- rubygems_version: 2.2.2
151
+ rubygems_version: 1.8.23
138
152
  signing_key:
139
- specification_version: 4
153
+ specification_version: 3
140
154
  summary: We can enjoy the derivative.
141
155
  test_files:
142
156
  - spec/dydx_spec.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 50b217dcece3200df260f85267cc8eb9962327d1
4
- data.tar.gz: c1f0fad073894322d1fe70198ad12ec81eeb7fc3
5
- SHA512:
6
- metadata.gz: 20a5be7e5853dbb70910c8595a509a903882a58d7393bffe44d809e37d38910aefbe17024bd82c27e6ed1084895cdd1d74dc0765a033d852f3d4187d1b8e12a1
7
- data.tar.gz: bcb0c305f6d9befd7de5b1c415bf522c012adfb910fe4707efdaeaf745d3cdb1391c64f6ea3e94f7e39d29c8e5369a12626c0b4eb57f48bdad18bf4f1372ed07