convolver 0.3.1 → 0.3.2
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/.travis.yml +17 -9
- data/README.md +7 -6
- data/convolver.gemspec +1 -1
- data/ext/convolver/extconf.rb +5 -1
- data/lib/convolver.rb +3 -11
- data/lib/convolver/version.rb +1 -1
- data/spec/convolve_basic_spec.rb +5 -5
- data/spec/convolve_fftw3_spec.rb +14 -14
- data/spec/convolve_spec.rb +23 -5
- data/spec/helpers.rb +8 -5
- metadata +32 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c3bcf13a230b62ed29260b84490f720af3408cc
|
4
|
+
data.tar.gz: 3d00b5f4ece4078525b5d57fbe536d3dfcc6020e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 113c51e9233dabd6d94490b1906e31787f0fc9e7826bacf8b999c2c63e2722381baf417c616519735456f286c781e2597547b9851e77addd8267ec87c38947c2
|
7
|
+
data.tar.gz: 2495231401448636a915562cf6ad09ba4351094a4af290b0d0a84ee5a7a313e57e1e2d8e07b70746b7ee60b1780ba6ed9e4e8c8c19518fa785d4c01e589b8258
|
data/.travis.yml
CHANGED
@@ -1,11 +1,19 @@
|
|
1
|
-
before_install:
|
2
|
-
- sudo apt-get update -qq
|
3
|
-
- sudo apt-get install -qq libfftw3-dev
|
4
1
|
language: ruby
|
2
|
+
cache: bundler
|
3
|
+
|
4
|
+
os:
|
5
|
+
- linux
|
6
|
+
- osx
|
7
|
+
|
8
|
+
addons:
|
9
|
+
apt:
|
10
|
+
update: true
|
11
|
+
packages: libfftw3-dev
|
12
|
+
homebrew:
|
13
|
+
packages: fftw
|
14
|
+
|
5
15
|
rvm:
|
6
|
-
- "
|
7
|
-
- "
|
8
|
-
- "2.
|
9
|
-
-
|
10
|
-
- rbx-19mode
|
11
|
-
- ree
|
16
|
+
- "2.2.10"
|
17
|
+
- "2.3.8"
|
18
|
+
- "2.4.5"
|
19
|
+
- "2.5.3"
|
data/README.md
CHANGED
@@ -2,7 +2,9 @@
|
|
2
2
|
|
3
3
|
[](http://badge.fury.io/rb/convolver)
|
4
4
|
[](http://travis-ci.org/neilslater/convolver)
|
5
|
-
[](https://coveralls.io/r/neilslater/convolver?branch=master)
|
6
|
+
[](http://inch-ci.org/github/neilslater/convolver)
|
7
|
+
[](https://codeclimate.com/github/neilslater/convolver)
|
6
8
|
|
7
9
|
Calculates discrete convolution between two multi-dimensional arrays of floats.
|
8
10
|
See http://en.wikipedia.org/wiki/Convolution
|
@@ -51,11 +53,6 @@ small convolutions are processed directly by multiplying out all combinations an
|
|
51
53
|
and large convolutions are processed using FFTW3 to convert to frequency space where convolution
|
52
54
|
is simpler and faster to calculate, then convert back.
|
53
55
|
|
54
|
-
## Convolutional Neural Nets
|
55
|
-
|
56
|
-
Code for CNNs in Ruby, based on the convolve_basic method from this gem, is planned for a
|
57
|
-
new gem ```co_ne_ne```.
|
58
|
-
|
59
56
|
## Contributing
|
60
57
|
|
61
58
|
1. Fork it
|
@@ -63,3 +60,7 @@ new gem ```co_ne_ne```.
|
|
63
60
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
64
61
|
4. Push to the branch (`git push origin my-new-feature`)
|
65
62
|
5. Create new Pull Request
|
63
|
+
|
64
|
+
## Contributors
|
65
|
+
|
66
|
+
* [Dima Ermilov](https://github.com/adworse) contributed fix to support compiling under Windows.
|
data/convolver.gemspec
CHANGED
@@ -19,9 +19,9 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.add_development_dependency "yard", ">= 0.8.7.2"
|
20
20
|
spec.add_development_dependency "bundler", ">= 1.3"
|
21
21
|
spec.add_development_dependency "rspec", ">= 2.13.0"
|
22
|
-
spec.add_development_dependency "mocha", ">= 0.14.0"
|
23
22
|
spec.add_development_dependency "rake", ">= 1.9.1"
|
24
23
|
spec.add_development_dependency "rake-compiler", ">= 0.8.3"
|
24
|
+
spec.add_development_dependency "coveralls", ">= 0.6.7"
|
25
25
|
|
26
26
|
spec.files = `git ls-files`.split($/)
|
27
27
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
data/ext/convolver/extconf.rb
CHANGED
@@ -4,7 +4,11 @@ require "rubygems"
|
|
4
4
|
|
5
5
|
# Following code stolen shamelessly from fftw3 gem:
|
6
6
|
narray_dir = File.dirname(Gem.find_files("narray.h").first) rescue $sitearchdir
|
7
|
-
|
7
|
+
if /cygwin|mingw/ =~ RUBY_PLATFORM
|
8
|
+
dir_config('narray', narray_dir, "#{narray_dir}/src")
|
9
|
+
else
|
10
|
+
dir_config('narray', narray_dir, narray_dir)
|
11
|
+
end
|
8
12
|
|
9
13
|
if ( ! ( have_header("narray.h") && have_header("narray_config.h") ) ) then
|
10
14
|
print <<-EOS
|
data/lib/convolver.rb
CHANGED
@@ -26,7 +26,8 @@ module Convolver
|
|
26
26
|
end
|
27
27
|
|
28
28
|
# Factor of two to allow for large uncertainty in predictions for FFTW3
|
29
|
-
|
29
|
+
fft_time_predicted = predict_convolve_fft_time( signal, kernel )
|
30
|
+
if fft_time_predicted < 2 * basic_time_predicted
|
30
31
|
return convolve_fftw3( signal, kernel )
|
31
32
|
end
|
32
33
|
|
@@ -64,7 +65,7 @@ module Convolver
|
|
64
65
|
# @param [NArray] kernel must be same size or smaller than signal in each dimension
|
65
66
|
# @return [Float] rough estimate of time for convolution compared to baseline
|
66
67
|
def self.predict_convolve_fft_time signal, kernel
|
67
|
-
16 * 4.55e-08 *
|
68
|
+
16 * 4.55e-08 * result_shape(signal.shape,kernel.shape).inject(1) { |t,x| t * x * Math.log(x) }
|
68
69
|
end
|
69
70
|
|
70
71
|
# A rough estimate of time that #convolve will take, based on complexity
|
@@ -84,15 +85,6 @@ module Convolver
|
|
84
85
|
shape.inject(1) { |t,x| t * x }
|
85
86
|
end
|
86
87
|
|
87
|
-
def self.combined_shape signal_shape, kernel_shape
|
88
|
-
combined_shape = [ ]
|
89
|
-
signal_shape.each_with_index do |signal_size, i|
|
90
|
-
kernel_size = kernel_shape[i]
|
91
|
-
combined_shape[i] = signal_size + kernel_size - 1
|
92
|
-
end
|
93
|
-
combined_shape
|
94
|
-
end
|
95
|
-
|
96
88
|
def self.result_shape signal_shape, kernel_shape
|
97
89
|
result_shape = [ ]
|
98
90
|
signal_shape.each_with_index do |signal_size, i|
|
data/lib/convolver/version.rb
CHANGED
data/spec/convolve_basic_spec.rb
CHANGED
@@ -7,14 +7,14 @@ describe Convolver do
|
|
7
7
|
a = NArray[ 0.3, 0.4, 0.5 ]
|
8
8
|
b = NArray[ 1.3, -0.5 ]
|
9
9
|
c = Convolver.convolve_basic( a, b )
|
10
|
-
c.
|
10
|
+
expect( c ).to be_narray_like NArray[ 0.19, 0.27 ]
|
11
11
|
end
|
12
12
|
|
13
13
|
it "should calculate a 2D convolution" do
|
14
14
|
a = NArray[ [ 0.3, 0.4, 0.5 ], [ 0.6, 0.8, 0.2 ], [ 0.9, 1.0, 0.1 ] ]
|
15
15
|
b = NArray[ [ 1.2, -0.5 ], [ 0.5, -1.3 ] ]
|
16
16
|
c = Convolver.convolve_basic( a, b )
|
17
|
-
c.
|
17
|
+
expect( c ).to be_narray_like NArray[ [ -0.58, 0.37 ], [ -0.53, 1.23 ] ]
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should calculate a 2D convolution with rectangular arrays" do
|
@@ -23,7 +23,7 @@ describe Convolver do
|
|
23
23
|
[ 0.4, 0.5, 0.6, 0.7, 0.8 ], [ 0.5, 0.4, 0.3, 0.2, 0.1 ] ]
|
24
24
|
b = NArray[ [ 1.2, -0.5, 0.2 ], [ 1.8, 0.5, -1.3 ] ]
|
25
25
|
c = Convolver.convolve_basic( a, b )
|
26
|
-
c.
|
26
|
+
expect( c ).to be_narray_like NArray[ [ 1.48, 0.79, 1.03 ], [ 2.35, 1.7, -0.79 ], [ 1.56, 2.84, -0.53 ],
|
27
27
|
[ 1.13, 1.3, 0.83 ], [ 1.04, 0.26, 0.77 ], [ 1.06, 1.05, 1.04 ] ]
|
28
28
|
end
|
29
29
|
|
@@ -44,7 +44,7 @@ describe Convolver do
|
|
44
44
|
|
45
45
|
# Should be 3x2x1
|
46
46
|
c = Convolver.convolve_basic( a, b )
|
47
|
-
c.
|
47
|
+
expect( c ).to be_narray_like NArray[ [ [ 5.51, 3.04, 4.3 ], [ 3.04, 6.31, 3.87 ] ] ]
|
48
48
|
end
|
49
49
|
|
50
50
|
it "should calculate a 4D convolution" do
|
@@ -75,7 +75,7 @@ describe Convolver do
|
|
75
75
|
|
76
76
|
# Should be 2x2x3x2
|
77
77
|
c = Convolver.convolve_basic( a, b )
|
78
|
-
c.
|
78
|
+
expect( c ).to be_narray_like NArray[
|
79
79
|
[ [ [ 8.5, 8.2 ], [ 11.34, 9.68 ] ], [ [ 7.68, 6.56 ], [ 11.24, 7.16 ] ], [ [ 9.14, 6.54 ], [ 12.44, 9.2 ] ] ],
|
80
80
|
[ [ [ 8.5, 8.2 ], [ 11.34, 9.68 ] ], [ [ 7.68, 6.56 ], [ 11.24, 7.16 ] ], [ [ 9.14, 6.54 ], [ 12.44, 9.2 ] ] ]
|
81
81
|
]
|
data/spec/convolve_fftw3_spec.rb
CHANGED
@@ -7,51 +7,51 @@ describe Convolver do
|
|
7
7
|
a = NArray[ 0.3, 0.4, 0.5 ]
|
8
8
|
b = NArray[ 1.3, -0.5 ]
|
9
9
|
c = Convolver.convolve_fftw3( a, b )
|
10
|
-
c.
|
10
|
+
expect( c ).to be_narray_like NArray[ 0.19, 0.27 ]
|
11
11
|
end
|
12
12
|
|
13
13
|
it "should convolve 1D arrays with a variety of signal and kernel lengths" do
|
14
14
|
a = NArray[ 0.3 ]
|
15
15
|
b = NArray[ -0.7 ]
|
16
16
|
c = Convolver.convolve_fftw3( a, b )
|
17
|
-
c.
|
17
|
+
expect( c ).to be_narray_like NArray[ -0.21 ]
|
18
18
|
|
19
19
|
a = NArray[ 0.3, 0.4, 0.5, 0.2 ]
|
20
20
|
b = NArray[ -0.7 ]
|
21
21
|
c = Convolver.convolve_fftw3( a, b )
|
22
|
-
c.
|
22
|
+
expect( c ).to be_narray_like NArray[ -0.21, -0.28, -0.35, -0.14 ]
|
23
23
|
|
24
24
|
a = NArray[ 0.3, 0.4, 0.5, 0.2 ]
|
25
25
|
b = NArray[ 1.1, -0.7 ]
|
26
26
|
c = Convolver.convolve_fftw3( a, b )
|
27
|
-
c.
|
27
|
+
expect( c ).to be_narray_like NArray[ 0.05, 0.09, 0.41 ]
|
28
28
|
|
29
29
|
a = NArray[ 0.3, 0.4, 0.5, 0.2 ]
|
30
30
|
b = NArray[ 1.1, -0.7, -0.2 ]
|
31
31
|
c = Convolver.convolve_fftw3( a, b )
|
32
|
-
c.
|
32
|
+
expect( c ).to be_narray_like NArray[ -0.05, 0.05 ]
|
33
33
|
|
34
34
|
a = NArray[ 0.3, 0.4, 0.5, 0.2, 0.6 ]
|
35
35
|
b = NArray[ 1.1, -0.7 ]
|
36
36
|
c = Convolver.convolve_fftw3( a, b )
|
37
|
-
c.
|
37
|
+
expect( c ).to be_narray_like NArray[ 0.05, 0.09, 0.41, -0.2 ]
|
38
38
|
|
39
39
|
a = NArray[ 0.3, 0.4, 0.5, 0.2, 0.6 ]
|
40
40
|
b = NArray[ 1.1, -0.7, 2.1 ]
|
41
41
|
c = Convolver.convolve_fftw3( a, b )
|
42
|
-
c.
|
42
|
+
expect( c ).to be_narray_like NArray[ 1.1, 0.51, 1.67 ]
|
43
43
|
|
44
44
|
a = NArray[ 0.3, 0.4, 0.5, 0.2, 0.6 ]
|
45
45
|
b = NArray[ 0.6, -0.5, -0.4, 0.7 ]
|
46
46
|
c = Convolver.convolve_fftw3( a, b )
|
47
|
-
c.
|
47
|
+
expect( c ).to be_narray_like NArray[ -0.08, 0.33 ]
|
48
48
|
end
|
49
49
|
|
50
50
|
it "should calculate a 2D convolution" do
|
51
51
|
a = NArray[ [ 0.3, 0.4, 0.5 ], [ 0.6, 0.8, 0.2 ], [ 0.9, 1.0, 0.1 ] ]
|
52
52
|
b = NArray[ [ 1.2, -0.5 ], [ 0.5, -1.3 ] ]
|
53
53
|
c = Convolver.convolve_fftw3( a, b )
|
54
|
-
c.
|
54
|
+
expect( c ).to be_narray_like NArray[ [ -0.58, 0.37 ], [ -0.53, 1.23 ] ]
|
55
55
|
end
|
56
56
|
|
57
57
|
it "should calculate a 3D convolution" do
|
@@ -71,7 +71,7 @@ describe Convolver do
|
|
71
71
|
|
72
72
|
# Should be 3x2x1
|
73
73
|
c = Convolver.convolve_fftw3( a, b )
|
74
|
-
c.
|
74
|
+
expect( c ).to be_narray_like NArray[ [ [ 5.51, 3.04, 4.3 ], [ 3.04, 6.31, 3.87 ] ] ]
|
75
75
|
end
|
76
76
|
|
77
77
|
it "should calculate a 4D convolution" do
|
@@ -102,7 +102,7 @@ describe Convolver do
|
|
102
102
|
|
103
103
|
# Should be 2x2x3x2
|
104
104
|
c = Convolver.convolve_fftw3( a, b )
|
105
|
-
c.
|
105
|
+
expect( c ).to be_narray_like NArray[
|
106
106
|
[ [ [ 8.5, 8.2 ], [ 11.34, 9.68 ] ], [ [ 7.68, 6.56 ], [ 11.24, 7.16 ] ], [ [ 9.14, 6.54 ], [ 12.44, 9.2 ] ] ],
|
107
107
|
[ [ [ 8.5, 8.2 ], [ 11.34, 9.68 ] ], [ [ 7.68, 6.56 ], [ 11.24, 7.16 ] ], [ [ 9.14, 6.54 ], [ 12.44, 9.2 ] ] ]
|
108
108
|
]
|
@@ -116,7 +116,7 @@ describe Convolver do
|
|
116
116
|
kernel = NArray.sfloat(kernel_length).random()
|
117
117
|
expect_result = Convolver.convolve_basic( signal, kernel )
|
118
118
|
got_result = Convolver.convolve_fftw3( signal, kernel )
|
119
|
-
got_result.
|
119
|
+
expect( got_result ).to be_narray_like expect_result
|
120
120
|
end
|
121
121
|
end
|
122
122
|
end
|
@@ -130,7 +130,7 @@ describe Convolver do
|
|
130
130
|
kernel = NArray.sfloat(kernel_x,kernel_y).random()
|
131
131
|
expect_result = Convolver.convolve_basic( signal, kernel )
|
132
132
|
got_result = Convolver.convolve_fftw3( signal, kernel )
|
133
|
-
got_result.
|
133
|
+
expect( got_result ).to be_narray_like expect_result
|
134
134
|
end
|
135
135
|
end
|
136
136
|
end
|
@@ -148,7 +148,7 @@ describe Convolver do
|
|
148
148
|
kernel = NArray.sfloat(kernel_x,kernel_y,kernel_z).random()
|
149
149
|
expect_result = Convolver.convolve_basic( signal, kernel )
|
150
150
|
got_result = Convolver.convolve_fftw3( signal, kernel )
|
151
|
-
got_result.
|
151
|
+
expect( got_result ).to be_narray_like expect_result
|
152
152
|
end
|
153
153
|
end
|
154
154
|
end
|
data/spec/convolve_spec.rb
CHANGED
@@ -7,22 +7,40 @@ describe Convolver do
|
|
7
7
|
a = NArray[ 0.3, 0.4, 0.5 ]
|
8
8
|
b = NArray[ 1.3, -0.5 ]
|
9
9
|
c = Convolver.convolve( a, b )
|
10
|
-
c.
|
10
|
+
expect( c ).to be_narray_like NArray[ 0.19, 0.27 ]
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should process convolutions of different sizes" do
|
14
|
+
# The variety here is to ensure all branches of optimisation algorithm
|
15
|
+
# are covered
|
16
|
+
[10,30,60,90,100,120,130,150,175,200].each do |asize|
|
17
|
+
[5,10,12,15,20,30,40,50].each do |bsize|
|
18
|
+
next unless bsize < asize
|
19
|
+
a = NArray.sfloat(asize,asize).random()
|
20
|
+
b = NArray.sfloat(bsize,bsize).random()
|
21
|
+
c = Convolver.convolve( a, b )
|
22
|
+
|
23
|
+
# We should always match output of convolve_basic irrespective
|
24
|
+
# of what the optimal choice of algorithm is (larger error allowed here due to rounding)
|
25
|
+
expect_result = Convolver.convolve_basic( a, b )
|
26
|
+
expect( c ).to be_narray_like( expect_result, 1e-6 )
|
27
|
+
end
|
28
|
+
end
|
11
29
|
end
|
12
30
|
|
13
31
|
it "should choose #convolve_basic for small inputs" do
|
14
32
|
a = NArray.sfloat(50,50).random()
|
15
33
|
b = NArray.sfloat(10,10).random()
|
16
|
-
Convolver.
|
17
|
-
Convolver.
|
34
|
+
expect(Convolver).to receive(:convolve_basic).once
|
35
|
+
expect(Convolver).to_not receive(:convolve_fftw3)
|
18
36
|
c = Convolver.convolve( a, b )
|
19
37
|
end
|
20
38
|
|
21
39
|
it "should choose #convolve_fftw3 for large inputs" do
|
22
40
|
a = NArray.sfloat(500,500).random()
|
23
41
|
b = NArray.sfloat(100,100).random()
|
24
|
-
Convolver.
|
25
|
-
Convolver.
|
42
|
+
expect(Convolver).to receive(:convolve_fftw3).once
|
43
|
+
expect(Convolver).to_not receive(:convolve_basic)
|
26
44
|
c = Convolver.convolve( a, b )
|
27
45
|
end
|
28
46
|
|
data/spec/helpers.rb
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
# convolver/spec/helpers.rb
|
2
|
+
require 'coveralls'
|
3
|
+
|
4
|
+
Coveralls.wear!
|
5
|
+
|
2
6
|
require 'convolver'
|
3
|
-
require 'mocha/api'
|
4
7
|
|
5
8
|
# Matcher compares NArrays numerically
|
6
|
-
RSpec::Matchers.define :be_narray_like do |expected_narray|
|
9
|
+
RSpec::Matchers.define :be_narray_like do |expected_narray, mse = 1e-9|
|
7
10
|
match do |given|
|
8
11
|
@error = nil
|
9
12
|
if ! given.is_a?(NArray)
|
@@ -13,7 +16,7 @@ RSpec::Matchers.define :be_narray_like do |expected_narray|
|
|
13
16
|
else
|
14
17
|
d = given - expected_narray
|
15
18
|
difference = ( d * d ).sum / d.size
|
16
|
-
if difference >
|
19
|
+
if difference > mse
|
17
20
|
@error = "Numerical difference with mean square error #{difference}"
|
18
21
|
end
|
19
22
|
end
|
@@ -26,13 +29,13 @@ RSpec::Matchers.define :be_narray_like do |expected_narray|
|
|
26
29
|
! @error
|
27
30
|
end
|
28
31
|
|
29
|
-
|
32
|
+
failure_message do
|
30
33
|
"NArray does not match supplied example. #{@error}
|
31
34
|
Expected: #{@expected.inspect}
|
32
35
|
Got: #{@given.inspect}"
|
33
36
|
end
|
34
37
|
|
35
|
-
|
38
|
+
failure_message_when_negated do
|
36
39
|
"NArray is too close to unwanted example.
|
37
40
|
Unwanted: #{@given.inspect}"
|
38
41
|
end
|
metadata
CHANGED
@@ -1,127 +1,127 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: convolver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Neil Slater
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: narray
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 0.6.0.8
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.6.0.8
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: fftw3
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0.3'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: yard
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 0.8.7.2
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 0.8.7.2
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '1.3'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1.3'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: 2.13.0
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 2.13.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: rake
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 1.9.1
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 1.9.1
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name: rake
|
98
|
+
name: rake-compiler
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 0.8.3
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
110
|
+
version: 0.8.3
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: coveralls
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0.
|
117
|
+
version: 0.6.7
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- -
|
122
|
+
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0.
|
124
|
+
version: 0.6.7
|
125
125
|
description: Convolution for NArray
|
126
126
|
email:
|
127
127
|
- slobo777@gmail.com
|
@@ -130,8 +130,8 @@ extensions:
|
|
130
130
|
- ext/convolver/extconf.rb
|
131
131
|
extra_rdoc_files: []
|
132
132
|
files:
|
133
|
-
- .gitignore
|
134
|
-
- .travis.yml
|
133
|
+
- ".gitignore"
|
134
|
+
- ".travis.yml"
|
135
135
|
- Gemfile
|
136
136
|
- LICENSE.txt
|
137
137
|
- README.md
|
@@ -159,17 +159,17 @@ require_paths:
|
|
159
159
|
- lib
|
160
160
|
required_ruby_version: !ruby/object:Gem::Requirement
|
161
161
|
requirements:
|
162
|
-
- -
|
162
|
+
- - ">="
|
163
163
|
- !ruby/object:Gem::Version
|
164
164
|
version: '0'
|
165
165
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
166
166
|
requirements:
|
167
|
-
- -
|
167
|
+
- - ">="
|
168
168
|
- !ruby/object:Gem::Version
|
169
169
|
version: '0'
|
170
170
|
requirements: []
|
171
171
|
rubyforge_project:
|
172
|
-
rubygems_version: 2.
|
172
|
+
rubygems_version: 2.6.12
|
173
173
|
signing_key:
|
174
174
|
specification_version: 4
|
175
175
|
summary: Convolution for NArray
|
@@ -178,4 +178,3 @@ test_files:
|
|
178
178
|
- spec/convolve_fftw3_spec.rb
|
179
179
|
- spec/convolve_spec.rb
|
180
180
|
- spec/helpers.rb
|
181
|
-
has_rdoc:
|