Ë
    öU.j§a  ã                   ó<  — d dl Zd dlZd dlmZ d dlmZmZmZm	Z	 d dl
Z
d dlZd„ Z G d„ d«      Z G d„ d«      Zej                  j!                  d	ej"                  ej$                  ej&                  ej(                  g«      ej                  j!                  d
ddg«      ej                  j!                  dej*                  j*                  ej*                  j,                  ej*                  j.                  ej*                  j0                  ej*                  j2                  ej*                  j4                  g«      d„ «       «       «       Zej                  j!                  d
ddg«      ej                  j!                  dg d¢«      d„ «       «       Zej                  j;                  e	d¬«       G d„ d«      «       Zd„ Zd„ Z ej                  j!                  dej*                  j*                  ej*                  j0                  ej*                  jB                  ej*                  jD                  g«      ej                  j!                  d ejF                  g d¢«       ejH                  dejJ                  ¬«       ejH                  dejL                  ¬«      g«      d„ «       «       Z'y)é    N)Úrandom)Úassert_array_equalÚassert_raisesÚassert_allcloseÚIS_WASMc                 ó  — t        | «      }dt        j                  z  t        j                  |«      |z  z  }t        j                  |«      j	                  dd«      |z  }t        j
                  | t        j                  |«      z  d¬«      S )Ny       €       Àéÿÿÿÿé   ©Úaxis)ÚlenÚnpÚpiÚarangeÚreshapeÚsumÚexp)ÚxÚLÚphases      ú`C:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\numpy/fft/tests/test_pocketfft.pyÚfft1r      sf   € ÜˆA‹€AØ”"—%‘%‰Kœ2Ÿ9™9 Q›<¨!Ñ+Ñ,€EÜ�I‰I�a‹L× Ñ   QÓ'¨%Ñ/€EÜ�6‰6�!”B—F‘F˜5“M‘/¨Ô*Ð*ó    c                   ó   — e Zd Zd„ Zy)ÚTestFFTShiftc                 ó\   — t        t        t        j                  j                  g d¢d«       y )N)r
   é   é   r   )r   Ú
ValueErrorr   Úfft)Úselfs    r   Ú
test_fft_nzTestFFTShift.test_fft_n   s   € Ü”j¤"§&¡&§*¡*ªi¸Õ;r   N)Ú__name__Ú
__module__Ú__qualname__r"   © r   r   r   r      s   „ ó<r   r   c            	       óB	  — e Zd Zd„ Zej
                  j                  dej                  ej                  ej                  g«      d„ «       Zej
                  j                  dej                  ej                  ej                  g«      d„ «       Zd„ Zej
                  j                  dd«      ej
                  j                  deef«      ej
                  j                  dd	«      d
„ «       «       «       Zej
                  j                  dddg«      d„ «       Zd„ Zej
                  j                  dd«      d„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!ej
                  j                  d ejD                  jF                  ejD                  jH                  ejD                  jJ                  ejD                  jL                  g«      d!„ «       Z'ej
                  j                  d ejD                  jF                  ejD                  jH                  ejD                  jP                  ejD                  jR                  g«      d"„ «       Z*ej
                  j                  d ejD                  jF                  ejD                  jH                  ejD                  jJ                  ejD                  jL                  g«      d#„ «       Z+ej
                  j                  d ejD                  jP                  ejD                  jR                  g«      d$„ «       Z,ej
                  j                  d ejD                  jF                  ejD                  jH                  ejD                  jJ                  ejD                  jL                  ejD                  jP                  ejD                  jR                  g«      d%„ «       Z-d&„ Z.ej
                  j                  d'g d(¢«      ej
                  j                  deef«      ej
                  j                  dd	«      d)„ «       «       «       Z/ej
                  j                  d*ejD                  jF                  ejD                  jH                  ejD                  jJ                  g«      d+„ «       Z0ej
                  j                  d,d-d.g«      d/„ «       Z1y0)1Ú	TestFFT1Dc           
      ó®  — d}t        |«      dt        |«      z  z   }t        |«      }t        d|«      D ]Ÿ  }t        t        j                  j                  t        j                  j	                  |d| «      «      |d| d¬«       t        t        j                  j                  t        j                  j                  |d| «      |«      |d| d¬«       Œ¡ y )Ni   ù              ð?r
   r   gê-�™—q=©Úatol)r   Úranger   r   r    ÚifftÚirfftÚrfft)r!   Úmaxlenr   ÚxrÚis        r   Útest_identityzTestFFT1D.test_identity   s¤   € ØˆÜ�6‹N˜R¤ v£Ñ.Ñ.ˆÜ�F‹^ˆÜ�q˜&Ö!ˆAÜœBŸF™FŸK™K¬¯©¯
©
°1°Q°q°6Ó(:Ó;¸Q¸qÀ¸VØ!&õ(äœBŸF™FŸL™L¬¯©¯©°R¸¸!°WÓ)=¸qÓAØ˜q ˜G¨%ö1ñ "r   Údtypec                 óv  — d}dt        j                  t        j                  d|¬«      «      z  }t        |«      j	                  |«      dt        |«      j	                  |«      z  z   }t        j
                  |t        j                  |«      g«      }t        |«      j	                  |«      }t        j
                  |t        j                  |«      g«      }t        d|dz  «      D ]Ò  }t         j                  j                  t         j                  j                  ||¬«      |¬«      }	|	j                  j                  |k(  sJ ‚t        |	|d	| |d	¬
«       t         j                  j                  t         j                  j                  ||¬«      |¬«      }
|
j                  |k(  sJ ‚t        |
|d	| |d	¬
«       ŒÔ y ©Né   é   ç      ð?©r5   r*   r
   r   ©Únr   ©r,   Úrtol)r   ÚspacingÚarrayr   ÚastypeÚconcatenateÚ
zeros_liker-   r    r.   Úrealr5   r   r/   r0   )r!   r5   r1   r,   r   Úxxr2   Úxxrr3   Úcheck_cÚcheck_rs              r   Útest_identity_long_shortz"TestFFT1D.test_identity_long_short$   sU  € ð ˆØ”2—:‘:œbŸh™h r°Ô7Ó8Ñ8ˆÜ�6‹N×!Ñ! %Ó(¨2¬f°V«n×.CÑ.CÀEÓ.JÑ+JÑJˆÜ�^‰^˜Q¤§¡¨aÓ 0Ð1Ó2ˆÜ�F‹^×"Ñ" 5Ó)ˆÜ�n‰n˜b¤"§-¡-°Ó"3Ð4Ó5ˆÜ�q˜& ™(Ö#ˆAÜ—f‘f—k‘k¤"§&¡&§*¡*¨Q°! *Ó"4¸�kÓ:ˆGØ—<‘<×%Ñ%¨Ò.Ð.Ð.Ü˜G R¨¨! W°4¸aÕ@Ü—f‘f—l‘l¤2§6¡6§;¡;¨r°Q ;Ó#7¸1�lÓ=ˆGØ—=‘= EÒ)Ð)Ð)Ü˜G S¨¨1 X°D¸qÖAñ $r   c                 óÜ  — d}dt        j                  t        j                  d|¬«      «      z  }t        |«      j	                  |«      dt        |«      j	                  |«      z  z   }t        j
                  |t        j                  |«      g«      }t        d|dz  «      D �]H  }t         j                  j                  t         j                  j                  ||¬«      |¬«      }|j                  |j                  k(  sJ ‚t        ||d	| |d	¬
«       |j                  «       }|dz  dz   }	d	|j                  d	<   |dz  d	k(  rd	|j                  |	dz
  d  t        j
                  |t        j                  |«      g«      }
t         j                  j                  t         j                  j                  ||¬«      |¬«      }|j                  |j                  k(  sJ ‚t        ||
d	|	 |d	¬
«       �ŒK y r7   )r   r@   rA   r   rB   rC   rD   r-   r    r.   r5   r   ÚcopyÚimagr0   r/   )r!   r5   r1   r,   r   rF   r3   Úcheck_via_cÚyr=   ÚyyÚcheck_via_rs               r   Ú!test_identity_long_short_reversedz+TestFFT1D.test_identity_long_short_reversed6   sŒ  € ð ˆØ”2—:‘:œbŸh™h r°Ô7Ó8Ñ8ˆÜ�6‹N×!Ñ! %Ó(¨2¬f°V«n×.CÑ.CÀEÓ.JÑ+JÑJˆÜ�^‰^˜Q¤§¡¨aÓ 0Ð1Ó2ˆÜ�q˜& ™(×#ˆAÜŸ&™&Ÿ*™*¤R§V¡V§[¡[°°a [Ó%8¸A˜*Ó>ˆKØ×$Ñ$¨¯©Ò/Ð/Ð/Ü˜K¨¨A¨a¨°tÀ!ÕDð —‘“ˆAØ�Q‘˜‘
ˆAØˆA�F‰F�1‰IØ�1‰u˜ŠzØ �—‘�q˜‘s�t�Ü—‘ ¤B§M¡M°!Ó$4Ð 5Ó6ˆBÜŸ&™&Ÿ+™+¤b§f¡f§l¡l°1¸ lÓ&:¸a˜+Ó@ˆKØ×$Ñ$¨¯©Ò/Ð/Ð/Ü˜K¨¨A¨a¨°tÀ!×Dñ $r   c                 ó  — t        d«      dt        d«      z  z   }t        t        |«      t        j                  j	                  |«      d¬«       t        t        |«      t        j                  j	                  |d¬«      d¬«       t        t        |«      t        j
                  d«      z  t        j                  j	                  |d¬«      d¬«       t        t        |«      dz  t        j                  j	                  |d	¬«      d¬«       y )
Né   r*   ç�íµ ÷Æ°>r+   Úbackward©ÚnormÚorthoç      >@Úforward)r   r   r   r   r    Úsqrt©r!   r   s     r   Útest_fftzTestFFT1D.test_fftN   s°   € Ü�2‹J˜œF 2›J™Ñ&ˆÜœ˜Q›¤§¡§¡¨A£°TÕ:Üœ˜Q›¤§¡§¡¨A°J Ó!?ÀdÕKÜœ˜Q›¤"§'¡'¨"£+Ñ-ÜŸ™Ÿ
™
 1¨7˜
Ó3¸$õ	@äœ˜Q› #™ÜŸ™Ÿ
™
 1¨9˜
Ó5¸Dö	Br   r   ©r   r
   Ú	transpose)TFc                 ó  ‡— ˆfd„}|t         u rOt        d«      dt        d«      z  z   }t        j                  j                  t        j                  j                  }}n?t        d«      }t        j                  j
                  t        j                  j                  }} |||¬«      } ||«      }	 |||	|¬«      }
|
|	u sJ ‚t        |
|«        |||¬«      }|t         u r|	n ||«      } ||	||¬«      }||u sJ ‚t        ||«       y )Nc                 ó„   •— ‰r)t        j                  | j                  «      j                  S t        j                  | «      S ©N©r   rD   ÚT©r   r`   s    €r   rD   z3TestFFT1D.test_fft_out_argument.<locals>.zeros_like[   ó.   ø€ ÙÜ—}‘} Q§S¡SÓ)×+Ñ+Ð+ä—}‘} QÓ'Ð'r   )é
   é   r*   r   )Úoutr   )Úcomplexr   r   r    r.   r0   r/   r   )r!   r5   r`   r   rD   rO   r    r.   Úexpectedrj   ÚresultÚ	expected2Úout2Úresult2s     `           r   Útest_fft_out_argumentzTestFFT1D.test_fft_out_argumentW   sä   ø€ ô	(ð ”GÑÜ�xÓ  2¤f¨XÓ&6Ñ#6Ñ6ˆAÜŸ™Ÿ
™
¤B§F¡F§K¡K�‰Cä�xÓ ˆAÜŸ™Ÿ™¤R§V¡V§\¡\�ˆCá�q˜tÔ$ˆÙ˜Ó"ˆÙ�Q˜C dÔ+ˆØ˜‰}Ðˆ}Ü˜6 8Ô,á˜¨Ô-ˆ	ØœwÑ&‰s©J°yÓ,AˆÙ�s ¨4Ô0ˆØ˜$‰ÐˆÜ˜7 IÕ.r   r   r
   c                 ó<  — t        d«      dt        d«      z  z   }|j                  «       }t        j                  j                  ||¬«      }t        j                  j                  |||¬«      }||u sJ ‚t	        ||«       |j                  «       }|dk(  r|d d n
|d d …d d…f   }t        j                  j                  |d|¬«      }t        j                  j                  |d||¬«      }	|	|u sJ ‚t	        |	|«       |dk(  rt	        |dd  |dd  «       nt	        |d d …dd …f   |d d …dd …f   «       |j                  «       }
|dk(  r|
d	d  n
|
d d …d	d …f   }|dk(  r|
d	d
 n
|
d d …d	d
…f   }t        j                  j                  |d|¬«      }t        j                  j                  |d||¬«      }||u sJ ‚t	        ||«       |dk(  r%t	        |
d d	 |d d	 «       t	        |
d
d  |d
d  «       n<t	        |
d d …d d	…f   |d d …d d	…f   «       t	        |
d d …d
d …f   |d d …d
d …f   «       |j                  «       }|dk(  r|d d n
|d d …d d…f   }|dk(  r|d d
 n
|d d …d d
…f   }t        j                  j                  |d
|¬«      }t        j                  j                  |d
||¬«      }||u sJ ‚t	        ||«       |dk(  rt	        |d
d  |d
d  «       nt	        |d d …d
d …f   |d d …d
d …f   «       |j                  «       }|j
                  }t        j                  j                  |||¬«      }||u sJ ‚t	        ||«       |j                  «       }|dk(  r|d d d…   n|d d …d d d…f   }t        j                  j                  |||¬«      }||u sJ ‚t	        ||«       y )N)ri   ri   r*   r   )r   rj   r   rh   )r=   r   )r=   r   rj   r9   é   r	   )r   rL   r   r    r   re   )r!   r   rO   Úy1Ú	expected1Úresult1Úy2ro   rn   rp   Úy3Úy3_selÚout3Ú	expected3Úresult3Úy4Úy4_selÚout4Ú	expected4Úresult4Úy5Úout5Úresult5Úy6Úout6Úresult6s                             r   Útest_fft_inplace_outzTestFFT1D.test_fft_inplace_outu   sƒ  € ô �8Ó˜r¤&¨Ó"2Ñ2Ñ2ˆà�V‰V‹XˆÜ—F‘F—J‘J˜r¨�JÓ-ˆ	Ü—&‘&—*‘*˜R d°�*Ó3ˆØ˜"‰}Ðˆ}Ü˜7 IÔ.à�V‰V‹XˆØ !š)ˆr�#�2‰w¨ªA¨s°¨s¨F©ˆÜ—F‘F—J‘J˜r R¨d�JÓ3ˆ	Ü—&‘&—*‘*˜R 2¨D°d�*Ó;ˆØ˜$‰ÐˆÜ˜7 IÔ.Ø�1Š9Ü˜r " #˜w¨¨"¨#¨Õ/ä˜r¢! R¡S &™z¨1ªQ°±¨V©9Ô5à�V‰V‹XˆØ 1š9��A�B‘¨"ªQ°±¨U©)ˆØ 1š9ˆr�!�B‰x¨"ªQ°°"°¨W©+ˆÜ—F‘F—J‘J˜v¨°$�JÓ7ˆ	Ü—&‘&—*‘*˜V r°¸$�*Ó?ˆØ˜$‰ÐˆÜ˜7 IÔ.Ø�1Š9Ü˜r " 1˜v q¨¨! uÔ-Ü˜r " #˜w¨¨"¨#¨Õ/ä˜r¢! R a R %™y¨!ªA¨r°¨r¨E©(Ô3Ü˜r¢! R¡S &™z¨1ªQ°±¨V©9Ô5à�V‰V‹XˆØ  AšI��C�R‘¨2ªa°°"°¨f©:ˆØ !š)ˆr�#�2‰w¨ªA¨s°¨s¨F©ˆÜ—F‘F—J‘J˜v¨°$�JÓ7ˆ	Ü—&‘&—*‘*˜V r°¸$�*Ó?ˆØ˜$‰ÐˆÜ˜7 IÔ.Ø�1Š9Ü˜r " #˜w¨¨"¨#¨Õ/ä˜r¢! R¡S &™z¨1ªQ°±¨V©9Ô5à�V‰V‹XˆØ�t‰tˆÜ—&‘&—*‘*˜R d°�*Ó5ˆØ˜$‰ÐˆÜ˜7 IÔ.à�V‰V‹XˆØ 1š9ˆr‘$�B�$Šx¨"ªQ±°"°¨W©+ˆÜ—&‘&—*‘*˜R d°�*Ó5ˆØ˜$‰ÐˆÜ˜7 IÕ.r   c                 óŒ  — t        j                  d«      }t        j                  t        d¬«      5  t         j
                  j                  |d¬«       d d d «       t        j                  t        d¬«      5  t         j
                  j                  |t        j                  |«      j                  dd«      ¬«       d d d «       t        j                  t        d	¬«      5  t         j
                  j                  |t        j                  |t        ¬
