o
    5ήc                     @   s  d dl Zd dlmZm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ZedZ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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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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jdg d ejdg dejdg dd!d" Z ejdeee	egejdg dd#d$ Z!ejdg d%ejd&ed'fedfed'fgd(d) Z"ejdg d%d*d+ Z#ejdg d%ejdeegd,d- Z$ejdg d%ejdeegd.d/ Z%dS )0    N)assert_allcloseassert_array_equal)dctidctdctnidctndstidstdstnidstn)fftpack   zforward, backwardtype)   r         n)r   r   r      
      axisr   norm)NbackwardorthoforwardorthogonalizeFTc                 C   s   t j||}| |||||d}||||||d}	t|	| dgd }
d|
|< t j||
dd}|||||||d}t|| d S )N)r   r   r   r   r   r   r   r   edgemoder   )nprandomrandr   pad)r   r   r   r   r   r   r   xyzr%   y2z2 r+   K/tmp/pip-target-vg8gfxp4/lib/python/scipy/fft/tests/test_real_transforms.pytest_identity_1d   s   

r-   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   r/   ư>rtolatol)r"   r#   r$   astypecopyr   r   )r   r   r   r.   r   r   r/   r&   x_origr'   y_origr(   r+   r+   r,   test_identity_1d_overwrite(   s   

r:   zshape, axes)	)r   r   r   )r;   r   )r;   N)r;   r   r   )r      N)r=   r<   )r   r      N)r?   r   )r?   )r   r   c                 C   s   t j|}|d urt ||}| |||||d}||||||d}	t|	| |d u r2dg|j }
nt|trBdg|j }
d|
|< ndg|j }
|D ]}d|
|< qJt j||
dd}|||||||d}t|| d S )N)axesr   r   r   r   r   r   r!   )r"   r#   taker   ndim
isinstanceintr%   )r   r   r   shaperA   r   r   r&   r'   r(   r%   ar)   r*   r+   r+   r,   test_identity_nd@   s"   



rH   ))r   r   r   )rI   r   )rI   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)rA   r   r2   r3   )r"   r#   r6   r7   rB   r   r   )r   r   r   rF   rA   r.   r   r/   r&   r8   r'   r9   r(   r+   r+   r,   test_identity_nd_overwritem   s   
rJ   func)r   r   r   r
   c                 C   sD   t jdd}tt| |||d}tt| |||d}t|| d S )Nr1   r   )r   )r"   r#   r$   getattrfftr   r   )rK   r   r   r&   fft_resfftpack_resr+   r+   r,   test_fftpack_equivalience   s   rP   c                 C   sF   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   )rK   r   r&   r   r   rG   br+   r+   r,   test_orthogonalize_default   s   rU   )r   r   r   z
func, typer   c                 C   s:   t jd}| |||dd}| |||dd}t|| d S )NrQ   TrR   FrS   )rK   r   r   r&   y1r)   r+   r+   r,   test_orthogonalize_noop   s   rW   c                 C   s   t jd}| }|d  t9  < |d  t9  < t|d| dd}t|d| dd}|d  t  < |d  t  < t|| d S )NrQ   r   r   TrR   F)r"   r#   r$   r7   SQRT_2r   r   )r   r&   x2rV   r)   r+   r+   r,   test_orthogonalize_dct1   s   r[   c                 C   sJ   t jd}| |d|dd}| |d|dd}|d  t  < t|| d S )NrQ   r   TrR   Fr   )r"   r#   r$   rY   r   )rK   r   r&   rV   r)   r+   r+   r,   test_orthogonalize_dcst2   s
   r\   c                 C   sR   t jd}| }|d  t9  < | |d|dd}| |d|dd}t|| d S )NrQ   r   r   TrR   F)r"   r#   r$   r7   rY   r   )rK   r   r&   rZ   rV   r)   r+   r+   r,   test_orthogonalize_dcst3   s   r]   )&numpyr"   numpy.testingr   r   pytest	scipy.fftr   r   r   r   r   r	   r
   r   rM   scipyr   mathsqrtrY   markparametrizer-   float16float32float64	complex64
complex128r:   rH   rJ   rP   rU   rW   r[   r\   r]   r+   r+   r+   r,   <module>   s~   (

	