dydx 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d8ca3c4000aeec1a5bf45fd3c7ed3fbd406d6617
4
+ data.tar.gz: 5de895a80ebd9d7684f0ef0544709979709293fc
5
+ SHA512:
6
+ metadata.gz: dc98862c3a69ffc14d6ace6ebe15dcf41d1ce7559e5ab52713c9f48394ebb1fb7b18fbb0ccbcaf06dab58eadd1c8bf31acb2fa15ccca07f3563375cd7936df1e
7
+ data.tar.gz: ff75009f67db271fe0b7e25ed08d8e15bd724b1544b86b668e79c5e5b2a4b623de758a94d390e95da0e7deac2e7a5328f2477306e2521b5fd322362483e80da9
@@ -21,7 +21,12 @@ 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 =~ /^d.?$/
25
- Delta.new(method_name[1] ? method_name[1].to_sym : nil, args.first)
24
+ if method_name =~ /^d.?$/
25
+ Delta.new(method_name[1] ? method_name[1].to_sym : nil, args.first)
26
+ elsif method_name =~ /^[a-z]$/
27
+ method_name.to_sym
28
+ else
29
+ super
30
+ end
26
31
  end
27
32
  end
@@ -14,28 +14,32 @@ module Dydx
14
14
  super(x)
15
15
  end
16
16
  elsif formula?(super_ope(operator)) && x.formula?(super_ope(operator))
17
- return super(x) if !common_factors(x) || (operator == :* && common_factors(x)[0] != common_factors(x)[1])
18
17
  w1, w2 = common_factors(x)
18
+ return super(x) unless (w1 && w2) && (super_ope(operator).commutative? || w1 == w2)
19
+
19
20
  case operator
20
21
  when :+
21
22
  send(w1).send(super_ope(operator), send(rest(w1)).send(operator, x.send(rest(w2))))
22
23
  when :*
23
- if w1 == :f
24
+ case w1
25
+ when :f
24
26
  send(w1).send(super_ope(operator), send(rest(w1)).send(sub_ope(operator), x.send(rest(w2))))
25
- elsif w1 == :g
27
+ when :g
26
28
  send(w1).send(super_ope(operator), send(rest(w1)).send(operator, x.send(rest(w2)))).commutate!
27
29
  end
28
30
  end
29
31
  elsif formula?(super_ope(operator)) && x.inverse?(operator) && x.x.formula?(super_ope(operator))
30
- return super(x) if !common_factors(x.x) || (operator == :* && common_factors(x.x)[0] != common_factors(x.x)[1])
31
32
  w1, w2 = common_factors(x.x)
33
+ return super(x) unless (w1 && w2) && (super_ope(operator).commutative? || w1 == w2)
34
+
32
35
  case operator
33
36
  when :+
34
37
  send(w1).send(super_ope(operator), send(rest(w1)).send(inverse_ope(operator), x.x.send(rest(w2))))
35
38
  when :*
36
- if w1 == :f
39
+ case w1
40
+ when :f
37
41
  send(w1).send(super_ope(operator), send(rest(w1)).send(inverse_ope(sub_ope(operator)), x.x.send(rest(w2))))
38
- elsif w1 == :g
42
+ when :g
39
43
  send(w1).send(super_ope(operator), send(rest(w1)).send(inverse_ope(operator), x.x.send(rest(w2)))).commutate!
40
44
  end
41
45
  end
@@ -134,5 +134,11 @@ module Dydx
134
134
  def formula?(operator)
135
135
  is_a?(Formula) && (@operator == operator)
136
136
  end
137
+
138
+ Symbol.class_eval do
139
+ def commutative?
140
+ [:+, :*].include?(self)
141
+ end
142
+ end
137
143
  end
138
144
  end
@@ -1,3 +1,3 @@
1
1
  module Dydx
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
@@ -36,4 +36,12 @@ describe Dydx do
36
36
  it{ expect(d1.to_s).to eq('( 4 * ( e ^ ( 2 * z ) ) )') }
37
37
  it{ expect(d2.to_s).to eq('( 4 * ( e ^ ( 2 * z ) ) )') }
38
38
  end
39
+
40
+ context 'ex5' do
41
+ $f = 2 * (e ^ (2 * z))
42
+ let(:d1){ df/dz }
43
+ let(:d2){ d/dz($f) }
44
+ it{ expect(d1.to_s).to eq('( 4 * ( e ^ ( 2 * z ) ) )') }
45
+ it{ expect(d2.to_s).to eq('( 4 * ( e ^ ( 2 * z ) ) )') }
46
+ end
39
47
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dydx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
5
- prerelease:
4
+ version: 0.0.9
6
5
  platform: ruby
7
6
  authors:
8
7
  - gogotanaka
@@ -14,49 +13,43 @@ dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
19
  version: '1.6'
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
26
  version: '1.6'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rspec
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - ">="
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  description: It is possible to use the differential using the Symbol and Fixnum by
@@ -67,9 +60,9 @@ executables: []
67
60
  extensions: []
68
61
  extra_rdoc_files: []
69
62
  files:
70
- - .gitignore
71
- - .rspec
72
- - .travis.yml
63
+ - ".gitignore"
64
+ - ".rspec"
65
+ - ".travis.yml"
73
66
  - Gemfile
74
67
  - LICENSE.txt
75
68
  - README.md
@@ -124,33 +117,26 @@ files:
124
117
  homepage: https://github.com/gogotanaka
125
118
  licenses:
126
119
  - MIT
120
+ metadata: {}
127
121
  post_install_message:
128
122
  rdoc_options: []
129
123
  require_paths:
130
124
  - lib
131
125
  required_ruby_version: !ruby/object:Gem::Requirement
132
- none: false
133
126
  requirements:
134
- - - ! '>='
127
+ - - ">="
135
128
  - !ruby/object:Gem::Version
136
129
  version: '0'
137
- segments:
138
- - 0
139
- hash: -728077447189178322
140
130
  required_rubygems_version: !ruby/object:Gem::Requirement
141
- none: false
142
131
  requirements:
143
- - - ! '>='
132
+ - - ">="
144
133
  - !ruby/object:Gem::Version
145
134
  version: '0'
146
- segments:
147
- - 0
148
- hash: -728077447189178322
149
135
  requirements: []
150
136
  rubyforge_project:
151
- rubygems_version: 1.8.23
137
+ rubygems_version: 2.2.2
152
138
  signing_key:
153
- specification_version: 3
139
+ specification_version: 4
154
140
  summary: We can enjoy the derivative.
155
141
  test_files:
156
142
  - spec/dydx_spec.rb