
    
gG$                        d dl Zd dlmZmZ d dlZd dlZd dlmZm	Z	m
Z
mZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZ eej0                  j3                  d      gZej0                  j6                  Z ej8                  d      Z ed	
      ej0                  j=                  dee	feefg      ej0                  j=                  dg d      ej0                  j=                  dg d      ej0                  j=                  dd dg      ej0                  j=                  dg d      ej0                  j=                  ddd	g      d                                                  Z ed	d      ej0                  j=                  dee	feefg      ej0                  j=                  dg d      ej0                  j=                  dej@                  ejB                  ejD                  ejF                  ejH                  g      ej0                  j=                  dd dg      ej0                  j=                  dg d      ej0                  j=                  dd	dg      d                                                  Z% ed	
      ej0                  j=                  de
efeefg      ej0                  j=                  dg d      ej0                  j=                  dg d      ej0                  j=                  dg d      ej0                  j=                  ddd	g      d                                           Z& ed	d      ej0                  j=                  de
efeefg      ej0                  j=                  dg d      ej0                  j=                  dg d      ej0                  j=                  dej@                  ejB                  ejD                  ejF                  ejH                  g      ej0                  j=                  dg d      ej0                  j=                  ddd	g      d                                                   Z' ed	
      ej0                  j=                  d!g d"      ej0                  j=                  dg d      ej0                  j=                  dg d      d#                             Z( ed	
      ej0                  j=                  d!eee
eg      ej0                  j=                  dg d      d$                      Z) ed	
      ej0                  j=                  dg d%      ej0                  j=                  d&ed'fedfed'fg      d(                      Z* ed)d*d	+      ej0                  j=                  dg d%      d,               Z+ ed)d*d	+      ej0                  j=                  dg d%      ej0                  j=                  d!eeg      d-                      Z, ed)d*d	+      ej0                  j=                  dg d%      ej0                  j=                  d!eeg      d.                      Z- ed	d/      ej0                  j=                  d!ee	e
eeeeeg      d0               Z.y)1    N)assert_allcloseassert_array_equal)dctidctdctnidctndstidstdstnidstn)fftpack)array_api_compatible)xp_copyxp_assert_closeskip_xp_backends   T)cpu_onlyzforward, backwardtype)   r         n)r   r   r      
      axisr   norm)NbackwardorthoforwardorthogonalizeFc                 l   |j                  t        j                  j                  ||            } | |||||      }	 ||	||||      }
t	        |
|       dgdz  }d||<   |j                  t        j
                  t        j                   |	      |d            } |||||||      }t	        ||       y )N)r   r   r!   r   r   r   r   r   edgemoder!   )asarraynprandomrandr   pad)r    r   r   r   r   r   r!   xpxyzr-   y2z2s                 a/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/scipy/fft/tests/test_real_transforms.pytest_identity_1dr5      s     	

299>>!Q'(A4d]KADt$mLAAq(Q,CCI	BFF2::a=#F;	<B	"dAtT	GBB    z/`overwrite_x` only supported for NumPy backend.)np_onlyreasondtypeoverwrite_xc                 H   t         j                  j                  dd      j                  |      }|j	                         } | |||||      }	|	j	                         }
 ||	||||      }|s(t        ||dd       t        ||       t        |	|
       y t        ||dd       y )N      )r   r   r:   ư>rtolatol)r*   r+   r,   astypecopyr   r   )r    r   r   r9   r   r   r:   r/   x_origr0   y_origr1   s               r4   test_identity_1d_overwriterF   -   s     			q!##E*AVVXF4d;GAVVXFDt$KHA14d31f%1f%648r6   zshape, axes)	)r   r   r   )rG   r   )rG   N)rG   r   r   )r      N)rI   rH   )r   r      N)rK   r   )rK   )r   r   c                 .   |j                  t        j                  j                  |            }|t        j                  ||      } | |||||      }	 ||	||||      }
t	        |
|       |dg|j
                  z  }nBt        |t              rdg|j
                  z  }d||<   ndg|j
                  z  }|D ]  }d||<   	 |j                  t        j                  t        j                   |	      |d            } |||||||      }t	        ||       y )N)axesr   r!   r$   r#   r%   r&   r(   )	r)   r*   r+   taker   ndim
isinstanceintr-   )r    r   r   shaperN   r   r!   r.   r/   r0   r1   r-   ar2   r3   s                  r4   test_identity_ndrU   G   s   * 	

