diff --git a/fftbench/fftbench.Common/Benchmark/TestCavern.cs b/fftbench/fftbench.Common/Benchmark/TestCavern.cs new file mode 100644 index 0000000..99aded9 --- /dev/null +++ b/fftbench/fftbench.Common/Benchmark/TestCavern.cs @@ -0,0 +1,48 @@ + +namespace fftbench.Benchmark { + using Cavern.Utilities; + + public class TestCavern : ITest { + public string Name => ToString(); + + public int Size => data.Length; + + public bool Enabled { get; set; } + + Complex[] data; + + FFTCache cache; + + public void Initialize(double[] data) { + this.data = new Complex[data.Length]; + cache = new FFTCache(data.Length); + for (int i = 0; i < data.Length; i++) { + this.data[i].Real = (float)data[i]; + } + } + + public void FFT(bool forward) { + Complex[] workingSet = (Complex[])data.Clone(); + Measurements.InPlaceFFT(workingSet, cache); + } + + public double[] Spectrum(double[] input, bool scale) { + Complex[] workingSet = (Complex[])data.Clone(); + Measurements.InPlaceFFT(workingSet, cache); + + float[] spectrumSource = Measurements.GetSpectrum(workingSet); + double[] spectrum = new double[spectrumSource.Length]; + Helper.CopyToDouble(spectrumSource, spectrum); + + Measurements.InPlaceIFFT(workingSet, cache); + float[] ifftResult = Measurements.GetRealPart(workingSet); + Helper.CopyToDouble(ifftResult, input); + + return spectrum; + } + + public override string ToString() { + return "Cavern"; + } + } +} diff --git a/fftbench/fftbench.Common/Util.cs b/fftbench/fftbench.Common/Util.cs index ac32df5..89d8271 100644 --- a/fftbench/fftbench.Common/Util.cs +++ b/fftbench/fftbench.Common/Util.cs @@ -12,9 +12,10 @@ public static List LoadTests() tests.Add(new TestAccord() { Enabled = true }); tests.Add(new TestAForge() { Enabled = true }); - tests.Add(new TestMathNet() { Enabled = true }); + tests.Add(new TestCavern() { Enabled = true }); tests.Add(new TestExocortex() { Enabled = true }); tests.Add(new TestLomont() { Enabled = true }); + tests.Add(new TestMathNet() { Enabled = true }); tests.Add(new TestNAudio() { Enabled = true }); tests.Add(new TestNWaves() { Enabled = true }); tests.Add(new TestExocortexReal() { Enabled = true }); diff --git a/fftbench/fftbench.Common/fftbench.Common.csproj b/fftbench/fftbench.Common/fftbench.Common.csproj index 6327ab2..946b6e3 100644 --- a/fftbench/fftbench.Common/fftbench.Common.csproj +++ b/fftbench/fftbench.Common/fftbench.Common.csproj @@ -1,7 +1,7 @@ - netstandard2.0 + netstandard2.1 Copyright © Christian Woltering 2016-2022 2.0.0.0 2.0.0.0 @@ -14,6 +14,7 @@ +