ippsPhase in IPP 7.0 works strange

ippsPhase in IPP 7.0 works strange

As it was expected, there is a strange behavior in ippsPhase_64fc function (it is the same for 6.0 and 6.1 versions). I have a sample code and data that reproduces this error. My program loadsippsp8-7.0.dll, ippspx-7.0.dll, ippss8-7.0.dll and ippsv8-7.0.dll libraries step by step, and on every step transforms test complex vector to phase vector and then, prints tested [758] element that must be equal to1.5707963267948966. Expected result gives onlyippspx library. Please check this old error...

	unsigned char* Buffer; //work buffer - input complex vector
	unsigned __int64 DataSize;
	if(!OpenAndReadFile("Doubles", Buffer, DataSize))return -1; //loading MY test data
	unsigned int ItemCount = (unsigned int)DataSize/sizeof(Ipp64fc); //test item count

	Ipp64f* OutData = new Ipp64f[ItemCount]; //ippsPhase output vector

	TCHAR* DLLNames[] = { _T("ippsp8-7.0.dll"), _T("ippspx-7.0.dll"), _T("ippss8-7.0.dll"), _T("ippsv8-7.0.dll") };
	const size_t DLLCount = sizeof(DLLNames)/sizeof(*DLLNames);

	for(int i = 0; i < DLLCount; i++)
		HMODULE hLib = LoadLibrary(DLLNames[i]);
		ippsPhase_64fc_func Lib_ippsPhase_64fc = (ippsPhase_64fc_func)GetProcAddress(hLib, "ippsPhase_64fc");
		//transforming vector
		IppStatus ipps = Lib_ippsPhase_64fc((Ipp64fc*)Buffer, OutData, ItemCount);
		assert(ipps == ippStsNoErr);

		std::cout << OutData[758] << "t" << ((OutData[758] == 1.5707963267948966) ? "test passed" : "test failed") << std::endl;
		//unloading library

	delete[] Buffer;

	return 0;

The same thing for static libraries in IPP 6.*. With ippStaticInit wrong results, but without ippStsticInit, everything works correctly.

Downloadapplication/zip ippsPhase_Test.zip13.87 KB
В действительности всё не так, как на самом деле...
5 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

ippsman.chm help, Phase section...

... Phase values are returned in radians and are in the range (-, ].My program reproduces next result: ...-1.94702e+307 ..., but -1.94702e+307 does not belong to the range (-, ]!P.S. sorry for my bad english

В действительности всё не так, как на самом деле...

Thanks for your feedback. I'll pass this on to our IPP team and they should be able to get back to you on this soon.


This is ying.H from IPP team. Thank you for this information. We reproduced and fixed this issue just now.But the fixcodewill bereleased along with IPP 7.0 formal version release time (about in Q3).Are you ok withthe time line? Please feel free to let me know if you have urgent develop plan.

Best Regards,

Hi, It is very serious error for my application, and it was in IPP 6.0 and 6.1. I have posted It athttp://software.intel.com/ru-ru/forums/showthread.php?t=71992&o=d&s=lr15.02.2010. I'm still waiting for or some fix, because now I need to load not optimized version of IPPS library.

В действительности всё не так, как на самом деле...

Leave a Comment

Please sign in to add a comment. Not a member? Join today