mirror of
https://github.com/mborgerding/kissfft.git
synced 2025-05-27 21:20:27 -04:00
Merge pull request #6 from lhprojects/master
Add member vector in kissfft class as a buffer
This commit is contained in:
commit
eb32385a10
10
kissfft.hh
10
kissfft.hh
@ -326,24 +326,25 @@ class kissfft
|
|||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
const cpx_t * twiddles = &_twiddles[0];
|
const cpx_t * twiddles = &_twiddles[0];
|
||||||
cpx_t scratchbuf[p];
|
|
||||||
|
if(p > _scratchbuf.size()) _scratchbuf.resize(p);
|
||||||
|
|
||||||
for ( std::size_t u=0; u<m; ++u ) {
|
for ( std::size_t u=0; u<m; ++u ) {
|
||||||
std::size_t k = u;
|
std::size_t k = u;
|
||||||
for ( std::size_t q1=0 ; q1<p ; ++q1 ) {
|
for ( std::size_t q1=0 ; q1<p ; ++q1 ) {
|
||||||
scratchbuf[q1] = Fout[ k ];
|
_scratchbuf[q1] = Fout[ k ];
|
||||||
k += m;
|
k += m;
|
||||||
}
|
}
|
||||||
|
|
||||||
k=u;
|
k=u;
|
||||||
for ( std::size_t q1=0 ; q1<p ; ++q1 ) {
|
for ( std::size_t q1=0 ; q1<p ; ++q1 ) {
|
||||||
std::size_t twidx=0;
|
std::size_t twidx=0;
|
||||||
Fout[ k ] = scratchbuf[0];
|
Fout[ k ] = _scratchbuf[0];
|
||||||
for ( std::size_t q=1;q<p;++q ) {
|
for ( std::size_t q=1;q<p;++q ) {
|
||||||
twidx += fstride * k;
|
twidx += fstride * k;
|
||||||
if (twidx>=_nfft)
|
if (twidx>=_nfft)
|
||||||
twidx-=_nfft;
|
twidx-=_nfft;
|
||||||
Fout[ k ] += scratchbuf[q] * twiddles[twidx];
|
Fout[ k ] += _scratchbuf[q] * twiddles[twidx];
|
||||||
}
|
}
|
||||||
k += m;
|
k += m;
|
||||||
}
|
}
|
||||||
@ -355,5 +356,6 @@ class kissfft
|
|||||||
std::vector<cpx_t> _twiddles;
|
std::vector<cpx_t> _twiddles;
|
||||||
std::vector<std::size_t> _stageRadix;
|
std::vector<std::size_t> _stageRadix;
|
||||||
std::vector<std::size_t> _stageRemainder;
|
std::vector<std::size_t> _stageRemainder;
|
||||||
|
mutable std::vector<cpx_t> _scratchbuf;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user