o
    	hl                     @   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Zd dlm	Z
 d dlmZ d dlmZ ddddd	d
ddddd
Zg dZdd Zdd Zejjdd Zejjedddd Zdd Zdd Zdd  Zd!d" Zd#d$ Zejjd%d& Zd'd( ZdS ))    N)assert_assert_equalIS_PYPY)raises)_sf_error_test_function                        	   
   )
singular	underflowoverflowslowloss	no_resultdomainargothermemory)ignorewarnraisec                 C   s   t j|t dd}|dkr+ttj | |  W d    d S 1 s$w   Y  d S |dkrKttj | |  W d    d S 1 sDw   Y  d S t	
  t	d | |  W d    d S 1 sdw   Y  d S )Nlong)dtyper   r   error)npasarrayr   pytestwarnsscSpecialFunctionWarningassert_raisesSpecialFunctionErrorwarningscatch_warningssimplefilter)funargsaction r/   U/var/www/vscode/kcb/lib/python3.10/site-packages/scipy/special/tests/test_sf_error.py_check_action!   s   
"
"


"r1   c                  C   s6   t  } |  D ]\}}t|tv  t|tv  qd S )N)r%   geterritemsr   _sf_error_code_map_sf_error_actions)errkeyvaluer/   r/   r0   test_geterr2   s
   r9   c               
   C   s   t  } zPt D ]@\}}tD ]9}t  }t jdi ||i}t||k t  }t|| |k || || t||k tt	|f| qq	W t jdi |  d S t jdi |  w Nr/   )
r%   r2   r4   r3   r5   seterrr   popr1   r   )	entry_errcategory
error_coder.   geterr_olderrseterr_olderrnewerrr/   r/   r0   test_seterr9   s    

&rC   zTest not meaningful on PyPy)reasonc               	   C   s   t t} tjdd% tjtjdd td W d    n1 s$w   Y  W d    n1 s3w   Y  t t}|| ksCJ d S )Nr   )allzdomain error)matchg       @)sysgetrefcountr%   errstater#   r   r(   ndtri)refcount_beforerefcount_afterr/   r/   r0   test_sf_error_special_refcountL   s   

rM   c               	   C   z   t  } t jdd" tt j t d W d    n1 s w   Y  W d    n1 s/w   Y  t| t   d S Nr   r   r   )r%   r2   rI   r'   r(   loggammar   olderrr/   r/   r0   test_errstate_pyx_basicY      rT   c               	   C   rN   )Nr   )r   )r%   r2   rI   r'   r(   spencer   rR   r/   r/   r0   test_errstate_c_basica   rU   rX   c               	   C   rN   )Nr   )r   i)r%   r2   rI   r'   r(   wrightomegar   rR   r/   r/   r0   test_errstate_cpp_basici   rU   rZ   c               	   C   s|   t  } t jdd# tt j t dd W d    n1 s!w   Y  W d    n1 s0w   Y  t| t   d S )Nr   rP   r   r   )r%   r2   rI   r'   r(   lambertwr   rR   r/   r/   r0   test_errstate_cpp_scipy_specialq   s   r\   c               	   C   rN   rO   )r%   r2   rI   r'   r(   gammalnr   rR   r/   r/   r0   %test_errstate_cpp_alt_ufunc_machineryy   rU   r^   c               
   C   sx   t  D ]5\} }tD ].}t }tjdi | |i tt|f| W d    n1 s,w   Y  t|t  q
qd S r:   )	r4   r3   r5   r%   r2   rI   r1   r   r   )r>   r?   r.   rS   r/   r/   r0   test_errstate   s   r_   c               	   C   s   t  } t jddd' t d tt j t d W d    n1 s&w   Y  W d    n1 s5w   Y  t| t   d S )Nr   r   )rE   r   r   g      )r%   r2   rI   r]   r'   r(   rW   r   rR   r/   r/   r0   test_errstate_all_but_one   s   
r`   ) rG   r)   numpyr!   numpy.testingr   r   r   r#   r   r'   scipy.specialspecialr%   scipy.special._ufuncsr   r4   r5   r1   r9   markthread_unsaferC   skipifrM   rT   rX   rZ   r\   r^   r_   r`   r/   r/   r/   r0   <module>   sD    


	