o
    Ö­jÂ  ã                   @   s>  d dl Z d dlZd dlZd dlZd dlmZmZmZ d dl	m
Z
 d dlmZ d dlmZmZmZ eej d¡gZejjZdd„ Zej d	d
dg¡ej dg d¢¡ej dg d¢¡ej dddg¡dd„ ƒƒƒƒZejjdd„ ƒZej dddg¡dd„ ƒZed
dd�ej deeg¡dd„ ƒƒZej dddg¡d d!„ ƒZdS )"é    N)ÚfhtÚifhtÚ	fhtoffset)Úpoch)Úarray_api_compatible)Úxp_assert_closeÚxp_assert_lessÚarray_namespaceÚskip_xp_backendsc           
      C   sN  dd„ }t  ddd¡}t  |d |d  ¡}d}d	}d	}|  |||ƒ¡}t|||||d
�}g d¢}	| j|	| jd�}	t||	ƒ t|||d�}t|||||d
�}g d¢}	| j|	| jd�}	t||	ƒ d}t|||d�}t|||||d
�}g d¢}	| j|	| jd�}	t||	ƒ d}t|||d�}t|||||d
�}g d¢}	| j|	| jd�}	t||	ƒ d S )Nc                 S   s    | |d  t  | d  d ¡ S ©Né   é   )ÚnpÚexp)ÚrÚmu© r   úX/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/fft/tests/test_fftlog.pyÚf   ó    z&test_fht_agrees_with_fftlog.<locals>.féüÿÿÿé   é   r   r   g333333Ó?ç        ©ÚoffsetÚbias)gÿÐ=lS¿gá–l¾1£Z?gp¢Rßð_¿gœ~]’
o?g€°0d±@?g–Åíº…œ?g0¨2†u¹?g7c4UoÝ?gUËû�/5Ô?gÀÞ 3²ßJ¿g QÊi©«I¿g!m¿ÞÃ9?g áä®1¿g?ˆàJÇb7?g »tj3B¿g šÂ	'K?©Údtype©r   )g  Dy‡Ó?g ò¾T Iã¾g Ýí9¥4?g°B ûÖúM?gÈQº89Êw?g�ÀÄ¥™š?gZøT3%Á?gz;_x˜ÛÞ?g9%PÔúÑ?gv@žÀ‹Ý†¿gA”AÊÙY]?gayiìég;¿gGÁI<!?g FÌÚ\m¿gÿH¬žÒ ?g @(ÙLGü¾gš™™™™™é?)gáÿ×Uê_Àg0E>y7äÅ?g4â¬ž	F»?gR^Ø¡*9ª¿g¤-ägÑÿš?gÁ“Ó!a‘?gRÃèÞ´ À?gÍmžMUUÞ?g¨ å ð.Ò?g'?£eH�¿gŸZ7ZòÇP?gâmÜ·`�%¿gCGÎïT?gçž2œTà¾gÒ…°ýêuÀ>gå/”&ô®¾gš™™™™™é¿)göGãË3Øâ>g`4]<]?g[8„²ÛÖ+?g,8GédŠP?g¢°¢
¦u?g›,×—$5™?g~„}ç£¿?grƒa,‹4Þ?gœV—�°„Ò?gh¸`>E‘¿gDgôyÙ–?g¸P2�ZSŽ¿gÍ†ŽË�©Å?gÜºJžíÒÓ?g[«U¶+@gð"äÚ%@)r   ÚlogspaceÚlogÚasarrayr   Úfloat64r   r   )
Úxpr   r   Údlnr   r   r   ÚaÚoursÚtheirsr   r   r   Útest_fht_agrees_with_fftlog   s8   


r)   ÚoptimalTFr   )r   ç      ð?g      ð¿r   )r   gš™™™™™¹?gš™™™™™¹¿Úné@   é?   c                 C   s~   t j d¡}| | | ¡¡}| dd¡}| dd¡}|r$t||||d�}t|||||d�}	t|	||||d�}
t	|
|dd	� d S )
Nì   ÍE3  éÿÿÿÿr   éþÿÿÿr   ©Úinitialr   r   gvƒôõ!„>)Úrtol)
r   ÚrandomÚRandomStater"   Ústandard_normalÚuniformr   r   r   r   )r,   r   r   r*   r$   Úrngr&   r%   r   ÚAÚa_r   r   r   Útest_fht_identity]   s   r<   c                 C   sj  t j d¡}|  | d¡¡}| dd¡}d\}}tjdd��}t||||d� |r-J d	ƒ‚W d   ƒ n1 s7w   Y  d
\}}tjdd��}t||||d� |rUJ d	ƒ‚W d   ƒ n1 s_w   Y  d\}}t	 
t¡�}t||||d� |s|J dƒ‚W d   ƒ n1 s†w   Y  d
\}}t	 
t¡�}t||||d� |s£J dƒ‚W d   ƒ d S 1 s®w   Y  d S )Nr/   r-   r0   r   )g      Àr+   T)Úrecordr   z)fht warned about a well-defined transform)g      Àç      à?)g      Àr>   z+fht did not warn about a singular transformz,ifht did not warn about a singular transform)r   r5   r6   r"   r7   r8   ÚwarningsÚcatch_warningsr   ÚpytestÚwarnsÚWarningr   )r$   r9   r&   r%   r   r   r=   r   r   r   Útest_fht_special_casess   s.   þþþ"þrD   c                 C   sÊ   t j d¡}| dd¡}| d| d¡}t  dd| ¡}| || ¡}t  |d |d  ¡}t||d	|d
�}t|||||d�}	t  	|¡|d d d…  }
| d|
 | t
|d | d |ƒ ¡}t|	|ƒ d S )Nr/   r   é   r0   r>   r1   r   r   r   r2   r   )r   r5   r6   r8   r    r"   r!   r   r   r   r   r   )r,   r$   r9   r   Úgammar   r&   r%   r   r:   ÚkÚAtr   r   r   Útest_fht_exact—   s   (rI   z,array-likes only supported for NumPy backend)Únp_onlyÚreasonÚopc                 C   sR   ddgddggddgddggddgddggg}t ||ddƒ||  |¡ddƒƒ d S )Nr+   g       @)r   r"   )r$   rL   Úxr   r   r   Útest_array_like³   s
   þ$rN   é€   é�   c                    sÚ   ˆ   d¡}t|ƒ}d}t dd|¡}t |d |d  ¡}t|dt d¡ |d�}ˆ j ||jd	�}t |¡|j	|d
d� }‡ fdd„}	|	||ƒ}
t
|
|||d�}|	||ƒ}ˆ  ˆ  || | ¡¡}t|ˆ   d¡d ƒ d S )Nr+   r   iùÿÿÿr   r   iúÿÿÿé
   )r3   r   r   r0   )Úaxisc                    s    | |d  ˆ   | d  d ¡ S r   )r   )rM   r   ©r$   r   r   r   Ç   r   ztest_gh_21661.<locals>.f)r   r   g `ºm3*pCr   )r"   r	   r   r    Úmathr!   r   r   r   Úflipr   ÚmaxÚabsr   )r$   r,   ÚoneÚxp_testr   r   r%   r   rG   r   Úa_rÚfht_valÚa_kÚrel_errr   rS   r   Útest_gh_21661¼   s   


r^   )r?   rT   Únumpyr   rA   Úscipy.fft._fftlogr   r   r   Úscipy.specialr   Úscipy.conftestr   Úscipy._lib._array_apir   r   r	   ÚmarkÚusefixturesÚ
pytestmarkr
   r)   Úparametrizer<   Úthread_unsaferD   rI   rN   r^   r   r   r   r   Ú<module>   s6    L
#
ÿ