
    qKg]                     <   d dl Zd dlZd dlmZ d dlmZmZmZm	Z	 d dl
Z
d dlZd Z G d d      Z G d d      Zej                  j!                  d	ej"                  ej$                  ej&                  ej(                  g      ej                  j!                  d
ddg      ej                  j!                  dej*                  j*                  ej*                  j,                  ej*                  j.                  ej*                  j0                  ej*                  j2                  ej*                  j4                  g      d                      Zej                  j!                  d
ddg      ej                  j!                  dg d      d               Zej                  j;                  e	d       G d d             Zd Zd Z ej                  j!                  dej*                  j*                  ej*                  j0                  ej*                  jB                  ej*                  jD                  g      ej                  j!                  d ejF                  g d       ejH                  dejJ                         ejH                  dejL                        g      d               Z'y)    N)random)assert_array_equalassert_raisesassert_allcloseIS_WASMc                    t        |       }dt        j                  z  t        j                  |      |z  z  }t        j                  |      j	                  dd      |z  }t        j
                  | t        j                  |      z  d      S )Ny                 axis)lennppiarangereshapesumexp)xLphases      b/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numpy/fft/tests/test_pocketfft.pyfft1r      sf    AA"%%K299Q<!+,EIIaL  Q'%/E66!BFF5M/**    c                       e Zd Zd Zy)TestFFTShiftc                 \    t        t        t        j                  j                  g dd       y )N)r
         r   )r   
ValueErrorr   fft)selfs    r   
test_fft_nzTestFFTShift.test_fft_n   s    j"&&**i;r   N)__name__
__module____qualname__r"    r   r   r   r      s    <r   r   c            	       B	   e Zd Zd Zej
                  j                  dej                  ej                  ej                  g      d        Zej
                  j                  dej                  ej                  ej                  g      d        Zd Zej
                  j                  dd      ej
                  j                  deef      ej
                  j                  dd	      d
                      Zej
                  j                  dddg      d        Zd Zej
                  j                  dd      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!ej
                  j                  d ejD                  jF                  ejD                  jH                  ejD                  jJ                  ejD                  jL                  g      d!        Z'ej
                  j                  d ejD                  jF                  ejD                  jH                  ejD                  jP                  ejD                  jR                  g      d"        Z*ej
                  j                  d ejD                  jF                  ejD                  jH                  ejD                  jJ                  ejD                  jL                  g      d#        Z+ej
                  j                  d ejD                  jP                  ejD                  jR                  g      d$        Z,ej
                  j                  d ejD                  jF                  ejD                  jH                  ejD                  jJ                  ejD                  jL                  ejD                  jP                  ejD                  jR                  g      d%        Z-d& Z.ej
                  j                  d'g d(      ej
                  j                  deef      ej
                  j                  dd	      d)                      Z/ej
                  j                  d*ejD                  jF                  ejD                  jH                  ejD                  jJ                  g      d+        Z0ej
                  j                  d,d-d.g      d/        Z1y0)1	TestFFT1Dc           
         d}t        |      dt        |      z  z   }t        |      }t        d|      D ]  }t        t        j                  j                  t        j                  j	                  |d|             |d| d       t        t        j                  j                  t        j                  j                  |d|       |      |d| d        y )Ni                 ?r
   r   g-q=atol)r   ranger   r   r    ifftirfftrfft)r!   maxlenr   xris        r   test_identityzTestFFT1D.test_identity   s    6NRv..F^q&!ABFFKK

1Qq6(:;QqV!&(BFFLLR!W)=qAqG%1 "r   dtypec                 v   d}dt        j                  t        j                  d|            z  }t        |      j	                  |      dt        |      j	                  |      z  z   }t        j
                  |t        j                  |      g      }t        |      j	                  |      }t        j
                  |t        j                  |      g      }t        d|dz        D ]  }t         j                  j                  t         j                  j                  ||      |      }	|	j                  j                  |k(  sJ t        |	|d	| |d	
       t         j                  j                  t         j                  j                  ||      |      }
|
j                  |k(  sJ t        |
|d	| |d	
        y N            ?r5   r*   r
   r   nr   r,   rtol)r   spacingarrayr   astypeconcatenate
