rover-df 0.3.3 → 0.3.4
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +9 -0
- data/lib/rover/vector.rb +39 -12
- data/lib/rover/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c77203874c704a18978e6a2483a1718c65fc96c47ef4dbe178a23bcd8ea6ce32
|
4
|
+
data.tar.gz: 24f04572c8197898387037c6800f487066ad4e56a35ef31df1877b6aef442fcd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 383e162cd6f62d1d409b869081f4ba97025dd297567a01d300672451a0883f90464f1396b348b6991d1b99a383d4d328f33f8c7cd560e810c96e0ed2f231b688
|
7
|
+
data.tar.gz: 45bb86dfc58172021e7fdef8677f74bbb32075bfe15022e6c0cfe2ddbae0be9b0d1909f5ff42a7792a7863d54bb53afeb309610d22ae0fc02f93f9026c2ab782
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## 0.3.4 (2022-07-12)
|
2
|
+
|
3
|
+
- Added `cbrt`, `erf`, `erfc`, and `hypot` methods to vectors
|
4
|
+
- Added `frexp` and `ldexp` methods to vectors
|
5
|
+
- Added `base` argument to `log` method
|
6
|
+
|
1
7
|
## 0.3.3 (2022-07-11)
|
2
8
|
|
3
9
|
- Added `ln`, `log`, `log10`, and `log2` methods to vectors
|
data/README.md
CHANGED
@@ -192,6 +192,7 @@ df[:a] / 5
|
|
192
192
|
df[:a] % 5
|
193
193
|
df[:a] ** 2
|
194
194
|
df[:a].sqrt
|
195
|
+
df[:a].cbrt
|
195
196
|
df[:a].abs
|
196
197
|
```
|
197
198
|
|
@@ -207,6 +208,7 @@ Logarithm
|
|
207
208
|
|
208
209
|
```ruby
|
209
210
|
df[:a].ln # or log
|
211
|
+
df[:a].log(5)
|
210
212
|
df[:a].log10
|
211
213
|
df[:a].log2
|
212
214
|
```
|
@@ -240,6 +242,13 @@ df[:a].acosh
|
|
240
242
|
df[:a].atanh
|
241
243
|
```
|
242
244
|
|
245
|
+
Error function
|
246
|
+
|
247
|
+
```ruby
|
248
|
+
df[:a].erf
|
249
|
+
df[:a].erfc
|
250
|
+
```
|
251
|
+
|
243
252
|
Summary statistics
|
244
253
|
|
245
254
|
```ruby
|
data/lib/rover/vector.rb
CHANGED
@@ -21,6 +21,8 @@ module Rover
|
|
21
21
|
uint: Numo::UInt64
|
22
22
|
}
|
23
23
|
|
24
|
+
NOT_SET = Object.new
|
25
|
+
|
24
26
|
def initialize(data, type: nil)
|
25
27
|
@data = cast_data(data, type: type)
|
26
28
|
raise ArgumentError, "Bad size: #{@data.shape}" unless @data.ndim == 1
|
@@ -87,6 +89,7 @@ module Rover
|
|
87
89
|
if v.is_a?(Vector)
|
88
90
|
Vector.new(v.to_numo.mask(@data))
|
89
91
|
else
|
92
|
+
# TODO return vector unless v is an integer in 0.4.0
|
90
93
|
@data[v]
|
91
94
|
end
|
92
95
|
end
|
@@ -201,7 +204,8 @@ module Rover
|
|
201
204
|
if ndigits == 0
|
202
205
|
Vector.new(@data.round)
|
203
206
|
else
|
204
|
-
|
207
|
+
# TODO pass type
|
208
|
+
Vector.new(@data.to_a.map { |v| v.round(ndigits) })
|
205
209
|
end
|
206
210
|
end
|
207
211
|
|
@@ -209,7 +213,8 @@ module Rover
|
|
209
213
|
if ndigits == 0
|
210
214
|
Vector.new(@data.ceil)
|
211
215
|
else
|
212
|
-
|
216
|
+
# TODO pass type
|
217
|
+
Vector.new(@data.to_a.map { |v| v.ceil(ndigits) })
|
213
218
|
end
|
214
219
|
end
|
215
220
|
|
@@ -217,22 +222,44 @@ module Rover
|
|
217
222
|
if ndigits == 0
|
218
223
|
Vector.new(@data.floor)
|
219
224
|
else
|
220
|
-
|
225
|
+
# TODO pass type
|
226
|
+
Vector.new(@data.to_a.map { |v| v.floor(ndigits) })
|
221
227
|
end
|
222
228
|
end
|
223
229
|
|
224
|
-
[:sqrt, :sin, :cos, :tan, :asin, :acos, :atan, :sinh, :cosh, :tanh, :asinh, :acosh, :atanh, :
|
230
|
+
[:sqrt, :cbrt, :sin, :cos, :tan, :asin, :acos, :atan, :sinh, :cosh, :tanh, :asinh, :acosh, :atanh, :log2, :log10, :exp, :exp2, :erf, :erfc].each do |m|
|
225
231
|
define_method(m) do
|
226
|
-
data
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
Vector.new(data)
|
232
|
+
Vector.new(Numo::NMath.send(m, @data))
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
236
|
+
def log(base = NOT_SET)
|
237
|
+
if base == NOT_SET
|
238
|
+
Vector.new(Numo::NMath.log(@data))
|
239
|
+
else
|
240
|
+
type = self.type == :float32 ? :float32 : :float64
|
241
|
+
Vector.new(@data.to_a.map { |v| Math.log(v, base) }, type: type)
|
233
242
|
end
|
234
243
|
end
|
235
|
-
|
244
|
+
|
245
|
+
def ln
|
246
|
+
log
|
247
|
+
end
|
248
|
+
|
249
|
+
def hypot(y)
|
250
|
+
y = y.to_numo if y.is_a?(Rover::Vector)
|
251
|
+
Vector.new(Numo::NMath.hypot(@data, y))
|
252
|
+
end
|
253
|
+
|
254
|
+
def frexp
|
255
|
+
fraction, exponent = Numo::NMath.frexp(@data)
|
256
|
+
[Vector.new(fraction), Vector.new(exponent)]
|
257
|
+
end
|
258
|
+
|
259
|
+
def ldexp(exponent)
|
260
|
+
exponent = exponent.to_numo if exponent.is_a?(Rover::Vector)
|
261
|
+
Vector.new(Numo::NMath.ldexp(@data, exponent))
|
262
|
+
end
|
236
263
|
|
237
264
|
def each(&block)
|
238
265
|
@data.each(&block)
|
data/lib/rover/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rover-df
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-07-
|
11
|
+
date: 2022-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: numo-narray
|