a
    BCCf                     @   s   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 e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dd Zejdddgdd ZdS )    N)fhtifht	fhtoffset)poch)array_api_compatible)xp_assert_closec           
      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   W/var/www/html/django/DPS/env/lib/python3.9/site-packages/scipy/fft/tests/test_fftlog.pyf   s    z&test_fht_agrees_with_fftlog.<locals>.f      r   r   g333333?        offsetbias)g=lSgl1Z?gpR_g~]
o?g0d@?g?g02u?g7c4Uo?gU/5?gޠ3JgQiIg!m9?g 1g?Jb7?g tj3Bg 	'K?)Zdtyper   )g Dy?g TIg 94?gB M?gQ89w?gĥ?gZT3%?gz;_x?g9%P?gv@݆gAAY]?gayig;gGI<!?g F\mgH ?g @(LGg?)gU_g0E>y7?g4⬞	F?gR^ء*9g-g?g!a?gR޴ ?gmMUU?g .?g'?eHgZ7ZP?gmܷ`%gCGT?g2Tg҅u>g/&g)gG3>g`4]<]?g[8+?g,8GdP?g
u?g,ח$5?g~}?gra,4?gV?gh`>EgDgyٖ?gP2ZSg͆˝?gܺJ?g[U+@g"%@)r
   logspacelogasarrayr   Zfloat64r   r   )
xpr   r   dlnr   r   r   aZoursZtheirsr   r   r   test_fht_agrees_with_fftlog   s8    


r   optimalTFr   )r         ?g      r   )r   g?gn@   ?   c                 C   sz   t jd}||| }|dd}|dd}|rHt||||d}t|||||d}	t|	||||d}
t	|
| d S )N   E3  r   r	   initialr   r   )
r
   randomRandomStater   standard_normaluniformr   r   r   r   )r"   r   r   r    r   rngr   r   r   AZa_r   r   r   test_fht_identityZ   s    r0   c                 C   sn  t jd}| |d}|dd}d\}}tjdd,}t||||d |rZJ d	W d    n1 sn0    Y  d
\}}tjdd,}t||||d |rJ d	W d    n1 s0    Y  d\}}t	
t,}t||||d |sJ dW d    n1 s0    Y  d
\}}t	
t.}t||||d |sJJ dW d    n1 s`0    Y  d S )Nr%   r#   r&   r   )g      r!   T)recordr   z)fht warned about a well-defined transform)g            ?)g      r2   z+fht did not warn about a singular transformz,ifht did not warn about a singular transform)r
   r*   r+   r   r,   r-   warningscatch_warningsr   pytestZwarnsWarningr   )r   r.   r   r   r   r   r1   r   r   r   test_fht_special_casesn   s&    **,r7   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      r&   r2   r'   r	   r   r   r(   r   )r
   r*   r+   r-   r   r   r   r   r   r   r   r   )r"   r   r.   r   gammar   r   r   r   r/   kZAtr   r   r   test_fht_exact   s    (r;   )r3   numpyr
   r5   Zscipy.fft._fftlogr   r   r   Zscipy.specialr   Zscipy.conftestr   Zscipy._lib._array_apir   Z
pytestmarkr   markZparametrizer0   r7   r;   r   r   r   r   <module>   s    L!