mkl_fft icon indicating copy to clipboard operation
mkl_fft copied to clipboard

result discrepancy of `mkl_fft.irfftn_numpy` integer data types and float data types

Open vtavana opened this issue 6 months ago • 0 comments

For the following case, when input arrays data type is float, correct result is returned while for integer data type, result is incorrect.

import numpy, mkl_fft
from numpy.testing import assert_allclose

a_int = numpy.array([[[5, 7, 6, 5],
		  [4, 6, 4, 8],
		  [9, 3, 7, 5]],
		 [[5, 9, 0, 0],
		  [0, 8, 7, 8],
		  [9, 7, 4, 7]]], dtype=numpy.int32)			  
a = numpy.array(a_int, dtype=numpy.float32)		
	  
r1 = mkl_fft.irfftn_numpy(a, s=None, axes=None)
r2 = mkl_fft.irfftn_numpy(a_int, s=None, axes=None)

assert_allclose(r1, r2)
# AssertionError:
# Not equal to tolerance rtol=1e-07, atol=0

# Mismatched elements: 34 / 36 (94.4%)
# Max absolute difference among violations: 0.58333357
# Max relative difference among violations: 2.66666679
# ACTUAL: array([[[ 5.583334,  0.305556, -0.083333, -0.694444, -0.083333,
#         0.305556],
#       [-0.333333,  0.472222, -0.25    , -0.277778, -0.25    ,...
# DESIRED: array([[[ 5.      ,  0.333333,  0.      , -0.666667,  0.      ,
#          0.333333],
#        [-0.166667,  0.166667, -0.166667,  0.166667, -0.166667,...

vtavana avatar Aug 06 '24 20:08 vtavana