
    G/Ph\_                     `   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                            d
ddg          ej                            dg d          d                         Zej                            e	d           G d d                      Zd Zd Z ej                            dej        j        ej        j        ej        j!        ej        j"        g          ej                            d ej#        g d           ej$        dej%                   ej$        dej&                  g          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      ^/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numpy/fft/tests/test_pocketfft.pyfft1r      sm    AA"%K29Q<<!+,EIaLL  Q''%/E6!BF5MM/****    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"&*iii;;;;;r   N)__name__
__module____qualname__r"    r   r   r   r      s#        < < < < <r   r   c            	          e Zd Zd Zej                            dej        ej	        ej
        g          d             Zej                            dej        ej	        ej
        g          d             Zd Zej                            dd          ej                            deef          ej                            dd	          d
                                     Zej                            dddg          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d Z d Z!ej                            d ej"        j#        ej"        j$        ej"        j%        ej"        j&        g          d!             Z'ej                            d ej"        j#        ej"        j$        ej"        j(        ej"        j)        g          d"             Z*ej                            d ej"        j#        ej"        j$        ej"        j%        ej"        j&        g          d#             Z+ej                            d ej"        j(        ej"        j)        g          d$             Z,ej                            d ej"        j#        ej"        j$        ej"        j%        ej"        j&        ej"        j(        ej"        j)        g          d%             Z-d& Z.ej                            d'g d(          ej                            deef          ej                            dd	          d)                                     Z/ej                            d*ej"        j#        ej"        j$        ej"        j%        g          d+             Z0ej                            d,d-d.g          d/             Z1d0S )1	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    6NNRv..F^^q&!! 	1 	1ABFKK

1QqS6(:(:;;QqsV!&( ( ( (BFLLR!W)=)=qAAqsG%1 1 1 1 1	1 	1r   dtypec                    d}dt          j        t          j        d|                    z  }t          |                              |          dt          |                              |          z  z   }t          j        |t          j        |          g          }t          |                              |          }t          j        |t          j        |          g          }t          d|dz            D ]}t           j        	                    t           j                            ||          |          }	|	j
        j        |k    sJ t          |	|d	|         |d	
           t           j                            t           j                            ||          |          }
|
j        |k    sJ t          |
|d	|         |d	
           d S 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$   s    2:bhr7778886NN!!%((2fVnn.C.CE.J.J+JJ^Qa 0 0122F^^""5))nb"-"3"3455q&(## 	B 	BAfkk"&**Q!*"4"4k::G<%....GR!W4a@@@@fll26;;rQ;#7#71l==G=E))))GS1XDqAAAAA	B 	Br   c                    d}dt          j        t          j        d|                    z  }t          |                              |          dt          |                              |          z  z   }t          j        |t          j        |          g          }t          d|dz            D ]C}t           j                            t           j        	                    ||          |          }|j
        |j
        k    sJ t          ||d	|         |d	
           |                                }|dz  dz   }	d	|j        d	<   |dz  d	k    rd	|j        |	dz
  d <   t          j        |t          j        |          g          }
t           j                            t           j                            ||          |          }|j
        |j
        k    sJ t          ||
d	|	         |d	
           Ed S 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:bhr7778886NN!!%((2fVnn.C.CE.J.J+JJ^Qa 0 0122q&(## 	E 	EA&**RV[[a[%8%8A*>>K$////KAaCt!DDDD AQ
AAF1I1uzz qsttBM!$4$4 566B&++bfll1l&:&:a+@@K$////KAaCt!DDDDD	E 	Er   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_fftN   s   2JJF2JJ&QAT::::QAJ!?!?dKKKKQ"'"++-

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

19
55D	B 	B 	B 	B 	B 	Br   r   r   r
   	transpose)TFc                    fd}|t           u rEt          d          dt          d          z  z   }t          j        j        t          j        j        }}n1t          d          }t          j        j        t          j        j        }} |||          } ||          }	 |||	|          }
|
|	u sJ t          |
|            |||          }|t           u r|	n
 ||          } ||	||          }||u sJ t          ||           d S )Nc                 l    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[   0     (}QS))++}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   s9   	( 	( 	( 	( 	( Gx  2fX&6&6#66A
BFKCCx  ARV\C3qt$$$j""QCd+++}}}}68,,,D---	w&&ssJJy,A,A$s4000$7I.....r   r   r
   c                    t          d          dt          d          z  z   }|                                }t          j                            ||          }t          j                            |||          }||u sJ t	          ||           |                                }|dk    r
|d d         n|d d d df         }t          j                            |d|          }t          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                    |                                }
|dk    r
|
d	d          n|
d d d	d f         }|dk    r
|
d	d
         n|
d d d	d
f         }t          j                            |d|          }t          j                            |d||          }||u sJ t	          ||           |dk    rAt	          |
d d	         |d d	                    t	          |
d
d          |d
d                     nPt	          |
d d d d	f         |d d d d	f                    t	          |
d d d
d f         |d d d
d f                    |                                }|dk    r
|d d         n|d d d df         }|dk    r
|d d
         n|d d d d
f         }t          j                            |d
|          }t          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        }t          j                            |||          }||u sJ t	          ||           |                                }|dk    r|d d d         n|d d d d df         }t          j                            |||          }||u sJ t	          ||           d S )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2VVXXFJJrJ--	&**Rd*33"}}}}7I...VVXX!))r#2#wwAAAssFFJJrRdJ33	&**R2Dd*;;$7I...199r"##w"##////r!!!RSS&z1QQQV9555VVXX199ABB"QQQU)199r!B$xx"QQQ"W+FJJv$J77	&**Vr$*??$7I...199r"1"vq!u---r"##w"##////r!!!RaR%y!AAArrE(333r!!!RSS&z1QQQV9555VVXX AIICRC2aaa"f:!))r#2#wwAAAssFFJJv$J77	&**Vr$*??$7I...199r"##w"##////r!!!RSS&z1QQQV9555VVXXt&**Rd*55$7I...VVXX199r$$B$xx"QQQ"W+&**Rd*55$7I.....r   c                    t          j        d          }t          j        t          d          5  t           j                            |d           d d d            n# 1 swxY w Y   t          j        t          d          5  t           j                            |t          j        |                              dd                     d d d            n# 1 swxY w Y   t          j        t          d	          5  t           j                            |t          j        |t          
                     d d d            d S # 1 swxY w Y   d S )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   IcNN]9,BCCC 	" 	"FJJqbJ!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"]:->??? 	? 	?FJJqbmA..66q"==J>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?]9M::: 	= 	=FJJqbmAU;;;J<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s6   "AA"%A"ACCC>;EE
E
rX   NrV   rY   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 )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    2JJF2JJ&rv{{26::ad:33${??	 	 	 	 ]:!DF F F 	' 	'FKK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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   sO   8r&"2"222

26::aa:#8#8q
AAAT	3 	3 	3 	3AAJ77d	D 	D 	D 	DA)9)99AG444	A 	A 	A 	AA)4AI66T	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 r   )r   r   r   r    r.   ifft2r\   r]   s     r   
test_ifft2zTestFFT1D.test_ifft2   sO   8r&"2"222BFKKK$:$:CCQd	4 	4 	4 	4QQZ88t	E 	E 	E 	EQ"''*:*::QW55D	B 	B 	B 	BQ95QY77d	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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   sd   <  2f\&:&:#::FJJrvzz"&**QQ*"7"7az@@qJIIFKKNN	' 	' 	' 	' 	AAJ77d	D 	D 	D 	DA)>)>>AG444	A 	A 	A 	AA/:AI66T	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 r   )r   r   r   r    r.   ifftnr\   r]   s     r   
test_ifftnzTestFFT1D.test_ifftn   sd   <  2f\&:&:#::FKKBFKKK$:$:CC!KLLFLLOO$	( 	( 	( 	( 	QQZ88t	E 	E 	E 	EQ"',*?*??QW55D	B 	B 	B 	BQ?;QY77d	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 )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   2JJ&!AF(# 	@ 	@A> ? ?FJJqADJ11+AqD1H+>FKKQTK22? ? ? ? ? A##A444A A A A A##bgajj0A11> > > > A##a'A33$@ @ @ @ @	@ 	@r   c                     t          j        d          }d}t           j                            ||          }t	          |t           j                            |d |                   d |dz  dz            d           d S )N      r   r
   +=r?   )r   r   r    r0   r   )r!   r   r=   rO   s       r   test_rfft_evenzTestFFT1D.test_rfft_even  sk    IaLLFKK126::ae,,YadQhY7eDDDDDDr   c                     t          j        g d          }t           j                            |          }t	          |t           j                            |          d d         d           d S )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
  sY    H%%%&&FKKNN26::a==!,5999999r   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   rU   r+   rV   rW   rY   r[   )r   r   r   r    r/   r0   r]   s     r   
test_irfftzTestFFT1D.test_irfft  s$   2JJ26<<A77dCCCC26<<AJ(G(G' ( ) )/3	5 	5 	5 	526<<AG(D(D$ ( & &,0	2 	2 	2 	226<<AI(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 )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qqq#2#v.QdKKKKQQZ88t	E 	E 	E 	EQ"''*:*::QW55D	B 	B 	B 	BQ95QY77d	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 )Nr   rU   r+   rV   rW   rY   r[   )r   r   r   r    irfft2r   r]   s     r   test_irfft2zTestFFT1D.test_irfft2#  s&   826==a99EEEE26==aj)I)I' ) ) )/3	5 	5 	5 	526==ag)F)F$ ) & &,0	2 	2 	2 	226==ai)H)H& ) ( (.2	4 	4 	4 	4 	4 	4r   c           	      f   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           t          j        d          }t          j                            |dd          }|j        dk    sJ t          j                            t          j                            t          j        	                    |dd          dd          dd          }|j        dk    sJ t          ||d           d S )Nr      rU   r+   rV   rW   r   rY   r   r[   )r   r   )r   r   r
   )rh   ri   (   )axess)rh      r
   r   )r   r=   r   ri   rh   )
r   r   r   r    r   rfftnr\   onesshaper0   )r!   r   rm   rl   s       r   
test_rfftnzTestFFT1D.test_rfftn-  s   <  Aqqq!!!RaRx0"&,,q//MMMMQQZ88t	E 	E 	E 	EQ"',*?*??QW55D	B 	B 	B 	BQ?;QY77d	D 	D 	D 	D GFOOai<@@|x''''6::bfjjQQ")E)E!"b ) * *01R  9 9~))))t444444r   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 )Nr   rU   r+   rV   rW   rY   r[   )r   r   r   r    irfftnr   r]   s     r   test_irfftnzTestFFT1D.test_irfftn?  s&   <  26==a99EEEE26==aj)I)I' ) ) )/3	5 	5 	5 	526==ag)F)F$ ) & &,0	2 	2 	2 	226==ai)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	   rU   r+   rV   rW   rT   rY   rZ   r[   )r   r   rC   conjr   r    hfftr\   r!   r   x_herms      r   	test_hfftzTestFFT1D.test_hfftI  sw   2JJF2JJ&Avayy 9::NFAdddGLLNN344

1rv{{6':':FFFFF++F<<4	I 	I 	I 	IF++bgbkk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 )Nr   r*   r
   r	   rU   r+   rV   rW   rY   r[   )r   r   rC   r   r   r    ihfftr   r   s      r   
test_ihfftzTestFFT1D.test_ihfftU  s   2JJF2JJ&Avayy 9::NFAdddGLLNN344RV[[-@-@ A AMMMMRV[[' .9 .) .)/9 !- !; !;AE	G 	G 	G 	GRV[[$ .9 .& .&,3 !- !5 !5;?	A 	A 	A 	ARV[[& .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 )Nr   )r   r
   r   )r   r   r
   )r
   r   r   )r
   r   r   )r   r   r
   )r   r
   r   r   rU   r+   )r   r   r`   r   )r!   r   r   r   aop_trtr_ops          r   	test_axeszTestFFT1D.test_axesa  s     <  QQQ 	5 	5ABr|Aq))**ELAA22EE5t44444	5 	5r   c                     t          j        d                              dd          } ||dd          j        dk    sJ d S )Nd   rh   r	   r9   r_   r   r   )rh   r9   )r   r   r   r   r!   r   r   s      r   test_s_negative_1zTestFFT1D.test_s_negative_1k  sL     IcNN""2r**r!wV,,,2g======r   c                     t          j        d                              dd          }t          j        d          5   ||d           d d d            d S # 1 swxY w Y   d S )Nr   rh   "`axes` should not be `None` if `s`r   r   )r   r   r   r   r   warnsr   s      r   test_s_axes_nonezTestFFT1D.test_s_axes_noner  s     IcNN""2r**\ DEEE 	 	BqG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA Ac                     t          j        d                              dd          }t          j        d          5   ||dd            d d d            d S # 1 swxY w Y   d S )Nr   rh   r   r   r   r   r   r   s      r   test_s_axes_none_2DzTestFFT1D.test_s_axes_none_2Dy  s    IcNN""2r**\ DEEE 	( 	(BqG$''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   AA!Ac                     t          d          }t          j        d          5   ||dd           d d d            d S # 1 swxY w Y   d S )Nr   z%array containing `None` values to `s`r   )rh   Nrh   r   r   )r   r   r   r   s      r   test_s_contains_nonezTestFFT1D.test_s_contains_none  s     <  \ GHHH 	4 	4BqN3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   AAA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           NSjd S )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$   2JJ""FQJvz26;/v{BFL1 v|RV[1	
 % 	D 	DJD$fah' D DB D DD$qAD111C$sad333C#F$&INN3$7$7dD D D D DDD	D 	Dr   r   )r_   r   r   Nc                    fd}|t           u rEt          d          dt          d          z  z   }t          j        j        t          j        j        }}n1t          d          }t          j        j        t          j        j        }} |||          } ||          }	 |||	|          }