zeros_liker-   r    r.   realr5   r   r/   r0   )r!   r5   r1   r,   r   xxr2   xxrr3   check_ccheck_rs              r   test_identity_long_shortz"TestFFT1D.test_identity_long_short$   sU    2::bhhr7886N!!%(2fVn.C.CE.J+JJ^^Qa 012F^""5)nnb"--"345q&(#Affkk"&&**Q!*"4k:G<<%%...GR!W4a@ffll266;;rQ;#71l=G==E)))GS1XDqA $r   c                    d}dt        j                  t        j                  d|            z  }t        |      j	                  |      dt        |      j	                  |      z  z   }t        j
                  |t        j                  |      g      }t        d|dz        D ]H  }t         j                  j                  t         j                  j                  ||      |      }|j                  |j                  k(  sJ t        ||d	| |d	
       |j                         }|dz  dz   }	d	|j                  d	<   |dz  d	k(  rd	|j                  |	dz
  d  t        j
                  |t        j                  |      g      }
t         j                  j                  t         j                  j                  ||      |      }|j                  |j                  k(  sJ t        ||
d	|	 |d	
       K y r7   )r   r@   rA   r   rB   rC   rD   r-   r    r.   r5   r   copyimagr0   r/   )r!   r5   r1   r,   r   rF   r3   check_via_cyr=   yycheck_via_rs               r   !test_identity_long_short_reversedz+TestFFT1D.test_identity_long_short_reversed6   s    2::bhhr7886N!!%(2fVn.C.CE.J+JJ^^Qa 012q&(#A&&**RVV[[a[%8A*>K$$///KAat!D AQ
AAFF1I1uz qstBMM!$4 56B&&++bffll1l&:a+@K$$///KAat!D $r   c                    t        d      dt        d      z  z   }t        t        |      t        j                  j	                  |      d       t        t        |      t        j                  j	                  |d      d       t        t        |      t        j
                  d      z  t        j                  j	                  |d      d       t        t        |      dz  t        j                  j	                  |d	      d       y )
N   r*   ư>r+   backwardnormortho      >@forward)r   r   r   r   r    sqrtr!   r   s     r   test_fftzTestFFT1D.test_fftN   s    2JF2J&QAT:QAJ!?dKQ"''"+-

17
3$	@Q#

19
5D	Br   r   r   r
   	transpose)TFc                    fd}|t         u rOt        d      dt        d      z  z   }t        j                  j                  t        j                  j                  }}n?t        d      }t        j                  j
                  t        j                  j                  }} |||      } ||      }	 |||	|      }
