§
    ÈÁ³g  ã                   ó–   — d Z ddlZddlmZ ddlmZmZ  G d„ d¦  «        Z G d„ d¦  «        Z G d	„ d
¦  «        Z	 G d„ d¦  «        Z
dS )zfTest functions for fftpack.helper module

Copied from fftpack.helper by Pearu Peterson, October 2005

é    N)Úassert_array_almost_equal)ÚfftÚpic                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestFFTShiftc                 ó6  — g d¢}g d¢}t          t          j        |¦  «        |¦  «         t          t          j        |¦  «        |¦  «         g d¢}g d¢}t          t          j        |¦  «        |¦  «         t          t          j        |¦  «        |¦  «         d S )N©	r   é   é   é   é   éüÿÿÿéýÿÿÿéþÿÿÿéÿÿÿÿ)	r   r   r   r   r   r
   r   r   r   ©
r   r
   r   r   r   éûÿÿÿr   r   r   r   )
r   r   r   r   r   r   r
   r   r   r   ©r   r   ÚfftshiftÚ	ifftshift)ÚselfÚxÚys      úY/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/numpy/fft/tests/test_helper.pyÚtest_definitionzTestFFTShift.test_definition   s˜   € Ø+Ð+Ð+ˆØ+Ð+Ð+ˆÝ!¥#¤,¨q¡/¤/°1Ñ5Ô5Ð5Ý!¥#¤-°Ñ"2Ô"2°AÑ6Ô6Ð6Ø/Ð/Ð/ˆØ/Ð/Ð/ˆÝ!¥#¤,¨q¡/¤/°1Ñ5Ô5Ð5Ý!¥#¤-°Ñ"2Ô"2°AÑ6Ô6Ð6Ð6Ð6ó    c                 ó¸   — dD ]V}t           j                             |f¦  «        }t          t          j        t          j        |¦  «        ¦  «        |¦  «         ŒWd S )N)r
   r   é	   éd   éÓ   )ÚnpÚrandomr   r   r   r   )r   Únr   s      r   Útest_inversezTestFFTShift.test_inverse   s[   € Ø$ð 	Ið 	IˆAÝ”	× Ò  ! Ñ&Ô&ˆAÝ%¥c¤mµC´LÀ±O´OÑ&DÔ&DÀaÑHÔHÐHÐHð	Ið 	Ir   c                 ó*  — g d¢g d¢g d¢g}g d¢g d¢g d¢g}t          t          j        |d¬¦  «        |¦  «         t          t          j        |d	¬¦  «        t          j        |d
¬¦  «        ¦  «         t          t          j        |d¬¦  «        |¦  «         t          t          j        |d	¬¦  «        t          j        |d
¬¦  «        ¦  «         t          t          j        |¦  «        |¦  «         t          t          j        |¦  «        |¦  «         d S )N)r   r
   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r
   )r   r   r   ©r   r
   ©Úaxesr   ©r   r   )r   ÚfreqsÚshifteds      r   Útest_axes_keywordzTestFFTShift.test_axes_keyword   s  € Ø��˜J˜J˜J¨¨¨Ð5ˆØ�<�<   ¨J¨J¨JÐ7ˆÝ!¥#¤,¨u¸6Ð"BÑ"BÔ"BÀGÑLÔLÐLÝ!¥#¤,¨u¸1Ð"=Ñ"=Ô"=Ý"%¤,¨u¸4Ð"@Ñ"@Ô"@ñ	Bô 	Bð 	Bå!¥#¤-°¸fÐ"EÑ"EÔ"EÀuÑMÔMÐMÝ!¥#¤-°¸aÐ"@Ñ"@Ô"@Ý"%¤-°¸dÐ"CÑ"CÔ"Cñ	Eô 	Eð 	Eõ 	"¥#¤,¨uÑ"5Ô"5°wÑ?Ô?Ð?Ý!¥#¤-°Ñ"8Ô"8¸%Ñ@Ô@Ð@Ð@Ð@r   c                 óP  — ddgddgddgg}ddgddgddgg}t          t          j        |d¬¦  «        |¦  «         t          t          j        |d¬¦  «        |¦  «         t          t          j        |d¬¦  «        |¦  «         t          t          j        |dg¬¦  «        |¦  «         ddgddgddgg}t          t          j        |d¬¦  «        |¦  «         t          t          j        |d¬¦  «        |¦  «         ddgddgddgg}t          t          j        |d	¬¦  «        |¦  «         t          t          j        |d	¬¦  «        |¦  «         t          t          j        |ddg¬¦  «        |¦  «         t          t          j        |ddg¬¦  «        |¦  «         t          t          j        |d
¬¦  «        |¦  «         t          t          j        |d
¬¦  «        |¦  «         t          t          j        |¦  «        |¦  «         t          t          j        |¦  «        |¦  «         d
S )z1 Test 2D input, which has uneven dimension sizes r   r
   r   r   r   é   r'   r)   r&   Nr   )r   r*   Ú
