
     h`8                        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
mZ d dlmZ d dlmZ d Z G d d          Z G d d	          Z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  G d d          Z!ej                            dej        ej        ej"        ej#        g          d             Z$ G d d          Z%dS )    N)random)assert_array_almost_equalassert_array_equalassert_allclose)raisesc                 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      V/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/scipy/fft/tests/test_numpy.pyfft1r      ss    AAIry||E!HH,-EIaLL  Q''%/E6!BF5MM/****    c                       e Zd Zd ZdS )TestFFTShiftc                 L    t          t          t          j        g dd           d S )N)r
         r   )assert_raises
ValueErrorfft)selfs    r   
test_fft_nzTestFFTShift.test_fft_n   s"    j#'999a88888r   N)__name__
__module____qualname__r$    r   r   r   r      s#        9 9 9 9 9r   r   c                   f   e 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d Zd Zej                            dej        ej        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        ej        ej        ej        ej        g          d             Z'd Z(ej                            de)j*        e)j+        e)j,        e)j-        g          d             Z.dS )	TestFFT1Dc           
         d}t          |          dt          |          z  z   }t          |          }t          d|          D ]}t          t          j        t          j        |d|                             |d|         d           t          t          j        t          j        |d|                   |          |d|         d           d S )Ni                 ?r
   r      )decimal)r   ranger   r"   ifftirfftrfft)r#   maxlenr   xris        r   test_identityzTestFFT1D.test_identity   s    6NNRv..F^^q 	; 	;A%chswq1v&?&?1Q3.02 2 2 2%ciAaC0A0A!&D&D&(1gr; ; ; ; ;	; 	;r   c                    t          d          dt          d          z  z   }t          |          }t          |t          j        |                     t          |t          j        |d                     t          |t	          j        d          z  t          j        |d                     t          |dz  t          j        |d                     d S )N   r,   backwardnormorthoforward)r   r   r   r"   r   sqrtr#   r   expects      r   test_fftzTestFFT1D.test_fft&   s    2JJF2JJ&a!&#'!**555!&#'!**E*E*EFFF!&272;;"6"%'!'":":":	< 	< 	<!&2+swqy/I/I/IJJJJJr   c           
      ,   t          d          dt          d          z  z   }t          |t          j        t          j        |                               dD ]:}t          |t          j        t          j        ||          |                     ;d S )Nr8   r,   r9   r<   r=   r:   )r   r   r"   r0   r#   r   r;   s      r   	test_ifftzTestFFT1D.test_ifft/   s    2JJF2JJ&!!SXcgajj%9%9:::4 	? 	?D%38CGAD111===? ? ? ?	? 	?r   c                    t          d          dt          d          z  z   }t          j        t          j        |d          d          }t          |t          j        |                     t          |t          j        |d                     t          |t	          j        d          z  t          j        |d	                     t          |dz  t          j        |d
                     d S Nr8      r,   r
   r   r   r9   r:   X  r<   r=   )r   r"   r   fft2r   r>   r?   s      r   	test_fft2zTestFFT1D.test_fft26   s    8r&"2"222+++!444!&#(1++666!&#(1:*F*F*FGGG!&277+;+;";"%(17";";";	= 	= 	=!&G"4"%(19"="="=	? 	? 	? 	? 	?r   c                    t          d          dt          d          z  z   }t          j        t          j        |d          d          }t          |t          j        |                     t          |t          j        |d                     t          |t          j        d          z  t          j        |d	                     t          |dz  t          j        |d
                     d S rG   )r   r"   r0   r   ifft2r   r>   r?   s      r   
test_ifft2zTestFFT1D.test_ifft2@   s    8r&"2"222#(11---A666!&#)A,,777!&#)AJ*G*G*GHHH!&277+;+;";"%)AG"<"<"<	> 	> 	>!&G"4"%)AI">">">	@ 	@ 	@ 	@ 	@r   c                    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	          z  t          j        |d
                     t          |d	z  t          j        |d                     d S Nr8   rI   
   r,   r   r   r
   r   r9   r:   p  r<   r=   )r   r"   r   fftnr   r>   r?   s      r   	test_fftnzTestFFT1D.test_fftnJ   s    <  2f\&:&:#::!3!3!3!<<<1EEE!&#(1++666!&#(1:*F*F*FGGG!&27<+@+@"@"%(17";";";	= 	= 	=!&L"9"%(19"="="=	? 	? 	? 	? 	?r   c                 6   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        |          t          j        d	          z  t          j        |d
                     t          |d	z  t          j        |d                     d S rQ   )r   r"   r0   r   ifftnr   r>   r?   s      r   
test_ifftnzTestFFT1D.test_ifftnT   s   <  2f\&:&:#::#(38AA#6#6#6Q???aHHH!&#)A,,777!&#)AJ*G*G*GHHH!#)A,,1F1F"F"%)AG"<"<"<	> 	> 	>!&L"9"%)AI">">">	@ 	@ 	@ 	@ 	@r   c           
         t          d          }|j        d|j        z  fD ]}dD ]J}t          t          j        |||          d |dz  dz            t          j        |||                     Kt          t          j        ||          t          j        |          z  t          j        ||d                     d S )N   r   )Nr9   r<   r=   nr;   r
   )r]   r<   )r   sizer   r"   r2   r   r>   )r#   r   r]   r;   s       r   	test_rfftzTestFFT1D.test_rfft^   s    2JJ&!AF(# 	F 	FA> 1 1)GA...{A{;HQ!$///1 1 1 1 &chqA&6&6&6&C&)hqAG&D&D&DF F F F	F 	Fr   c           
         t          d          }t          |t          j        t          j        |                               dD ]:}t          |t          j        t          j        ||          |                     ;d S )Nr8   rC   r:   )r   r   r"   r1   r2   rD   s      r   
test_irfftzTestFFT1D.test_irffth   s    2JJ!!SYsx{{%;%;<<<4 	A 	AD%39SXad333$???A A A A	A 	Ar   c                    t          d          }t          j        |          d d d df         }t          |t          j        |                     t          |t          j        |d                     t          |t          j        d          z  t          j        |d                     t          |dz  t          j        |d                     d S NrH      r9   r:   rJ   r<   r=   )r   r"   rK   r   rfft2r   r>   r?   s      r   
test_rfft2zTestFFT1D.test_rfft2o   s    8!QQQV$!&#)A,,777!&#)AJ*G*G*GHHH!&277+;+;";"%)AG"<"<"<	> 	> 	>!&G"4"%)AI">">">	@ 	@ 	@ 	@ 	@r   c           
         t          d          }t          |t          j        t          j        |                               dD ]:}t          |t          j        t          j        ||          |                     ;d S NrH   rC   r:   )r   r   r"   irfft2re   rD   s      r   test_irfft2zTestFFT1D.test_irfft2y   s    8!!SZ	!%=%=>>>4 	C 	CD%3:ci555DAAAC C C C	C 	Cr   c                    t          d          }t          j        |          d d d d d df         }t          |t          j        |                     t          |t          j        |d                     t          |t          j        d          z  t          j        |d                     t          |dz  t          j        |d                     d S NrR      r9   r:   rT   r<   r=   )r   r"   rU   r   rfftnr   r>   r?   s      r   
test_rfftnzTestFFT1D.test_rfftn   s    <  !QQQ2A2X&!&#)A,,777!&#)AJ*G*G*GHHH!&27<+@+@"@"%)AG"<"<"<	> 	> 	>!&L"9"%)AI">">">	@ 	@ 	@ 	@ 	@r   c           
         t          d          }t          |t          j        t          j        |                               dD ]:}t          |t          j        t          j        ||          |                     ;d S NrR   rC   r:   )r   r   r"   irfftnrn   rD   s      r   test_irfftnzTestFFT1D.test_irfftn   s    <  !!SZ	!%=%=>>>4 	C 	CD%3:ci555DAAAC C C C	C 	Cr   c                    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          z  t	          j        |d                     t          |dz  t	          j        |d	                     d S )
N   r,   r
   r	   r9   r:   r8   r<   r=   )r   r   concatenateconjr"   r   hfftr>   )r#   r   x_hermr@   s       r   	test_hfftzTestFFT1D.test_hfft   s   2JJF2JJ&Avayy 9::NFAdddGLLNN344!&#(6*:*:;;;!&#(6
*K*K*KLLL!&272;;"6"%(6"@"@"@	B 	B 	B!&2+"%(6	"B"B"B	D 	D 	D 	D 	D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D ]:}t	          |t          j        t          j        ||          |                     ;d S )Nru   r,   r
   r	   rC   r:   )r   r   rv   rw   r   r"   ihfftrx   )r#   r   ry   r;   s       r   
test_ihfftzTestFFT1D.test_ihfft   s    2JJF2JJ&Avayy 9::NFAdddGLLNN344!&#)CHV4D4D*E*EFFF4 	K 	KD%	#(6"="="=DIIIK K K K	K 	Kr   c           
         t          d          }t          |t          j        t          j        |                               dD ]:}t          |t          j        t          j        ||          |                     ;d S rh   )r   r   r"   hfft2ihfft2rD   s      r   
test_hfft2zTestFFT1D.test_hfft2   s    8!!SYsz!}}%=%=>>>4 	C 	CD%39SZ555DAAAC C C C	C 	Cr   c                    t          d          }t          j        |          d d d df         }t          |t          j        |                     t          |t          j        |d                     t          |t          j        d          z  t          j        |d                     t          |dz  t          j        |d                     d S rc   )r   r"   rN   r   r   r   r>   r?   s      r   test_ihfft2zTestFFT1D.test_ihfft2   s    81aaa"f%!&#*Q--888!&#*QZ*H*H*HIII!&277+;+;";"%*QW"="="=	? 	? 	?!&G"4"%*QY"?"?"?	A 	A 	A 	A 	Ar   c           
         t          d          }t          |t          j        t          j        |                               dD ]:}t          |t          j        t          j        ||          |                     ;d S rq   )r   r   r"   hfftnihfftnrD   s      r   
test_hfftnzTestFFT1D.test_hfftn   s    <  !!SYsz!}}%=%=>>>4 	C 	CD%39SZ555DAAAC C C C	C 	Cr   c                    t          d          }t          j        |          d d d d d df         }t          |t          j        |                     t          |t          j        |d                     t          |t          j        d          z  t          j        |d                     t          |dz  t          j        |d                     d S rl   )r   r"   rX   r   r   r   r>   r?   s      r   test_ihfftnzTestFFT1D.test_ihfftn   s    <  1aaaBQBh'!&#*Q--888!&#*QZ*H*H*HIII!&27<+@+@"@"%*QW"="="=	? 	? 	?!&L"9"%*QY"?"?"?	A 	A 	A 	A 	Ar   opc                     t          d          }g d}|D ]P} |t          j        ||                    }t          j         |||          |          }t          ||           Qd S )NrR   )r   r
   r   r   r   r
   )r
   r   r   r
   r   r   )r   r   r
   )r   r
   r   axes)r   r   	transposer   )r#   r   r   r   aop_trtr_ops          r   	test_axeszTestFFT1D.test_axes   s     <  QQQ 	4 	4ABr|Aq))**ELAA22E%eU3333	4 	4r   c           
      j   t          d          g d}|D ]t          fdt          j                  D                       } |t	          j                  |d d         d          }t	          j         ||d d         d d                             }t          ||           d S )N)         )r   r   r   c                 b    g | ]+}|d d         v rdj         |         z  nj         |         ,S )Nr   )shape).0axr   r   s     r   
<listcomp>z9TestFFT1D.test_axes_subset_with_shape.<locals>.<listcomp>   sM     4 4 4! -/!BQB%KK1QWR[==QWR[ 4 4 4r   r   r   r
   )sr   )r   tupler/   ndimr   r   r   )r#   r   r   r   r   r   r   r   s         @@r   test_axes_subset_with_shapez%TestFFT1D.test_axes_subset_with_shape   s     :000 	4 	4A 4 4 4 4 4%*16]]4 4 4 5 5E Br|Aq))U2A2YVDDDELArr2A2!?!?!?CCE%eU3333	4 	4r   c           	         t          d          }t          j                            |          }|j        dz  }t
          j        t
          j        ft
          j        t
          j        ft
          j	        t
          j
        fg}|D ]g\  }}|j        d|j        z  fD ]P}dD ]K} ||||          } ||||          }t          |t          j                            |                     LQhd S )Nr8   r   rC   r\   )r   r   linalgr;   r^   r"   r0   r2   r1   r|   rx   r   )	r#   r   x_normr]   
func_pairsforwbackr;   tmps	            r   test_all_1d_norm_preservingz%TestFFT1D.test_all_1d_norm_preserving   s   2JJ""FQJw)x+ y#(+	
 % 	C 	CJD$fah' C C< C CD$qAD111C$sad333C-f.0innS.A.AC C C CCC	C 	Cr   dtypec                    t          d                              |          }t          t          j        t          j        |                    |           t          t          j        t          j        |                    |           t          t          j        t          j        |          t          |                    |           d S )Nr8   )
r   astyper   r"   r0   r1   r2   rx   r|   r   )r#   r   r   s      r   test_dtypeszTestFFT1D.test_dtypes   s     2JJe$$!#(371::"6"6:::!#)CHQKK"8"8!<<<!#(39Q<<Q"@"@!DDDDDr   N)/r%   r&   r'   r6   rA   rE   rL   rO   rV   rY   r_   ra   rf   rj   ro   rs   rz   r}   r   r   r   r   pytestmarkparametrizer"   rU   rX   rn   rr   r   r   r   rK   rN   re   ri   r   r   r   r   r   halfsingledouble
longdoubler   r(   r   r   r*   r*      sz       ; ; ;K K K? ? ?? ? ?@ @ @? ? ?@ @ @F F FA A A@ @ @C C C@ @ @C C C
D 
D 
DK K KC C CA A AC C CA A A [TCHci$'Isz$'Isz$; < <4 4< <4 [TCHci$'Isz$'Isz$'Hci$'Isz$'Isz$; < <
4 
4< <
4C C C& [Wrw	29')}'6 7 7E E7 7E E Er   r*   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   )rK   rU   )r   )r
   r   )r   r   rU   ))r   )r
   )r   Nr   )r   r   RandomStaterandr   asfortranarrayascontiguousarrayr%   endswithr/   r   extendr!   )r   r   r"   rngXYr   X_resY_resr   r   s              r   test_fft_with_orderr     s    )


#
#CAr!!%e!44A||a   dddG 44R4))
|U## !HH 	4 	4DC%%%EC%%%E%eU3333	4 	4 
		/	0	0 	'''<  (( 	2KK000111 	4 	4BCOOOECOOOE%eU3333	4 	4
 r   c                   @    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestFFTThreadSafer   )i      c                 4   fdt          j                      }fdt          | j                  D             }d |D              d |D              t          | j                  D ]'}t	                              d          |d           (d S )Nc                 8    |                      |             d S N)put)argsqfuncs     r   workerz.TestFFTThreadSafe._test_mtsame.<locals>.worker-  s!    EE$$+r   c                 @    g | ]}t          j        f           S ))targetr   )	threadingThread)r   r5   r   r   r   s     r   r   z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>4  s=     + + + V4)<<< + + +r   c                 6    g | ]}|                                 S r(   )startr   r   s     r   r   z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>6  s     qr   c                 6    g | ]}|                                 S r(   )joinr   s     r   r   z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>8  s     ar      )timeoutz6Function returned wrong value in multithreaded context)queueQueuer/   threadsr   get)r#   r   r   expectedtr5   r   r   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        t           j                  }|                     t
          j        |           d S )N)r   )r   onesinput_shape
complex128r   r"   r#   r   s     r   rA   zTestFFTThreadSafe.test_fft>  s9    GD$BM:::#'1%%%%%r   c                 z    t          j        | j        d          }|                     t          j        |           d S Ny      ?        )r   fullr   r   r"   r0   r   s     r   rE   zTestFFTThreadSafe.test_ifftB  s4    GD$d++#(A&&&&&r   c                 x    t          j        | j                  }|                     t          j        |           d S r   )r   r   r   r   r"   r2   r   s     r   r_   zTestFFTThreadSafe.test_rfftF  s2    GD$%%#(A&&&&&r   c                 z    t          j        | j        d          }|                     t          j        |           d S r   )r   r   r   r   r"   r1   r   s     r   ra   zTestFFTThreadSafe.test_irfftJ  s4    GD$d++#)Q'''''r   c                     t          j        | j        t           j                  }|                     t
          j        |           d S r   )r   r   r   	complex64r   r"   rx   r   s     r   rz   zTestFFTThreadSafe.test_hfftN  s6    GD$bl33#(A&&&&&r   c                 x    t          j        | j                  }|                     t          j        |           d S r   )r   r   r   r   r"   r|   r   s     r   r}   zTestFFTThreadSafe.test_ihfftR  s2    GD$%%#)Q'''''r   N)r%   r&   r'   r   r   r   rA   rE   r_   ra   rz   r}   r(   r   r   r   r   (  s        GKJ J J$& & &' ' '' ' '( ( (' ' '( ( ( ( (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     :::A273<<:::r   r   r   )multiprocessingPoolmapr/   r   r   r   )r   presr@   r   s        r   test_multiprocessr   W  s     
	a	 	  <AeeD::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   r"   rr   )r#   arair   r   s        r   test_not_last_axis_successz%TestIRFFTN.test_not_last_axis_successe  sJ    !!.11BBJ 	
14      r   N)r%   r&   r'   r  r(   r   r   r   r   c  s#        ! ! ! ! !r   r   )&r   r   r   numpyr   r   numpy.randomr   numpy.testingr   r   r   r   r    	scipy.fftr"   r   r   r*   r   r   float32float64	longfloatr   r   longcomplexrK   rU   r0   rN   rX   r   r   r2   r1   r   r   r(   r   r   <module>r     sh                      
 
 
 
 
 
 
 
 
 
 + * * * * *      + + +9 9 9 9 9 9 9 9eE eE eE eE eE eE eE eEP 	RZ	r}bn	67 7 3(8"9::	#(CH	39ci	)* * 	* * ;:	7 7:,( ,( ,( ,( ,( ,( ,( ,(^ #'38SXsy!IJJ# # KJ#	! 	! 	! 	! 	! 	! 	! 	! 	! 	!r   