B y?r r r")r#)rrr?r@rrihfftrA)rrrBrrr test_ihttfxszTestFFT1D.test_ihttfc Cstd}tj|}|jd}tjjtjjftjjtjjftjj tjj fg}xf|D]^\}}xT|jd|jgD]@}x:dD]2}||||d}||||d}t |tj|qvWqlWqRWdS)Nr!r)Nr")r0r#) rrZlinalgr#r1rr&r2r4rDrAr) rrZx_normr0Z func_pairsZforwZbackr#Ztmprrrtest_all_1d_norm_preservings   z%TestFFT1D.test_all_1d_norm_preservingN)rrrr%r'r*r+r.r/r3r5r8r9r<r=rCrErFrrrrr s  r c@s<eZdZdZdZddZddZddZd d Zd d Z d S)TestFFTThreadSafe)i csfddt}fddt|jD}dd|Ddd|Dx&t|jD]}tjdd|d q`WdS) Ncs||dS)N)Zput)argsq)funcrrworkersz.TestFFTThreadSafe._test_mtsame..workercsg|]}tjfdqS))targetrJ) threadingZThread).0i)rJrKrMrr sz2TestFFTThreadSafe._test_mtsame..cSsg|] }|qSr)start)rPrrrrrRscSsg|] }|qSr)join)rPrrrrrRs)Ztimeoutz6Function returned wrong value in multithreaded context)queueQueuerangethreadsr get)rrLrJZexpectedtrQr)rJrLrKrMr _test_mtsames zTestFFTThreadSafe._test_mtsamecCs(t|jdd}|tjj|dS)Nr y)rones input_shaper\r)rarrrr%szTestFFTThreadSafe.test_fftcCs(t|jdd}|tjj|dS)Nr y)rr]r^r\rr&)rr_rrrr'szTestFFTThreadSafe.test_ifftcCs t|j}|tjj|dS)N)rr]r^r\rr2)rr_rrrr3s zTestFFTThreadSafe.test_rfftcCs(t|jdd}|tjj|dS)Nr y)rr]r^r\rr4)rr_rrrr5szTestFFTThreadSafe.test_irfftN) rrrrYr^r\r%r'r3r5rrrrrGsrG__main__)Z __future__rrrZnumpyrZ numpy.randomrZ numpy.testingrrrr rOsys version_inforVrWrrr rGrrrrrs   x'