o
    hG$                     @   sh  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jdgZejjZedZed	d
ejdee	feefgejdg dejdg dejdd dgejdg dejddd	gdd Zed	ddejdee	feefgejdg dejdej ej!ej"ej#ej$gejdd dgejdg dejdd	dgdd Z%ed	d
ejde
efeefgejdg dejdg dejdg dejddd	gd d! Z&ed	ddejde
efeefgejdg dejdg d"ejdej ej!ej"ej#ej$gejdg dejddd	gd#d$ Z'ed	d
ejd%g d&ejdg dejdg dd'd( Z(ed	d
ejd%eee
egejdg dd)d* Z)ed	d
ejdg d+ejd,ed-fedfed-fgd.d/ Z*ed0d1d	d2ejdg d+d3d4 Z+ed0d1d	d2ejdg d+ejd%eegd5d6 Z,ed0d1d	d2ejdg d+ejd%eegd7d8 Z-ed	d9dejd%ee	e
eeeeegd:d; Z.dS )<    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                 C   s   | tj||}| |||||d}	||	||||d}
t|
| dgd }d||< | tjt |	|dd}|||||||d}t|| d S )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z2 r2   X/var/www/vscode/kcb/lib/python3.10/site-packages/scipy/fft/tests/test_real_transforms.pytest_identity_1d   s   	

r4   z/`overwrite_x` only supported for NumPy backend.)np_onlyreasondtypeoverwrite_xc                 C   s   t jdd|}| }| |||||d}	|	 }
||	||||d}|s:t||ddd t|| t|	|
 d S t||ddd d S )N      )r   r   r8   ư>rtolatol)r(   r)   r*   astypecopyr   r   )r   r   r   r7   r   r   r8   r-   x_origr.   y_origr/   r2   r2   r3   test_identity_1d_overwrite-   s   
rC   zshape, axes)	)r   r   r   )rD   r   )rD   N)rD   r   r   )r      N)rF   rE   )r   r      N)rH   r   )rH   )r   r   c                 C   s   | tj|}|d urt||}| |||||d}	||	||||d}
t|
| |d u r5dg|j }nt|trEdg|j }d||< ndg|j }|D ]}d||< qM| tjt |	|dd}|||||||d}t|| d S )N)axesr   r    r"   r!   r#   r$   r&   )	r'   r(   r)   taker   ndim
isinstanceintr+   )r   r   r   shaperJ   r   r    r,   r-   r.   r/   r+   ar0   r1   r2   r2   r3   test_identity_ndG   s"   



rQ   ))r   r   r   )rR   r   )rR   Nc                 C   s   t j||}| }	|d urt ||}| ||||d}
|
 }||
|||d}|r7t||	ddd d S t||ddd t||	 t|
| d S )N)rJ   r   r;   r<   )r(   r)   r?   r@   rK   r   r   )r   r   r   rO   rJ   r7   r   r8   r-   rA   r.   rB   r/   r2   r2   r3   test_identity_nd_overwritev   s   
rS   func)r   r   r   r
   c                 C   sT   t jdd}|tt| |||d}||}tt| |||d}t|| d S )Nr:   r   )r   )r(   r)   r*   r'   getattrr   fftr   )rT   r   r   r,   r-   fftpack_resfft_resr2   r2   r3   test_fftpack_equivalience   s
   
rY   c                 C   sL   | tjd}dD ]\}}| ||||d}| |||d}t|| qd S )Nd   ))r   F)r   F)r   Tr   r   r    )r   r   r'   r(   r)   r*   r   )rT   r   r,   r-   r   r   rP   br2   r2   r3   test_orthogonalize_default   s   r^   )r   r   r   z
func, typer   c                 C   s@   | tjd}| |||dd}| |||dd}t|| d S )NrZ   Tr[   Fr\   )rT   r   r   r,   r-   y1r0   r2   r2   r3   test_orthogonalize_noop   s   r`   z	jax.numpyz)jax arrays do not support item assignment)r6   r   c                 C   s   | tjd}t||d}|d  t9  < |d  t9  < t|d| dd}t|d| dd}|d  t  < |d  t  < t|| d S )	NrZ   r,   r   r   Tr[   F)r'   r(   r)   r*   r   SQRT_2r   r   )r   r,   r-   x2r_   r0   r2   r2   r3   test_orthogonalize_dct1   s   re   c                 C   s\   | tjd}| |d|dd}| |d|dd}|| tkr dnd  t  < t|| d S )NrZ   r   Tr[   Fr   rb   )r'   r(   r)   r*   r   rc   r   )rT   r   r,   r-   r_   r0   r2   r2   r3   test_orthogonalize_dcst2   s
   rf   c                 C   sh   | tjd}t||d}|| tkrdnd  t9  < | |d|dd}| |d|dd}t|| d S )	NrZ   ra   r   rb   r   Tr[   F)r'   r(   r)   r*   r   r   rc   r   )rT   r   r,   r-   rd   r_   r0   r2   r2   r3   test_orthogonalize_dcst3   s   rg   z,array-likes only supported for NumPy backendc                 C   sJ   ddgddggddgddggddgddggg}t |||| | d S )Ng      ?)r   r'   )r,   rT   r-   r2   r2   r3   test_array_like   s
   rh   )/numpyr(   numpy.testingr   r   pytestmath	scipy.fftr   r   r   r   r   r	   r
   r   rV   scipyr   scipy.conftestr   scipy._lib._array_apir   r   markusefixtures
pytestmarkr   sqrtrc   parametrizer4   float16float32float64	complex64
complex128rC   rQ   rS   rY   r^   r`   re   rf   rg   rh   r2   r2   r2   r3   <module>   s    (
			