differentiation 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4f77d01605afbbd8c64d7a36c2f0f88540846c4c103a3bd97b98d493abded3cf
4
- data.tar.gz: 2049debc4169d0b1f214517475e5864775932afa6e3a02aad27029be0ee97483
3
+ metadata.gz: 6f929d2f761f2c899c992ee5c1c5298c9309571832e53785b05fa363ee8e7184
4
+ data.tar.gz: 83ee712e1b681bbf9ce607ba14e6fdb2bc5b03e5e54fc6345711a94011abba12
5
5
  SHA512:
6
- metadata.gz: 11ee0a83cf38b016b79004723a966d82651b24bb459d7fe4dfd55e1fe3a18c9a80d58155ce8cfe2e84870467833c6e5d01edb4bd0cb6707822df113dafef86b2
7
- data.tar.gz: 97fee6518f5abd937ec55d2361b8359b850743fee62324a3c41ab817bbf7c6dadfa91c6eb8e639fe243a261e250d02e8ce905150ec0894caf755e8719d3a77fd
6
+ metadata.gz: 22129a89a99a38eed921c69e8b84e7da61c6a89e102b9e8090d35faf2e8bc8b81df404f894f3e002fb43f65f8e06a49d30784962ff8039a3b6bee35b222cc0d1
7
+ data.tar.gz: 3f1c0c90283778a6a7add7cbbc4b61f07bce594aeb84241a80e0bb56b03345d42ec39b981aa016d9b09c2945221169b5d28b9ecabd78712415d8d717f3547e4f
@@ -40,14 +40,16 @@ module Differentiation
40
40
  end
41
41
  kwargs = Hash[kwargs.map{|k,v| [k, Differentiation.convert_to_dual_number(v, key: k)] }]
42
42
  if kwargs.empty?
43
- f.call(*args)
43
+ Differentiation.convert_to_dual_number(f.call(*args))
44
44
  else
45
- f.call(*args, **kwargs)
45
+ Differentiation.convert_to_dual_number(f.call(*args, **kwargs))
46
46
  end
47
47
  }
48
48
  end
49
49
 
50
50
  class DualNumber
51
+ include Comparable
52
+
51
53
  def initialize(n, diff=lambda{|_| 0})
52
54
  @n = n
53
55
  @diff = diff
@@ -85,6 +87,14 @@ module Differentiation
85
87
  end
86
88
  end
87
89
 
90
+ def <=>(other)
91
+ if other.is_a?(DualNumber)
92
+ @n <=> other.n
93
+ else
94
+ @n <=> other
95
+ end
96
+ end
97
+
88
98
  def +(other)
89
99
  if other.is_a?(DualNumber)
90
100
  n = @n + other.n
@@ -132,10 +142,10 @@ module Differentiation
132
142
  def **(other)
133
143
  if other.is_a?(DualNumber)
134
144
  n = @n ** other.n
135
- diff = ->(key) { (@n ** other.n) * (other.diff(key) * Math.log(@n) + (other.n / @n)) }
145
+ diff = ->(key) { (@n ** other.n) * (other.diff.call(key) * Math.log(@n) + (other.n / @n)) }
136
146
  else
137
147
  n = @n ** other
138
- diff = ->(key) { (@n ** (other-1)) * other }
148
+ diff = ->(key) { ((@n ** (other-1)) * other) * @diff.call(key) }
139
149
  end
140
150
  DualNumber.new(n, diff)
141
151
  end
@@ -1,3 +1,3 @@
1
1
  module Differentiation
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: differentiation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - nagachika
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-03-17 00:00:00.000000000 Z
11
+ date: 2019-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler