§
    µ³ÙgïP  ã                   ó  — d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZmZmZmZ eej                             d¦  «        gZej        j        Zd„ Zd	„ Z G d
„ d¦  «        Z ed¬¦  «        ej                             dej        ej        ej         ej!        ej"        ej#        g¦  «        ej                             dddg¦  «        ej                             dej        ej$        ej%        ej&        ej'        ej(        g¦  «        d„ ¦   «         ¦   «         ¦   «         ¦   «         Z) ed¬¦  «         G d„ d¦  «        ¦   «         Z* ed¬¦  «        ej                             dej        ej&        ej+        ej,        g¦  «        d„ ¦   «         ¦   «         Z- G d„ d¦  «        Z.ej                             dej        ej&        ej+        ej,        ej%        ej(        ej/        ej0        ej1        ej2        g
¦  «        d„ ¦   «         Z3ej                             dddg¦  «        ej                             dej        ej&        ej,        ej%        ej(        ej0        ej1        g¦  «        d„ ¦   «         ¦   «         Z4dS )é    N)Úrandom)Úassert_array_almost_equalÚassert_allclose)Úraises)Úarray_api_compatible)Úarray_namespaceÚxp_sizeÚxp_assert_closeÚxp_assert_equalÚskip_xp_backendsc                 óæ  — | t           j         t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j	        t           j
        t           j        fv r|j        }n`| t           j        t           j        t           j        t           j        t           j        t           j        fv r|j        }nt)          d| › �¦  «        ‚|S )NzUnknown FFT function: )ÚfftÚfftnÚfft2ÚifftÚifftnÚifft2ÚhfftÚhfftnÚhfft2ÚirfftÚirfftnÚirfft2Ú
complex128ÚrfftÚrfftnÚrfft2ÚihfftÚihfftnÚihfft2Úfloat64Ú
ValueError)ÚfuncÚxpÚdtypes      úP/granary/edev/quantum/lib/python3.11/site-packages/scipy/fft/tests/test_basic.pyÚget_expected_input_dtyper'      s¢   € Ø•”�œ¥3¤8Ý”�#œ)¥S¤YÝ”�#œ)¥S¤YÝ”	�3œ:¥s¤zð3ð 3ð 3ð ”ˆˆØ	•#”(�CœI¥s¤yÝ”)�SœZ­¬ð5ð 
5ð 
5à”
ˆˆåÐ8°$Ð8Ð8Ñ9Ô9Ð9à€Ló    c                 ó4  — t          | ¦  «        }dt          j        z  t          j        |¦  «        t	          |¦  «        z  z  }t          j        |¦  «                             dd¦  «        |z  }t          j        | t          j        |¦  «        z  d¬¦  «        S )Ny       €       Àéÿÿÿÿé   ©Úaxis)ÚlenÚnpÚpiÚarangeÚfloatÚreshapeÚsumÚexp)ÚxÚLÚphases      r&   Úfft1r9   %   ss   € ÝˆA‰Œ€AØ•”‰I•r”y ‘|”|¥E¨!¡H¤HÑ,Ñ-€EÝŒI�a‰LŒL× Ò   QÑ'Ô'¨%Ñ/€EÝŒ6�!•B”F˜5‘M”M‘/¨Ð*Ñ*Ô*Ð*r(   c                   ó>  — e Zd Zd„ Z edd¬¦  «        d„ ¦   «         Zd„ Z e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d„ Zd„ Zd„ Zd„ Zej                             dej        ej        ej         ej!        g¦  «        d„ ¦   «         Z"ej                             dej#        ej$        g¦  «        d„ ¦   «         Z%ej                             dej        ej        ej         ej!        g¦  «        d„ ¦   «         Z&ej                             dej'        ej(        ej)        ej*        ej+        ej,        ej#        ej$        g¦  «        d„ ¦   «         Z-d „ Z. ed¬!¦  «        ej                             d"e/j0        e/j1        g¦  «        d#„ ¦   «         ¦   «         Z2ej                             d"d$d%g¦  «        d&„ ¦   «         Z3ej                             d"d'd(g¦  «        d)„ ¦   «         Z4 edd*¬¦  «        ej                             dej        ej5        ej'        ej(        ej        ej        ej6        ej7        ej)        ej*        ej         ej!        ej8        ej9        ej+        ej,        ej#        ej$        g¦  «        d+„ ¦   «         ¦   «         Z:d,S )-ÚTestFFTc           
      óÔ  — d}|                      t          |¦  «        dt          |¦  «        z  z   ¦  «        }|                      t          |¦  «        ¦  «        }dD ]‹}t          t          j        t          j        |d|…         ¦  «        ¦  «        |d|…         ¦  «         t          t          j        t          j        |d|…         ¦  «        |¦  «        |d|…         ¦  «         ŒŒd S )Né   ù              ð?)	r+   é   é   é€   r=   é5   é•   i  i�  r   )Úasarrayr   r
   r   r   r   r   ©Úselfr$   Úmaxlenr6   ÚxrÚis         r&   Útest_identityzTestFFT.test_identity-   sÍ   € ØˆØ�JŠJ•v˜f‘~”~¨­6°&©>¬>Ñ(9Ñ9Ñ:Ô:ˆØ�ZŠZ�˜v™œÑ'Ô'ˆà8ð 	Fð 	FˆAÝ�CœH¥S¤W¨Q¨q°¨s¬V¡_¤_Ñ5Ô5°q¸¸1¸´vÑ>Ô>Ð>Ý�CœI¥c¤h¨r°!°A°#¬wÑ&7Ô&7¸Ñ;Ô;¸RÀÀ!À¼WÑEÔEÐEÐEð	Fð 	Fr(   Tz&significant overhead for some backends)Únp_onlyÚreasonc           
      óð  — d}|                      t          |¦  «        dt          |¦  «        z  z   ¦  «        }|                      t          |¦  «        ¦  «        }t          d|¦  «        D ]‹}t          t	          j        t	          j        |d|…         ¦  «        ¦  «        |d|…         ¦  «         t          t	          j        t	          j        |d|…         ¦  «        |¦  «        |d|…         ¦  «         ŒŒd S )Nr=   r>   r+   r   )rD   r   Úranger
   r   r   r   r   rE   s         r&   Útest_identity_extensivezTestFFT.test_identity_extensive6   s×   € àˆØ�JŠJ•v˜f‘~”~¨­6°&©>¬>Ñ(9Ñ9Ñ:Ô:ˆØ�ZŠZ�˜v™œÑ'Ô'ˆÝ�q˜&Ñ!Ô!ð 	Fð 	FˆAÝ�CœH¥S¤W¨Q¨q°¨s¬V¡_¤_Ñ5Ô5°q¸¸1¸´vÑ>Ô>Ð>Ý�CœI¥c¤h¨r°!°A°#¬wÑ&7Ô&7¸Ñ;Ô;¸RÀÀ!À¼WÑEÔEÐEÐEð	Fð 	Fr(   c           
      ó:  — t          d¦  «        dt          d¦  «        z  z   }|                     t          |¦  «        ¦  «        }|                     |¦  «        }t          t	          j        |¦  «        |¦  «         t          t	          j        |d¬¦  «        |¦  «         t          t	          j        |d¬¦  «        ||                     |                     d|j        ¬¦  «        ¦  «        z  ¦  «         t          t	          j        |d¬¦  «        |dz  ¦  «         d S )Né   r>   Úbackward©ÚnormÚortho©r%   Úforward)r   rD   r9   r
   r   Úsqrtr!   ©rF   r$   r6   Úexpects       r&   Útest_fftzTestFFT.test_fft?   sî   € Ý�2‰JŒJ˜�F 2™JœJ™Ñ&ˆØ—’�D ™GœGÑ$Ô$ˆØ�JŠJ�q‰MŒMˆÝ�œ ™
œ
 FÑ+Ô+Ð+Ý�œ ¨
Ð3Ñ3Ô3°VÑ<Ô<Ð<Ý�œ ¨Ð0Ñ0Ô0Ø §¢¨¯ª°B¸b¼j¨Ñ)IÔ)IÑ!JÔ!JÑJñ	Mô 	Mð 	Må�œ ¨	Ð2Ñ2Ô2°F¸R±KÑ@Ô@Ð@Ð@Ð@r(   zsome backends allow `n=0`c                 ó„   — |                      g d¢|j        ¬¦  «        }t          t          t          j        |d¦  «         d S )N©r+   r?   é   rV   r   )rD   r   Úassert_raisesr"   r   )rF   r$   r6   s      r&   Ú
test_fft_nzTestFFT.test_fft_nI   s9   € à�JŠJ�y�y�y¨¬ˆJÑ6Ô6ˆÝ•j¥#¤'¨1¨aÑ0Ô0Ð0Ð0Ð0r(   c           	      óR  — |                      t          d¦  «        dt          d¦  «        z  z   ¦  «        }t          t          j        t          j        |¦  «        ¦  «        |¦  «         dD ]:}t          t          j        t          j        ||¬¦  «        |¬¦  «        |¦  «         Œ;d S )NrQ   r>   ©rR   rU   rW   rS   )rD   r   r
   r   r   ©rF   r$   r6   rT   s       r&   Ú	test_ifftzTestFFT.test_ifftN   s˜   € Ø�JŠJ•v˜b‘z”z B¥v¨b¡z¤z¡MÑ1Ñ2Ô2ˆÝ�œ¥¤¨¡¤Ñ,Ô,¨aÑ0Ô0Ð0Ø4ð 	Kð 	KˆDÝ�CœH¥S¤W¨Q°TÐ%:Ñ%:Ô%:ÀÐFÑFÔFÈÑJÔJÐJÐJð	Kð 	Kr(   c           
      óF  — |                      t          d¦  «        dt          d¦  «        z  z   ¦  «        }t          j        t          j        |d¬¦  «        d¬¦  «        }t          t          j        |¦  «        |¦  «         t          t          j        |d¬¦  «        |¦  «         t          t          j        |d¬¦  «        ||                     |                      d	|j        ¬
¦  «        ¦  «        z  ¦  «         t          t          j        |d¬¦  «        |d	z  ¦  «         d S ©N©rQ   é   r>   r+   r,   r   rR   rS   rU   éX  rV   rW   )rD   r   r   r
   r   rX   r!   rY   s       r&   Ú	test_fft2zTestFFT.test_fft2T   sý   € Ø�JŠJ•v˜hÑ'Ô'¨"­V°HÑ-=Ô-=Ñ*=Ñ=Ñ>Ô>ˆÝ”�œ ¨Ð+Ñ+Ô+°!Ð4Ñ4Ô4ˆÝ�œ ™œ VÑ,Ô,Ð,Ý�œ ¨Ð4Ñ4Ô4°fÑ=Ô=Ð=Ý�œ ¨Ð1Ñ1Ô1Ø §¢¨¯ª°GÀ2Ä:¨Ñ)NÔ)NÑ!OÔ!OÑOñ	Qô 	Qð 	Qå�œ ¨Ð3Ñ3Ô3°V¸wÑ5GÑHÔHÐHÐHÐHr(   c           
      óF  — |                      t          d¦  «        dt          d¦  «        z  z   ¦  «        }t          j        t          j        |d¬¦  «        d¬¦  «        }t	          t          j        |¦  «        |¦  «         t	          t          j        |d¬¦  «        |¦  «         t	          t          j        |d¬¦  «        ||                     |                      d	|j        ¬
¦  «        ¦  «        z  ¦  «         t	          t          j        |d¬¦  «        |d	z  ¦  «         d S rf   )rD   r   r   r   r
   r   rX   r!   rY   s       r&   Ú
test_ifft2zTestFFT.test_ifft2]   sý   € Ø�JŠJ•v˜hÑ'Ô'¨"­V°HÑ-=Ô-=Ñ*=Ñ=Ñ>Ô>ˆÝ”�#œ( 1¨1Ð-Ñ-Ô-°AÐ6Ñ6Ô6ˆÝ�œ	 !™œ fÑ-Ô-Ð-Ý�œ	 !¨*Ð5Ñ5Ô5°vÑ>Ô>Ð>Ý�œ	 !¨'Ð2Ñ2Ô2Ø §¢¨¯ª°GÀ2Ä:¨Ñ)NÔ)NÑ!OÔ!OÑOñ	Qô 	Qð 	Qå�œ	 !¨)Ð4Ñ4Ô4°fÀÑ6HÑIÔIÐIÐIÐIr(   c           
      ón  — |                      t          d¦  «        dt          d¦  «        z  z   ¦  «        }t          j        t          j        t          j        |d¬¦  «        d¬¦  «        d¬¦  «        }t          t          j        |¦  «        |¦  «         t          t          j        |d¬¦  «        |¦  «         t          t          j        |d	¬¦  «        ||                     |                      d
|j        ¬¦  «        ¦  «        z  ¦  «         t          t          j        |d¬¦  «        |d
z  ¦  «         d S )N©rQ   rh   é
   r>   r?   r,   r+   r   rR   rS   rU   ép  rV   rW   )rD   r   r   r
   r   rX   r!   rY   s       r&   Ú	test_fftnzTestFFT.test_fftnf   s  € Ø�JŠJ•v˜lÑ+Ô+¨bµ¸Ñ1EÔ1EÑ.EÑEÑFÔFˆÝ”�œ¥¤¨°Ð!3Ñ!3Ô!3¸!Ð<Ñ<Ô<À1ÐEÑEÔEˆÝ�œ ™œ VÑ,Ô,Ð,Ý�œ ¨Ð4Ñ4Ô4°fÑ=Ô=Ð=Ý�œ ¨Ð1Ñ1Ô1Ø §¢¨¯ª°LÈÌ
¨Ñ)SÔ)SÑ!TÔ!TÑTñ	Vô 	Vð 	Vå�œ ¨Ð3Ñ3Ô3°V¸|Ñ5LÑMÔMÐMÐMÐMr(   c           
      óž  — |                      t          d¦  «        dt          d¦  «        z  z   ¦  «        }t          j        t          j        t          j        |d¬¦  «        d¬¦  «        d¬¦  «        }t	          t          j        |¦  «        |d¬¦  «         t	          t          j        |d	¬
¦  «        |d¬¦  «         t	          t          j        |d¬
¦  «        t          j        |¦  «        |                     |                      d|j        ¬¦  «        ¦  «        z  ¦  «         t	          t          j        |d¬
¦  «        |dz  d¬¦  «         d S )Nrn   r>   r?   r,   r+   r   gH¯¼šò×z>)ÚrtolrR   rS   rU   rp   rV   rW   )rD   r   r   r   r
   r   rX   r!   rY   s       r&   Ú
test_ifftnzTestFFT.test_ifftno   s1  € Ø�JŠJ•v˜lÑ+Ô+¨bµ¸Ñ1EÔ1EÑ.EÑEÑFÔFˆÝ”�#œ(¥3¤8¨A°AÐ#6Ñ#6Ô#6¸QÐ?Ñ?Ô?ÀaÐHÑHÔHˆÝ�œ	 !™œ f°4Ð8Ñ8Ô8Ð8Ý�œ	 !¨*Ð5Ñ5Ô5°vÀDÐIÑIÔIÐIÝÝŒI�a˜gÐ&Ñ&Ô&ÝŒI�a‰LŒL˜2Ÿ7š7 2§:¢:¨lÀ"Ä* :Ñ#MÔ#MÑNÔNÑNñ	
ô 	
ð 	
õ 	�œ	 !¨)Ð4Ñ4Ô4Ø ,Ñ/Ø!ð	#ñ 	#ô 	#ð 	#ð 	#ð 	#r(   c                 ó@  — |                      t          d¦  «        |j        ¬¦  «        }t          |¦  «        dt          |¦  «        z  fD ]Ò}dD ]d}t	          t          j        |||¬¦  «        t          j        |                      ||j        ¬¦  «        ||¬¦  «        d |dz  dz   …         ¦  «         Œet	          t          j        ||d¬¦  «        t          j        ||¬¦  «        |                     |                      ||j        ¬¦  «        ¦  «        z  ¦  «         ŒÓd S )	Né   rV   r?   )NrR   rU   rW   ©ÚnrT   r+   rU   )rx   )	rD   r   r!   r	   r
   r   r   r   rX   )rF   r$   r6   rx   rT   s        r&   Ú	test_rfftzTestFFT.test_rfft|   s0  € Ø�JŠJ•v˜b‘z”z¨¬ˆJÑ4Ô4ˆÝ˜!‘*”*˜a¥¨¡
¤
™lÐ+ð 	ð 	ˆAØ>ð Fð F�Ý¥¤¨¨a°dÐ ;Ñ ;Ô ;Ý #¤¨¯
ª
°1¸B¼M¨
Ñ(JÔ(JØ*+°$ð!8ñ !8ô !8Ø8C¸!¸Q¹$À¹(¸ô!EñFô Fð Fð Fõ Ý”˜˜a gÐ.Ñ.Ô.Ý”˜˜aÐ Ñ Ô  2§7¢7¨2¯:ª:°a¸r¼z¨:Ñ+JÔ+JÑ#KÔ#KÑKñô ð ð ð	ð 	r(   c           	      ó,  — |                      t          d¦  «        ¦  «        }t          t          j        t          j        |¦  «        ¦  «        |¦  «         dD ]:}t          t          j        t          j        ||¬¦  «        |¬¦  «        |¦  «         Œ;d S )NrQ   rb   rS   )rD   r   r
   r   r   r   rc   s       r&   Ú
test_irfftzTestFFT.test_irfftˆ   s‰   € Ø�JŠJ•v˜b‘z”zÑ"Ô"ˆÝ�œ	¥#¤(¨1¡+¤+Ñ.Ô.°Ñ2Ô2Ð2Ø4ð 	Mð 	MˆDÝ�CœI¥c¤h¨q°tÐ&<Ñ&<Ô&<À4ÐHÑHÔHÈ!ÑLÔLÐLÐLð	Mð 	Mr(   c           
      óN  — |                      t          d¦  «        |j        ¬¦  «        }t          j        |                      ||j        ¬¦  «        ¦  «        d d …d d…f         }t          t          j        |¦  «        |¦  «         t          t          j        |d¬¦  «        |¦  «         t          t          j        |d¬¦  «        ||                     |                      d|j        ¬¦  «        ¦  «        z  ¦  «         t          t          j        |d¬¦  «        |dz  ¦  «         d S ©	Nrg   rV   é   rR   rS   rU   ri   rW   )	rD   r   r!   r   r   r   r
   r   rX   rY   s       r&   Ú
test_rfft2zTestFFT.test_rfft2Ž   s   € Ø�JŠJ•v˜hÑ'Ô'¨r¬zˆJÑ:Ô:ˆÝ”˜"Ÿ*š* Q¨b¬m˜*Ñ<Ô<Ñ=Ô=¸a¸a¸aÀÀ"À¸fÔEˆÝ�œ	 !™œ fÑ-Ô-Ð-Ý�œ	 !¨*Ð5Ñ5Ô5°vÑ>Ô>Ð>Ý�œ	 !¨'Ð2Ñ2Ô2Ø §¢¨¯ª°GÀ2Ä:¨Ñ)NÔ)NÑ!OÔ!OÑOñ	Qô 	Qð 	Qå�œ	 !¨)Ð4Ñ4Ô4°fÀÑ6HÑIÔIÐIÐIÐIr(   c           	      ó,  — |                      t          d¦  «        ¦  «        }t          t          j        t          j        |¦  «        ¦  «        |¦  «         dD ]:}t          t          j        t          j        ||¬¦  «        |¬¦  «        |¦  «         Œ;d S ©Nrg   rb   rS   )rD   r   r
   r   r   r   rc   s       r&   Útest_irfft2zTestFFT.test_irfft2—   s‹   € Ø�JŠJ•v˜hÑ'Ô'Ñ(Ô(ˆÝ�œ
¥3¤9¨Q¡<¤<Ñ0Ô0°!Ñ4Ô4Ð4Ø4ð 	Oð 	OˆDÝ�CœJ¥s¤y°¸Ð'>Ñ'>Ô'>ÀTÐJÑJÔJÈAÑNÔNÐNÐNð	Oð 	Or(   c           
      óT  — |                      t          d¦  «        |j        ¬¦  «        }t          j        |                      ||j        ¬¦  «        ¦  «        d d …d d …d d…f         }t          t          j        |¦  «        |¦  «         t          t          j        |d¬¦  «        |¦  «         t          t          j        |d¬¦  «        ||                     |                      d|j        ¬¦  «        ¦  «        z  ¦  «         t          t          j        |d¬¦  «        |dz  ¦  «         d S ©	Nrn   rV   é   rR   rS   rU   rp   rW   )	rD   r   r!   r   r   r   r
   r   rX   rY   s       r&   Ú
test_rfftnzTestFFT.test_rfftn�   s  € Ø�JŠJ•v˜lÑ+Ô+°2´:ˆJÑ>Ô>ˆÝ”˜"Ÿ*š* Q¨b¬m˜*Ñ<Ô<Ñ=Ô=¸a¸a¸aÀÀÀÀBÀQÀB¸hÔGˆÝ�œ	 !™œ fÑ-Ô-Ð-Ý�œ	 !¨*Ð5Ñ5Ô5°vÑ>Ô>Ð>Ý�œ	 !¨'Ð2Ñ2Ô2Ø §¢¨¯ª°LÈÌ
¨Ñ)SÔ)SÑ!TÔ!TÑTñ	Vô 	Vð 	Vå�œ	 !¨)Ð4Ñ4Ô4°fÀÑ6MÑNÔNÐNÐNÐNr(   c           	      ó,  — |                      t          d¦  «        ¦  «        }t          t          j        t          j        |¦  «        ¦  «        |¦  «         dD ]:}t          t          j        t          j        ||¬¦  «        |¬¦  «        |¦  «         Œ;d S ©Nrn   rb   rS   )rD   r   r
   r   r   r   rc   s       r&   Útest_irfftnzTestFFT.test_irfftn¦   s‹   € Ø�JŠJ•v˜lÑ+Ô+Ñ,Ô,ˆÝ�œ
¥3¤9¨Q¡<¤<Ñ0Ô0°!Ñ4Ô4Ð4Ø4ð 	Oð 	OˆDÝ�CœJ¥s¤y°¸Ð'>Ñ'>Ô'>ÀTÐJÑJÔJÈAÑNÔNÐNÐNð	Oð 	Or(   c           
      ó2  — t          d¦  «        dt          d¦  «        z  z   }t          j        t          d¦  «        |t          d¦  «        f¦  «        }t          j        ||d d d…                              ¦   «         f¦  «        }|                     |¦  «        }|                     |¦  «        }|                     t          j        |¦  «        ¦  «        }t          t          j        |¦  «        |¦  «         t          t          j        |d¬¦  «        |¦  «         t          t          j        |d¬¦  «        || 	                    |                     d|j
        ¬	¦  «        ¦  «        z  ¦  «         t          t          j        |d
¬¦  «        |dz  ¦  «         d S )Né   r>   r+   r*   rR   rS   rU   rQ   rV   rW   )r   r/   ÚconcatenateÚconjrD   Úrealr   r
   r   rX   r!   )rF   r$   r6   Úx_hermrZ   s        r&   Ú	test_hfftzTestFFT.test_hfft¬   sK  € Ý�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ˆØ�JŠJ�q‰MŒMˆØ—’˜FÑ#Ô#ˆØ—’�œ ™œÑ$Ô$ˆÝ�œ Ñ(Ô(¨&Ñ1Ô1Ð1Ý�œ ¨jÐ9Ñ9Ô9¸6ÑBÔBÐBÝ�œ ¨gÐ6Ñ6Ô6Ø §¢¨¯ª°B¸b¼j¨Ñ)IÔ)IÑ!JÔ!JÑJñ	Lô 	Lð 	Lå�œ ¨iÐ8Ñ8Ô8¸&À2¹+ÑFÔFÐFÐFÐFr(   c           	      óD  — 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D ]:}t          t          j        t          j        ||¬¦  «        |¬¦  «        |¦  «         Œ;d S )Nr‹   r>   r+   r*   rb   rS   )	r   r/   rŒ   r�   rD   r
   r   r   r   )rF   r$   r6   r�   rT   s        r&   Ú
test_ihfftzTestFFT.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ˆØ�JŠJ�q‰MŒMˆØ—’˜FÑ#Ô#ˆÝ�œ	¥#¤(¨6Ñ"2Ô"2Ñ3Ô3°VÑ<Ô<Ð<Ø4ð 	Wð 	WˆDÝ�CœI¥c¤h¨v¸DÐ&AÑ&AÔ&AÈÐMÑMÔMÈvÑVÔVÐVÐVð	Wð 	Wr(   c           	      ó,  — |                      t          d¦  «        ¦  «        }t          t          j        t          j        |¦  «        ¦  «        |¦  «         dD ]:}t          t          j        t          j        ||¬¦  «        |¬¦  «        |¦  «         Œ;d S r�   )rD   r   r
   r   r   r    rc   s       r&   Ú
test_hfft2zTestFFT.test_hfft2Ã   s‹   € Ø�JŠJ•v˜hÑ'Ô'Ñ(Ô(ˆÝ�œ	¥#¤*¨Q¡-¤-Ñ0Ô0°!Ñ4Ô4Ð4Ø4ð 	Oð 	OˆDÝ�CœI¥c¤j°¸Ð&>Ñ&>Ô&>ÀTÐJÑJÔJÈAÑNÔNÐNÐNð	Oð 	Or(   c           
      óN  — |                      t          d¦  «        |j        ¬¦  «        }t          j        |                      ||j        ¬¦  «        ¦  «        d d …d d…f         }t          t          j        |¦  «        |¦  «         t          t          j        |d¬¦  «        |¦  «         t          t          j        |d¬¦  «        ||                     |                      d|j        ¬¦  «        ¦  «        z  ¦  «         t          t          j        |d¬¦  «        |dz  ¦  «         d S r}   )	rD   r   r!   r   r   r   r
   r    rX   rY   s       r&   Útest_ihfft2zTestFFT.test_ihfft2É   s   € Ø�JŠJ•v˜hÑ'Ô'¨r¬zˆJÑ:Ô:ˆÝ”˜2Ÿ:š: a¨r¬}˜:Ñ=Ô=Ñ>Ô>¸q¸q¸qÀ#À2À#¸vÔFˆÝ�œ
 1™œ vÑ.Ô.Ð.Ý�œ
 1¨:Ð6Ñ6Ô6¸Ñ?Ô?Ð?ÝÝŒJ�q˜wÐ'Ñ'Ô'Ø�R—W’W˜RŸZšZ¨°r´z˜ZÑBÔBÑCÔCÑCñ	
ô 	
ð 	
õ 	�œ
 1¨9Ð5Ñ5Ô5°vÀÑ7IÑJÔJÐJÐJÐJr(   c           	      ó,  — |                      t          d¦  «        ¦  «        }t          t          j        t          j        |¦  «        ¦  «        |¦  «         dD ]:}t          t          j        t          j        ||¬¦  «        |¬¦  «        |¦  «         Œ;d S rˆ   )rD   r   r
   r   r   r   rc   s       r&   Ú
test_hfftnzTestFFT.test_hfftnÔ   s‹   € Ø�JŠJ•v˜lÑ+Ô+Ñ,Ô,ˆÝ�œ	¥#¤*¨Q¡-¤-Ñ0Ô0°!Ñ4Ô4Ð4Ø4ð 	Oð 	OˆDÝ�CœI¥c¤j°¸Ð&>Ñ&>Ô&>ÀTÐJÑJÔJÈAÑNÔNÐNÐNð	Oð 	Or(   c           
      óT  — |                      t          d¦  «        |j        ¬¦  «        }t          j        |                      ||j        ¬¦  «        ¦  «        d d …d d …d d…f         }t          |t          j        |¦  «        ¦  «         t          |t          j        |d¬¦  «        ¦  «         t          t          j        |d¬¦  «        ||                     |                      d|j        ¬¦  «        ¦  «        z  ¦  «         t          t          j        |d¬¦  «        |dz  ¦  «         d S r„   )	rD   r   r!   r   r   r   r
   r   rX   rY   s       r&   Útest_ihfftnzTestFFT.test_ihfftnÚ   s  € Ø�JŠJ•v˜lÑ+Ô+°2´:ˆJÑ>Ô>ˆÝ”˜2Ÿ:š: a¨r¬}˜:Ñ=Ô=Ñ>Ô>¸q¸q¸qÀ!À!À!ÀRÀaÀR¸xÔHˆÝ˜¥¤
¨1¡¤Ñ.Ô.Ð.Ý˜¥¤
¨1°:Ð >Ñ >Ô >Ñ?Ô?Ð?ÝÝŒJ�q˜wÐ'Ñ'Ô'Ø�R—W’W˜RŸZšZ¨¸B¼J˜ZÑGÔGÑHÔHÑHñ	
ô 	
ð 	
õ 	�œ
 1¨9Ð5Ñ5Ô5°vÀÑ7NÑOÔOÐOÐOÐOr(   c                 óB  — t          ||¦  «        }|                     t          d¦  «        |¬¦  «        }g d¢}t          |¦  «        }|D ]T} ||                     ||¬¦  «        ¦  «        }|                      |||¬¦  «        |¬¦  «        }	t          ||	¦  «         ŒUd S )Nrn   rV   )©r   r+   r?   ©r   r?   r+   )r+   r   r?   ©r+   r?   r   )r?   r   r+   )r?   r+   r   ©Úaxes)r'   rD   r   r   Úpermute_dimsr
   )
rF   Úopr$   r%   r6   r    Úxp_testÚaÚop_trÚtr_ops
             r&   Ú_check_axeszTestFFT._check_axeså   s¸   € Ý(¨¨RÑ0Ô0ˆØ�JŠJ•v˜lÑ+Ô+°5ˆJÑ9Ô9ˆØQÐQÐQˆÝ! !Ñ$Ô$ˆØð 	*ð 	*ˆAØ�B�w×+Ò+¨A°AÐ+Ñ6Ô6Ñ7Ô7ˆEØ×(Ò(¨¨¨A°A¨©¬¸QÐ(Ñ?Ô?ˆEÝ˜E 5Ñ)Ô)Ð)Ð)ð	*ð 	*r(   r¢   c                 ó2   — |                       ||¦  «         d S ©N©r§   ©rF   r¢   r$   s      r&   Útest_axes_standardzTestFFT.test_axes_standardï   ó   € à×Ò˜˜RÑ Ô Ð Ð Ð r(   c                 ó2   — |                       ||¦  «         d S r©   rª   r«   s      r&   Útest_axes_non_standardzTestFFT.test_axes_non_standardó   r­   r(   c           
      óÚ  ‡	‡
— t          ||¦  «        }|                     t          d¦  «        |¬¦  «        Š
g d¢}t          ‰
¦  «        }|D ]žŠ	t	          ˆ	ˆ
fd„t          ‰
j        ¦  «        D ¦   «         ¦  «        } ||                     ‰
‰	¬¦  «        |d d…         d¬¦  «        }|                      |‰
|d d…         ‰	d d…         ¬¦  «        ‰	¬¦  «        }t          ||¦  «         ŒŸd S )	N©r@   é   é   rV   ©rœ   r�   rž   c                 ób   •— g | ]+}|‰d d…         v rd‰j         |         z  n‰j         |         ‘Œ,S ©Nr?   ©Úshape©Ú.0Úaxr¤   r6   s     €€r&   ú
<listcomp>z@TestFFT.test_axes_subset_with_shape_standard.<locals>.<listcomp>   óM   ø€ ð 4ð 4ð 4Ø!ð -/°!°B°Q°B´%¨K¨K˜1˜QœW Rœ[™=˜=¸Q¼WÀR¼[ð 4ð 4ð 4r(   rŸ   r?   ©r   r+   ©Úsr    ©	r'   rD   r   r   ÚtuplerN   Úndimr¡   r
   ©rF   r¢   r$   r%   r    r£   r¸   r¥   r¦   r¤   r6   s            @@r&   Ú$test_axes_subset_with_shape_standardz,TestFFT.test_axes_subset_with_shape_standard÷   s2  øø€ õ )¨¨RÑ0Ô0ˆØ�JŠJ•v˜jÑ)Ô)°ˆJÑ7Ô7ˆØ0Ð0Ð0ˆÝ! !Ñ$Ô$ˆØð 		*ð 		*ˆAåð 4ð 4ð 4ð 4ð 4Ý%*¨1¬6¡]¤]ð4ñ 4ô 4ñ 5ô 5ˆEð �B�w×+Ò+¨A°AÐ+Ñ6Ô6Ø˜r ˜rœ¨ð1ñ 1ô 1ˆEà×(Ò(¨¨¨A°°r¸°r´ÀÀ2ÀAÀ2ÄÐ)GÑ)GÔ)GØ./ð )ñ 1ô 1ˆEå˜E 5Ñ)Ô)Ð)Ð)ð		*ð 		*r(   c           
      óÚ  ‡	‡
— t          ||¦  «        }|                     t          d¦  «        |¬¦  «        Š
g d¢}t          ‰
¦  «        }|D ]žŠ	t	          ˆ	ˆ
fd„t          ‰
j        ¦  «        D ¦   «         ¦  «        } ||                     ‰
‰	¬¦  «        |d d…         d¬¦  «        }|                      |‰
|d d…         ‰	d d…         ¬¦  «        ‰	¬¦  «        }t          ||¦  «         ŒŸd S )	Nr±   rV   r´   c                 ób   •— g | ]+}|‰d d…         v rd‰j         |         z  n‰j         |         ‘Œ,S r¶   r·   r¹   s     €€r&   r¼   zDTestFFT.test_axes_subset_with_shape_non_standard.<locals>.<listcomp>  r½   r(   rŸ   r?   r¾   r¿   rÁ   rÄ   s            @@r&   Ú(test_axes_subset_with_shape_non_standardz0TestFFT.test_axes_subset_with_shape_non_standard	  s$  øø€ õ
 )¨¨RÑ0Ô0ˆØ�JŠJ•v˜jÑ)Ô)°ˆJÑ7Ô7ˆØ0Ð0Ð0ˆÝ! !Ñ$Ô$ˆØð 	*ð 	*ˆAåð 4ð 4ð 4ð 4ð 4Ý%*¨1¬6¡]¤]ð4ñ 4ô 4ñ 5ô 5ˆEð �B�w×+Ò+¨A°AÐ+Ñ6Ô6¸%ÀÀÀ¼)È&ÐQÑQÔQˆEØ×(Ò(¨¨¨A°°r¸°r´ÀÀ2ÀAÀ2ÄÐ)GÑ)GÔ)GÈaÐ(ÑPÔPˆEÝ˜E 5Ñ)Ô)Ð)Ð)ð	*ð 	*r(   c                 óÒ  — |                      t          d¦  «        |j        ¬¦  «        }t          |¦  «        }|j                             |¦  «        }t          |¦  «        dz  }t          j        t          j	        ft          j
        t          j        ft          j        t          j        fg}|D ]¸\  }}|t          j        k    r6|                      ||j        ¬¦  «        }|j                             |¦  «        }t          |¦  «        dt          |¦  «        z  fD ]K}dD ]F}	 ||||	¬¦  «        }
 ||
||	¬¦  «        }
t          |j                             |
¦  «        |¦  «         ŒGŒLŒ¹d S )NrQ   rV   r?   rb   rw   )rD   r   r!   r   ÚlinalgÚvector_normr	   r   r   r   r   r   r   r   r
   )rF   r$   r6   r£   Úx_normrx   Ú
func_pairsÚforwÚbackrT   Útmps              r&   Útest_all_1d_norm_preservingz#TestFFT.test_all_1d_norm_preserving  si  € à�JŠJ•v˜b‘z”z¨¬ˆJÑ4Ô4ˆÝ! !Ñ$Ô$ˆØ”×+Ò+¨AÑ.Ô.ˆÝ�A‰JŒJ˜‰NˆÝ”x¥¤Ð+õ ”y¥#¤(Ð+å”w¥¤Ð)ðˆ
ð %ð 	Mð 	M‰JˆD�$Ø•s”wŠˆØ—J’J˜q¨¬�JÑ6Ô6�Ø œ×3Ò3°AÑ6Ô6�Ý˜a‘j”j !¥G¨A¡J¤J¡,Ð/ð Mð M�Ø<ð Mð M�DØ˜$˜q A¨DÐ1Ñ1Ô1�CØ˜$˜s a¨dÐ3Ñ3Ô3�CÝ# G¤N×$>Ò$>¸sÑ$CÔ$CÀVÑLÔLÐLÐLðMðMð		Mð 	Mr(   ©rK   r%   c                 ó  — t          d¦  «                             |¦  «        }t          j        t          j        t          j        t          j        i}|                     ||         ¦  «        }t          j        t          j        |¦  «        ¦  «        }t          j	        t          j
        |¦  «        ¦  «        }t          j        t          j        |¦  «        |j        d         ¦  «        }t          ||¦  «         t          ||¦  «         t          ||¦  «         |j        |j        k    sJ ‚|j        t          j        t          j        |j        ¦  «        k    sJ ‚|j        t          j        t          j        |j        ¦  «        k    sJ ‚d S )NrQ   r   )r   Úastyper/   Úfloat16Ú	complex64Ú
longdoubleÚclongdoubler   r   r   r   r   r   r¸   r   r%   Úresult_typeÚfloat32)rF   r%   r6   Ú
out_dtypesÚ	x_complexÚres_fftÚres_rfftÚres_hffts           r&   Útest_dtypes_nonstandardzTestFFT.test_dtypes_nonstandard2  s'  € õ �2‰JŒJ×Ò˜eÑ$Ô$ˆÝ”j¥"¤,µ´½r¼~ÐNˆ
Ø—H’H˜Z¨Ô.Ñ/Ô/ˆ	å”(�3œ7 1™:œ:Ñ&Ô&ˆÝ”9�SœX a™[œ[Ñ)Ô)ˆÝ”8�CœI a™LœL¨!¬'°!¬*Ñ5Ô5ˆå! '¨9Ñ5Ô5Ð5Ý! (¨AÑ.Ô.Ð.Ý! (¨AÑ.Ô.Ð.ØŒ} 	¤Ò/Ð/Ð/Ð/ØŒ~¥¤µ´
¸A¼GÑ!DÔ!DÒDÐDÐDÐDØŒ~¥¤µ´
¸A¼GÑ!DÔ!DÒDÐDÐDÐDÐDÐDr(   rÚ   r!   c                 óZ  — |                      t          d¦  «        t          ||¦  «        ¬¦  «        }t          j        t          j        |¦  «        ¦  «        }t          j        t          j        |¦  «        |j        d         ¦  «        }t          ||¦  «         t          ||¦  «         d S )NrQ   rV   r   )
rD   r   Úgetattrr   r   r   r   r   r¸   r
   )rF   r%   r$   r6   rÞ   rß   s         r&   Útest_dtypes_realzTestFFT.test_dtypes_realD  sƒ   € à�JŠJ•v˜b‘z”z­°°UÑ);Ô);ˆJÑ<Ô<ˆå”9�SœX a™[œ[Ñ)Ô)ˆÝ”8�CœI a™LœL¨!¬'°!¬*Ñ5Ô5ˆå˜ !Ñ$Ô$Ð$Ý˜ !Ñ$Ô$Ð$Ð$Ð$r(   rÖ   r   c                 ó   — t           j                             d¦  «        }|                     |                     d¦  «        t	          ||¦  «        ¬¦  «        }t          j        t          j        |¦  «        ¦  «        }t          ||¦  «         d S )NiÒ  rQ   rV   )r/   r   Údefault_rngrD   râ   r   r   r
   )rF   r%   r$   Úrngr6   rÝ   s         r&   Útest_dtypes_complexzTestFFT.test_dtypes_complexN  sm   € åŒi×#Ò# DÑ)Ô)ˆØ�JŠJ�s—z’z "‘~”~­W°R¸Ñ-?Ô-?ˆJÑ@Ô@ˆå”(�3œ7 1™:œ:Ñ&Ô&ˆå˜ Ñ#Ô#Ð#Ð#Ð#r(   z,array-likes only supported for NumPy backendc                 óž   — ddgddggddgddggddgddggg}t           ||¦  «         ||                     |¦  «        ¦  «        ¦  «         d S )Ng      ð?)r
   rD   )rF   r$   r¢   r6   s       r&   Útest_array_likezTestFFT.test_array_likeW  so   € ð �Cˆj˜3 ˜*Ð%Ø�Cˆj˜3 ˜*Ð%Ø�Cˆj˜3 ˜*Ð%ð'ˆõ 	˜˜˜1™œ˜r˜r "§*¢*¨Q¡-¤-Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1r(   N);Ú__name__Ú
__module__Ú__qualname__rJ   r   rO   r[   r`   rd   rj   rl   rq   rt   ry   r{   r   r‚   r†   r‰   r�   r’   r”   r–   r˜   rš   r§   ÚpytestÚmarkÚparametrizer   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;   +   sh  € € € € € ðFð Fð Fð Ð˜dÐ+SÐTÑTÔTðFð Fñ UÔTðFðAð Að Að Ð˜dÐ+FÐGÑGÔGð1ð 1ñ HÔGð1ðKð Kð KðIð Ið IðJð Jð JðNð Nð Nð#ð #ð #ð
ð 
ð 
ðMð Mð MðJð Jð JðOð Oð OðOð Oð OðOð Oð OðGð Gð GðWð Wð WðOð Oð Oð	Kð 	Kð 	KðOð Oð Oð	Pð 	Pð 	Pð*ð *ð *ð „[×Ò˜T C¤H¨c¬i¸¼ÀCÄJÐ#OÑPÔPð!ð !ñ QÔPð!ð „[×Ò˜T C¤I¨s¬zÐ#:Ñ;Ô;ð!ð !ñ <Ô;ð!ð „[×Ò˜T C¤H¨c¬iØ$'¤I¨s¬zð$;ñ <ô <ð*ð *ñ<ô <ð*ð  „[×Ò˜T C¤H¨c¬iØ$'¤I¨s¬zØ$'¤I¨s¬zØ$'¤I¨s¬zð$;ñ <ô <ð*ð *ñ	<ô <ð*ðMð Mð Mð. Ð˜dÐ#Ñ#Ô#Ø„[×Ò˜W r¤z°2´=Ð&AÑBÔBðEð Eñ CÔBñ $Ô#ðEð  „[×Ò˜W y°)Ð&<Ñ=Ô=ð%ð %ñ >Ô=ð%ð „[×Ò˜W {°LÐ&AÑBÔBð$ð $ñ CÔBð$ð Ð˜dØKðMñ Mô Mà„[×Ò˜T C¤G¨S¬XØ$'¤H¨c¬iØ$'¤H¨c¬iØ$'¤H¨c¬iØ$'¤I¨s¬zØ$'¤I¨s¬zØ$'¤H¨c¬iØ$'¤I¨s¬zØ$'¤I¨s¬zð$<ñ =ô =ð2ð 2ñ=ô =ñMô Mð2ð 2ð 2r(   r;   TrÒ   r%   ÚorderÚFznon-contiguousr   c                 óÜ  — t           j                             d¦  «        }|                     ddd¦  «                             | d¬¦  «        }|dk    rt          j        |¦  «        }n(|d d d…         }t          j        |d d d…         ¦  «        }|j                             d	¦  «        r>t          d
¦  «        D ],} |||¬¦  «        } |||¬¦  «        }t          ||¦  «         Œ-d S |j                             d¦  «        rfg d¢}	|j                             d¦  «        r|	                     g d¢¦  «         |	D ],}
 |||
