§
    €Ûg_2  ã                   óf  — 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                             d	ej        ej        ej        ej        g¦  «        ej                             d
ddg¦  «        ej                             dej        j        ej        j        ej        j        ej        j        ej        j        ej        j        g¦  «        d„ ¦   «         ¦   «         ¦   «         Zej                             e	d¬¦  «         G d„ d¦  «        ¦   «         ZdS )é    N)Úrandom)Úassert_array_equalÚassert_raisesÚassert_allcloseÚIS_WASMc                 ó  — t          | ¦  «        }dt          j        z  t          j        |¦  «        |z  z  }t          j        |¦  «                             dd¦  «        |z  }t          j        | t          j        |¦  «        z  d¬¦  «        S )Ny       €       Àéÿÿÿÿé   ©Úaxis)ÚlenÚnpÚpiÚarangeÚreshapeÚsumÚexp)ÚxÚLÚphases      úT/granary/edev/quantum/lib/python3.11/site-packages/numpy/fft/tests/test_pocketfft.pyÚfft1r      sm   € ÝˆA‰Œ€AØ•"”%‰K�2œ9 Q™<œ<¨!Ñ+Ñ,€EÝŒI�a‰LŒL× Ò   QÑ'Ô'¨%Ñ/€EÝŒ6�!•B”F˜5‘M”M‘/¨Ð*Ñ*Ô*Ð*ó    c                   ó   — e Zd Zd„ ZdS )ÚTestFFTShiftc                 óV   — t          t          t          j        j        g d¢d¦  «         d S )N)r
   é   é   r   )r   Ú
ValueErrorr   Úfft)Úselfs    r   Ú
test_fft_nzTestFFTShift.test_fft_n   s$   € Ý•j¥"¤&¤*¨i¨i¨i¸Ñ;Ô;Ð;Ð;Ð;r   N)Ú__name__Ú
__module__Ú__qualname__r"   © r   r   r   r      s#   € € € € € ð<ð <ð <ð <ð <r   r   c                   óÈ  — e Zd Zd„ Zd„ Ze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                             dej        j        ej        j        ej        j        ej        j        g¦  «        d„ ¦   «         Zd„ Zej                             dej        ej        ej        ej         g¦  «        d„ ¦   «         Z!dS )Ú	TestFFT1Dc           
      ó  — d}t          |¦  «        dt          |¦  «        z  z   }t          |¦  «        }t          d|¦  «        D ]»}t          t          j                             t          j                             |d|…         ¦  «        ¦  «        |d|…         d¬¦  «         t          t          j                             t          j                             |d|…         ¦  «        |¦  «        |d|…         d¬¦  «         Œ¼d S )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ŒN˜R¥ v¡¤Ñ.Ñ.ˆÝ�F‰^Œ^ˆÝ�q˜&Ñ!Ô!ð 	1ð 	1ˆAÝ�BœFŸKšK­¬¯