«      ¬«       d d d «       y # 1 sw Y   ŒÐxY w# 1 sw Y   ŒtxY w# 1 sw Y   y xY w)NrZ   zmust be of ArrayType©ÚmatchÚ )rj   úhas wrong shaper9   r	   zCannot castr;   )
r   r   ÚpytestÚraisesÚ	TypeErrorr    r   rD   r   Úfloatr]   s     r   Útest_fft_bad_outzTestFFT1D.test_fft_bad_out±   sÄ   € Ü�I‰I�c‹NˆÜ�]‰]œ9Ð,BÖCÜ�F‰F�J‰J�q˜bˆJÔ!÷ Dä�]‰]œ:Ð->Ö?Ü�F‰F�J‰J�qœbŸm™m¨AÓ.×6Ñ6°q¸"Ó=ˆJÔ>÷ @ä�]‰]œ9¨MÖ:Ü�F‰F�J‰J�qœbŸm™m¨A´UÔ;ˆJÔ<÷ ;Ð:÷	 DÐCúç?Ð?úç:Ð:ús$   ±"D"Á6AD.Ã;D:Ä"D+Ä.D7Ä:ErX   ©NrV   rY   r[   c           	      ór  — t        d«      dt        d«      z  z   }t        |t        j                  j	                  t        j                  j                  ||¬«      |¬«      d¬«       t        j                  t        d¬«      5  t        j                  j	                  g |¬«       d d d «       y # 1 sw Y   y xY w)NrT   r*   rW   rU   r+   z!Invalid number of FFT data pointsrŠ   )r   r   r   r    r.   rŽ   r�   r   )r!   rX   r   s      r   Ú	test_ifftzTestFFT1D.test_ifftº   s…   € ä�2‹J˜œF 2›J™Ñ&ˆÜØŒr�v‰v�{‰{œ2Ÿ6™6Ÿ:™: a¨d˜:Ó3¸$ˆ{Ó?Øõ	ô �]‰]œ:Ø!DöFä�F‰F�K‰K˜ ˆKÔ&÷F÷ Fñ Fús   Â"B-Â-B6c                 óø  — t        d«      dt        d«      z  z   }t        t        j                  j                  t        j                  j                  |d¬«      d¬«      t        j                  j	                  |«      d¬«       t        t        j                  j	                  |«      t        j                  j	                  |d¬	«      d¬«       t        t        j                  j	                  |«      t        j
                  d