shift_dim0Ú
shift_dim1Úshift_dim_boths        r   Útest_uneven_dimszTestFFTShift.test_uneven_dims)   s:  € ð �ˆFØ�ˆFØ�ˆFð
ˆð �ˆFØ�ˆFØ�ˆFð
ˆ
õ
 	"¥#¤,¨u¸1Ð"=Ñ"=Ô"=¸zÑJÔJÐJÝ!¥#¤-°
ÀÐ"CÑ"CÔ"CÀUÑKÔKÐKÝ!¥#¤,¨u¸4Ð"@Ñ"@Ô"@À*ÑMÔMÐMÝ!¥#¤-°
À!ÀÐ"EÑ"EÔ"EÀuÑMÔMÐMð �ˆFØ�ˆFØ�ˆFð
ˆ
õ
 	"¥#¤,¨u¸1Ð"=Ñ"=Ô"=¸zÑJÔJÐJÝ!¥#¤-°
ÀÐ"CÑ"CÔ"CÀUÑKÔKÐKð �ˆFØ�ˆFØ�ˆFð
ˆõ
 	"¥#¤,¨u¸6Ð"BÑ"BÔ"BÀNÑSÔSÐSÝ!¥#¤-°ÀVÐ"LÑ"LÔ"LÈeÑTÔTÐTÝ!¥#¤,¨u¸A¸q¸6Ð"BÑ"BÔ"BÀNÑSÔSÐSÝ!¥#¤-°ÀaÈÀVÐ"LÑ"LÔ"LÈeÑTÔTÐTõ 	"¥#¤,¨u¸4Ð"@Ñ"@Ô"@À.ÑQÔQÐQÝ!¥#¤-°ÀTÐ"JÑ"JÔ"JÈEÑRÔRÐRÝ!¥#¤,¨uÑ"5Ô"5°~ÑFÔFÐFÝ!¥#¤-°Ñ"?Ô"?ÀÑGÔGÐGÐGÐGr   c           
      ó�  ‡‡‡	‡
— ddl mŠmŠ	mŠmŠ
 dˆˆˆ	ˆ
fd„	}dˆˆˆ	ˆ
fd„	}t          d¦  «        D ]“}t          d¦  «        D ]�}dD ]|}t          j                             ||¦  «        }t          t          j        ||¦  «         |||¦  «        ¦  «         t          t          j        ||¦  «         |||¦  «        ¦  «         Œ}Œ‚Œ”dS )	z\ Test that the new (>=v1.15) implementation (see #10073) is equal to the original (<=v1.14) r   )ÚasarrayÚconcatenateÚarangeÚtakeNc                 ó,  •—  ‰
| ¦  «        }|j         }|€t          t          |¦  «        ¦  «        }nt          |t          ¦  «        r|f}|}|D ]D}|j        |         }|dz   dz  } ‰ ‰	||¦  «         ‰	|¦  «        f¦  «        } ‰|||¦  «        }ŒE|S )z& How fftshift was implemented in v1.14Nr
   r   ©ÚndimÚlistÚrangeÚ
isinstanceÚintÚshape©r   r(   Útmpr:   r   Úkr#   Úp2Úmylistr6   r4   r5   r7   s            €€€€r   Úoriginal_fftshiftz>TestFFTShift.test_equal_to_original.<locals>.original_fftshiftZ   s¶   ø€ à�'˜!‘*”*ˆCØ”8ˆDØˆ|Ý�E $™KœKÑ(Ô(��Ý˜D¥#Ñ&Ô&ð Ø�w�ØˆAØð 'ð '�Ø”I˜a”L�Ø˜!‘e ‘\�Ø$˜ f f¨R°¡m¤m°V°V¸B±Z´ZÐ%@ÑAÔA�Ø�D˜˜F AÑ&Ô&��ØˆHr   c                 ó2  •—  ‰
| ¦  «        }|j         }|€t          t          |¦  «        ¦  «        }nt          |t          ¦  «        r|f}|}|D ]G}|j        |         }||dz   dz  z
  } ‰ ‰	||¦  «         ‰	|¦  «        f¦  «        } ‰|||¦  «        }ŒH|S )z( How ifftshift was implemented in v1.14 Nr
   r   r9   r@   s            €€€€r   Úoriginal_ifftshiftz?TestFFTShift.test_equal_to_original.<locals>.original_ifftshiftj   s»   ø€ à�'˜!‘*”*ˆCØ”8ˆDØˆ|Ý�E $™KœKÑ(Ô(��Ý˜D¥#Ñ&Ô&ð Ø�w�ØˆAØð 'ð '�Ø”I˜a”L�Ø˜!˜a™% A™Ñ%�Ø$˜ f f¨R°¡m¤m°V°V¸B±Z´ZÐ%@ÑAÔA�Ø�D˜˜F AÑ&Ô&��ØˆHr   é   )r   r
   Nr)   r&   )N)Únumpy._corer4   r5   r6   r7   r<   r!   r"   Úrandr   r   r   r   )r   rE   rG   ÚiÚjÚaxes_keywordÚinpr6   r4   r5   r7   s          @@@@r   Útest_equal_to_originalz#TestFFTShift.test_equal_to_originalV   s`  øøøø€ àBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	õ$ �r‘”ð 		Uð 		UˆAÝ˜2‘Y”Yð Uð U�Ø$>ð Uð U�LÝœ)Ÿ.š.¨¨AÑ.Ô.�Cå-­c¬l¸3ÀÑ.MÔ.MØ.?Ð.?ÀÀ\Ñ.RÔ.RñTô Tð Tõ .­c¬m¸CÀÑ.NÔ.NØ.@Ð.@ÀÀlÑ.SÔ.SñUô Uð Uð UðUðUð		Uð 		Ur   N)Ú__name__Ú