ª
°1°Q°q°S´6Ñ(:Ô(:Ñ;Ô;¸Q¸qÀ¸s¼VØ!&ð(ñ (ô (ð (å�BœFŸLšL­¬¯ª°R¸¸!¸´WÑ)=Ô)=¸qÑAÔAØ˜q ˜sœG¨%ð1ñ 1ô 1ð 1ð 1ð	1ð 	1r   c                 óf  — t          d¦  «        dt          d¦  «        z  z   }t          t          |¦  «        t          j                             |¦  «        d¬¦  «         t          t          |¦  «        t          j                             |d¬¦  «        d¬¦  «         t          t          |¦  «        t          j        d¦  «        z  t          j                             |d¬¦  «        d¬¦  «         t          t          |¦  «        dz  t          j                             |d	¬¦  «        d¬¦  «         d S )
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ŒJ˜�F 2™JœJ™Ñ&ˆÝ�˜Q™œ¥¤§¢¨A¡¤°TÐ:Ñ:Ô:Ð:Ý�˜Q™œ¥¤§¢¨A°J Ñ!?Ô!?ÀdÐKÑKÔKÐKÝ�˜Q™œ¥"¤'¨"¡+¤+Ñ-ÝœŸ
š
 1¨7˜
Ñ3Ô3¸$ð	@ñ 	@ô 	@ð 	@å�˜Q™œ #™ÝœŸ
š
 1¨9˜
Ñ5Ô5¸Dð	Bñ 	Bô 	Bð 	Bð 	Bð 	Br   r:   ©Nr8   r;   r=   c           	      ó”  — t          d¦  «        dt          d¦  «        z  z   }t          |t          j                             t          j                             ||¬¦  «        |¬¦  «        d¬¦  «         t          j        t          d¬¦  «        5  t          j                             g |¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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ŒJ˜�F 2™JœJ™Ñ&ˆÝØ�rŒv�{Š{�2œ6Ÿ:š: a¨d˜:Ñ3Ô3¸$ˆ{Ñ?Ô?Øð	ñ 	ô 	ð 	õ Œ]�:Ø!DðFñ Fô Fð 	'ð 	'åŒF�KŠK˜ ˆKÑ&Ô&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð 	'ð 	's   Â"B=Â=CÃCc                 ó(  — t          d¦  «        dt          d¦  «        z  z   }t          t          j                             t          j                             |d¬¦  «        d¬¦  «        t          j                             |¦  «        d¬¦  «         t          t          j                             |¦  «        t          j                             |d¬	¦  «        d¬¦  «         t          t          j                             |¦  «        t          j        d
¦  «        z  t          j                             |d¬	¦  «        d¬¦  «         t          t          j                             |¦  «        dz  t          j                             |d¬	¦  «        d¬¦  «         d S ©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   sO  € Ý�8ÑÔ˜r¥&¨Ñ"2Ô"2Ñ2Ñ2ˆÝ�œŸ
š
¥2¤6§:¢:¨a°a :Ñ#8Ô#8¸q˜
ÑAÔAÝœŸš A™œ¨Tð	3ñ 	3ô 	3ð 	3å�œŸš A™œÝœŸš A¨J˜Ñ7Ô7¸dð	Dñ 	Dô 	Dð 	Då�œŸš A™œ­¬°Ñ)9Ô)9Ñ9ÝœŸš A¨G˜Ñ4Ô4¸4ð	Añ 	Aô 	Að 	Aå�œŸš A™œ¨)Ñ4ÝœŸš A¨I˜Ñ6Ô6¸Tð	Cñ 	Cô 	Cð 	Cð 	Cð 	Cr   c                 ó(  — t          d¦  «        dt          d¦  «        z  z   }t          t          j                             t          j                             |d¬¦  «        d¬¦  «        t          j                             |¦  «        d¬¦  «         t          t          j                             |¦  «        t          j                             |d¬	¦  «        d¬¦  «         t          t          j                             |¦  «        t          j        d
¦  «        z  t          j                             |d¬	¦  «        d¬¦  «         t          t          j                             |¦  «        dz  t          j                             |d¬	¦  «        d¬¦  «         d S rH   )r   r   r   r    r.   Úifft2r>   r?   s     r   Ú
test_ifft2zTestFFT1D.test_ifft2C   sO  € Ý�8ÑÔ˜r¥&¨Ñ"2Ô"2Ñ2Ñ2ˆÝ�œŸš¥B¤F§K¢K°¸ KÑ$:Ô$:À˜ÑCÔCÝœŸš Q™œ¨dð	4ñ 	4ô 	4ð 	4å�œŸš Q™œÝœŸš Q¨Z˜Ñ8Ô8¸tð	Eñ 	Eô 	Eð 	Eå�œŸš Q™œ­"¬'°'Ñ*:Ô*:Ñ:ÝœŸš Q¨W˜Ñ5Ô5¸Dð	Bñ 	Bô 	Bð 	Bå�œŸš Q™œ¨9Ñ5ÝœŸš Q¨Y˜Ñ7Ô7¸dð	Dñ 	Dô 	Dð 	Dð 	Dð 	Dr   c           
      óf  — t          d¦  «        dt          d¦  «        z  z   }t          t          j                             t          j                             t          j                             |d¬¦  «        d¬¦  «        d¬¦  «        t          j                             |¦  «        d¬¦  «         t          t          j                             |¦  «        t          j                             |d	¬
