a
    R¹§e§  ã                   @   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+   úX/var/www/sunrise/env/lib/python3.9/site-packages/scipy/fft/tests/test_real_transforms.pyÚtest_identity_1d   s    

r-   ÚdtypeÚoverwrite_xc                 C   s†   t j dd¡ |¡}| ¡ }| |||||d}	|	 ¡ }
||	||||d}|srt||ddd t||ƒ t|	|
ƒ nt||ddd d S )Né   é   )r   r   r/   çíµ ÷Æ°>©ZrtolZ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    

r8   zshape, axes)	)©r   r   r   )r9   r   )r9   N)r9   ©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 rddg|j }
n>t|tƒr„dg|j }
d|
|< ndg|j }
|D ]}d|
|< q”t j||
dd}|||||||d}t||ƒ d S )N)Úaxesr   r   r   r   r   r   r!   )r"   r#   Útaker   ÚndimÚ
isinstanceÚintr%   )r   r   r   Úshaper?   r   r   r&   r'   r(   r%   Úar)   r*   r+   r+   r,   Útest_identity_nd?   s"    



rF   ))©r   r   r   )rG   r   )rG   Nc                 C   s”   t j |¡ |¡}| ¡ }	|d ur.t  ||¡}| ||||d}
|
 ¡ }||
|||d}|rlt||	ddd n$t||ddd t||	ƒ t|
|ƒ d S )N)r?   r   r2   r3   )r"   r#   r4   r5   r@   r   r   )r   r   r   rD   r?   r.   r   r/   r&   r6   r'   r7   r(   r+   r+   r,   Útest_identity_nd_overwritel   s    
rH   Ú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   )rI   r   r   r&   Zfft_resZfftpack_resr+   r+   r,   Útest_fftpack_equivalience   s    rL   c                 C   sF   t j d¡}dD ]0\}}| ||||d}| |||d}t||ƒ qd S )Néd   ))r   F)r   F)r   T©r   r   r   )r   r   ©r"   r#   r$   r   )rI   r   r&   r   r   rE   Úbr+   r+   r,   Útest_orthogonalize_default˜   s
    rQ   )r   r   r   z
func, typer   c                 C   s:   t j d¡}| |||dd}| |||dd}t||ƒ d S )NrM   TrN   FrO   )rI   r   r   r&   Úy1r)   r+   r+   r,   Útest_orthogonalize_noop¨   s    rS   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 )NrM   r   éÿÿÿÿr   TrN   F)r"   r#   r$   r5   ÚSQRT_2r   r   )r   r&   Úx2rR   r)   r+   r+   r,   Útest_orthogonalize_dct1³   s    rW   c                 C   sJ   t j d¡}| |d|dd}| |d|dd}|d  t  < t||ƒ d S )NrM   r   TrN   Fr   )r"   r#   r$   rU   r   )rI   r   r&   rR   r)   r+   r+   r,   Útest_orthogonalize_dcst2Ã   s
    rX   c                 C   sR   t j d¡}| ¡ }|d  t9  < | |d|dd}| |d|dd}t||ƒ d S )NrM   r   r   TrN   F)r"   r#   r$   r5   rU   r   )rI   r   r&   rV   rR   r)   r+   r+   r,   Útest_orthogonalize_dcst3Î   s    rY   )&Únumpyr"   Znumpy.testingr   r   ZpytestZ	scipy.fftr   r   r   r   r   r	   r
   r   rK   Zscipyr   ÚmathÚsqrtrU   ÚmarkZparametrizer-   Úfloat16Úfloat32Úfloat64Z	complex64Z
complex128r8   rF   rH   rL   rQ   rS   rW   rX   rY   r+   r+   r+   r,   Ú<module>   s|   (
ÿÿÿÿÿ
	