«      z  t        j                  j	                  |d¬	«      d¬«       t        t        j                  j	                  |«      dz  t        j                  j	                  |d¬	«      d¬«       y ©N©rT   ri   r*   r
   r   r   rU   r+   rV   rW   éX  rY   ç     À‚@r[   )r   r   r   r    Úfft2r\   r]   s     r   Ú	test_fft2zTestFFT1D.test_fft2Å   sò   € Ü�8Ó˜r¤&¨Ó"2Ñ2Ñ2ˆÜœŸ™Ÿ
™
¤2§6¡6§:¡:¨a°a :Ó#8¸q˜
ÓAÜŸ™Ÿ™ A›¨Tõ	3äœŸ™Ÿ™ A›ÜŸ™Ÿ™ A¨J˜Ó7¸dõ	DäœŸ™Ÿ™ A›¬¯©°Ó)9Ñ9ÜŸ™Ÿ™ A¨G˜Ó4¸4õ	AäœŸ™Ÿ™ A›¨)Ñ4ÜŸ™Ÿ™ A¨I˜Ó6¸Tö	Cr   c                 óø  — t        d«      dt        d«      z  z   }t        t        j                  j	                  t        j                  j	                  |d¬«      d¬«      t        j                  j                  |«      d¬«       t        t        j                  j                  |«      t        j                  j                  |d¬	«      d¬«       t        t        j                  j                  |«      t        j                  d
«      z  t        j                  j                  |d¬	«      d¬«       t        t        j                  j                  |«      dz  t        j                  j                  |d¬	«      d¬«       y r—   )r   r   r   r    r.   Úifft2r\   r]   s     r   Ú
test_ifft2zTestFFT1D.test_ifft2Ð   sò   € Ü�8Ó˜r¤&¨Ó"2Ñ2Ñ2ˆÜœŸ™Ÿ™¤B§F¡F§K¡K°¸ KÓ$:À˜ÓCÜŸ™Ÿ™ Q›¨dõ	4äœŸ™Ÿ™ Q›ÜŸ™Ÿ™ Q¨Z˜Ó8¸tõ	EäœŸ™Ÿ™ Q›¬"¯'©'°'Ó*:Ñ:ÜŸ™Ÿ™ Q¨W˜Ó5¸Dõ	BäœŸ™Ÿ™ Q›¨9Ñ5ÜŸ™Ÿ™ Q¨Y˜Ó7¸dö	Dr   c           
      ó6  — t        d«      dt        d«      z  z   }t        t        j                  j                  t        j                  j                  t        j                  j                  |d¬«      d¬«      d¬«      t        j                  j	                  |«      d¬«       t        t        j                  j	                  |«      t        j                  j	                  |d	¬