¦  «        d¬¦  «         t          t          j                             |¦  «        t          j        d¦  «        z  t          j                             |d¬
¦  «        d¬¦  «         t          t          j                             |¦  «        dz  t          j                             |d¬
¦  «        d¬¦  «         d S ©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   sd  € Ý�<Ñ Ô  2¥f¨\Ñ&:Ô&:Ñ#:Ñ:ˆÝÝŒF�JŠJ•r”v—z’z¥"¤&§*¢*¨Q°Q *Ñ"7Ô"7¸a�zÑ@Ô@ÀqˆJÑIÔIÝŒF�KŠK˜‰NŒN ð	'ñ 	'ô 	'ð 	'õ 	�œŸš A™œÝœŸš A¨J˜Ñ7Ô7¸dð	Dñ 	Dô 	Dð 	Då�œŸš A™œ­¬°Ñ)>Ô)>Ñ>ÝœŸš A¨G˜Ñ4Ô4¸4ð	Añ 	Aô 	Að 	Aå�œŸš A™œ¨/Ñ:ÝœŸš A¨I˜Ñ6Ô6¸Tð	Cñ 	Cô 	Cð 	Cð 	Cð 	Cr   c           
      óf  — t          d¦  «        dt          d¦  «        z  z   }t          t          j                             t          j                             t          j                             |d¬¦  «        d¬¦  «        d¬¦  «        t          j                             |¦  «        d¬¦  «         t          t          j                             |¦  «        t          j                             |d	¬
¦  «        d¬¦  «         t          t          j                             |¦  «        t          j        d¦  «        z  t          j                             |d¬
¦  «        d¬¦  «         t          t          j                             |¦  «        dz  t          j                             |d¬
¦  «        d¬¦  «         d S rS   )r   r   r   r    r.   Úifftnr>   r?   s     r   Ú
test_ifftnzTestFFT1D.test_ifftnZ   sd  € Ý�<Ñ Ô  2¥f¨\Ñ&:Ô&:Ñ#:Ñ:ˆÝÝŒF�KŠK�œŸš¥B¤F§K¢K°¸ KÑ$:Ô$:À˜ÑCÔCÈ!ˆKÑLÔLÝŒF�LŠL˜‰OŒO $ð	(ñ 	(ô 	(ð 	(õ 	�œŸš Q™œÝœŸš Q¨Z˜Ñ8Ô8¸tð	Eñ 	Eô 	Eð 	Eå�œŸš Q™œ­"¬'°,Ñ*?Ô*?Ñ?ÝœŸš Q¨W˜Ñ5Ô5¸Dð	Bñ 	Bô 	Bð 	Bå�œŸš Q™œ¨?Ñ;ÝœŸš Q¨Y˜Ñ7Ô7¸dð	Dñ 	Dô 	Dð 	Dð 	Dð 	Dr   c           
      ó0  — t          d¦  «        }|j        d|j        z  fD �]s}dD ]b}t          t          j                             |||¬¦  «        d |dz  dz   …         t          j                             |||¬¦  «        d¬¦  «         Œct          t          j                             ||¬¦  «        t          j                             ||d	¬¦  «        d¬¦  «         t          t          j                             ||¬¦  «        t          j        |¦  «        z  t          j                             ||d