__module__Ú__qualname__r   r$   r,   r2   rO   © r   r   r   r      sn   € € € € € ð7ð 7ð 7ðIð Ið Ið
Að Að Að+Hð +Hð +HðZ/Uð /Uð /Uð /Uð /Ur   r   c                   ó   — e Zd Zd„ ZdS )ÚTestFFTFreqc                 óv  — g d¢}t          dt          j        d¦  «        z  |¦  «         t          dt          z  t          j        dt          ¦  «        z  |¦  «         g d¢}t          dt          j        d¦  «        z  |¦  «         t          dt          z  t          j        dt          ¦  «        z  |¦  «         d S )Nr	   r   r   é
   )r   r   Úfftfreqr   ©r   r   s     r   r   zTestFFTFreq.test_definitionŠ   s¢   € Ø+Ð+Ð+ˆÝ! !¥C¤K°¡N¤NÑ"2°AÑ6Ô6Ð6Ý! !¥B¡$¥s¤{°1µbÑ'9Ô'9Ñ"9¸1Ñ=Ô=Ð=Ø/Ð/Ð/ˆÝ! "¥S¤[°¡_¤_Ñ"4°aÑ8Ô8Ð8Ý! "¥R¡%­¬°B½Ñ(;Ô(;Ñ";¸QÑ?Ô?Ð?Ð?Ð?r   N©rP   rQ   rR   r   rS   r   r   rU   rU   ˆ   s(   € € € € € ð@ð @ð @ð @ð @r   rU   c                   ó   — e Zd Zd„ ZdS )ÚTestRFFTFreqc                 óv  — g d¢}t          dt          j        d¦  «        z  |¦  «         t          dt          z  t          j        dt          ¦  «        z  |¦  «         g d¢}t          dt          j        d¦  «        z  |¦  «         t          dt          z  t          j        dt          ¦  «        z  |¦  «         d S )N)r   r
   r   r   r   r   )r   r
   r   r   r   r.   rW   )r   r   Úrfftfreqr   rY   s     r   r   zTestRFFTFreq.test_definition•   s¢   € ØˆOˆOˆÝ! !¥C¤L°¡O¤OÑ"3°QÑ7Ô7Ð7Ý! !¥B¡$¥s¤|°AµrÑ':Ô':Ñ":¸AÑ>Ô>Ð>ØÐÐˆÝ! "¥S¤\°"Ñ%5Ô%5Ñ"5°qÑ9Ô9Ð9Ý! "¥R¡%­¬°R½Ñ(<Ô(<Ñ"<¸aÑ@Ô@Ð@Ð@Ð@r   NrZ   rS   r   r   r\   r\   “   s(   € € € € € ðAð Að Að Að Ar   r\   c                   ó   — e Zd Zd„ ZdS )Ú
TestIRFFTNc                 óŠ   — t           j                             d¦  «        \  }}|d|z  z   }d}t          j        ||¬¦  «         d S )N)r   rH   é   é    y              ð?)r   r'   )r!   r"   r   Úirfftn)r   ÚarÚaiÚar(   s        r   Útest_not_last_axis_successz%TestIRFFTN.test_not_last_axis_success    sJ   € Ý”×!Ò! .Ñ1Ô1‰ˆˆBØ��B‘‰Jˆàˆõ 	Œ
�1˜4Ð Ñ Ô Ð Ð Ð r   N)rP   rQ   rR   rh   rS   r   r   r`   r`   ž   s#   € € € € € ð!ð !ð !ð !ð !r   r`   )Ú__doc__Únumpyr!   Únumpy.testingr   r   r   r   rU   r\   r`   rS   r   r   ú<module>rl      s  ððð ð
 Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø Ð Ð Ð Ð Ð Ð Ð ðzUð zUð zUð zUð zUñ zUô zUð zUðz@ð @ð @ð @ð @ñ @ô @ð @ðAð Að Að Að Añ Aô Að Að	!ð 	!ð 	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!r   