¬¦  «        } |||
¬¦  «        }t          ||¦  «         Œ-d S t          ‚)Né*   r²   é   é   F)Úcopyrò   r*   r   r^   r,   )r   r   )r¾   )r+   r?   )r   r?   r   ))r   )r+   )r?   NrŸ   )r/   r   ÚRandomStateÚrandrÔ   ÚasfortranarrayÚascontiguousarrayrê   ÚendswithrN   r   Úextendr"   )r%   rñ   r   ræ   ÚXÚYr-   ÚX_resÚY_resr    r»   s              r&   Útest_fft_with_orderr  i  s¦  € õ Œ)×
Ò
 Ñ
#Ô
#€CØ�Š��A�rÑÔ×!Ò! %¨eÐ!Ñ4Ô4€AØ�‚|€|ÝÔ˜aÑ Ô ˆˆð ˆdˆd�ˆdŒGˆÝÔ   4 4 R 4¤Ñ)Ô)ˆà
„|×Ò˜UÑ#Ô#ð Ý˜!‘H”Hð 	4ð 	4ˆDØ�C˜ Ð%Ñ%Ô%ˆEØ�C˜ Ð%Ñ%Ô%ˆEÝ% e¨UÑ3Ô3Ð3Ð3ð	4ð 	4ð 
Œ×	Ò	Ð/Ñ	0Ô	0ð 	Ø'Ð'Ð'ˆØŒ<× Ò  Ñ(Ô(ð 	2Ø�KŠKÐ0Ð0Ð0Ñ1Ô1Ð1Øð 	4ð 	4ˆBØ�C˜ �O‘O”OˆEØ�C˜ �O‘O”OˆEÝ% e¨UÑ3Ô3Ð3Ð3ð	4ð 	4õ
 Ðr(   )Úcpu_onlyc                   óF   — e Zd ZdZdZddœd„Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