«      d¬«       t        t        j                  j	                  |«      t        j
                  d«      z  t        j                  j	                  |d¬
«      d¬«       t        t        j                  j	                  |«      dz  t        j                  j	                  |d¬
«      d¬«       y ©N©rT   ri   rh   r*   r   r   r
   r   rU   r+   rV   rW   ép  rY   ç     p·@r[   )r   r   r   r    Úfftnr\   r]   s     r   Ú	test_fftnzTestFFT1D.test_fftnÛ   s  € Ü�<Ó  2¤f¨\Ó&:Ñ#:Ñ:ˆÜÜ�F‰F�J‰J”r—v‘v—z‘z¤"§&¡&§*¡*¨Q°Q *Ó"7¸a�zÓ@ÀqˆJÓIÜ�F‰F�K‰K˜‹N õ	'ô 	œŸ™Ÿ™ A›ÜŸ™Ÿ™ A¨J˜Ó7¸dõ	DäœŸ™Ÿ™ A›¬¯©°Ó)>Ñ>ÜŸ™Ÿ™ A¨G˜Ó4¸4õ	AäœŸ™Ÿ™ A›¨/Ñ:ÜŸ™Ÿ™ A¨I˜Ó6¸Tö	Cr   c           
      ó6  — t        d«      dt        d«      z  z   }t        t        j                  j	                  t        j                  j	                  t        j                  j	                  |d¬«      d¬«      d¬«      t        j                  j                  |«      d¬«       t        t        j                  j                  |«      t        j                  j                  |d	¬
«      d¬«       t        t        j                  j                  |«      t        j                  d«      z  t        j                  j                  |d¬
«      d¬«       t        t        j                  j                  |«      dz  t        j                  j                  |d¬
«      d¬«       y r¡   )r   r   r   r    r.   Úifftnr\   r]   s     r   Ú
test_ifftnzTestFFT1D.test_ifftnç   s  € Ü�<Ó  2¤f¨\Ó&:Ñ#:Ñ:ˆÜÜ�F‰F�K‰KœŸ™Ÿ™¤B§F¡F§K¡K°¸ KÓ$:À˜ÓCÈ!ˆKÓLÜ�F‰F�L‰L˜‹O $õ	(ô 	œŸ™Ÿ™ Q›ÜŸ™Ÿ™ Q¨Z˜Ó8¸tõ	EäœŸ™Ÿ™ Q›¬"¯'©'°,Ó*?Ñ?ÜŸ™Ÿ™ Q¨W˜Ó5¸Dõ	BäœŸ™Ÿ™ Q›¨?Ñ;ÜŸ™Ÿ™ Q¨Y˜Ó7¸dö	Dr   c           
      ó  — t        d«      }|j                  d|j                  z  fD �]a  }dD ]Y  }t        t        j                  j	                  |||¬«      d |dz  dz    t        j                  j                  |||¬«      d¬«       Œ[ t        t        j                  j                  ||¬«      t        j                  j                  ||d	¬«      d¬«       t        t        j                  j                  ||¬«      t        j                  |«      z  t        j                  j                  ||d
¬«      d¬«       t        t        j                  j                  ||¬«      |z  t        j                  j                  ||d¬«      d¬«       �Œd y )NrT   r   r“   ©r=   rX   r
   rU   r+   r<   rV   rY   r[   )r   Úsizer   r   r    r0   r\   )r!   r   r=   rX   s       r   Ú	test_rfftzTestFFT1D.test_rfftó   s+  € Ü�2‹JˆØ—&‘&˜!˜AŸF™F™(Ô#ˆAÛ>�ÜÜ—F‘F—J‘J˜q A¨D�JÓ1°+°A°q±D¸1±HÐ>Ü—F‘F—K‘K  Q¨T�KÓ2¸ö?ð ?ô Ü—‘—‘˜A �Ó#Ü—‘—‘˜A ¨�Ó4¸4õAô Ü—‘—‘˜A �Ó#¤b§g¡g¨a£jÑ0Ü—‘—‘˜A ¨�Ó1¸õ>ô Ü—‘—‘˜A �Ó# aÑ'Ü—‘—‘˜A ¨�Ó3¸$÷@ñ $r   c                 óà   — t        j                  d«      }d}t         j                  j                  ||«      }t	        |t         j                  j                  |d | «      d |dz  dz    d¬«       y )Né   é   r   r
   ç›+¡†›„=©r?   )r   r   r    r0   r   )r!   r   r=   rO   s       r   Útest_rfft_evenzTestFFT1D.test_rfft_even  sV   € Ü�I‰I�a‹LˆØˆÜ�F‰F�K‰K˜˜1ÓˆÜ˜œ2Ÿ6™6Ÿ:™: a¨¨ eÓ,¨Y¨a°©d°Q©hÐ7¸eÖDr   c                 óÌ   — t        j                  g d¢«      }t         j                  j                  |«      }t	        |t         j                  j                  |«      d d d¬«       y )N)r
   r   r   r   éýÿÿÿr   r±   r²   )r   rA   r    r0   r   )r!   r   rO   s      r   Útest_rfft_oddzTestFFT1D.test_rfft_odd
  sA   € Ü�H‰HÒ%Ó&ˆÜ�F‰F�K‰K˜‹NˆÜ˜œ2Ÿ6™6Ÿ:™: a›=¨¨!Ð,°5Ö9r   c           	      ór  — t        d«      }t        |t        j                  j	                  t        j                  j                  |«      «      d¬«       t        |t        j                  j	                  t        j                  j                  |d¬«      d¬«      d¬«       t        |t        j                  j	                  t        j                  j                  |d¬«      d¬«      d¬«       t        |t        j                  j	                  t        j                  j                  |d¬«      d¬«      d¬«       y )NrT   rU   r+   rV   rW   rY   r[   )r   r   r   r    r/   r0   r]   s     r   Ú