¬¦  «        d¬¦  «         t          t          j                             ||¬¦  «        |z  t          j                             ||d¬¦  «        d¬¦  «         �Œud S )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   s˜  € Ý�2‰JŒJˆØ”&˜!˜AœF™(Ð#ð 	@ñ 	@ˆAØ>ð ?ð ?�ÝÝ”F—J’J˜q A¨D�JÑ1Ô1°+°A°q±D¸1±H°+Ô>Ý”F—K’K  Q¨T�KÑ2Ô2¸ð?ñ ?ô ?ð ?ð ?õ Ý”—’˜A �Ñ#Ô#Ý”—’˜A ¨�Ñ4Ô4¸4ðAñ Aô Að Aõ Ý”—’˜A �Ñ#Ô#¥b¤g¨a¡j¤jÑ0Ý”—’˜A ¨�Ñ1Ô1¸ð>ñ >ô >ð >õ Ý”—’˜A �Ñ#Ô# aÑ'Ý”—’˜A ¨�Ñ3Ô3¸$ð@ñ @ô @ð @ñ @ð	@ð 	@r   c           	      óœ  — t          d¦  «        }t          |t          j                             t          j                             |¦  «        ¦  «        d¬¦  «         t          |t          j                             t          j                             |d¬¦  «        d¬¦  «        d¬¦  «         t          |t          j                             t          j                             |d¬¦  «        d¬¦  «        d¬¦  «         t          |t          j                             t          j                             |d¬¦  «        d¬¦  «        d¬¦  «         d S )Nr6   r7   r+   r8   r9   r;   r=   )r   r   r   r    r/   r0   r?   s     r   Ú
test_irfftzTestFFT1D.test_irfftw   s$  € Ý�2‰JŒJˆÝ˜�2œ6Ÿ<š<­¬¯ª°A©¬Ñ7Ô7¸dÐCÑCÔCÐCÝ˜�2œ6Ÿ<š<­¬¯ª°A¸J¨Ñ(GÔ(GØ'ð (ñ )ô )Ø/3ð	5ñ 	5ô 	5ð 	5å˜�2œ6Ÿ<š<­¬¯ª°A¸G¨Ñ(DÔ(DØ$ð (ñ &ô &Ø,0ð	2ñ 	2ô 	2ð 	2å˜�2œ6Ÿ<š<­¬¯ª°A¸I¨Ñ(FÔ(FØ&ð (ñ (ô (Ø.2ð	4ñ 	4ô 	4ð 	4ð 	4ð 	4r   c                 óØ  — t          d¦  «        }t          t          j                             |¦  «        d d …d d…f         t          j                             |¦  «        d¬¦  «         t          t          j                             |¦  «        t          j                             |d¬¦  «        d¬¦  «         t          t          j                             |¦  «        t          j        d¦  «        z  t          j                             |d¬¦  «        d¬¦  «         t          t          j                             |¦  «        d	z  t          j                             |d
¬¦  «        d¬¦  «         d S )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 q q¨#¨2¨# vÔ.µ´·²¸Q±´ÀdÐKÑKÔKÐKÝ�œŸš Q™œÝœŸš Q¨Z˜Ñ8Ô8¸tð	Eñ 	Eô 	Eð 	Eå�œŸš Q™œ­"¬'°'Ñ*:Ô*:Ñ:ÝœŸš Q¨W˜Ñ5Ô5¸Dð	Bñ 	Bô 	Bð 	Bå�œŸš Q™œ¨9Ñ5ÝœŸš Q¨Y˜Ñ7Ô7¸dð	Dñ 	Dô 	Dð 	Dð 	Dð 	Dr   c           	      óœ  — t          d¦  «        }t          |t          j                             t          j                             |¦  «        ¦  «        d¬¦  «         t          |t          j                             t          j                             |d¬¦  «        d¬¦  «        d¬¦  «         t          |t          j                             t          j                             |d¬¦  «        d¬¦  «        d¬¦  «         t          |t          j                             t          j                             |d¬¦  «        d¬¦  «        d¬¦  «         d S )NrI   r7   r+   r8   r9   r;   r=   )r   r   r   r    Úirfft2rf   r?   s     r   Útest_irfft2zTestFFT1D.test_irfft2‹   s&  € Ý�8ÑÔˆÝ˜�2œ6Ÿ=š=­¬¯ª°a©¬Ñ9Ô9ÀÐEÑEÔEÐEÝ˜�2œ6Ÿ=š=­¬¯ª°a¸j¨Ñ)IÔ)IØ'ð )ñ )ô )Ø/3ð	5ñ 	5ô 	5ð 	5å˜�2œ6Ÿ=š=­¬¯ª°a¸g¨Ñ)FÔ)FØ$ð )ñ &ô &Ø,0ð	2ñ 	2ô 	2ð 	2å˜�2œ6Ÿ=š=­¬¯ª°a¸i¨Ñ)HÔ)HØ&ð )ñ (ô (Ø.2ð	4ñ 	4ô 	4ð 	4ð 	4ð 	4r   c                 óÞ  — t          d¦  «        }t          t          j                             |¦  «        d d …d d …d d…f         t          j                             |¦  «        d¬¦  «         t          t          j                             |¦  «        t          j                             |d¬¦  «        d¬¦  «         t          t          j                             |¦  «        t          j        d¦  «        z  t          j                             |d¬¦  «        d¬¦  «         t          t          j                             |¦  «        d	z  t          j                             |d
¬¦  «        d¬¦  «         d S )NrT   é   r7   r+   r8   r9   rV   r;   rW   r=   )r   r   r   r    rX   Úrfftnr>   r?   s     r   Ú
test_rfftnzTestFFT1D.test_rfftn•   s3  € Ý�<Ñ Ô ˆÝ�œŸš A™œ q q q¨!¨!¨!¨R¨a¨R xÔ0µ"´&·,²,¸q±/´/ÈÐMÑMÔMÐMÝ�œŸš Q™œÝœŸš Q¨Z˜Ñ8Ô8¸tð	Eñ 	Eô 	Eð 	Eå�œŸš Q™œ­"¬'°,Ñ*?Ô*?Ñ?ÝœŸš Q¨W˜Ñ5Ô5¸Dð	Bñ 	Bô 	Bð 	Bå�œŸš Q™œ¨?Ñ;ÝœŸš Q¨Y˜Ñ7Ô7¸dð	Dñ 	Dô 	Dð 	Dð 	Dð 	Dr   c           	      óœ  — t          d¦  «        }t          |t          j                             t          j                             |¦  «        ¦  «        d¬¦  «         t          |t          j                             t          j                             |d¬¦  «        d¬¦  «        d¬¦  «         t          |t          j                             t          j                             |d¬¦  «        d¬¦  «        d¬¦  «         t          |t          j                             t          j                             |d¬¦  «        d¬¦  «        d¬¦  «         d S )NrT   r7   r+   r8   r9   r;   r=   )r   r   r   r    Úirfftnrm   r?   s     r   Útest_irfftnzTestFFT1D.test_irfftnŸ   s&  € Ý�<Ñ Ô ˆÝ˜�2œ6Ÿ=š=­¬¯ª°a©¬Ñ9Ô9ÀÐEÑEÔEÐEÝ˜�2œ6Ÿ=š=­¬¯ª°a¸j¨Ñ)IÔ)IØ'ð )ñ )ô )Ø/3ð	5ñ 	5ô 	5ð 	5å˜�2œ6Ÿ=š=­¬¯ª°a¸g¨Ñ)FÔ)FØ$ð )ñ &ô &Ø,0ð	2ñ 	2ô 	2ð 	2å˜�2œ6Ÿ=š=­¬¯ª°a¸i¨Ñ)HÔ)HØ&ð )ñ (ô (Ø.2ð	4ñ 	4ô 	4ð 	4ð 	4ð 	4r   c                 óª  — t          d¦  «        dt          d¦  «        z  z   }t          j        t          d¦  «        |t          d¦  «        f¦  «        }t          j        ||d d d…                              ¦   «         f¦  «        }t	          t          j                             |¦  «        t          j                             |¦  «        d¬¦  «         t	          t          j                             |¦  «        t          j                             |d¬¦  «        d¬¦  «         t	          t          j                             |¦  «        t          j        d	¦  «        z  t          j                             |d
¬¦  «        d¬¦  «         t	          t          j                             |¦  «        dz  t          j                             |d¬¦  «        d¬¦  «         d S )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©   sw  € Ý�2‰JŒJ˜�F 2™JœJ™Ñ&ˆÝ”¥¨¡¤¨A­v°a©y¬yÐ 9Ñ:Ô:ˆÝŒN˜F A d d¨ d¤G§L¢L¡N¤NÐ3Ñ4Ô4ˆÝ�œŸ
š
 1™œ¥r¤v§{¢{°6Ñ':Ô':ÀÐFÑFÔFÐFÝ�œŸš FÑ+Ô+ÝœŸš F°˜Ñ<Ô<À4ð	Iñ 	Iô 	Ið 	Iå�œŸš FÑ+Ô+­b¬g°b©k¬kÑ9ÝœŸš F°˜Ñ9Ô9Àð	Fñ 	Fô 	Fð 	Få�œŸš FÑ+Ô+¨cÑ1ÝœŸš F°˜Ñ;Ô;À$ð	Hñ 	Hô 	Hð 	Hð 	Hð 	Hr   c           	      ó†  — t          d¦  «        dt          d¦  «        z  z   }t          j        t          d¦  «        |t          d¦  «        f¦  «        }t          j        ||d d d…                              ¦   «         f¦  «        }t	          |t          j                             t          j                             |¦  «        ¦  «        d¬¦  «         t	          |t          j                             t          j                             |d¬¦  «        d¬¦  «        d¬¦  «         t	          |t          j                             t          j                             |d	¬¦  «        d	¬¦  «        d¬¦  «         t	          |t          j                             t          j                             |d