d„ ZdS )ÚTestFFTThreadSafer@   )i   éÈ   N©r$   c                ó6  ‡‡‡‡— ˆ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 r©   )Úput)ÚargsÚqr#   s     €r&   Úworkerz.TestFFTThreadSafe._test_mtsame.<locals>.worker–  s!   ø€ Ø�EŠE�$�$˜�+ÑÔÐÐÐr(   c                 ó@   •— g | ]}t          j        ‰‰‰f¬ ¦  «        ‘ŒS ))Útargetr  )Ú	threadingÚThread)rº   rI   r  r  r  s     €€€r&   r¼   z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>�  s=   ø€ ð +ð +ð +Øõ Ô V°4¸°)Ð<Ñ<Ô<ð +ð +ð +r(   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rð   )Ústart©rº   r6   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)Úerr_msg)ÚqueueÚQueuerN   Úthreadsr   Úget)	rF   r#   r$   r  ÚexpectedÚtrI   r  r  s	    ` `   @@r&   Ú_test_mtsamezTestFFTThreadSafe._test_mtsame•  sò   øøøø€ ð	ð 	ð 	ð 	ð 	õ ŒK‰MŒMˆØ�4˜�;ˆð+ð +ð +ð +ð +ð +Ý˜DœLÑ)Ô)ð+ñ +ô +ˆàÐ˜AÐÑÔÐàÐ˜1ÐÑÔÐõ �t”|Ñ$Ô$ð 	ð 	ˆAÝØ—’˜a�Ñ Ô  (ØPðñ ô ð ð ð	ð 	r(   c                 óŒ   — |                      | j        |j        ¬¦  «        }|                      t          j        ||¬¦  «         d S ©NrV   r  )ÚonesÚinput_shaper   r   r   ©rF   r$   r¤   s      r&   r[   zTestFFTThreadSafe.test_fftª  s?   € Ø�GŠG�DÔ$¨B¬MˆGÑ:Ô:ˆØ×Ò�#œ' 1¨ÐÑ,Ô,Ð,Ð,Ð,r(   c                 ó€   — |                      | j        d¦  «        }|                      t          j        ||¬¦  «         d S ©Ny      ð?        r  )Úfullr$  r   r   r   r%  s      r&   rd   zTestFFTThreadSafe.test_ifft®  s;   € Ø�GŠG�DÔ$ dÑ+Ô+ˆØ×Ò�#œ( A¨"ÐÑ-Ô-Ð-Ð-Ð-r(   c                 ó~   — |                      | j        ¦  «        }|                      t          j        ||¬¦  «         d S ©Nr  )r#  r$  r   r   r   r%  s      r&   ry   zTestFFTThreadSafe.test_rfft²  s9   € Ø�GŠG�DÔ$Ñ%Ô%ˆØ×Ò�#œ( A¨"ÐÑ-Ô-Ð-Ð-Ð-r(   c                 ó€   — |                      | j        d¦  «        }|                      t          j        ||¬¦  «         d S r'  )r(  r$  r   r   r   r%  s      r&   r{   zTestFFTThreadSafe.test_irfft¶  s;   € Ø�GŠG�DÔ$ dÑ+Ô+ˆØ×Ò�#œ) Q¨2ÐÑ.Ô.Ð.Ð.Ð.r(   c                 óŒ   — |                      | j        |j        ¬¦  «        }|                      t          j        ||¬¦  «         d S r"  )r#  r$  rÖ   r   r   r   r%  s      r&   r�   zTestFFTThreadSafe.test_hfftº  s?   € Ø�GŠG�DÔ$¨B¬LˆGÑ9Ô9ˆØ×Ò�#œ( A¨"ÐÑ-Ô-Ð-Ð-Ð-r(   c                 ó~   — |                      | j        ¦  «        }|                      t          j        ||¬¦  «         d S r*  )r#  r$  r   r   r   r%  s      r&   r’   zTestFFTThreadSafe.test_ihfft¾  s9   € Ø�GŠG�DÔ$Ñ%Ô%ˆØ×Ò�#œ) Q¨2ÐÑ.Ô.Ð.Ð.Ð.r(   )rê   rë   rì   r  r$  r   r[   rd   ry   r{   r�   r’   rð   r(   r&   r  r  �  s”   € € € € € à€GØ€Kà+/ð ð ð ð ð ð*-ð -ð -ð.ð .ð .ð.ð .ð .ð/ð /ð /ð.ð .ð .ð/ð /ð /ð /ð /r(   r  r#   c                 ó  — t          j        d¦  «        5 }|                     | d„ t          d¦  «        D ¦   «         ¦  «        }d d d ¦  «         n# 1 swxY w Y    | t	          j        d¦  «        ¦  «        }|D ]}t          ||¦  «         Œd S )Nr?   c                 ó6   — g | ]}t          j        d ¦  «        ‘ŒS )éd   )r/   r#  )rº   Ú_s     r&   r¼   z%test_multiprocess.<locals>.<listcomp>É  s    € Ð:Ð:Ð:¨A�2œ7 3™<œ<Ð:Ð:Ð:r(   r³   r0  )ÚmultiprocessingÚPoolÚmaprN   r/   r#  r   )r#   ÚpÚresrZ   r6   s        r&   Útest_multiprocessr7  Ã  sÔ   € õ
 
