Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
            }
        }