|
|	u sJ t        |
|        |||      }|t         u r|	n ||      } ||	||      }||u sJ t        ||       y )Nc                     r)t        j                  | j                        j                  S t        j                  |       S Nr   rD   Tr   r`   s    r   rD   z3TestFFT1D.test_fft_out_argument.<locals>.zeros_like[   .    }}QSS)+++}}Q''r   )
      r*   r   )outr   )complexr   r   r    r.   r0   r/   r   )r!   r5   r`   r   rD   rO   r    r.   expectedrj   result	expected2out2result2s     `           r   test_fft_out_argumentzTestFFT1D.test_fft_out_argumentW   s    	( Gx 2fX&6#66A

BFFKKCx ARVV\\Cqt$"QCd+}}68,-	w&sJy,As40$7I.r   r   r
   c                 <   t        d      dt        d      z  z   }|j                         }t        j                  j                  ||      }t        j                  j                  |||      }||u sJ t	        ||       |j                         }|dk(  r|d d n
|d d d df   }t        j                  j                  |d|      }t        j                  j                  |d||      }	|	|u sJ t	        |	|       |dk(  rt	        |dd  |dd         nt	        |d d dd f   |d d dd f          |j                         }
|dk(  r|
d	d  n
|
d d d	d f   }|dk(  r|
d	d
 n
|
d d d	d
f   }t        j                  j                  |d|      }t        j                  j                  |d||      }||u sJ t	        ||       |dk(  r%t	        |
d d	 |d d	        t	        |
d
d  |d
d         n<t	        |
d d d d	f   |d d d d	f          t	        |
d d d
d f   |d d d
d f          |j                         }|dk(  r|d d n
|d d d df   }|dk(  r|d d
 n
|d d d d
f   }t        j                  j                  |d
|      }t        j                  j                  |d
||      }||u sJ t	        ||       |dk(  rt	        |d
d  |d
d         nt	        |d d d
d f   |d d d
d f          |j                         }|j
                  }t        j                  j                  |||      }||u sJ t	        ||       |j                         }|dk(  r|d d d   n|d d d d df   }t        j                  j                  |||      }||u sJ t	        ||       y )N)ri   ri   r*   r   )r   rj   r   rh   )r=   r   )r=   r   rj   r9      r	   )r   rL   r   r    r   re   )r!   r   rO   y1	expected1result1y2ro   rn   rp   y3y3_selout3	expected3result3y4y4_selout4	expected4result4y5out5result5y6out6result6s                             r   test_fft_inplace_outzTestFFT1D.test_fft_inplace_outu   s    8r&"222VVXFFJJrJ-	&&**Rd*3"}}7I.VVX!)r#2wAssFFFJJrRdJ3	&&**R2Dd*;$7I.19r"#w"#/r!RS&z1QV95VVX19AB"QU)19r!Bx"Q"W+FFJJv$J7	&&**Vr$*?$7I.19r"1vq!u-r"#w"#/r!RaR%y!ArrE(3r!RS&z1QV95VVX AICR2a"f:!)r#2wAssFFFJJv$J7	&&**Vr$*?$7I.19r"#w"#/r!RS&z1QV95VVXtt&&**Rd*5$7I.VVX19r$B$x"Q"W+&&**Rd*5$7I.r   c                    t        j                  d      }t        j                  t        d      5  t         j
                  j                  |d       d d d        t        j                  t        d      5  t         j
                  j                  |t        j                  |      j                  dd             d d d        t        j                  t        d	      5  t         j
                  j                  |t        j                  |t        
             d d d        y # 1 sw Y   xY w# 1 sw Y   txY w# 1 sw Y   y xY w)NrZ   zmust be of ArrayTypematch )rj   has wrong shaper9   r	   zCannot castr;   )
r   r   pytestraises	TypeErrorr    r   rD   r   floatr]   s     r   test_fft_bad_outzTestFFT1D.test_fft_bad_out   s    IIcN]]9,BCFFJJqbJ! D]]:->?FFJJqbmmA.66q"=J> @]]9M:FFJJqbmmAU;J< ;:	 DC??::s$   "D"6AD.;D:"D+.D7:ErX   NrV   rY   r[   c           	      r   t        d      dt        d      z  z   }t        |t        j                  j	                  t        j                  j                  ||      |      d       t        j                  t        d      5  t        j                  j	                  g |       d d d        y # 1 sw Y   y xY w)NrT   r*   rW   rU   r+   z!Invalid number of FFT data pointsr   )r   r   r   r    r.   r   r   r   )r!   rX   r   s      r   	test_ifftzTestFFT1D.test_ifft   s    2JF2J&rvv{{266::ad:3${?	 ]]:!DFFFKKK&F F Fs   "B--B6c                    t        d      dt        d      z  z   }t        t        j                  j                  t        j                  j                  |d      d      t        j                  j	                  |      d       t        t        j                  j	                  |      t        j                  j	                  |d	      d       t        t        j                  j	                  |      t        j
                  d
      z  t        j                  j	                  |d	      d       t        t        j                  j	                  |      dz  t        j                  j	                  |d	      d       y NrT   ri   r*   r
   r   r   rU   r+   rV   rW   X  rY        @r[   )r   r   r   r    fft2r\   r]   s     r   	test_fft2zTestFFT1D.test_fft2   s    8r&"222

266::aa:#8q
AAT	3AAJ7d	DA)99AG44	AA)4AI6T	Cr   c                    t        d      dt        d      z  z   }t        t        j                  j	                  t        j                  j	                  |d      d      t        j                  j                  |      d       t        t        j                  j                  |      t        j                  j                  |d	      d       t        t        j                  j                  |      t        j                  d
      z  t        j                  j                  |d	      d       t        t        j                  j                  |      dz  t        j                  j                  |d	      d       y r   )r   r   r   r    r.   ifft2r\   r]   s     r   
test_ifft2zTestFFT1D.test_ifft2   s    8r&"222BFFKKK$:CQd	4QQZ8t	EQ"'''*::QW5D	BQ95QY7d	Dr   c           
      6   t        d      dt        d      z  z   }t        t        j                  j                  t        j                  j                  t        j                  j                  |d      d      d      t        j                  j	                  |      d       t        t        j                  j	                  |      t        j                  j	                  |d	
      d       t        t        j                  j	                  |      t        j
                  d      z  t        j                  j	                  |d
      d       t        t        j                  j	                  |      dz  t        j                  j	                  |d
      d       y NrT   ri   rh   r*   r   r   r
   r   rU   r+   rV   rW   p  rY        p@r[   )r   r   r   r    fftnr\   r]   s     r   	test_fftnzTestFFT1D.test_fftn   s   < 2f\&:#::FFJJrvvzz"&&**QQ*"7az@qJIFFKKN	' 	AAJ7d	DA)>>AG44	AA/:AI6T	Cr   c           
      6   t        d      dt        d      z  z   }t        t        j                  j	                  t        j                  j	                  t        j                  j	                  |d      d      d      t        j                  j                  |      d       t        t        j                  j                  |      t        j                  j                  |d	
      d       t        t        j                  j                  |      t        j                  d      z  t        j                  j                  |d
      d       t        t        j                  j                  |      dz  t        j                  j                  |d
      d       y r   )r   r   r   r    r.   ifftnr\   r]   s     r   
test_ifftnzTestFFT1D.test_ifftn   s   < 2f\&:#::FFKKBFFKKK$:C!KLFFLLO$	( 	QQZ8t	EQ"'',*??QW5D	BQ?;QY7d	Dr   c           
         t        d      }|j                  d|j                  z  fD ]a  }dD ]Y  }t        t        j                  j	                  |||      d |dz  dz    t        j                  j                  |||      d       [ t        t        j                  j                  ||      t        j                  j                  ||d	      d       t        t        j                  j                  ||      t        j                  |      z  t        j                  j                  ||d
      d       t        t        j                  j                  ||      |z  t        j                  j                  ||d      d       d y )NrT   r   r   r=   rX   r
   rU   r+   r<   rV   rY   r[   )r   sizer   r   r    r0   r\   )r!   r   r=   rX   s       r   	test_rfftzTestFFT1D.test_rfft   s+   2J&&!AFF(#A>FFJJqADJ1+AqD1H>FFKKQTK2? ? A#A44A A#bggaj0A1> A#a'A3$@ $r   c                     t        j                  d      }d}t         j                  j                  ||      }t	        |t         j                  j                  |d |       d |dz  dz    d       y )N      r   r
   +=r?   )r   r   r    r0   r   )r!   r   r=   rO   s       r   test_rfft_evenzTestFFT1D.test_rfft_even  sV    IIaLFFKK1266::ae,YadQh7eDr   c                     t        j                  g d      }t         j                  j                  |      }t	        |t         j                  j                  |      d d d       y )N)r
   r   r   r   r   r   r   )r   rA   r    r0   r   )r!   r   rO   s      r   test_rfft_oddzTestFFT1D.test_rfft_odd
  sA    HH%&FFKKN266::a=!,59r   c           	      r   t        d      }t        |t        j                  j	                  t        j                  j                  |            d       t        |t        j                  j	                  t        j                  j                  |d      d      d       t        |t        j                  j	                  t        j                  j                  |d      d      d       t        |t        j                  j	                  t        j                  j                  |d      d      d       y )NrT   rU   r+   rV   rW   rY   r[   )r   r   r   r    r/   r0   r]   s     r   
test_irfftzTestFFT1D.test_irfft  s    2J266<<A7dC266<<AJ(G' ( )/3	5266<<AG(D$ ( &,0	2266<<AI(F& ( (.2	4r   c                    t        d      }t        t        j                  j	                  |      d d d df   t        j                  j                  |      d       t        t        j                  j                  |      t        j                  j                  |d      d       t        t        j                  j                  |      t        j                  d      z  t        j                  j                  |d      d       t        t        j                  j                  |      d	z  t        j                  j                  |d
      d       y )Nr      rU   r+   rV   rW   r   rY   r   r[   )r   r   r   r    r   rfft2r\   r]   s     r   
test_rfft2zTestFFT1D.test_rfft2  s    8Aq#2#v.QdKQQZ8t	EQ"'''*::QW5D	BQ95QY7d	Dr   c           	      r   t        d      }t        |t        j                  j	                  t        j                  j                  |            d       t        |t        j                  j	                  t        j                  j                  |d      d      d       t        |t        j                  j	                  t        j                  j                  |d      d      d       t        |t        j                  j	                  t        j                  j                  |d      d      d       y )Nr   rU   r+   rV   rW   rY   r[   )r   r   r   r    irfft2r   r]   s     r   test_irfft2zTestFFT1D.test_irfft2#  s    8266==a9E266==aj)I' ) )/3	5266==ag)F$ ) &,0	2266==ai)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 )Nr      rU   r+   rV   rW   r   rY   r   r[   )r   r   r   r    r   rfftnr\   r]   s     r   
test_rfftnzTestFFT1D.test_rfftn-  s    < Aq!RaRx0"&&,,q/MQQZ8t	EQ"'',*??QW5D	BQ?;QY7d	Dr   c           	      r   t        d      }t        |t        j                  j	                  t        j                  j                  |            d       t        |t        j                  j	                  t        j                  j                  |d      d      d       t        |t        j                  j	                  t        j                  j                  |d      d      d       t        |t        j                  j	                  t        j                  j                  |d      d      d       y )Nr   rU   r+   rV   rW   rY   r[   )r   r   r   r    irfftnr   r]   s     r   test_irfftnzTestFFT1D.test_irfftn7  s    < 266==a9E266==aj)I' ) )/3	5266==ag)F$ ) &,0	2266==ai)H& ) (.2	4r   c                 `   t        d      dt        d      z  z   }t        j                  t        d      |t        d      f      }t        j                  ||d d d   j                         f      }t	        t        j
                  j                  |      t        j
                  j                  |      d       t	        t        j
                  j                  |      t        j
                  j                  |d      d       t	        t        j
                  j                  |      t        j                  d	      z  t        j
                  j                  |d
      d       t	        t        j
                  j                  |      dz  t        j
                  j                  |d      d       y )N   r*   r
   r	   rU   r+   rV   rW   rT   rY   rZ   r[   )r   r   rC   conjr   r    hfftr\   r!   r   x_herms      r   	test_hfftzTestFFT1D.test_hfftA  s   2JF2J&Avay 9:NNFAddGLLN34