Ô	˜aÑ	 Ô	 ð < AØ�eŠe�DÐ:Ð:µ°q±´Ð:Ñ:Ô:Ñ;Ô;ˆð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð ˆT•"”'˜#‘,”,ÑÔ€FØð #ð #ˆÝ˜˜6Ñ"Ô"Ð"Ð"ð#ð #s   •.AÁAÁAc                   ó   — e Zd Zd„ ZdS )Ú
TestIRFFTNc                 ó´   — t           j                             d¦  «        \  }}|d|z  z   }|                     |¦  «        }d}t          j        ||¬¦  «         d S )N)r?   r@   r²   é    r>   )éþÿÿÿrŸ   )r/   r   rD   r   r   )rF   r$   ÚarÚair¤   r    s         r&   Útest_not_last_axis_successz%TestIRFFTN.test_not_last_axis_successÒ  sY   € Ý”×!Ò! .Ñ1Ô1‰ˆˆBØ��B‘‰JˆØ�JŠJ�q‰MŒMˆàˆõ 	Œ
�1˜4Ð Ñ Ô Ð Ð Ð r(   N)rê   rë   rì   r?  rð   r(   r&   r9  r9  Ð  s#   € € € € € ð!ð !ð !ð !ð !r(   r9  c                 ó   — | t           j        t           j        t           j        fv r|j        }n|j        }|j        dk    r>|                     g d¢|¬¦  «        } | |¦  «         t          t          | |d¬¦  «         d S d S )NÚnumpyr]   rV   r?   )Úworkers)
r   r   r   r   r!   r   rê   rD   r_   r"   )r#   r$   r%   r6   s       r&   Útest_non_standard_paramsrC  Ý  s„   € ð •”�#œ)¥S¤YÐ/Ð/Ð/Ø”
ˆˆà”ˆà	„{�gÒÐØ�JŠJ�y�y�y¨ˆJÑ.Ô.ˆàˆˆQ‰ŒˆÝ•j $¨°1Ð5Ñ5Ô5Ð5Ð5Ð5ð	 Ðr(   rÚ   r!   c                 ój   — |                      g d¢t          ||¦  «        ¬¦  «        } | |¦  «         d S )Nr]   rV   )rD   râ   )r#   r%   r$   r6   s       r&   Útest_real_inputrE  ï  s8   € ð
 	�
