Ë
    ›2Úi_2  ã                   óâ  — 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                  j9                  e	d¬«       G d„ 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      úU/var/www/html/acx/venv/lib/python3.12/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                   ó2  — e Zd Z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ej                  j                  dej,                  j.                  ej,                  j0                  ej,                  j2                  ej,                  j4                  g«      d„ «       Zd„ Zej                  j                  dej:                  ej<                  ej>                  ej@                  g«      d„ «       Z!y)Ú	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˜&Ó!ò 	1ˆ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ñ	1r   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_fft$   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:   ©Nr8   r;   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)Nr6   r*   r9   r7   r+   z!Invalid number of FFT data points)Úmatch)r   r   r   r    r.   ÚpytestÚraisesr   )r!   r:   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Ô&÷	'÷ 	'ñ 	'ú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©r6   é   r*   r
   r   r   r7   r+   r8   r9   éX  r;   ç     À‚@r=   )r   r   r   r    Úfft2r>   r?   s     r   Ú	test_fft2zTestFFT1D.test_fft28   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 rH   )r   r   r   r    r.   Úifft2r>   r?   s     r   Ú
test_ifft2zTestFFT1D.test_ifft2C   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©r6   rJ   é
   r*   r   r   r
   r   r7   r+   r8   r9   ép  r;   ç     p·@r=   )r   r   r   r    Úfftnr>   r?   s     r   Ú	test_fftnzTestFFT1D.test_fftnN   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 rS   )r   r   r   r    r.   Úifftnr>   r?   s     r   Ú
test_ifftnzTestFFT1D.test_ifftnZ   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 )Nr6   r   rA   ©Únr:   r
   r7   r+   )r_   r8   r;   r=   )r   Úsizer   r   r    r0   r>   )r!   r   r_   r:   s       r   Ú	test_rfftzTestFFT1D.test_rfftf   s7  € Ü�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           	      ó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 )Nr6   r7   r+   r8   r9   r;   r=   )r   r   r   r    r/   r0   r?   s     r   Ú
test_irfftzTestFFT1D.test_irfftw   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 )NrI   é   r7   r+   r8   r9   rK   r;   rL   r=   )r   r   r   r    rM   Ú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 )NrI   r7   r+   r8   r9   r;   r=   )r   r   r   r    Úirfft2rf   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                 ó°  — 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¬«       y )NrT   é   r7   r+   r8   r9   rV   r;   rW   r=   )r   r   r   r    rX   Úrfftnr>   r?   s     r   Ú
test_rfftnzTestFFT1D.test_rfftn•   sÙ   € Ü�<Ó ˆÜœŸ™Ÿ™ 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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 )NrT   r7   r+   r8   r9   r;   r=   )r   r   r   r    Úirfftnrm   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	   r7   r+   r8   r9   r6   r;   r<   r=   )r   r   ÚconcatenateÚconjr   r    Úhfftr>   ©r!   r   Úx_herms      r   Ú	test_hfftzTestFFT1D.test_hfft©   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 )Nrs   r*   r
   r	   r7   r+   r8   r9   r;   r=   )r   r   rt   ru   r   r    Úihfftrv   rw   s      r   Ú
test_ihfftzTestFFT1D.test_ihfftµ   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 )NrT   ))r   r
   r   )r   r   r
   )r
   r   r   )r
   r   r   )r   r   r
   )r   r
   r   ©Úaxesr7   r+   )r   r   Ú	transposer   )r!   r}   r   r€   ÚaÚop_trÚtr_ops          r   Ú	test_axeszTestFFT1D.test_axesÁ   sY   € ô �<Ó ˆÚQˆØò 	5ˆAÙ”r—|‘| A qÓ)Ó*ˆEÜ—L‘L¡ A¨A¤°Ó2ˆEÜ˜E 5¨tÖ4ñ	5r   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 )Nr6   r   rA   r^   r7   r+   )r   r   Úlinalgr:   r`   r    r.   r0   r/   r{   rv   r   )	r!   r   Úx_normr_   Ú
func_pairsÚforwÚbackr:   Ú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ð	ˆ
ð %ò 	D‰JˆD�$Ø—f‘f˜a §¡™hÐ'ò D�ØBò D�DÙ˜q A¨DÔ1�CÙ˜s a¨dÔ3�CÜ# FÜ$&§I¡I§N¡N°3Ó$7¸döDñDñDñ	Dr   Údtypec                 óX  — t        d«      j                  |«      }t        t        j                  j                  t        j                  j	                  |«      «      |d¬«       t        t        j                  j                  t        j                  j                  |«      «      |d¬«       y )Nr6   r7   r+   )r   Úastyper   r   r    r.   r/   r0   )r!   rŽ   r   s      r   Útest_dtypeszTestFFT1D.test_dtypesÞ   sb   € ô
 �2‹J×Ñ˜eÓ$ˆÜœŸ™Ÿ™¤B§F¡F§J¡J¨q£MÓ2°A¸DÕAÜœŸ™Ÿ™¤R§V¡V§[¡[°£^Ó4°a¸dÖCr   N)"r#   r$   r%   r4   r@   rD   ÚmarkÚparametrizerF   rN   rQ   rY   r\   ra   rc   rg   rj   rn   rq   ry   r|   r   r    rX   r[   rm   rp   r…   r�   ÚhalfÚsingleÚdoubleÚ
longdoubler‘   r&   r   r   r(   r(      s  „ ò1òBð ‡[�[×Ñ˜VÐ%KÓLñ'ó Mð'ò	Cò	Dò
Cò
Dò@ò"4òDò4òDò4ò
Hò
Eð ‡[�[×Ñ˜T B§F¡F§K¡K°·±·±Ø$&§F¡F§L¡L°"·&±&·-±-ð$Aó Bñ5óBð5òDð& ‡[�[×Ñ˜W r§w¡w°·	±	¸2¿9¹9Ø')§}¡}ð'6ó 7ñDó7ñDr   r(   rŽ   ÚorderÚFznon-contiguousr    c                 ód  — 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é*   é   é   é   F)Úcopyg       @r™   r	   r    r   r   )r,   Úrtol)rM   rX   ))r   r
   )r
   r   )r   r   rX   ))r   )r
   )r   Nr   )r   r   ÚRandomStateÚrandr�   r>   Úlog2r`   ÚfinforŽ   ÚepsÚasfortranarrayÚascontiguousarrayr#   Úendswithr-   r   Úextendr   )rŽ   r˜   r    ÚrngÚXÚ_tolÚYr   ÚX_resÚY_resr€   Úaxs               r   Útest_fft_with_orderr±   è   st  € ô �)‰)×