|
|	u sJ t          |
|            |||          }|t           u r|	n
 ||          } ||	||          }||u sJ t          ||           d S )Nc                 l    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  s9   	( 	( 	( 	( 	( Gz""Rz(:(:%::ARV\CCz""AbfmC3qt$$$j""QCd+++}}}}68,,,D---	w&&ssJJy,A,A$s400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            n# 1 swxY w Y   d} |||d	          }t          j        |          } |||d|
          }||u sJ t          ||           d S )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  sG    "&,z""AAz""Rz(:(:%::A]:->??? 	F 	FCr}Q''99EEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 3qAI...mH%%Q!)555}}}}68,,,,,s   !"BBBr   )	   r9   r9   r   c                 (   t          d          dt          d          z  z   }t          j                            ||d          }t          j        |          }t          j                            ||d|          }||u sJ t          ||           d S )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  s     <  2f\&:&:#::6==ai=88mH%%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 1 1 [Wry")R]&KLLB B MLB" [Wry")R]&KLLE E MLE.B B B [VV,,[Ww&677[[-88/ / 98 87 -,/6 [VaV,,9/ 9/ -,9/v= = = [V%KLL' ' ML'	C 	C 	C	D 	D 	D
C 
C 
C
D 
D 
D@ @ @"E E E: : :
4 4 4D D D4 4 45 5 5$4 4 4
H 
H 
H
E 
E 
E [TBFK$&FL"&-$A B B5 5B B5 [TBFK$&FK$? @ @> >@ @>
 [TBFK$&FL"&-$A B B B B
 [TBFK#>??( ( @?(
 [TBFK$&FL"&-$&FK$? @ @4 4@ @4
D D D& [V%;%;%;<<[Ww&677[[-88/ / 98 87 =</6 [URV["&,$MNN- - ON-  [S9i"899- - :9- - -r   r(   r5   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*   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    s    )


#
#CAr!!%e!44A)))BHQW,=,=,AAD||a   dddG 44R4))
|U## !HH 	@ 	@DC%%%EC%%%EE5t$?????	@ 	@ 
		/	0	0 	'''<  (( 	2KK000111 	@ 	@BCOOOECOOOEE5t$?????	@ 	@
 llr   Cr=   )Nr     c                 b   t           j                            d          }|                    d          }t          j        |t           j        |           }t           j                            ||          }|j        j        |j        j        k    sJ |j        j	        |j        j	        k    sJ d S )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

1BL666A
&**Q!*

C9!QW%999999!QW%9999999r   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 )	TestFFTThreadSafer8   )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 rc   )put)argsqfuncs     r   workerz.TestFFTThreadSafe._test_mtsame.<locals>.worker  s!    EE$$+r   c                 @    g | ]}t          j        f           S ))targetr/  )	threadingThread).0r3   r/  r0  r2  s     r   
<listcomp>z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>  s=     + + + V4)<<< + + +r   c                 6    g | ]}|                                 S r&   )startr7  r   s     r   r8  z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>  s     qr   c                 6    g | ]}|                                 S r&   )joinr;  s     r   r8  z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>  s     ar   r9   )timeoutz6Function returned wrong value in multithreaded context)queueQueuer-   threadsr   get)r!   r1  r/  rl   tr3   r0  r2  s    ``   @@r   _test_mtsamezTestFFTThreadSafe._test_mtsame  s    	 	 	 	 	 KMM4;+ + + + + +DL))+ + +A1t|$$ 	J 	JAquuQu//HJ J J J	J 	Jr   c                     t          j        | j                  dz  dz   }|                     t           j        j        |           d S Nr
   y                )r   r   input_shaperD  r    r!   r   s     r   r^   zTestFFTThreadSafe.test_fft  s>    GD$%%)","&*a(((((r   c                     t          j        | j                  dz  dz   }|                     t           j        j        |           d S rF  )r   r   rG  rD  r    r.   rH  s     r   r   zTestFFTThreadSafe.test_ifft!  s>    GD$%%)","&+q)))))r   c                     t          j        | j                  }|                     t           j        j        |           d S rc   )r   r   rG  rD  r    r0   rH  s     r   r   zTestFFTThreadSafe.test_rfft%  s4    GD$%%"&+q)))))r   c                     t          j        | j                  dz  dz   }|                     t           j        j        |           d S rF  )r   r   rG  rD  r    r/   rH  s     r   r   zTestFFTThreadSafe.test_irfft)  s>    GD$%%)","&,*****r   N)
r#   r$   r%   rA  rG  rD  r^   r   r   r   r&   r   r   r*  r*    sl        GKJ J J$) ) )* * ** * *+ + + + +r   r*  c                  &   t          j        d          } t           j                            | d           t           j                            | d           t           j                            t          j        dgt                    d           d S )Nrh   r
   r<   r   )r   r   r    r/   r   rA   rk   )r   s    r   test_irfft_with_n_1_regressionrM  .  sk    
	"AFLLaLFKKQKFLL1#w''2L.....r   c                      t          j        d          dz  } t           j                            | d          }t          j        g d          }t          ||           d S )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_regressionrO  6  sc    
	!AV[[b[!!Fx 2 2 2 3 3H FH%%%%%r   data)FTFrh   r;   r9   c                      ||           }|                      t          j        | d                    } ||          }t          ||           d S )Nr:   )rB   r   result_typer   )rP  r    rm   
float_datarl   s        r   #test_fft_with_integer_or_bool_inputrT  @  sQ     SYYFR^D"5566Js:Hvx(((((r   )(numpyr   r   numpy.randomr   numpy.testingr   r   r   r   r5  r?  r   r   r(   r  r  float32float64r"  
complex128r    r   r   r.   r   r   r  r'  skipifr*  rM  rO  r0   r/   rA   r   uint8int16rT  r&   r   r   <module>r^     s!             
 
 
 
 
 
 
 
 
 
 
 
     + + +< < < < < < < <z- z- z- z- z- z- z- z-z 	RZr}=? ? 3(8"9::	RV["&+	bflBFL	23 3 	3 3 ;:? ?> 3*--mmm,,: : -, .-: G$9::$+ $+ $+ $+ $+ $+ $+ ;:$+N/ / /& & & FJRV["&,!   BH!!!""BIb!!!BIarx   "  
) )  ) ) )r   