numo-pocketfft 0.2.2 → 0.3.0

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: 4bd70edeb6b4247e01c8cc7cf439830a158518550f3c95c4ca5b502ae6ef7c2d
4
- data.tar.gz: 2ff73865a15805b7e8e69d55ac87f892d3d0e4aea9b0e2af7cd129b3fa489d63
3
+ metadata.gz: f3fe78551040f4879625ac62a60b76e257893e014f30f1d740d8fccfac4f4f2b
4
+ data.tar.gz: 6fdc89c8a1143109859fd2ac77b1a27bc03ca3979ddf3421b13efcd3588905d6
5
5
  SHA512:
6
- metadata.gz: ef1cfc56b929763495695a28855217292a65126cdbf7134aaa208334722b75456724e0196719932c7fedbcad2dc010e8d34d937c65554429992b623ed6bfdf9f
7
- data.tar.gz: '08917a93b37b1c81519a5ad11fde74585077eee3d80761b17a2cbac24b8a67b01ae48f1afdedf8aee8a872af28eaf3df48a6c06006a6b53f2ab0381941bd5573'
6
+ metadata.gz: 6bed07e163241fc82e64236739eeaadebe8030307b08e07e53a9637abf4283cbb1250fb0c68213c03a127c953bc7c4c3317f52743423fa6f4a5234bec5f06707
7
+ data.tar.gz: c71560d98756712516bfcdd494e236f3ff945cf1f989211c068d81bb27305875ca2ebbc361026f49d9e04a937b59881510109b72860e42d732ca3efc2caa5354
data/.clang-format ADDED
@@ -0,0 +1,149 @@
1
+ ---
2
+ Language: Cpp
3
+ # BasedOnStyle: LLVM
4
+ AccessModifierOffset: -2
5
+ AlignAfterOpenBracket: Align
6
+ AlignConsecutiveMacros: false
7
+ AlignConsecutiveAssignments: false
8
+ AlignConsecutiveBitFields: false
9
+ AlignConsecutiveDeclarations: false
10
+ AlignEscapedNewlines: Right
11
+ AlignOperands: Align
12
+ AlignTrailingComments: true
13
+ AllowAllArgumentsOnNextLine: true
14
+ AllowAllConstructorInitializersOnNextLine: true
15
+ AllowAllParametersOfDeclarationOnNextLine: true
16
+ AllowShortEnumsOnASingleLine: true
17
+ AllowShortBlocksOnASingleLine: Never
18
+ AllowShortCaseLabelsOnASingleLine: false
19
+ AllowShortFunctionsOnASingleLine: All
20
+ AllowShortLambdasOnASingleLine: All
21
+ AllowShortIfStatementsOnASingleLine: Never
22
+ AllowShortLoopsOnASingleLine: false
23
+ AlwaysBreakAfterDefinitionReturnType: None
24
+ AlwaysBreakAfterReturnType: None
25
+ AlwaysBreakBeforeMultilineStrings: false
26
+ AlwaysBreakTemplateDeclarations: MultiLine
27
+ BinPackArguments: true
28
+ BinPackParameters: true
29
+ BraceWrapping:
30
+ AfterCaseLabel: false
31
+ AfterClass: false
32
+ AfterControlStatement: Never
33
+ AfterEnum: false
34
+ AfterFunction: false
35
+ AfterNamespace: false
36
+ AfterObjCDeclaration: false
37
+ AfterStruct: false
38
+ AfterUnion: false
39
+ AfterExternBlock: false
40
+ BeforeCatch: false
41
+ BeforeElse: false
42
+ BeforeLambdaBody: false
43
+ BeforeWhile: false
44
+ IndentBraces: false
45
+ SplitEmptyFunction: true
46
+ SplitEmptyRecord: true
47
+ SplitEmptyNamespace: true
48
+ BreakBeforeBinaryOperators: None
49
+ BreakBeforeBraces: Attach
50
+ BreakBeforeInheritanceComma: false
51
+ BreakInheritanceList: BeforeColon
52
+ BreakBeforeTernaryOperators: true
53
+ BreakConstructorInitializersBeforeComma: false
54
+ BreakConstructorInitializers: BeforeColon
55
+ BreakAfterJavaFieldAnnotations: false
56
+ BreakStringLiterals: true
57
+ ColumnLimit: 128
58
+ CommentPragmas: '^ IWYU pragma:'
59
+ CompactNamespaces: false
60
+ ConstructorInitializerAllOnOneLineOrOnePerLine: false
61
+ ConstructorInitializerIndentWidth: 4
62
+ ContinuationIndentWidth: 4
63
+ Cpp11BracedListStyle: true
64
+ DeriveLineEnding: true
65
+ DerivePointerAlignment: false
66
+ DisableFormat: false
67
+ ExperimentalAutoDetectBinPacking: false
68
+ FixNamespaceComments: true
69
+ ForEachMacros:
70
+ - foreach
71
+ - Q_FOREACH
72
+ - BOOST_FOREACH
73
+ IncludeBlocks: Preserve
74
+ IncludeCategories:
75
+ - Regex: '^"(llvm|llvm-c|clang|clang-c)/'
76
+ Priority: 2
77
+ SortPriority: 0
78
+ - Regex: '^(<|"(gtest|gmock|isl|json)/)'
79
+ Priority: 3
80
+ SortPriority: 0
81
+ - Regex: '.*'
82
+ Priority: 1
83
+ SortPriority: 0
84
+ IncludeIsMainRegex: '(Test)?$'
85
+ IncludeIsMainSourceRegex: ''
86
+ IndentCaseLabels: false
87
+ IndentCaseBlocks: false
88
+ IndentGotoLabels: true
89
+ IndentPPDirectives: None
90
+ IndentExternBlock: AfterExternBlock
91
+ IndentWidth: 2
92
+ IndentWrappedFunctionNames: false
93
+ InsertTrailingCommas: None
94
+ JavaScriptQuotes: Leave
95
+ JavaScriptWrapImports: true
96
+ KeepEmptyLinesAtTheStartOfBlocks: true
97
+ MacroBlockBegin: ''
98
+ MacroBlockEnd: ''
99
+ MaxEmptyLinesToKeep: 1
100
+ NamespaceIndentation: None
101
+ ObjCBinPackProtocolList: Auto
102
+ ObjCBlockIndentWidth: 2
103
+ ObjCBreakBeforeNestedBlockParam: true
104
+ ObjCSpaceAfterProperty: false
105
+ ObjCSpaceBeforeProtocolList: true
106
+ PenaltyBreakAssignment: 2
107
+ PenaltyBreakBeforeFirstCallParameter: 19
108
+ PenaltyBreakComment: 300
109
+ PenaltyBreakFirstLessLess: 120
110
+ PenaltyBreakString: 1000
111
+ PenaltyBreakTemplateDeclaration: 10
112
+ PenaltyExcessCharacter: 1000000
113
+ PenaltyReturnTypeOnItsOwnLine: 60
114
+ PointerAlignment: Left
115
+ ReflowComments: true
116
+ SortIncludes: true
117
+ SortUsingDeclarations: true
118
+ SpaceAfterCStyleCast: false
119
+ SpaceAfterLogicalNot: false
120
+ SpaceAfterTemplateKeyword: true
121
+ SpaceBeforeAssignmentOperators: true
122
+ SpaceBeforeCpp11BracedList: false
123
+ SpaceBeforeCtorInitializerColon: true
124
+ SpaceBeforeInheritanceColon: true
125
+ SpaceBeforeParens: ControlStatements
126
+ SpaceBeforeRangeBasedForLoopColon: true
127
+ SpaceInEmptyBlock: false
128
+ SpaceInEmptyParentheses: false
129
+ SpacesBeforeTrailingComments: 1
130
+ SpacesInAngles: false
131
+ SpacesInConditionalStatement: false
132
+ SpacesInContainerLiterals: true
133
+ SpacesInCStyleCastParentheses: false
134
+ SpacesInParentheses: false
135
+ SpacesInSquareBrackets: false
136
+ SpaceBeforeSquareBrackets: false
137
+ Standard: Latest
138
+ StatementMacros:
139
+ - Q_UNUSED
140
+ - QT_REQUIRE_VERSION
141
+ TabWidth: 8
142
+ UseCRLF: false
143
+ UseTab: Never
144
+ WhitespaceSensitiveMacros:
145
+ - STRINGIZE
146
+ - PP_STRINGIZE
147
+ - BOOST_PP_STRINGIZE
148
+ ...
149
+
@@ -7,7 +7,7 @@ jobs:
7
7
  runs-on: ubuntu-20.04