¬¦  «        d
¬¦  «        d¬¦  «         d S )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µ   s£  € Ý�2‰JŒJ˜�F 2™JœJ™Ñ&ˆÝ”¥¨¡¤¨A­v°a©y¬yÐ 9Ñ:Ô:ˆÝŒN˜F A d d¨ d¤G§L¢L¡N¤NÐ3Ñ4Ô4ˆÝ˜¥¤§¢­R¬V¯[ª[¸Ñ-@Ô-@Ñ AÔ AÈÐMÑMÔMÐMÝ˜¥¤§¢­R¬V¯[ª[¸Ø'ð .9ñ .)ô .)Ø/9ð !-ñ !;ô !;ØAEð	Gñ 	Gô 	Gð 	Gå˜¥¤§¢­R¬V¯[ª[¸Ø$ð .9ñ .&ô .&Ø,3ð !-ñ !5ô !5Ø;?ð	Añ 	Aô 	Að 	Aå˜¥¤§¢­R¬V¯[ª[¸Ø&ð .9ñ .(ô .(Ø.7ð !-ñ !9ô !9Ø?Cð	Eñ 	Eô 	Eð 	Eð 	Eð 	Er   Úopc                 óÖ   — t          d¦  «        }g d¢}|D ]R} |t          j        ||¦  «        ¦  «        }t          j         |||¬¦  «        |¦  «        }t          ||d¬¦  «         ŒSd S )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Á   s…   € õ �<Ñ Ô ˆØQÐQÐQˆØð 	5ð 	5ˆAØ�B•r”| A qÑ)Ô)Ñ*Ô*ˆEÝ”L   A¨A ¡¤°Ñ2Ô2ˆEÝ˜E 5¨tÐ4Ñ4Ô4Ð4Ð4ð	5ð 	5r   c           	      ó  — t          d¦  «        }t          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 ]i\  }}|j        d|j        z  fD ]R}dD ]M} ||||¬¦  «        } ||||¬¦  «        }t          |t          j                             |¦  «        d¬¦  «         ŒNŒSŒjd S )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ŒJˆÝ”—’ Ñ"Ô"ˆØŒF�Q‰JˆÝ”v”z¥2¤6¤;Ð/Ý”v”{¥B¤F¤LÐ1õ ”v”|¥R¤V¤[Ð1ð	ˆ
ð %ð 	Dð 	D‰JˆD�$Ø”f˜a ¤™hÐ'ð Dð D�ØBð Dð D�DØ˜$˜q A¨DÐ1Ñ1Ô1�CØ˜$˜s a¨dÐ3Ñ3Ô3�CÝ# FÝ$&¤I§N¢N°3Ñ$7Ô$7¸dðDñ Dô Dð Dð DðDðDð	Dð 	Dr   Údtypec                 óz  — t          d¦  «                             |¦  «        }t          t          j                             t          j                             |¦  «        ¦  «        |d¬¦  «         t          t          j                             t          j                             |¦  «        ¦  «        |d¬¦  «         d S )Nr6   r7   r+   )r   Úastyper   r   r    r.   r/   r0   )r!   rŽ   r   s      r   Útest_dtypeszTestFFT1D.test_dtypesÞ   s�   € õ
 �2‰JŒJ×Ò˜eÑ$Ô$ˆÝ�œŸš¥B¤F§J¢J¨q¡M¤MÑ2Ô2°A¸DÐAÑAÔAÐAÝ�œŸš¥R¤V§[¢[°¡^¤^Ñ4Ô4°a¸dÐCÑCÔCÐCÐCÐ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ð 1ð 1ðBð Bð Bð „[×Ò˜VÐ%KÑLÔLð'ð 'ñ MÔLð'ð	Cð 	Cð 	Cð	Dð 	Dð 	Dð
Cð 
Cð 
Cð
Dð 
Dð 
Dð@ð @ð @ð"4ð 4ð 4ðDð Dð Dð4ð 4ð 4ðDð Dð Dð4ð 4ð 4ð
Hð 
Hð 
Hð
Eð 
Eð 
Eð „[×Ò˜T B¤F¤K°´´Ø$&¤F¤L°"´&´-ð$Añ Bô Bð5ð 5ñBô Bð5ðDð Dð Dð& „[×Ò˜W r¤w°´	¸2¼9Ø')¤}ð'6ñ 7ô 7ðDð Dñ7ô 7ðDð Dð Dr   r(   rŽ   ÚorderÚFznon-contiguousr    c                 ó�  — t           j                             d¦  «        }|                     ddd¦  «                             | 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                             d
¦  «        rAt          d¦  «        D ]/} |||¬¦  «        } |||¬¦  «        }	t!          ||	||¬¦  «         Œ0d S |j                             d¦  «        rig d¢}
|j                             d¦  «        r|
                     g d¢¦  «         |
D ]/} |||¬¦  «        } |||¬¦  «        }	t!          ||	||¬¦  «         Œ0d S 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±   è   sò  € õ Œ)×
Ò
 Ñ