test_irfftzTestFFT1D.test_irfft  sÕ   € Ü�2‹JˆÜ˜œ2Ÿ6™6Ÿ<™<¬¯©¯©°A«Ó7¸dÕCÜ˜œ2Ÿ6™6Ÿ<™<¬¯©¯©°A¸J¨Ó(GØ'ð (ó )Ø/3õ	5ä˜œ2Ÿ6™6Ÿ<™<¬¯©¯©°A¸G¨Ó(DØ$ð (ó &Ø,0õ	2ä˜œ2Ÿ6™6Ÿ<™<¬¯©¯©°A¸I¨Ó(FØ&ð (ó (Ø.2ö	4r   c                 óª  — t        d«      }t        t        j                  j	                  |«      d d …d d…f   t        j                  j                  |«      d¬«       t        t        j                  j                  |«      t        j                  j                  |d¬«      d¬«       t        t        j                  j                  |«      t        j                  d«      z  t        j                  j                  |d¬«      d¬«       t        t        j                  j                  |«      d	z  t        j                  j                  |d
¬«      d¬«       y )Nr˜   é   rU   r+   rV   rW   r™   rY   rš   r[   )r   r   r   r    r›   Úrfft2r\   r]   s     r   Ú
test_rfft2zTestFFT1D.test_rfft2  s×   € Ü�8ÓˆÜœŸ™Ÿ™ A›¢q¨#¨2¨# vÑ.´·±·±¸Q³ÀdÕKÜœŸ™Ÿ™ Q›ÜŸ™Ÿ™ Q¨Z˜Ó8¸tõ	EäœŸ™Ÿ™ Q›¬"¯'©'°'Ó*:Ñ:ÜŸ™Ÿ™ Q¨W˜Ó5¸Dõ	BäœŸ™Ÿ™ Q›¨9Ñ5ÜŸ™Ÿ™ Q¨Y˜Ó7¸dö	Dr   c           	      ór  — t        d«      }t        |t        j                  j	                  t        j                  j                  |«      «      d¬«       t        |t        j                  j	                  t        j                  j                  |d¬«      d¬«      d¬«       t        |t        j                  j	                  t        j                  j                  |d¬«      d¬«      d¬«       t        |t        j                  j	                  t        j                  j                  |d¬«      d¬«      d¬«       y )Nr˜   rU   r+   rV   rW   rY   r[   )r   r   r   r    Úirfft2r»   r]   s     r   Útest_irfft2zTestFFT1D.test_irfft2#  sÖ   € Ü�8ÓˆÜ˜œ2Ÿ6™6Ÿ=™=¬¯©¯©°a«Ó9ÀÕEÜ˜œ2Ÿ6™6Ÿ=™=¬¯©¯©°a¸j¨Ó)IØ'ð )ó )Ø/3õ	5ä˜œ2Ÿ6™6Ÿ=™=¬¯©¯©°a¸g¨Ó)FØ$ð )ó &Ø,0õ	2ä˜œ2Ÿ6™6Ÿ=™=¬¯©¯©°a¸i¨Ó)HØ&ð )ó (Ø.2ö	4r   c           	      óB  — t        d«      }t        t        j                  j	                  |«      d d …d d …d d…f   t        j                  j                  |«      d¬«       t        t        j                  j                  |«      t        j                  j                  |d¬«      d¬«       t        t        j                  j                  |«      t        j                  d«      z  t        j                  j                  |d¬«      d¬«       t        t        j                  j                  |«      d	z  t        j                  j                  |d
¬«      d¬«       t        j                  d«      }t        j                  j                  |dd¬«      }|j                  dk(  sJ ‚t        j                  j                  t        j                  j                  t        j                  j                  |dd¬«      dd¬«      dd¬«      }|j                  dk(  sJ ‚t        ||d¬«       y )Nr¢   é   rU   r+   rV   rW   r£   rY   r¤   r[   )r   r   )r   r   r
   )rh   ri   é(   )ÚaxesÚs)rh   é   r
   rÂ   )r   r=   r   ri   rh   )
