numo-pocketfft 0.2.2 → 0.3.0
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/.clang-format +149 -0
- data/.github/workflows/build.yml +1 -1
- data/CHANGELOG.md +4 -0
- data/Gemfile +3 -1
- data/README.md +1 -1
- data/Steepfile +20 -0
- data/ext/numo/pocketfft/pocketfftext.c +9 -19
- data/ext/numo/pocketfft/pocketfftext.h +1 -0
- data/lib/numo/pocketfft.rb +18 -9
- data/lib/numo/pocketfft/version.rb +1 -1
- data/sig/numo/pocketfft.rbs +28 -0
- data/sig/patch.rbs +22 -0
- metadata +11 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f3fe78551040f4879625ac62a60b76e257893e014f30f1d740d8fccfac4f4f2b
|
|
4
|
+
data.tar.gz: 6fdc89c8a1143109859fd2ac77b1a27bc03ca3979ddf3421b13efcd3588905d6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
+
|
data/.github/workflows/build.yml
CHANGED
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', '~>
|
|
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
|
[](https://github.com/yoshoku/numo-pocketfft/actions?query=workflow%3Abuild)
|
|
4
|
-
[](https://coveralls.io/github/yoshoku/numo-pocketfft?branch=main)
|
|
5
5
|
[](https://badge.fury.io/rb/numo-pocketfft)
|
|
6
6
|
[](https://github.com/yoshoku/numo-pocketfft/blob/main/LICENSE.txt)
|
|
7
7
|
[](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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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");
|
data/lib/numo/pocketfft.rb
CHANGED
|
@@ -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
|
-
|
|
68
|
-
|
|
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
|
-
|
|
81
|
-
|
|
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
|
-
(
|
|
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
|
|
157
|
-
(
|
|
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 =
|
|
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)
|
|
@@ -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.
|
|
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-
|
|
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.
|
|
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.
|