#Ô
#€CØ�Š��A�rÑÔ×!Ò! %¨eÐ!Ñ4Ô4€Aà•”�œ ¤™œÑ)Ô)Ñ)­B¬H°Q´WÑ,=Ô,=Ô,AÑA€DØ�‚|€|ÝÔ˜aÑ Ô ˆˆð ˆdˆd�ˆdŒGˆÝÔ   4 4 R 4¤Ñ)Ô)ˆà
„|×Ò˜UÑ#Ô#ð Ý˜!‘H”Hð 	@ð 	@ˆDØ�C˜ Ð%Ñ%Ô%ˆEØ�C˜ Ð%Ñ%Ô%ˆEÝ˜E 5¨t¸$Ð?Ñ?Ô?Ð?Ð?ð	@ð 	@ð 
Œ×	Ò	Ð/Ñ	0Ô	0ð 	Ø'Ð'Ð'ˆØŒ<× Ò  Ñ(Ô(ð 	2Ø�KŠKÐ0Ð0Ð0Ñ1Ô1Ð1Øð 	@ð 	@ˆBØ�C˜ �O‘O”OˆEØ�C˜ �O‘O”OˆEÝ˜E 5¨t¸$Ð?Ñ?Ô?Ð?Ð?ð	@ð 	@õ
 ‰lŒlÐr   zCannot start thread)Úreasonc                   ó4   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚTestFFTThreadSafeé   )i   éÈ   c                 ó4  ‡‡‡‡— ˆfd„Št          j        ¦   «         Š ‰‰Ž }ˆˆˆfd„t          | j        ¦  «        D ¦   «         }d„ |D ¦   «          d„ |D ¦   «          t          | j        ¦  «        D ]'}t	          ‰                     d¬¦  «        |d¦  «         Œ(d S )Nc                 ó8   •— |                       ‰| Ž ¦  «         d S ©N)Úput)ÚargsÚqÚfuncs     €r   Úworkerz.TestFFTThreadSafe._test_mtsame.<locals>.worker  s!   ø€ Ø�EŠE�$�$˜�+ÑÔÐÐÐr   c                 ó@   •— g | ]}t          j        ‰‰‰f¬ ¦  «        ‘ŒS ))Útargetr»   )Ú	threadingÚThread)Ú.0r3   r»   r¼   r¾   s     €€€r   ú
