import pypocketfft import pyfftw import numpy as np import pytest from numpy.testing import assert_ pmp = pytest.mark.parametrize shapes1D = ((10,), (127,)) shapes2D = ((128, 128), (128, 129), (1, 129), (129, 1)) shapes3D = ((32, 17, 39),) shapes = shapes1D+shapes2D+shapes3D len1D = range(1, 2048) def _l2error(a, b): return np.sqrt(np.sum(np.abs(a-b)**2)/np.sum(np.abs(a)**2)) def _assert_close(a, b, epsilon): err = _l2error(a, b) if (err >= epsilon): print("Error: {} > {}".format(err, epsilon)) assert_(err 1: # there are no length-1 type 1 DCTs _assert_close(a, pypocketfft.dct(pypocketfft.dct(a, inorm=inorm, type=type), inorm=2-inorm, type=itype), eps) _assert_close(a, pypocketfft.dst(pypocketfft.dst(a, inorm=inorm, type=type), inorm=2-inorm, type=itype), eps)