r   r   r   r    r¥   Úrfftnr\   ÚonesÚshaper0   )r!   r   rm   rl   s       r   Ú
test_rfftnzTestFFT1D.test_rfftn-  sz  € Ü�<Ó ˆÜœŸ™Ÿ™ A›¢qª!¨R¨a¨R xÑ0´"·&±&·,±,¸q³/ÈÕMÜœŸ™Ÿ™ Q›ÜŸ™Ÿ™ Q¨Z˜Ó8¸tõ	EäœŸ™Ÿ™ Q›¬"¯'©'°,Ó*?Ñ?ÜŸ™Ÿ™ Q¨W˜Ó5¸Dõ	BäœŸ™Ÿ™ Q›¨?Ñ;ÜŸ™Ÿ™ Q¨Y˜Ó7¸dõ	Dô �G‰G�F‹OˆÜ—‘—‘˜a i°<�Ó@ˆØ�|‰|˜xÒ'Ð'Ð'Ü—6‘6—:‘:œbŸf™fŸj™j¬¯©¯©°Q¸QÀ"¨Ó)EØ!" bð )ó *Ø01°Rð ó 9ˆà�~‰~ Ò)Ð)Ð)Ü˜ ¨tÖ4r   c           	      ór  — t        d«      }t        |t        j                  j	                  t        j                  j                  |«      «      d¬«       t        |t        j                  j	                  t        j                  j                  |d¬«      d¬«      d¬«       t        |t        j                  j	                  t        j                  j                  |d¬«      d¬«      d¬«       t        |t        j                  j	                  t        j                  j                  |d¬«      d¬«      d¬«       y )Nr¢   rU   r+   rV   rW   rY   r[   )r   r   r   r    ÚirfftnrÆ   r]   s     r   Útest_irfftnzTestFFT1D.test_irfftn?  sÖ   € Ü�<Ó ˆÜ˜œ2Ÿ6™6Ÿ=™=¬¯©¯©°a«Ó9ÀÕEÜ˜œ2Ÿ6™6Ÿ=™=¬¯©¯©°a¸j¨Ó)IØ'ð )ó )Ø/3õ	5ä˜œ2Ÿ6™6Ÿ=™=¬¯©¯©°a¸g¨Ó)FØ$ð )ó &Ø,0õ	2ä˜œ2Ÿ6™6Ÿ=™=¬¯©¯©°a¸i¨Ó)HØ&ð )ó (Ø.2ö	4r   c                 ó`  — t        d«      dt        d«      z  z   }t        j                  t        d«      |t        d«      f«      }t        j                  ||d d d…   j                  «       f«      }t	        t        j
                  j                  |«      t        j
                  j                  |«      d¬«       t	        t        j
                  j                  |«      t        j
                  j                  |d¬«      d¬«       t	        t        j
                  j                  |«      t        j                  d	«      z  t        j
                  j                  |d
¬«      d¬«       t	        t        j
                  j                  |«      dz  t        j
                  j                  |d¬«      d¬«       y )Né   r*   r
   r	   rU   r+   rV   rW   rT   rY   rZ   r[   )r   r   rC   Úconjr   r    Úhfftr\   ©r!   r   Úx_herms      r   Ú	test_hfftzTestFFT1D.test_hfftI  s  € Ü�2‹J˜œF 2›J™Ñ&ˆÜ—‘¤¨£¨A¬v°a«yÐ 9Ó:ˆÜ�N‰N˜F A¡d¨ d¡G§L¡L£NÐ3Ó4ˆÜœŸ™Ÿ
™
 1›¤r§v¡v§{¡{°6Ó':ÀÕFÜœŸ™Ÿ™ FÓ+ÜŸ™Ÿ™ F°˜Ó<À4õ	IäœŸ™Ÿ™ FÓ+¬b¯g©g°b«kÑ9ÜŸ™Ÿ™ F°˜Ó9Àõ	FäœŸ™Ÿ™ FÓ+¨cÑ1ÜŸ™Ÿ™ F°˜Ó;À$ö	Hr   c           	      ó:  — t        d«      dt        d«      z  z   }t        j                  t        d«      |t        d«      f«      }t        j                  ||d d d…   j                  «       f«      }t	        |t        j
                  j                  t        j
                  j                  |«      «      d¬«       t	        |t        j
                  j                  t        j
                  j                  |d¬«      d¬«      d¬«       t	        |t        j
                  j                  t        j
                  j                  |d	¬«      d	¬«      d¬«       t	        |t        j
                  j                  t        j
                  j                  |d
¬«      d
¬«      d¬«       y )NrÎ   r*   r
   r	   rU   r+   rV   rW   rY   r[   )r   r   rC   rÏ   r   r    ÚihfftrÐ   rÑ   s      r   Ú
test_ihfftzTestFFT1D.test_ihfftU  s6  € Ü�2‹J˜œF 2›J™Ñ&ˆÜ—‘¤¨£¨A¬v°a«yÐ 9Ó:ˆÜ�N‰N˜F A¡d¨ d¡G§L¡L£NÐ3Ó4ˆÜ˜¤§¡§¡¬R¯V©V¯[©[¸Ó-@Ó AÈÕMÜ˜¤§¡§¡¬R¯V©V¯[©[¸Ø'ð .9ó .)Ø/9ð !-ó !;ØAEõ	Gä˜¤§¡§¡¬R¯V©V¯[©[¸Ø$ð .9ó .&Ø,3ð !-ó !5Ø;?õ	Aä˜¤§¡§¡¬R¯V©V¯[©[¸Ø&ð .9ó .(Ø.7ð !-ó !9Ø?Cö	Er   Úopc                 óÀ   — t        d«      }g d¢}|D ]J  } |t        j                  ||«      «      }t        j                   |||¬«      |«      }t        ||d¬«       ŒL y )Nr¢   )©r   r
   r   )r   r   r
   )r
   r   r   )r
   r   r   )r   r   r
   )r   r
   r   ©rÃ   rU   r+   )r   r   r`   r   )r!   r×   r   rÃ   ÚaÚop_trÚtr_ops          r   Ú	test_axeszTestFFT1D.test_axesa  sT   € ô �<Ó ˆÚQˆÛˆAÙ”r—|‘| A qÓ)Ó*ˆEÜ—L‘L¡ A¨A¤°Ó2ˆEÜ˜E 5¨tÖ4ñ r   c                 ó‚   — t        j                  d«      j                  dd«      } ||dd¬«      j                  dk(  sJ ‚y )Néd   rh   ©r	   r9   r_   ©rÄ   rÃ   )rh   r9   )r   r   r   rÈ   ©r!   r×   r   s      r   Útest_s_negative_1zTestFFT1D.test_s_negative_1k  s;   € ô �I‰I�c‹N×"Ñ" 2 rÓ*ˆá�!�w VÔ,×2Ñ2°gÒ=Ð=Ñ=r   c                 ó¸   — t        j                  d«      j                  dd«      }t        j                  d¬«      5   ||d¬«       d d d «       y # 1 sw Y   y xY w)Nrà   rh   ú"`axes` should not be `None` if `s`rŠ   rá   )rÄ   ©r   r   r   rŽ   Úwarnsrã   s      r   Útest_s_axes_nonezTestFFT1D.test_s_axes_noner  sB   € ô �I‰I�c‹N×"Ñ" 2 rÓ*ˆÜ�\‰\Ð DÖEÙˆq�GÕ÷ F×EÑEús   ¼AÁAc                 óº   — t        j                  d«      j                  dd«      }t        j                  d¬«      5   ||dd ¬«       d d d «       y # 1 sw Y   y xY w)Nrà   rh   ræ   rŠ   rá   râ   rç   rã   s      r   Útest_s_axes_none_2DzTestFFT1D.test_s_axes_none_2Dy  sB   € ä�I‰I�c‹N×"Ñ" 2 rÓ*ˆÜ�\‰\Ð DÖEÙˆq�G $Õ'÷ F×EÑEús   ¼AÁAc                 ó†   — t        d«      }t        j                  d¬«      5   ||dd¬«       d d d «       y # 1 sw Y   y xY w)Nr¢   z%array containing `None` values to `s`rŠ   )rh   Nrh   rÙ   râ   )r   rŽ   rè   rã   s      r   Útest_s_contains_nonezTestFFT1D.test_s_contains_none  s4   € ô �<Ó ˆÜ�\‰\Ð GÖHÙˆq�N¨Õ3÷ I×HÑHús	   ¢7·A c           	      ó�  — t        d«      }t        j                  j                  |«      }|j                  dz  }t        j
                  j
                  t        j
                  j                  ft        j
                  j                  t        j
                  j                  ft        j
                  j                  t        j
                  j                  fg}|D ]m  \  }}|j                  d|j                  z  fD ]J  }dD ]C  } ||||¬«      } ||||¬«      }t        |t        j                  j                  |«      d¬«       ŒE ŒL Œo y )NrT   r   r“   r«   rU   r+   )r   r   ÚlinalgrX   r¬   r    r.   r0   r/   rÕ   rÐ   r   )	r!   r   Úx_normr=   Ú
func_pairsÚforwÚbackrX   Útmps	            r   Útest_all_1d_norm_preservingz%TestFFT1D.test_all_1d_norm_preserving‡  sê   € ä�2‹JˆÜ—‘—‘ Ó"ˆØ�F‰F�Q‰JˆÜ—v‘v—z‘z¤2§6¡6§;¡;Ð/Ü—v‘v—{‘{¤B§F¡F§L¡LÐ1ô —v‘v—|‘|¤R§V¡V§[¡[Ð1ð	ˆ
ó %‰JˆD�$Ø—f‘f˜a §¡™hÓ'�ÛB�DÙ˜q A¨DÔ1�CÙ˜s a¨dÔ3�CÜ# FÜ$&§I¡I§N¡N°3Ó$7¸döDñ Cñ (ñ %r   rÃ   )r_   ©r   r   Nc                 ó  ‡— ˆfd„}|t         u rOt        d«      dt        d«      z  z   }t        j                  j                  t        j                  j
                  }}n?t        d«      }t        j                  j                  t        j                  j                  }} |||¬«      } ||«      }	 |||	|¬«      }
|
|	u sJ ‚t        |
|«        |||¬«      }|t         u r|	n ||«      } ||	||¬«      }||u sJ ‚t        ||«       y )Nc                 ó„   •— ‰r)t        j                  | j                  «      j                  S t        j                  | «      S rc   rd   rf   s    €r   rD   z4TestFFT1D.test_fftn_out_argument.<locals>.zeros_likež  rg   r   ©rh   r9   rÁ   r*   rÚ   )rj   rÃ   )	rk   r   r   r    r¥   r¨   rÆ   rË   r   )r!   r5   r`   rÃ   rD   r   r    r.   rl   rj   rm   rn   ro   rp   s     `           r   Útest_fftn_out_argumentz TestFFT1D.test_fftn_out_argumentš  sä   ø€ ô	(ð ”GÑÜ�zÓ" R¬¨zÓ(:Ñ%:Ñ:ˆAÜŸ™Ÿ™¤R§V¡V§\¡\�‰Cä�zÓ"ˆAÜŸ™Ÿ™¤b§f¡f§m¡m�ˆCá�q˜tÔ$ˆÙ˜Ó"ˆÙ�Q˜C dÔ+ˆØ˜‰}Ðˆ}Ü˜6 8Ô,á˜¨Ô-ˆ	ØœwÑ&‰s©J°yÓ,AˆÙ�s ¨4Ô0ˆØ˜$‰ÐˆÜ˜7 IÕ.r   r    c                 ó¦  — |t         j                  j                  u rt        d«      }nt        d«      dt        d«      z  z   }t	        j
                  t        d¬«      5   ||t        j                  |«      dd¬«       d d d «       d} |||d¬	«      }t        j                  |«      } |||d|¬