<listcomp>z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>  s=   ø€ ð +ð +ð +Øõ Ô V°4¸°)Ð<Ñ<Ô<ð +ð +ð +r   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   )Ústart©rÃ   r   s     r   rÄ   z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>  s    € ÐÐÐ�qˆ�Š‰ŒÐÐÐr   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   )ÚjoinrÇ   s     r   rÄ   z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>   s    € ÐÐÐ�aˆ�Š‰ŒÐÐÐr   é   )Útimeoutz6Function returned wrong value in multithreaded context)ÚqueueÚQueuer-   Úthreadsr   Úget)r!   r½   r»   ÚexpectedÚtr3   r¼   r¾   s    ``   @@r   Ú_test_mtsamezTestFFTThreadSafe._test_mtsame  sò   øøøø€ ð	ð 	ð 	ð 	ð 	õ ŒK‰MŒMˆØ�4˜�;ˆð+ð +ð +ð +ð +ð +Ý˜DœLÑ)Ô)ð+ñ +ô +ˆàÐ˜AÐÑÔÐàÐ˜1ÐÑÔÐå�t”|Ñ$Ô$ð 	Jð 	JˆAÝ˜qŸušu¨Q˜uÑ/Ô/°ØHñJô Jð Jð Jð	Jð 	Jr   c                 óŽ   — t          j        | j        ¦  «        dz  dz   }|                      t           j        j        |¦  «         d S ©Nr
   y                )r   ÚonesÚinput_shaperÒ   r    ©r!   r‚   s     r   r@   zTestFFTThreadSafe.test_fft&  s>   € ÝŒG�DÔ$Ñ%Ô%¨Ñ)¨"Ñ,ˆØ×Ò�"œ&œ* aÑ(Ô(Ð(Ð(Ð(r   c                 óŽ   — t          j        | j        ¦  «        dz  dz   }|                      t           j        j        |¦  «         d S rÔ   )r   rÕ   rÖ   rÒ   r    r.   r×   s     r   rF   zTestFFTThreadSafe.test_ifft*  s>   € ÝŒG�DÔ$Ñ%Ô%¨Ñ)¨"Ñ,ˆØ×Ò�"œ&œ+ qÑ)Ô)Ð)Ð)Ð)r   c                 ó‚   — t          j        | j        ¦  «        }|                      t           j        j        |¦  «         d S r¹   )r   rÕ   rÖ   rÒ   r    r0   r×   s     r   ra   zTestFFTThreadSafe.test_rfft.  s4   € ÝŒG�DÔ$Ñ%Ô%ˆØ×Ò�"œ&œ+ qÑ)Ô)Ð)Ð)Ð)r   c                 óŽ   — t          j        | j        ¦  «        dz  dz   }|                      t           j        j        |¦  «         d S rÔ   )r   rÕ   rÖ   rÒ   r    r/   r×   s     r   rc   zTestFFTThreadSafe.test_irfft2  s>   € ÝŒG�DÔ$Ñ%Ô%¨Ñ)¨"Ñ,ˆØ×Ò�"œ&œ,¨Ñ*Ô*Ð*Ð*Ð*r   N)
r#   r$   r%   rÎ   rÖ   rÒ   r@   rF   ra   rc   r&   r   r   r´   r´     sl   € € € € € à€GØ€KðJð Jð 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ð MDð MDð MDñ MDô MDð MDð` „×ÒØØ	Œ�R”Z ¤¨r¬}Ð=ñ?ô ?ð „×Ò˜ 3Ð(8Ð"9Ñ:Ô:Ø„×ÒØØ	ŒŒ�R”V”[ "¤&¤+Ø	ŒŒ�b”f”l B¤F¤Lð	2ñ3ô 3ðð ñ	3ô 3ñ ;Ô:ñ?ô ?ðð> „×Ò�GÐ$9ÐÑ:Ô:ð$+ð $+ð $+ð $+ð $+ñ $+ô $+ñ ;Ô:ð$+ð $+ð $+r   