1rvv{{6':FF+F<4	IF+bggbk9F9	FF+c1F;$	Hr   c           	      :   t        d      dt        d      z  z   }t        j                  t        d      |t        d      f      }t        j                  ||d d d   j                         f      }t	        |t        j
                  j                  t        j
                  j                  |            d       t	        |t        j
                  j                  t        j
                  j                  |d      d      d       t	        |t        j
                  j                  t        j
                  j                  |d	      d	      d       t	        |t        j
                  j                  t        j
                  j                  |d
      d
      d       y )Nr   r*   r
   r	   rU   r+   rV   rW   rY   r[   )r   r   rC   r   r   r    ihfftr   r   s      r   
test_ihfftzTestFFT1D.test_ihfftM  s6   2JF2J&Avay 9:NNFAddGLLN34RVV[[-@ AMRVV[[' .9 .)/9 !- !;AE	GRVV[[$ .9 .&,3 !- !5;?	ARVV[[& .9 .(.7 !- !9?C	Er   opc                     t        d      }g d}|D ]J  } |t        j                  ||            }t        j                   |||      |      }t        ||d       L y )Nr   )r   r
   r   )r   r   r
   )r
   r   r   )r
   r   r   )r   r   r
   )r   r
   r   axesrU   r+   )r   r   r`   r   )r!   r   r   r   aop_trtr_ops          r   	test_axeszTestFFT1D.test_axesY  sT     < QAr||Aq)*ELLAA2EE5t4 r   c                     t        j                  d      j                  dd      } ||dd      j                  dk(  sJ y )Nd   rh   r	   r9   r_   sr   )rh   r9   )r   r   r   shaper!   r   r   s      r   test_s_negative_1zTestFFT1D.test_s_negative_1c  s;     IIcN""2r*!wV,22g===r   c                     t        j                  d      j                  dd      }t        j                  d      5   ||d       d d d        y # 1 sw Y   y xY w)Nr   rh   "`axes` should not be `None` if `s`r   r   )r   r   r   r   r   warnsr   s      r   test_s_axes_nonezTestFFT1D.test_s_axes_nonej  sB     IIcN""2r*\\ DEqG FEEs   AAc                     t        j                  d      j                  dd      }t        j                  d      5   ||dd        d d d        y # 1 sw Y   y xY w)Nr   rh   r   r   r   r   r   r   s      r   test_s_axes_none_2DzTestFFT1D.test_s_axes_none_2Dq  sB    IIcN""2r*\\ DEqG$' FEEs   AAc                     t        d      }t        j                  d      5   ||dd       d d d        y # 1 sw Y   y xY w)Nr   z%array containing `None` values to `s`r   )rh   Nrh   r   r   )r   r   r   r   s      r   test_s_contains_nonezTestFFT1D.test_s_contains_nonew  s4     < \\ GHqN3 IHHs	   7A c           	         t        d      }t        j                  j                  |      }|j                  dz  }t        j
                  j
                  t        j
                  j                  ft        j
                  j                  t        j
                  j                  ft        j
                  j                  t        j
                  j                  fg}|D ]m  \  }}|j                  d|j                  z  fD ]J  }dD ]C  } ||||      } ||||      }t        |t        j                  j                  |      d       E L o y )NrT   r   r   r   rU   r+   )r   r   linalgrX   r   r    r.   r0   r/   r   r   r   )	r!   r   x_normr=   
func_pairsforwbackrX   tmps	            r   test_all_1d_norm_preservingz%TestFFT1D.test_all_1d_norm_preserving  s    2J"FFQJvvzz266;;/vv{{BFFLL1 vv||RVV[[1	
 %JD$ffah'BDqAD1Csad3C#F$&IINN3$7dD C ( %r   r   )r_   r   r   Nc                    fd}|t         u rOt        d      dt        d      z  z   }t        j                  j                  t        j                  j
                  }}n?t        d      }t        j                  j                  t        j                  j                  }} |||      } ||      }	 |||	|      }
|
|	u sJ t        |
|        |||      }|t         u r|	n ||      } ||	||      }||u sJ t        ||       y )Nc                     r)t        j                  | j                        j                  S t        j                  |       S rc   rd   rf   s    r   rD   z4TestFFT1D.test_fftn_out_argument.<locals>.zeros_like  rg   r   rh   r9   r   r*   r   )rj   r   )	rk   r   r   r    r   r   r   r   r   )r!   r5   r`   r   rD   r   r    r.   rl   rj   rm   rn   ro   rp   s     `           r   test_fftn_out_argumentz TestFFT1D.test_fftn_out_argument  s    	( Gz"Rz(:%::ARVV\\Cz"AbffmmCqt$"QCd+}}68,-	w&sJy,As40$7I.r   r    c                    |t         j                  j                  u rt        d      }nt        d      dt        d      z  z   }t	        j
                  t        d      5   ||t        j                  |      dd       d d d        d} |||d	      }t        j                  |      } |||d|
      }||u sJ t        ||       y # 1 sw Y   JxY w)Nr   r*   r   r   r   r   r   r   )rj   r   r   )rh   r9   r9   r   r   r   rj   )	r   r    r   r   r   r   r   rD   r   )r!   r    r   r   rl   rj   rm   s          r   test_fftn_out_and_s_interactionz)TestFFT1D.test_fftn_out_and_s_interaction  s     "&&,,z"Az"Rz(:%::A]]:->?r}}Q'99E @ qAI.mmH%Q!)5}}68, @?s    CCr   )	   r9   r9   r   c                    t        d      dt        d      z  z   }t        j                  j                  ||d      }t        j                  |      }t        j                  j                  ||d|      }||u sJ t        ||       y )N)r   r9   r   r   r*   r   r   r   )r   r   r    r   rD   r   )r!   r   r   rl   rj   rm   s         r   !test_irfftn_out_and_s_interactionz+TestFFT1D.test_irfftn_out_and_s_interaction  ss     < 2f\&:#::66==ai=8mmH%qAI3?}}68,r   N)2r#   r$   r%   r4   r   markparametrizer   singledouble
longdoublerJ   rR   r^   rk   r   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r&   r   r   r(   r(      s   1 [[Wryy"))R]]&KLB MB" [[Wryy"))R]]&KLE ME.B [[VV,[[Ww&67[[[-8/ 9 8 -/6 [[VaV,9/ -9/v= [[V%KL' M'	C	D
C
D@"E:
4D4D4
H
E [[TBFFKK$&FFLL"&&--$A B5B5 [[TBFFKK$&FFKK$? @>@>
 [[TBFFKK$&FFLL"&&--$A BB
 [[TBFFKK#>?( @(
 [[TBFFKK$&FFLL"&&--$&FFKK$? @4@4
D& [[V%;<[[Ww&67[[[-8/ 9 8 =/6 [[URVV[["&&,,$MN- O-  [[S9i"89- :-r   r(   r5   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*   r         F)rL   g       @r  r	   r    r   r   r>   )r   r   )r_   )r
   r   r   r   ))r   )r
   )r   Nr   )r   r   RandomStaterandrB   r\   log2r   finfor5   epsasfortranarrayascontiguousarrayr#   endswithr-   r   extendr   )r5   r  r    rngX_tolYr   X_resY_resr   axs               r   test_fft_with_orderr    sf    ))


#CAr!!%e!4A))BHHQWW,=,A,AAD|a  ddG  4R4)
||U#!HD%E%EE5t$?  
		/	0'<<  (KK01BOEOEE5t$? 
 lr   Cr=   )Nr     c                    t         j                  j                  d      }|j                  d      }t        j                  |t         j
                  |       }t         j                  j                  ||      }|j                  j                  |j                  j                  k(  sJ |j                  j                  |j                  j                  k(  sJ y )Nr  rh   )r5   r  r<   )
r   r   r
  r  asarray	complex64r    flagsc_contiguousf_contiguous)r  r=   r  r   ress        r   test_fft_output_orderr$    s     ))


#CA


1BLL6A
&&**Q!*
C99!!QWW%9%999999!!QWW%9%9999r   zCannot start thread)reasonc                   2    e Zd ZdZdZd Zd Zd Zd Zd Z	y)	TestFFTThreadSafer8   )i      c                    fd}t        j                         } | }t        | j                        D cg c]  }t	        j
                  |||f       }}|D cg c]  }|j                          c} |D cg c]  }|j                          c} t        | j                        D ]  }t        |j                  d      |d       ! y c c}w c c}w c c}w )Nc                 .    |j                   |         y rc   )put)argsqfuncs     r   workerz.TestFFTThreadSafe._test_mtsame.<locals>.worker  s    EE$+r   )targetr,  r9   )timeoutz6Function returned wrong value in multithreaded context)
queueQueuer-   threads	threadingThreadstartjoinr   get)	r!   r.  r,  r/  r-  rl   r3   tr   s	    `       r   _test_mtsamezTestFFTThreadSafe._test_mtsame  s    	 KKM; DLL)+) V4)<) 	
 +AqA1a1t||$AquuQu/H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    GGD$$%)","&&**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   r   zTestFFTThreadSafe.test_ifft  s8    GGD$$%)","&&++q)r   c                     t        j                  | j                        }| j                  t         j                  j
                  |       y rc   )r   r>  r?  r;  r    r0   r@  s     r   r   zTestFFTThreadSafe.test_rfft  s.    GGD$$%"&&++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   r   zTestFFTThreadSafe.test_irfft!  s8    GGD$$%)","&&,,*r   N)