«      }||u sJ ‚t        ||«       y # 1 sw Y   ŒJxY w)Nrù   r*   r�   rŠ   ©r   r   r   rÙ   )rj   rÄ   rÃ   )rh   r9   r9   râ   ©rÄ   rÃ   rj   )	r   r    rÆ   r   rŽ   r�   r   rD   r   )r!   r    r   rÄ   rl   rj   rm   s          r   Útest_fftn_out_and_s_interactionz)TestFFT1D.test_fftn_out_and_s_interaction¸  s¶   € ð ”"—&‘&—,‘,ÑÜ�zÓ"‰Aä�zÓ" R¬¨zÓ(:Ñ%:Ñ:ˆAÜ�]‰]œ:Ð->Ö?Ù�”r—}‘} QÓ'¨9¸9ÕE÷ @ð ˆÙ�q˜A IÔ.ˆÜ�m‰m˜HÓ%ˆÙ�Q˜! )°Ô5ˆØ˜‰}Ðˆ}Ü˜6 8Õ,÷ @Ð?ús   Á CÃCrÄ   )é	   r9   r9   rü   c                 ó  — t        d«      dt        d«      z  z   }t        j                  j                  ||d¬«      }t        j                  |«      }t        j                  j                  ||d|¬«      }||u sJ ‚t        ||«       y )N)rÿ   r9   rÁ   r   r*   rÙ   râ   rý   )r   r   r    rË   rD   r   )r!   rÄ   r   rl   rj   rm   s         r   Ú!test_irfftn_out_and_s_interactionz+TestFFT1D.test_irfftn_out_and_s_interactionÉ  ss   € ô �<Ó  2¤f¨\Ó&:Ñ#:Ñ:ˆÜ—6‘6—=‘=  a¨i�=Ó8ˆÜ�m‰m˜HÓ%ˆÜ—‘—‘˜q A¨I¸3�Ó?ˆØ˜‰}Ðˆ}Ü˜6 8Õ,r   N)2r#   r$   r%   r4   rŽ   ÚmarkÚparametrizer   ÚsingleÚdoubleÚ
longdoublerJ   rR   r^   rk   r‘   rq   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ú   rþ   r  r&   r   r   r(   r(      sü  „ ò1ð ‡[�[×Ñ˜W r§y¡y°"·)±)¸R¿]¹]Ð&KÓLñBó MðBð" ‡[�[×Ñ˜W r§y¡y°"·)±)¸R¿]¹]Ð&KÓLñEó MðEò.Bð ‡[�[×Ñ˜V VÓ,Ø‡[�[×Ñ˜W w°Ð&6Ó7Ø‡[�[×Ñ˜[¨-Ó8ñ/ó 9ó 8ó -ð/ð6 ‡[�[×Ñ˜V a¨ VÓ,ñ9/ó -ð9/òv=ð ‡[�[×Ñ˜VÐ%KÓLñ'ó Mð'ò	Cò	Dò
Cò
Dò@ò"Eò:ò
4òDò4ò5ò$4ò
Hò
Eð ‡[�[×Ñ˜T B§F¡F§K¡K°·±·±Ø$&§F¡F§L¡L°"·&±&·-±-ð$Aó Bñ5óBð5ð ‡[�[×Ñ˜T B§F¡F§K¡K°·±·±Ø$&§F¡F§K¡K°·±·±ð$?ó @ñ>ó@ð>ð
 ‡[�[×Ñ˜T B§F¡F§K¡K°·±·±Ø$&§F¡F§L¡L°"·&±&·-±-ð$Aó BñóBðð
 ‡[�[×Ñ˜T B§F¡F§K¡K°·±·±Ð#>Ó?ñ(ó @ð(ð
 ‡[�[×Ñ˜T B§F¡F§K¡K°·±·±Ø$&§F¡F§L¡L°"·&±&·-±-Ø$&§F¡F§K¡K°·±·±ð$?ó @ñ4ó@ð4ò
Dð& ‡[�[×Ñ˜VÒ%;Ó<Ø‡[�[×Ñ˜W w°Ð&6Ó7Ø‡[�[×Ñ˜[¨-Ó8ñ/ó 9ó 8ó =ð/ð6 ‡[�[×Ñ˜U R§V¡V§[¡[°"·&±&·,±,ÀÇÁÇÁÐ$MÓNñ-ó Oð-ð  ‡[�[×Ñ˜S 9¨iÐ"8Ó9ñ-ó :ñ-r   r(   r5   ÚorderÚFznon-contiguousr    c                 ó\  — t         j                  j                  d«      }|j                  ddd«      j	                  | d¬«      }dt        j
                  t        j                  |j                  «      «      z  t        j                  |j                  «      j                  z  }|dk(  rt        j                  |«      }n#|d d d	…   }t        j                  |d d d	…   «      }|j                  j                  d
«      r4t        d«      D ]%  } |||¬«      } |||¬«      }	t!        ||	||¬«       Œ' y |j                  j                  d«      r]g d¢}
|j                  j                  d«      r|
j#                  g d¢«       |
D ]%  } |||¬«      } |||¬«      }	t!        ||	||¬«       Œ' y t$        ‚)Né*   r¯   é   é   F)rL   g       @r  r	   r    r   r   r>   )r›   r¥   )r_   )r
   r   rö   r¥   ))r   )r
   )r   NrÚ   )r   r   ÚRandomStateÚrandrB   r\   Úlog2r¬   Úfinfor5   ÚepsÚasfortranarrayÚascontiguousarrayr#   Úendswithr-   r   Úextendr   )r5   r  r    ÚrngÚXÚ_tolÚYr   ÚX_resÚY_resrÃ   Úaxs               r   Útest_fft_with_orderr  Õ  sd  € ô �)‰)×
Ñ
 Ó
#€CØ�‰��A�rÓ×!Ñ! %¨eÐ!Ó4€Aà”—‘œŸ™ §¡›Ó)Ñ)¬B¯H©H°Q·W±WÓ,=×,AÑ,AÑA€DØ�‚|Ü×Ñ˜aÓ ‰ð ‰d�ˆd‰GˆÜ× Ñ  ¡4 R 4¡Ó)ˆà
‡|�|×Ñ˜UÔ#Ü˜!–HˆDÙ˜ Ô%ˆEÙ˜ Ô%ˆEÜ˜E 5¨t¸$Ö?ñ ð 
�‰×	Ñ	Ð/Ô	0Ú'ˆØ�<‰<× Ñ  Ô(Ø�K‰KÒ0Ô1ÛˆBÙ˜ ”OˆEÙ˜ ”OˆEÜ˜E 5¨t¸$Ö?ñ ô
 Ðr   ÚCr=   )Nr  é   c                 ó®  — t         j                  j                  d«      }|j                  d«      }t        j                  |t         j
                  | ¬«      }t         j                  j                  ||¬«      }|j                  j                  |j                  j                  k(  sJ ‚|j                  j                  |j                  j                  k(  sJ ‚y )Nr
  rh   )r5   r  r<   )
r   r   r  r  ÚasarrayÚ	complex64r    ÚflagsÚc_contiguousÚf_contiguous)r  r=   r  r   Úress        r   Útest_fft_output_orderr'  ü  s•   € ô �)‰)×
Ñ
 Ó
#€CØ�‰�‹€AÜ
�
‰
�1œBŸL™L°Ô6€AÜ
�&‰&�*‰*�Q˜!ˆ*Ó
€CØ�9‰9×!Ñ! Q§W¡W×%9Ñ%9Ò9Ð9Ð9Ø�9‰9×!Ñ! Q§W¡W×%9Ñ%9Ò9Ð9Ñ9r   zCannot start thread)Úreasonc                   ó2   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestFFTThreadSafer8   )i   éÈ   c                 ó¸  ‡— ˆfd„}t        j                  «       } ‰|Ž }t        | j                  «      D �cg c]  }t	        j
                  |||f¬«      ‘Œ }}|D �cg c]  }|j                  «       ‘Œ c} |D �cg c]  }|j                  «       ‘Œ c} t        | j                  «      D ]  }t        |j                  d¬«      |d«       Œ! y c c}w c c}w c c}w )Nc                 ó.   •— |j                   ‰| Ž «       y rc   )Úput)ÚargsÚqÚfuncs     €r   Úworkerz.TestFFTThreadSafe._test_mtsame.<locals>.worker  s   ø€ Ø�E‰E‘$˜�+Õr   )Útargetr/  r9   )Útimeoutz6Function returned wrong value in multithreaded context)
