public void TestReal2Complex2Real1D() { _gpu.CopyToDevice(_hostInput, _devInput); FFTPlan1D planFwd = _fft.Plan1D(eFFTType.Real2Complex, eDataType.Single, N, BATCH); planFwd.Execute(_devInput, _devInterCplx); FFTPlan1D planRev = _fft.Plan1D(eFFTType.Complex2Real, eDataType.Single, N, BATCH); planRev.Execute(_devInterCplx, _devOutput); _gpu.CopyFromDevice(_devOutput, _hostOutput); for (int i = 0; i < N * BATCH; i++) { Assert.AreEqual(_hostInput[i], _hostOutput[i] / (float)N, 0.0001, "Index {0}", i); } }
public void TestComplex2Complex2Complex1D() { _gpu.CopyToDevice(_hostInputCplx, 0, _devInputCplx, 0, _hostInputCplx.Length); FFTPlan1D planFwd = _fft.Plan1D(eFFTType.Complex2Complex, eDataType.Single, N, BATCH); planFwd.Execute(_devInputCplx, _devInterCplx); FFTPlan1D planRev = _fft.Plan1D(eFFTType.Complex2Complex, eDataType.Single, N, BATCH); planRev.Execute(_devInterCplx, _devOutputCplx, true); _gpu.CopyFromDevice(_devOutputCplx, 0, _hostOutputCplx, 0, _hostOutputCplx.Length); for (int i = 0; i < N * BATCH; i++) { Assert.AreEqual(_hostInputCplx[i].x, _hostOutputCplx[i].x / (float)N, 0.0001, "Index {0} (x)", i); Assert.AreEqual(_hostInputCplx[i].y, _hostOutputCplx[i].y / (float)N, 0.0001, "Index {0} (y)", i); } }