r#   r$   r%   r4  r?  r;  r^   r   r   r   r&   r   r   r'  r'    s&    GKJ$)**+r   r'  c                  &   t        j                  d      } t         j                  j                  | d       t         j                  j	                  | d       t         j                  j                  t        j
                  dgt              d       y )Nrh   r
   r<   r   )r   r   r    r/   r   rA   rk   )r   s    r   test_irfft_with_n_1_regressionrE  &  sX    
		"AFFLLaLFFKKQKFFLL1#w'2L.r   c                      t        j                  d      dz  } t         j                  j                  | d      }t        j                  g d      }t        ||       y )Nr9   y      ?      ?rh   r<   )
g      4@gk "#@g'g$ pn]k@grg      @gG& gdƍĿgt=M?g@L>M4)r   r   r    r   rA   r   )r   rm   rl   s      r   "test_irfft_with_n_large_regressionrG  .  sI    
		!AVV[[b[!Fxx 2 3H FH%r   data)FTFrh   r;   r9   c                      ||       }| j                  t        j                  | d            } ||      }t        ||       y )Nr:   )rB   r   result_typer   )rH  r    rm   
float_datarl   s        r   #test_fft_with_integer_or_bool_inputrL  8  s9     YFR^^D"56J:Hvx(r   )(numpyr   r   numpy.randomr   numpy.testingr   r   r   r   r5  r2  r   r   r(   r   r   float32float64r  
complex128r    r   r   r.   r   r   r  r$  skipifr'  rE  rG  r0   r/   rA   r   uint8int16rL  r&   r   r   <module>rV     s!     
 
  +< <r- r-j 	RZZr}}=? 3(8"9:	RVV[["&&++	bffllBFFLL	23	3 ;?> 3*-m,: - .: G$9:$+ $+ ;$+N/& FFJJRVV[["&&,,!  BHH!"BIIb!BIIarxx " 
))r   