ÚqueueÚQueuer-   ÚthreadsÚ	threadingÚThreadÚstartÚjoinr   Úget)	r!   r1  r/  r2  r0  rl   r3   Útr   s	    `       r   Ú_test_mtsamezTestFFTThreadSafe._test_mtsame  sÃ   ø€ ô	ô �K‰K‹MˆÙ˜�;ˆô ˜DŸL™LÔ)ó+Ù)�ô ×Ñ V°4¸°)Ö<Ø)ð 	
ð +áÓ™A�qˆ�‰�˜AÒáÓ™1�aˆ�‰�˜1Òä�t—|‘|Ö$ˆAÜ˜qŸu™u¨Q˜uÓ/°ØHõJñ %ùò+ùâùâs   · CÁCÁ;Cc                 ó¢   — t        j                  | j                  «      dz  dz   }| j                  t         j                  j                  |«       y ©Nr
   y                )r   rÇ   Úinput_shaper>  r    ©r!   rÛ   s     r   r^   zTestFFTThreadSafe.test_fft  s8   € Ü�G‰G�D×$Ñ$Ó%¨Ñ)¨"Ñ,ˆØ×Ñœ"Ÿ&™&Ÿ*™* aÕ(r   c                 ó¢   — t        j                  | j                  «      dz  dz   }| j                  t         j                  j
                  |«       y r@  )r   rÇ   rA  r>  r    r.   rB  s     r   r•   zTestFFTThreadSafe.test_ifft!  s8   € Ü�G‰G�D×$Ñ$Ó%¨Ñ)¨"Ñ,ˆØ×Ñœ"Ÿ&™&Ÿ+™+ qÕ)r   c                 ó–   — t        j                  | j                  «      }| j                  t         j                  j
                  |«       y rc   )r   rÇ   rA  r>  r    r0   rB  s     r   r­   zTestFFTThreadSafe.test_rfft%  s.   € Ü�G‰G�D×$Ñ$Ó%ˆØ×Ñœ"Ÿ&™&Ÿ+™+ qÕ)r   c                 ó¢   — t        j                  | j                  «      dz  dz   }| j                  t         j                  j
                  |«       y r@  )r   rÇ   rA  r>  r    r/   rB  s     r   r¸   zTestFFTThreadSafe.test_irfft)  s8   € Ü�G‰G�D×$Ñ$Ó%¨Ñ)¨"Ñ,ˆØ×Ñœ"Ÿ&™&Ÿ,™,¨Õ*r   N)
r#   r$   r%   r7  rA  r>  r^   r•   r­   r¸   r&   r   r   r*  r*    s&   „ à€GØ€KòJò$)ò*ò*ó+r   r*  c                  ó&  — t        j                  d«      } t         j                  j                  | d¬«       t         j                  j	                  | d¬«       t         j                  j                  t        j
                  dgt        «      d¬«       y )Nrh   r
   r<   r   )r   r   r    r/   rÐ   rA   rk   )r   s    r   Útest_irfft_with_n_1_regressionrG  .  sX   € ä
�	‰	�"‹€AÜ‡F�F‡L�L��a€LÔÜ‡F�F‡K�K��Q€KÔÜ‡F�F‡L�L”—‘˜1˜#œwÓ'¨2€LÕ.r   c                  ó¼   — t        j                  d«      dz  } t         j                  j                  | d¬«      }t        j                  g d¢«      }t        ||«       y )Nr9   y      ð?      ð?rh   r<   )
g      4@gk‹ á"Õ#@g�´§‰Ã'Àg$ pn]k@gÝìr¾–Àg      @gG&ƒÒ ÀgdèÆ�Ä¿gt =Mþ?gö@L>MÜ4À)r   r   r    rÐ   rA   r   )r   rm   rl   s      r   Ú"test_irfft_with_n_large_regressionrI  6  sI   € ä
�	‰	�!‹˜Ñ€AÜ�V‰V�[‰[˜˜bˆ[Ó!€FÜ�x‰xò 2ó 3€Hô �F˜HÕ%r   Údata)FTFrh   r;   r9   c                 ó†   —  || «      }| j                  t        j                  | d«      «      } ||«      }t        ||«       y )Nr:   )rB   r   Úresult_typer   )rJ  r    rm   Ú
float_datarl   s        r   Ú#test_fft_with_integer_or_bool_inputrN  @  s9   € ñ �‹Y€FØ—‘œRŸ^™^¨D°"Ó5Ó6€JÙ�:‹€HÜ�v˜xÕ(r   )(Únumpyr   rŽ   Únumpy.randomr   Únumpy.testingr   r   r   r   r8  r5  r   r   r(   r  r  Úfloat32Úfloat64r"  Ú
complex128r    r›   r¥   r.   rž   r¨   r  r'  Úskipifr*  rG  rI  r0   r/   rA   r   Úuint8Úint16rN  r&   r   r   Ú<module>rX     s!  ðÛ Û Ý ÷
ó 
ó Û ò+÷<ñ <÷z-ñ z-ðz ‡�×ÑØØ	�‰�R—Z‘Z §¡¨r¯}©}Ð=ó?ð ‡�×Ñ˜ 3Ð(8Ð"9Ó:Ø‡�×ÑØØ	�‰�‰�R—V‘V—[‘[ "§&¡&§+¡+Ø	�‰�‰�b—f‘f—l‘l B§F¡F§L¡Lð	2ó3ñó	3ó ;ó?ðð> ‡�×Ñ˜ 3¨ *Ó-Ø‡�×Ñ˜šmÓ,ñ:ó -ó .ð:ð ‡�×Ñ�GÐ$9ÐÓ:÷$+ð $+ó ;ð$+òN/ò&ð ‡�×Ñ˜Ø‡F�F‡J�J�—‘—‘˜RŸV™VŸ[™[¨"¯&©&¯,©,ð!ó ð ‡�×Ñ˜Ø€B‡H�HÒ!Ó"Ø€B‡I�Iˆb˜Ÿ™Ô!Ø€B‡I�Iˆa�r—x‘xÔ ð"ó ñ
)óóñ)r   