
    xf              
           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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                    |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)Nr   r   error)	pytestwarnsscSpecialFunctionWarningassert_raisesSpecialFunctionErrorwarningscatch_warningssimplefilter)funargsactions      C/usr/lib/python3/dist-packages/scipy/special/tests/test_sf_error.py_check_actionr,      s    \\"334 	J	 		7	2223 	J	 	 $$& 	!!'*J	 		 		 		 	s#   BB)9B5B&)B25B>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_geterrr5   -   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!   r.   r0   r/   r1   seterrr   popr,   r   )	entry_errcategory
error_coder*   geterr_olderrseterr_olderrnewerrs          r+   test_seterrrB   4   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_refcountrM   F   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!   r.   rI   r#   r$   loggammar   olderrs    r+   test_errstate_pyx_basicrR   S   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!   r.   rI   r#   r$   spencer   rP   s    r+   test_errstate_c_basicrW   [   sn    YY[F	G	$ 2223 	IIbM	 %	 	 rS   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!   r.   rI   r#   r$   wrightomegar   rP   s    r+   test_errstate_cpp_basicrZ   c   so    YY[F	w	' "2223 	"NN5!	"" %	" 	"" "rS   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r8   )	r0   r/   r1   r!   r.   rI   r,   r   r   )r=   r>   r*   rQ   s       r+   test_errstater\   k   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   )rE   r   r   g      )r!   r.   rI   gammalnr#   r$   rV   r   rP   s    r+   test_errstate_all_but_oner_   t   s{    YY[F	8	4 


12223 	IIdO	 %	 	 s#   /B,B 1B, B)	%B,,B5)rG   r%   numpy.testingr   r   r   r   r   r#   scipy.specialspecialr!   scipy.special._ufuncsr   r0   r1   r,   r5   rB   markskipifrM   rR   rW   rZ   r\   r_   r9   r6   r+   <module>rf      s    
  8 8  *  9   ,$ G$AB	- C	-&&&.&r6   