public void TestRealTransform() { IDFT realFourierTransform = new RealFastFourierTransform(); FrequencyDomain realFormatResult; List <double> recreatedSignal; int sampleRate = 1000; // hz List <double> timePoints = new List <double>(2 * sampleRate); for (double timePointVal = 0; timePointVal < 2.0; timePointVal += (1.0 / sampleRate)) { timePoints.Add(timePointVal); } List <double> signal = new List <double>(timePoints.Count); foreach (double timePointVal in timePoints) { double signalValue = (2.5 * Math.Sin(2 * Math.PI * 4 * timePointVal)) + (1.5 * Math.Sin(2 * Math.PI * 6.5 * timePointVal)); signal.Add(signalValue); } realFormatResult = realFourierTransform.Transform(signal.GetRange(0, 256), sampleRate); recreatedSignal = realFourierTransform.Synthesize(realFormatResult); Assert.IsNotNull(realFormatResult); Assert.IsNotNull(recreatedSignal); for (int idx = 0; idx < recreatedSignal.Count; idx++) { Assert.IsTrue((Math.Abs(recreatedSignal[idx] - signal[idx]) < MaxDifference)); } }