Ñ
 Ó
#€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¸$Ö?ñ	@ô
 ‹lÐr   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)	ÚTestFFTThreadSafeé   )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 ©N)Úput)ÚargsÚqÚfuncs     €r   Úworkerz.TestFFTThreadSafe._test_mtsame.<locals>.worker  s   ø€ Ø�E‰E‘$˜�+Õr   )Útargetr»   é   )Útimeoutz6Function returned wrong value in multithreaded context)
ÚqueueÚQueuer-   ÚthreadsÚ	threadingÚThreadÚstartÚjoinr   Úget)	r!   r½   r»   r¾   r¼   Úexpectedr3   Útr   s	    `       r   Ú_test_mtsamezTestFFTThreadSafe._test_mtsame  s¿   ø€ ô	ô �K‰K‹MˆÙ˜�;ˆô ˜DŸL™LÓ)ö+Øô ×Ñ V°4¸°)Ö<ð +ˆð +àÖ�qˆ�‰�ÓàÖ�aˆ�‰�Óä�t—|‘|Ó$ò 	JˆAÜ˜qŸu™u¨Q˜uÓ/°ØHõJñ	Jùò+ùâùâs   · CÁCÁ;Cc                 ó¢   — t        j                  | j                  «      dz  dz   }| j                  t         j                  j                  |«       y ©Nr
   y                )r   ÚonesÚ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Ï   rÐ   rÌ   r    r.   rÑ   s     r   rF   zTestFFTThreadSafe.test_ifft*  s8   € Ü�G‰G�D×$Ñ$Ó%¨Ñ)¨"Ñ,ˆØ×Ñœ"Ÿ&™&Ÿ+™+ qÕ)r   c                 ó–   — t        j                  | j                  «      }| j                  t         j                  j
                  |«       y r¹   )r   rÏ   rÐ   rÌ   r    r0   rÑ   s     r   ra   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Ï   rÐ   rÌ   r    r/   rÑ   s     r   rc   zTestFFTThreadSafe.test_irfft2  s8   € Ü�G‰G�D×$Ñ$Ó%¨Ñ)¨"Ñ,ˆØ×Ñœ"Ÿ&™&Ÿ,™,¨Õ*r   N)
r#   r$   r%   rÄ   rÐ   rÌ   r@   rF   ra   rc   r&   r   r   r´   r´     s&   „ à€GØ€KòJò$)ò*ò*ó+r   r´   )Únumpyr   rD   Únumpy.randomr   Únumpy.testingr   r   r   r   rÅ   rÂ   r   r   r(   r’   r“   Úfloat32Úfloat64Ú	complex64Ú
complex128r    rM   rX   r.   rP   r[   r±   Úskipifr´   r&   r   r   ú<module>rÝ      s,  ðÛ Û Ý ÷
ó 
ó Û ò+÷<ñ <÷MDñ MDð` ‡�×ÑØØ	�‰�R—Z‘Z §¡¨r¯}©}Ð=ó?ð ‡�×Ñ˜ 3Ð(8Ð"9Ó:Ø‡�×ÑØØ	�‰�‰�R—V‘V—[‘[ "§&¡&§+¡+Ø	�‰�‰�b—f‘f—l‘l B§F¡F§L¡Lð	2ó3ñó	3ó ;ó?ðð> ‡�×Ñ�GÐ$9ÐÓ:÷$+ð $+ó ;ñ$+r   