Š
�9�9�9¥G¨B°Ñ$6Ô$6ˆ
Ñ7Ô7€Aà€Dˆ�G„G€G€G€Gr(   )5r  r  r2  rA  r/   rí   Únumpy.randomr   Únumpy.testingr   r   r   r_   Ú	scipy.fftr   Úscipy.conftestr   Úscipy._lib._array_apir   r	   r
   r   rî   ÚusefixturesÚ
pytestmarkr   r'   r9   r;   rï   rÚ   r!   r×   rÖ   r   rØ   r   r   r   r   r   r  r  r   r   r7  r9  r   r   r   r   rC  rE  rð   r(   r&   ú<module>rM     sË  ðØ €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ð ð ð ð ð ð ð # F¤K×$;Ò$;Ð<NÑ$OÔ$OÐP€
Ø”;Ô/Ð ðð ð ð+ð +ð +ð{2ð {2ð {2ð {2ð {2ñ {2ô {2ð {2ð|	 Ð˜$ÐÑÔØ„×ÒØØ	Œ�R”Z ¤Ø	Œ�r”} b¤nð	6ñ7ô 7ð „×Ò˜ 3Ð(8Ð"9Ñ:Ô:Ø„×ÒØØ	Œ�#”(˜CœHØ	Œ�3”9˜cœið	)ñ*ô *ðð ñ	*ô *ñ ;Ô:ñ	7ô 7ñ  Ôðð: Ð˜4Ð Ñ Ô ð//ð //ð //ð //ð //ñ //ô //ñ !Ô ð//ðd Ð˜$ÐÑÔØ„×Ò˜ #¤'¨3¬8°S´X¸s¼yÐ!IÑJÔJð#ð #ñ KÔJñ  Ôð#ð
!ð 
!ð 
!ð 
!ð 
!ñ 
!ô 
!ð 
!ð „×Ò˜ #¤'¨3¬8°S´X¸s¼yØ"%¤(¨C¬IØ"%¤)¨S¬Z¸¼À3Ä9ð"Nñ Oô Oð
6ð 
6ñOô Oð
6ð „×Ò˜ 9¨iÐ"8Ñ9Ô9Ø„×Ò˜ #¤'¨3¬8°S´YØ"%¤(¨C¬IØ"%¤*¨c¬hð"9ñ :ô :ðð ñ:ô :ñ :Ô9ðð ð r(   