在同一应用中用浮子和双支持来编译吻FFT

Compiling kiss fft with float and double support in the same app

本文关键字:支持 编译 FFT 应用      更新时间:2023-10-16

我正在尝试使用Visual Studio 2013中的同一应用程序中的float和double实现。重新编译以获得双重。

为此,我整理了一个标头,其中我将带有kiss_fft_scalar的标题在2个不同的名称空间内更改为:

namespace KissFloat
{
    #undef KISS_FFT_H
    #undef KISS_FTR_H
    #define kiss_fft_scalar float
    #include "kiss_fft.h"
    #include "tools/kiss_fftr.h"
};
namespace KissDouble
{
    #undef KISS_FFT_H
    #undef KISS_FTR_H
    #define kiss_fft_scalar double
    #include "kiss_fft.h"
    #include "tools/kiss_fftr.h"
};

我无法弄清楚如何包含CPP代码。我尝试了一个单独的kissfloat和kissdouble文件。然后,我尝试了CPP文件中的几件事,但是我尝试的一切都以编译错误而结束。通常与结构重新定义有关。

有人可以想到一种做这项工作的方法吗?或者,我最好使用模板重新编写Kiss FFT?

有趣的想法,但是您可能会有更好的运气,而只是在文件上进行黑客攻击,例如使kiss_fft_scalar成为模板参数。一个问题是标题文件将包括其他标题文件,例如stdlib.h。我想您可以在执行命名空间技巧之前先预先包含这些文件。

我猜我在 _kiss_fft_guts.h中的 kiss_fft_state redef错误?如果您有单独的float/double .cpp文件,并且在包含.c文件之前使用指令。

如果您决定对其进行启动,则可以看一下siskfft的eigen(部分)C 端口。

,所以我发现eigen为我完成了kiss fft的工作。是的,对其他人努力工作!;)

eigen可在此处提供:

https://bitbucket.org/eigen/eigen/src

,吻FFT实现在

"不支持/eigen/src/fft/"