diff --git a/src/Numerics/Providers/FourierTransform/ManagedFourierTransformProvider.cs b/src/Numerics/Providers/FourierTransform/ManagedFourierTransformProvider.cs
index ba6e48f9..4b484bbd 100644
--- a/src/Numerics/Providers/FourierTransform/ManagedFourierTransformProvider.cs
+++ b/src/Numerics/Providers/FourierTransform/ManagedFourierTransformProvider.cs
@@ -27,7 +27,6 @@
//
using System;
-using MathNet.Numerics.IntegralTransforms;
using Complex = System.Numerics.Complex;
@@ -72,17 +71,12 @@ namespace MathNet.Numerics.Providers.FourierTransform
{
case FourierTransformScaling.SymmetricScaling:
{
- ForwardScaleByOptions(FourierOptions.Default, samples);
+ HalfRescale(samples);
break;
}
case FourierTransformScaling.ForwardScaling:
{
- InverseScaleByOptions(FourierOptions.AsymmetricScaling | FourierOptions.InverseExponent, samples);
- break;
- }
- default:
- {
- ForwardScaleByOptions(FourierOptions.NoScaling, samples);
+ FullRescale(samples);
break;
}
}
@@ -96,17 +90,12 @@ namespace MathNet.Numerics.Providers.FourierTransform
{
case FourierTransformScaling.SymmetricScaling:
{
- ForwardScaleByOptions(FourierOptions.Default, samples);
+ HalfRescale(samples);
break;
}
case FourierTransformScaling.ForwardScaling:
{
- InverseScaleByOptions(FourierOptions.AsymmetricScaling | FourierOptions.InverseExponent, samples);
- break;
- }
- default:
- {
- ForwardScaleByOptions(FourierOptions.NoScaling, samples);
+ FullRescale(samples);
break;
}
}
@@ -120,17 +109,12 @@ namespace MathNet.Numerics.Providers.FourierTransform
{
case FourierTransformScaling.SymmetricScaling:
{
- InverseScaleByOptions(FourierOptions.Default, spectrum);
+ HalfRescale(spectrum);
break;
}
case FourierTransformScaling.BackwardScaling:
{
- InverseScaleByOptions(FourierOptions.AsymmetricScaling, spectrum);
- break;
- }
- default:
- {
- InverseScaleByOptions(FourierOptions.NoScaling, spectrum);
+ FullRescale(spectrum);
break;
}
}
@@ -144,17 +128,12 @@ namespace MathNet.Numerics.Providers.FourierTransform
{
case FourierTransformScaling.SymmetricScaling:
{
- InverseScaleByOptions(FourierOptions.Default, spectrum);
+ HalfRescale(spectrum);
break;
}
case FourierTransformScaling.BackwardScaling:
{
- InverseScaleByOptions(FourierOptions.AsymmetricScaling, spectrum);
- break;
- }
- default:
- {
- InverseScaleByOptions(FourierOptions.NoScaling, spectrum);
+ FullRescale(spectrum);
break;
}
}
@@ -303,19 +282,12 @@ namespace MathNet.Numerics.Providers.FourierTransform
}
///
- /// Rescale FFT-the resulting vector according to the provided convention options.
+ /// Fully rescale the FFT result.
///
- /// Fourier Transform Convention Options.
/// Sample Vector.
- private static void ForwardScaleByOptions(FourierOptions options, Complex32[] samples)
+ private static void FullRescale(Complex32[] samples)
{
- if ((options & FourierOptions.NoScaling) == FourierOptions.NoScaling ||
- (options & FourierOptions.AsymmetricScaling) == FourierOptions.AsymmetricScaling)
- {
- return;
- }
-
- var scalingFactor = (float)Math.Sqrt(1.0 / samples.Length);
+ var scalingFactor = (float)1.0 / samples.Length;
for (int i = 0; i < samples.Length; i++)
{
samples[i] *= scalingFactor;
@@ -323,19 +295,12 @@ namespace MathNet.Numerics.Providers.FourierTransform
}
///
- /// Rescale FFT-the resulting vector according to the provided convention options.
+ /// Fully rescale the FFT result.
///
- /// Fourier Transform Convention Options.
/// Sample Vector.
- private static void ForwardScaleByOptions(FourierOptions options, Complex[] samples)
+ private static void FullRescale(Complex[] samples)
{
- if ((options & FourierOptions.NoScaling) == FourierOptions.NoScaling ||
- (options & FourierOptions.AsymmetricScaling) == FourierOptions.AsymmetricScaling)
- {
- return;
- }
-
- var scalingFactor = Math.Sqrt(1.0 / samples.Length);
+ var scalingFactor = 1.0 / samples.Length;
for (int i = 0; i < samples.Length; i++)
{
samples[i] *= scalingFactor;
@@ -343,23 +308,12 @@ namespace MathNet.Numerics.Providers.FourierTransform
}
///
- /// Rescale the iFFT-resulting vector according to the provided convention options.
+ /// Half rescale the FFT result (e.g. for symmetric transforms).
///
- /// Fourier Transform Convention Options.
/// Sample Vector.
- private static void InverseScaleByOptions(FourierOptions options, Complex32[] samples)
+ private static void HalfRescale(Complex32[] samples)
{
- if ((options & FourierOptions.NoScaling) == FourierOptions.NoScaling)
- {
- return;
- }
-
- var scalingFactor = (float)1.0 / samples.Length;
- if ((options & FourierOptions.AsymmetricScaling) != FourierOptions.AsymmetricScaling)
- {
- scalingFactor = (float)Math.Sqrt(scalingFactor);
- }
-
+ var scalingFactor = (float)Math.Sqrt(1.0 / samples.Length);
for (int i = 0; i < samples.Length; i++)
{
samples[i] *= scalingFactor;
@@ -367,23 +321,12 @@ namespace MathNet.Numerics.Providers.FourierTransform
}
///
- /// Rescale the iFFT-resulting vector according to the provided convention options.
+ /// Fully rescale the FFT result (e.g. for symmetric transforms).
///
- /// Fourier Transform Convention Options.
/// Sample Vector.
- private static void InverseScaleByOptions(FourierOptions options, Complex[] samples)
+ private static void HalfRescale(Complex[] samples)
{
- if ((options & FourierOptions.NoScaling) == FourierOptions.NoScaling)
- {
- return;
- }
-
- var scalingFactor = 1.0 / samples.Length;
- if ((options & FourierOptions.AsymmetricScaling) != FourierOptions.AsymmetricScaling)
- {
- scalingFactor = Math.Sqrt(scalingFactor);
- }
-
+ var scalingFactor = Math.Sqrt(1.0 / samples.Length);
for (int i = 0; i < samples.Length; i++)
{
samples[i] *= scalingFactor;