
    sg#              
           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	Zg dZd Zd Zd Zej*                  j-                  ed      d        Zd Zd Zd Zd Zd Zd Zd Zy)    N)assert_assert_equalIS_PYPY)raises)_sf_error_test_function                        	   )	singular	underflowoverflowslowloss	no_resultdomainargother)ignorewarnraisec                    t        j                  |t        j                  d            }|dk(  r2t        j                  t
        j                        5   | |  d d d        y |dk(  r(t        t
        j                        5   | |  d d d        y t        j                         5  t        j                  d        | |  d d d        y # 1 sw Y   y xY w# 1 sw Y   y xY w# 1 sw Y   y xY w)Nlong)dtyper   r   error)npasarrayr   pytestwarnsscSpecialFunctionWarningassert_raisesSpecialFunctionErrorwarningscatch_warningssimplefilter)funargsactions      T/var/www/html/venv/lib/python3.12/site-packages/scipy/special/tests/test_sf_error.py_check_actionr0       s     ::d"((6"23D\\"334 	J	 		7	2223 	J	 	 $$& 	!!'*J	 		 		 		 	s$   C C#CCCC(c                      t        j                         } | j                         D ]'  \  }}t        |t        v        t        |t
        v        ) y )N)r%   geterritemsr   _sf_error_code_map_sf_error_actions)errkeyvalues      r/   test_geterrr9   1   sB    
))+Ciik ,
U))***+,    c                     t        j                         } 	 t        j                         D ]  \  }}t        D ]  }t        j                         }t        j
                  di ||i}t        ||k(         t        j                         }t        ||   |k(         |j                  |       |j                  |       t        ||k(         t        t        |f|         	 t        j
                  di |  y # t        j
                  di |  w xY wN )
r%   r2   r4   r3   r5   seterrr   popr0   r   )	entry_errcategory
error_coder.   geterr_olderrseterr_olderrnewerrs          r/   test_seterrrF   8   s    		I$6$<$<$> 
	N Hj+ 	N "		 "		 ?Xv,> ?67x(F23!!(+

8$/05
}fM	N
	N 			I		Is   CC4 4DzTest not meaningful on PyPy)reasonc                  j   t        j                  t              } t        j                  d      5  t	        j
                  t        j                  d      5  t        j                  d       d d d        d d d        t        j                  t              }|| k(  sJ y # 1 sw Y   2xY w# 1 sw Y   6xY w)Nr   )allzdomain error)matchg       @)sysgetrefcountr%   errstater#   r   r(   ndtri)refcount_beforerefcount_afters     r/   test_sf_error_special_refcountrQ   J   s    
 oob)O		! ]]222.I 	HHSM	 __R(N_,,,	 	 s#   &B)B,B)B&	"B))B2c                  D   t        j                         } t        j                  d      5  t        t         j                        5  t        j
                  d       d d d        d d d        t        | t        j                                y # 1 sw Y   0xY w# 1 sw Y   4xY wNr   r   r   )r%   r2   rM   r'   r(   loggammar   olderrs    r/   test_errstate_pyx_basicrX   W   sn    YY[F	g	& 2223 	KKN	 %	 	 #   BB
B
B	BBc                  D   t        j                         } t        j                  d      5  t        t         j                        5  t        j
                  d       d d d        d d d        t        | t        j                                y # 1 sw Y   0xY w# 1 sw Y   4xY w)Nr   )r   )r%   r2   rM   r'   r(   spencer   rV   s    r/   test_errstate_c_basicr]   _   sn    YY[F	G	$ 2223 	IIbM	 %	 	 rY   c                  D   t        j                         } t        j                  d      5  t        t         j                        5  t        j
                  d       d d d        d d d        t        | t        j                                y # 1 sw Y   0xY w# 1 sw Y   4xY w)Nr   )r   i)r%   r2   rM   r'   r(   wrightomegar   rV   s    r/   test_errstate_cpp_basicr`   g   so    YY[F	w	' "2223 	"NN5!	"" %	" 	"" "rY   c                  F   t        j                         } t        j                  d      5  t        t         j                        5  t        j
                  dd       d d d        d d d        t        | t        j                                y # 1 sw Y   0xY w# 1 sw Y   4xY w)Nr   rT   r   r   )r%   r2   rM   r'   r(   lambertwr   rV   s    r/   test_errstate_cpp_scipy_specialrc   o   sq    YY[F	g	& 2223 	KK1	 %	 	 s#   BBBB	BB c                  D   t        j                         } t        j                  d      5  t        t         j                        5  t        j
                  d       d d d        d d d        t        | t        j                                y # 1 sw Y   0xY w# 1 sw Y   4xY wrS   )r%   r2   rM   r'   r(   gammalnr   rV   s    r/   %test_errstate_cpp_alt_ufunc_machineryrf   w   sn    YY[F	g	& 2223 	JJqM	 %	 	 rY   c                  2   t         j                         D ]t  \  } }t        D ]f  }t        j                         }t        j
                  di | |i5  t        t        |f|       d d d        t        |t        j                                h v y # 1 sw Y   ,xY wr<   )	r4   r3   r5   r%   r2   rM   r0   r   r   )rA   rB   r.   rW   s       r/   test_errstaterh      s     2 8 8 : .*' 	.FYY[F2&12 N5
}fMN-		..N Ns   BBc                  p   t        j                         } t        j                  dd      5  t        j                  d       t	        t         j
                        5  t        j                  d       d d d        d d d        t        | t        j                                y # 1 sw Y   0xY w# 1 sw Y   4xY w)Nr   r   )rI   r   r   g      )r%   r2   rM   re   r'   r(   r\   r   rV   s    r/   test_errstate_all_but_onerj      s{    YY[F	8	4 


12223 	IIdO	 %	 	 s#   /B,B 1B, B)	%B,,B5)rK   r)   numpyr!   numpy.testingr   r   r   r#   r   r'   scipy.specialspecialr%   scipy.special._ufuncsr   r4   r5   r0   r9   rF   markskipifrQ   rX   r]   r`   rc   rf   rh   rj   r=   r:   r/   <module>rr      s    
   8 8  *  9   ",$ G$AB	- C	-&&&&&.&r:   