299##E*+At$4d]KADt$mLAAq|h	D#	hD	h 	ACF	 
BFF2::a=#F;	<B	"dE4]	KBBr6   ))r   r   r   )rV   r   )rV   Nc                 r   t         j                  j                  |      j                  |      }|j                         }	|t        j                  ||      } | ||||      }
|
j                         } ||
|||      }|rt        ||	dd       y t        ||dd       t        ||	       t        |
|       y )N)rN   r   r>   r?   )r*   r+   rB   rC   rO   r   r   )r    r   r   rS   rN   r9   r   r:   r/   rD   r0   rE   r1   s                r4   test_identity_nd_overwriterX   v   s    $ 			&&u-AVVXFt$4d.AVVXFDt$/A64814d31f%1f%r6   func)r   r	   r   r   c                     t         j                  j                  dd      }|j                   t	        t
        |       |||            }|j                  |      } t	        t        |       |||      }t        ||       y )Nr=   r   )r   )r*   r+   r,   r)   getattrr   fftr   )rY   r   r   r.   r/   fftpack_resfft_ress          r4   test_fftpack_equivaliencer_      sg    
 			q"A**3WWd3At$GHK


1A gc4 Dt4GG[)r6   c                     |j                  t        j                  j                  d            }dD ](  \  }} | ||||      } | |||      }t	        ||       * y )Nd   ))r    F)r   F)r   Tr   r   r!   )r   r   r)   r*   r+   r,   r   )rY   r   r.   r/   r   r   rT   bs           r4   test_orthogonalize_defaultre      s^    
 	

299>>#&'A e
 D>D)1r6   )r   r   r    z
func, typer   c                     |j                  t        j                  j                  d            } | |||d      } | |||d      }t	        ||       y )Nra   Trb   Frc   )rY   r   r   r.   r/   y1r2   s          r4   test_orthogonalize_nooprh      sI     	

299>>#&'A	adT	:B	adU	;BBr6   z	jax.numpyz)jax arrays do not support item assignment)r8   r   c                 V   |j                  t        j                  j                  d            }t	        ||      }|dxx   t
        z  cc<   |dxx   t
        z  cc<   t        |d| d      }t        |d| d      }|dxx   t
        z  cc<   |dxx   t
        z  cc<   t        ||       y )	Nra   r.   r   r   Trb   F)r)   r*   r+   r,   r   SQRT_2r   r   )r   r.   r/   x2rg   r2   s         r4   test_orthogonalize_dct1rn      s    
 	

299>>#&'A	r	BqEVOErFfF	QQT	6B	Rad%	8BqEVOErFfFBr6   c                     |j                  t        j                  j                  d            } | |d|d      } | |d|d      }|| t        k(  rdndxx   t
        z  cc<   t        ||       y )Nra   r   Trb   Fr   rk   )r)   r*   r+   r,   r   rl   r   )rY   r   r.   r/   rg   r2   s         r4   test_orthogonalize_dcst2rp      sa     	

299>>#&'A	aad$	7B	aad%	8BDCKqR F* Br6   c                     |j                  t        j                  j                  d            }t	        ||      }|| t
        k(  rdndxx   t        z  cc<    | |d|d      } | |d|d      }t        ||       y )	Nra   rj   r   rk   r   Trb   F)r)   r*   r+   r,   r   r   rl   r   )rY   r   r.   r/   rm   rg   r2   s          r4   test_orthogonalize_dcst3rr      sm     	

299>>#&'A	r	BDCKqR F* 	aad$	7B	bqt5	9BBr6   z,array-likes only supported for NumPy backendc                     ddgddggddgddggddgddggg}t         ||       || j                  |                   y )Ng      ?)r   r)   )r.   rY   r/   s      r4   test_array_likert      sX     *sCj	!*sCj	!*sCj	!	#A DGT"**Q-01r6   )/numpyr*   numpy.testingr   r   pytestmath	scipy.fftr   r   r   r   r	   r
   r   r   r\   scipyr   scipy.conftestr   scipy._lib._array_apir   r   markusefixtures
pytestmarkr   sqrtrl   parametrizer5   float16float32float64	complex64
complex128rF   rU   rX   r_   re   rh   rn   rp   rr   rt    r6   r4   <module>r      s)    =   D D D   / :"FKK$;$;<N$OP
;;// 	1 4 ,T{S$K.HI.23!Q(!GH5$-8 9 I ) 4 / J !  $JL,T{S$K.HI.2::rzz2::#%<<#@ A!Q(!GHu69 7 I )A / JL9" 4 ,e}tUm.LM.
 !GH5$-8 9 I / N !"< $JL,e}tUm.LM. 2::rzz2::#%<<#@ A!GH6& 7 IA / NL&* 4 !?@.!GH* I / A !* 4 #sD$!78. / 9 ! 4 !AB!HsAha(" ## C ! +D! !AB C! +D! !AB#s, - C!
 +D! !AB#s, - C!
 $GI#tT5#tT5!QR2 SI2r6   