8
8
  strategy:
9
9
  matrix:
10
- ruby: [ '2.5', '2.6', '2.7' ]
10
+ ruby: [ '2.6', '2.7', '3.0' ]
11
11
  steps:
12
12
  - uses: actions/checkout@v2
13
13
  - name: Checkout submodule
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 0.3.0
2
+ - Add type declaration file: sig/numo/pocketfft.rbs
3
+ - Refactor to avoid generating unnecessary arrays.
4
+
1
5
  # 0.2.2
2
6
  - Fix bug that caused segmentation fault due to garbage collection ([#4](https://github.com/yoshoku/numo-pocketfft/pull/4)).
3
7
  - Fix some configuration files.
data/Gemfile CHANGED
@@ -3,8 +3,10 @@ source "https://rubygems.org"
3
3
  # Specify your gem's dependencies in numo-pocketfft.gemspec
4
4
  gemspec
5
5
 
6
- gem 'rake', '~> 12.0'
6
+ gem 'rake', '~> 13.0'
7
7
  gem 'rake-compiler', '~> 1.0'
8
8
  gem 'rspec', '~> 3.0'
9
9
  gem 'simplecov', '~> 0.19'
10
10
  gem 'simplecov-lcov', '~> 0.8'
11
+ gem 'rbs', '~> 1.2'
12
+ gem 'steep', '~> 0.44'
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Numo::Pocketfft
2
2
 
3
3
  [![Build Status](https://github.com/yoshoku/numo-pocketfft/workflows/build/badge.svg)](https://github.com/yoshoku/numo-pocketfft/actions?query=workflow%3Abuild)
4
- [![Coverage Status](https://coveralls.io/repos/github/yoshoku/numo-pocketfft/badge.svg?branch=master)](https://coveralls.io/github/yoshoku/numo-pocketfft?branch=master)
4
+ [![Coverage Status](https://coveralls.io/repos/github/yoshoku/numo-pocketfft/badge.svg?branch=main)](https://coveralls.io/github/yoshoku/numo-pocketfft?branch=main)
5
5
  [![Gem Version](https://badge.fury.io/rb/numo-pocketfft.svg)](https://badge.fury.io/rb/numo-pocketfft)
6
6
  [![BSD 3-Clause License](https://img.shields.io/badge/License-BSD%203--Clause-orange.svg)](https://github.com/yoshoku/numo-pocketfft/blob/main/LICENSE.txt)
7
7
  [![Documentation](http://img.shields.io/badge/docs-rdoc.info-blue.svg)](https://yoshoku.github.io/numo-pocketfft/doc/)
data/Steepfile ADDED
@@ -0,0 +1,20 @@
1
+ target :lib do
2
+ signature "sig"
3
+ #
4
+ check "lib" # Directory name
5
+ # check "Gemfile" # File name
6
+ # check "app/models/**/*.rb" # Glob
7
+ # # ignore "lib/templates/*.rb"
8
+ #
9
+ # # library "pathname", "set" # Standard libraries
10
+ # library "numo-narray" # Gems
11
+ end
12
+
13
+ # target :spec do
14
+ # signature "sig", "sig-private"
15
+ #
16
+ # check "spec"
17
+ #
18
+ # # library "pathname", "set" # Standard libraries
19
+ # # library "rspec"
20
+ # end
@@ -3,8 +3,7 @@
3
3
  VALUE mNumo;
4
4
  VALUE mPocketfft;
5
5
 
6
- VALUE numo_pocketfft_fft(VALUE x_val, int is_forward)
7
- {
6
+ VALUE numo_pocketfft_fft(VALUE x_val, int is_forward) {
8
7
  narray_t* x_nary;
9
8
  double* x_pt;
10
9
  size_t length;
@@ -40,7 +39,7 @@ VALUE numo_pocketfft_fft(VALUE x_val, int is_forward)
40
39
  z_val = nary_s_new_like(numo_cDComplex, x_val);
41
40
  z_pt = (double*)na_get_pointer_for_write(z_val);
42
41
  GetNArray(z_val, z_nary);
43
- for (i = 0; i < (int)(NA_SIZE(z_nary) * 2); z_pt[i++] = 0.0);
42
+ memset(z_pt, 0, (NA_SIZE(z_nary) * 2) * sizeof(double));
44
43
 
45
44
  fail = 0;
46
45
  fct = is_forward == 1 ? 1.0 : 1.0 / length;
@@ -74,24 +73,17 @@ VALUE numo_pocketfft_fft(VALUE x_val, int is_forward)
74
73
  /**
75
74
  * @!visibility private
76
75
  */
77
- static VALUE numo_pocketfft_cfft(VALUE self, VALUE x_val)
78
- {
79
- return numo_pocketfft_fft(x_val, 1);
80
- }
76
+ static VALUE numo_pocketfft_cfft(VALUE self, VALUE x_val) { return numo_pocketfft_fft(x_val, 1); }
81
77
 
82
78
  /**
83
79
  * @!visibility private
84
80
  */
85
- static VALUE numo_pocketfft_icfft(VALUE self, VALUE x_val)
86
- {
87
- return numo_pocketfft_fft(x_val, 0);
88
- }
81
+ static VALUE numo_pocketfft_icfft(VALUE self, VALUE x_val) { return numo_pocketfft_fft(x_val, 0); }
89
82
 
90
83
  /**
91
84
  * @!visibility private
92
85
  */
93
- static VALUE numo_pocketfft_rfft(VALUE self, VALUE x_val)
94
- {
86
+ static VALUE numo_pocketfft_rfft(VALUE self, VALUE x_val) {
95
87
  narray_t* x_nary;
96
88
  double* x_pt;
97
89
  int n_dims;
@@ -132,7 +124,7 @@ static VALUE numo_pocketfft_rfft(VALUE self, VALUE x_val)
132
124
  z_val = rb_narray_new(numo_cDComplex, n_dims, z_shape);
133
125
  z_pt = (double*)na_get_pointer_for_write(z_val);
134
126
  GetNArray(z_val, z_nary);
135
- for (i = 0; i < (int)(NA_SIZE(z_nary) * 2); z_pt[i++] = 0.0);
127
+ memset(z_pt, 0, (NA_SIZE(z_nary) * 2) * sizeof(double));
136
128
 
137
129
  fail = 0;
138
130
  z_step = (int)(NA_SHAPE(z_nary)[n_dims - 1]) * 2;
@@ -168,8 +160,7 @@ static VALUE numo_pocketfft_rfft(VALUE self, VALUE x_val)
168
160
  /**
169
161
  * @!visibility private
170
162
  */
171
- static VALUE numo_pocketfft_irfft(VALUE self, VALUE x_val)
172
- {
163
+ static VALUE numo_pocketfft_irfft(VALUE self, VALUE x_val) {
173
164
  narray_t* x_nary;
174
165
  double* x_pt;
175
166
  size_t length;
@@ -210,7 +201,7 @@ static VALUE numo_pocketfft_irfft(VALUE self, VALUE x_val)
210
201
  z_val = rb_narray_new(numo_cDFloat, n_dims, z_shape);
211
202
  z_pt = (double*)na_get_pointer_for_write(z_val);
212
203
  GetNArray(z_val, z_nary);
213
- for (i = 0; i < (int)NA_SIZE(z_nary); z_pt[i++] = 0.0);
204
+ memset(z_pt, 0, NA_SIZE(z_nary) * sizeof(double));
214
205
 
215
206
  fail = 0;
216
207
  fct = 1.0 / length;
@@ -241,8 +232,7 @@ static VALUE numo_pocketfft_irfft(VALUE self, VALUE x_val)
241
232
  return z_val;
242
233
  }
243
234
 
244
- void Init_pocketfftext()
245
- {
235
+ void Init_pocketfftext() {
246
236
  rb_require("numo/narray");
247
237
 
248
238
  mNumo = rb_define_module("Numo");
@@ -5,6 +5,7 @@
5
5
  #include <string.h>
6
6
 
7
7
  #include <ruby.h>
8
+
8
9
  #include <numo/narray.h>
9
10
  #include <numo/template.h>
10
11
 
@@ -64,8 +64,11 @@ module Numo
64
64
  raise ArgumentError, 'Expect class of input array to be Numo::NArray.' unless a.is_a?(Numo::NArray)
65
65
  raise ArgumentError, 'Expect input array to be non-empty.' if a.empty?
66
66
 
67
- b = a.dup
68
- (0...b.ndim).to_a.reverse.each { |ax_id| b = raw_fft(b, ax_id, inverse: false, real: false) }
67
+ return raw_fft(a, 0, inverse: false, real: false) if a.ndim == 1
68
+
69
+ last_axis_id = a.ndim - 1
70
+ b = raw_fft(a, last_axis_id, inverse: false, real: false)
71
+ (last_axis_id - 1).downto(0) { |ax_id| b = raw_fft(b, ax_id, inverse: false, real: false) }
69
72
  b
70
73
  end
71
74
 
@@ -77,8 +80,11 @@ module Numo
77
80
  raise ArgumentError, 'Expect class of input array to be Numo::NArray.' unless a.is_a?(Numo::NArray)
78
81
  raise ArgumentError, 'Expect input array to be non-empty.' if a.empty?
79
82
 
80
- b = a.dup
81
- (0...b.ndim).to_a.each { |ax_id| b = raw_fft(b, ax_id, inverse: true, real: false) }
83
+ return raw_fft(a, 0, inverse: true, real: false) if a.ndim == 1
84
+
85
+ last_axis_id = a.ndim - 1
86
+ b = raw_fft(a, 0, inverse: true, real: false)
87
+ 1.upto(last_axis_id) { |ax_id| b = raw_fft(b, ax_id, inverse: true, real: false) }
82
88
  b
83
89
  end
84
90
 
@@ -138,9 +144,11 @@ module Numo
138
144
  raise ArgumentError, 'Expect class of input array to be Numo::NArray.' unless a.is_a?(Numo::NArray)
139
145
  raise ArgumentError, 'Expect input array to be non-empty.' if a.empty?
140
146
 
147
+ return raw_fft(a, 0, inverse: false, real: true) if a.ndim == 1
148
+
141
149
  last_axis_id = a.ndim - 1
142
150
  b = raw_fft(a, last_axis_id, inverse: false, real: true)
143
- (0...last_axis_id).to_a.reverse.each { |ax_id| b = raw_fft(b, ax_id, inverse: false, real: false) }
151
+ (last_axis_id - 1).downto(0) { |ax_id| b = raw_fft(b, ax_id, inverse: false, real: false) }
144
152
  b
145
153
  end
146
154
 
@@ -152,9 +160,11 @@ module Numo
152
160
  raise ArgumentError, 'Expect class of input array to be Numo::NArray.' unless a.is_a?(Numo::NArray)
153
161
  raise ArgumentError, 'Expect input array to be non-empty.' if a.empty?
154
162
 
163
+ return raw_fft(a, 0, inverse: true, real: true) if a.ndim == 1
164
+
155
165
  last_axis_id = a.ndim - 1
156
- b = a.dup
157
- (0...last_axis_id).to_a.each { |ax_id| b = raw_fft(b, ax_id, inverse: true, real: false) }
166
+ b = raw_fft(a, 0, inverse: true, real: false)
167
+ 1.upto(last_axis_id - 1) { |ax_id| b = raw_fft(b, ax_id, inverse: true, real: false) }
158
168
  raw_fft(b, last_axis_id, inverse: true, real: true)
159
169
  end
160
170
 
@@ -209,8 +219,7 @@ module Numo
209
219
  b_shape = a.shape
210
220
  b_shape[-1] = n
211
221
  b = Numo::DComplex.zeros(*b_shape)
212
- b_range = [true] * b.ndim
213
- b_range[-1] = 0...a.shape[-1]
222
+ b_range = Array.new(b.ndim) { |idx| idx < b.ndim - 1 ? true : 0...a.shape[-1] }
214
223
  b[*b_range] = a
215
224
  # inverse of dft for real data
216
225
  ext_irfft(b)
@@ -5,6 +5,6 @@ module Numo
5
5
  # Numo::Pocketfft is the module that has functions for Fourier transform.
6
6
  module Pocketfft
7
7
  # The version of Numo::Pocketfft you are using.
8
- VERSION = '0.2.2'
8
+ VERSION = '0.3.0'
9
9
  end
10
10
  end
@@ -0,0 +1,28 @@
1
+ module Numo
2
+ module Pocketfft
3
+ VERSION: String
4
+
5
+ def self?.fft: (Numo::DFloat | Numo::DComplex a) -> Numo::DComplex
6
+ def self?.fft2: (Numo::DFloat | Numo::DComplex a) -> Numo::DComplex
7
+ def self?.fftn: (Numo::DFloat | Numo::DComplex a) -> Numo::DComplex
8
+ def self?.ifft: (Numo::DComplex a) -> Numo::DComplex
9
+ def self?.ifft2: (Numo::DComplex a) -> Numo::DComplex
10
+ def self?.ifftn: (Numo::DComplex a) -> Numo::DComplex
11
+ def self?.rfft: (Numo::DFloat a) -> Numo::DComplex
12
+ def self?.rfft2: (Numo::DFloat a) -> Numo::DComplex
13
+ def self?.rfftn: (Numo::DFloat a) -> Numo::DComplex
14
+ def self?.irfft: (Numo::DComplex a) -> Numo::DFloat
15
+ def self?.irfft2: (Numo::DComplex a) -> Numo::DFloat
16
+ def self?.irfftn: (Numo::DComplex a) -> Numo::DFloat
17
+ def self?.fftconvolve: (Numo::DFloat | Numo::DComplex a, Numo::DFloat | Numo::DComplex b) -> Numo::DComplex
18
+ | (Numo::DFloat a, Numo::DFloat b) -> Numo::DFloat
19
+
20
+ private
21
+
22
+ def self?.ext_cfft: (untyped a) -> untyped
23
+ def self?.ext_icfft: (untyped a) -> untyped
24
+ def self?.ext_rfft: (untyped a) -> untyped
25
+ def self?.ext_irfft: (untyped a) -> untyped
26
+ def self?.raw_fft: (untyped a, Integer axis_id, inverse: bool inverse, real: bool real) -> untyped
27
+ end
28
+ end
data/sig/patch.rbs ADDED
@@ -0,0 +1,22 @@
1
+ module Numo
2
+ class NArray
3
+ def empty?: () -> bool
4
+ def ndim: () -> Integer
5
+ def shape: () -> Array[Integer]
6
+ def swapaxes: (Integer, Integer) -> untyped
7
+ end
8
+
9
+ class DFloat < NArray
10
+ def *: (untyped) -> untyped
11
+ def []: (*untyped) -> untyped
12
+ def []=: (*untyped) -> untyped
13
+ end
14
+
15
+ class DComplex < NArray
16
+ def self.zeros: (*untyped) -> Numo::DComplex
17
+ def *: (untyped) -> untyped
18
+ def []: (*untyped) -> untyped
19
+ def []=: (*untyped) -> untyped
20
+ def real: () -> Numo::DFloat
21
+ end
22
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: numo-pocketfft
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - yoshoku
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-16 00:00:00.000000000 Z
11
+ date: 2021-06-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: numo-narray
@@ -27,7 +27,7 @@ dependencies:
27
27
  description: 'Numo::Pocketfft provides functions for descrete Fourier Transform based
28
28
  on pocketfft.
29
29
 
30
- '
30
+ '
31
31
  email:
32
32
  - yoshoku@outlook.com
33
33
  executables: []
@@ -35,6 +35,7 @@ extensions:
35
35
  - ext/numo/pocketfft/extconf.rb
36
36
  extra_rdoc_files: []
37
37
  files:
38
+ - ".clang-format"
38
39
  - ".coveralls.yml"
39
40
  - ".github/workflows/build.yml"
40
41
  - ".github/workflows/coverage.yml"
@@ -47,6 +48,7 @@ files:
47
48
  - LICENSE.txt
48
49
  - README.md
49
50
  - Rakefile
51
+ - Steepfile
50
52
  - ext/numo/pocketfft/extconf.rb
51
53
  - ext/numo/pocketfft/pocketfft/.gitlab-ci.yml
52
54
  - ext/numo/pocketfft/pocketfft/LICENSE.md
@@ -60,6 +62,8 @@ files:
60
62
  - lib/numo/pocketfft.rb
61
63
  - lib/numo/pocketfft/version.rb
62
64
  - numo-pocketfft.gemspec
65
+ - sig/numo/pocketfft.rbs
66
+ - sig/patch.rbs
63
67
  homepage: https://github.com/yoshoku/numo-pocketfft
64
68
  licenses:
65
69
  - BSD-3-Clause
@@ -69,7 +73,7 @@ metadata:
69
73
  source_code_uri: https://github.com/yoshoku/numo-pocketfft
70
74
  documentation_uri: https://yoshoku.github.io/numo-pocketfft/doc/
71
75
  bug_tracker_uri: https://github.com/yoshoku/numo-pocketfft/issues
72
- post_install_message:
76
+ post_install_message:
73
77
  rdoc_options: []
74
78
  require_paths:
75
79
  - lib
@@ -84,8 +88,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
88
  - !ruby/object:Gem::Version
85
89
  version: '0'
86
90
  requirements: []
87
- rubygems_version: 3.1.4
88
- signing_key:
91
+ rubygems_version: 3.1.6
92
+ signing_key:
89
93
  specification_version: 4
90
94
  summary: Numo::Pocketfft provides functions for descrete Fourier Transform based on
91
95
  pocketfft.