U
    Hvf                     @   sr   d dl Z d dlZd dlmZmZ d dlmZ d dl	m
Z
 dddejdfdejfgZG dd	 d	ZG d
d dZdS )    N)assert_allcloseassert_array_equal)FuncData)   )r   r   )r   r   r   c                	   @   s   e Zd Zejdedd Zdd Zejde	j
ddfe	j
ddfe	j
e	j
e	jfde	j
dfgd	d
 Zdd Zdd Zdd Zdd Zdd Zdd ZdS )TestGammainca, xc                 C   s   t t||std S N)npisnanscgammaincAssertionErrorselfax r   E/tmp/pip-unpacked-wheel-96ln3f52/scipy/special/tests/test_gammainc.pytest_domain   s    zTestGammainc.test_domainc                 C   s   t dddkstd S Nr   r   )r   r   r   r   r   r   r   test_a_eq_0_x_gt_0   s    zTestGammainc.test_a_eq_0_x_gt_0a, x, desiredr   r   c                 C   s6   t ||}t|r&t|s2tn||ks2td S r	   )r   r   r
   r   r   r   r   r   Zdesiredresultr   r   r   test_infinite_arguments   s    
z$TestGammainc.test_infinite_argumentsc                 C   sD   t tddttjdddd tddtdtjks@td S Ni  d   gN~hr   )Zatolrtol)r   r   r   r
   infr   r   r   r   r   test_infinite_limits)   s    
z!TestGammainc.test_infinite_limitsc                 C   s"   t dd}tt|dd d S Nr   
   r   )r
   aranger   r   r   r   r   r   r   r   test_x_zero4   s    zTestGammainc.test_x_zeroc                 C   s,   t dd}t dd}t||s(td S N绽|=r   r   )r   r   r
   iscloser   r   r   limitr   r   r   test_limit_check8   s    zTestGammainc.test_limit_checkc                 C   s`   t ddddddg}d}d}|D ]}||| 8 }|| }q"|t d	t j |  }|d
7 }|S )NgUUUUUUտgt:W^g;dp?g4;GE?g{>Lg
6r   r      g      ?)r
   arraysqrtpi)r   r   cresZxfacZckr   r   r   gammainc_line=   s     
zTestGammainc.gammainc_linec                 C   sL   t t ddd}|}t ||| |fj}ttj|dddd	  d S )N   i,  i  )r   r   r-   gdy=r   )
r
   logspacelog10Zvstackr3   Tr   r   r   check)r   r   r   Zdatasetr   r   r   	test_lineK   s    zTestGammainc.test_linec                 C   sB   t ddd}t ddd}t|t||}t||dd d S )Nr#   r   r(   r5   )r
   r6   r   Zgammaincinvr   r   r   r   r   yr   r   r   test_roundtripQ   s    zTestGammainc.test_roundtripN)__name__
__module____qualname__pytestmarkparametrizeINVALID_POINTSr   r   r
   r    nanr   r!   r&   r,   r3   r:   r>   r   r   r   r   r      s    




r   c                	   @   s   e Zd Zejdedd Zdd Zejde	j
ddfe	j
ddfe	j
e	j
e	jfde	j
dfgd	d
 Zdd Zdd Zdd Zdd ZdS )TestGammainccr   c                 C   s   t t||std S r	   )r
   r   r   	gammainccr   r   r   r   r   r   [   s    zTestGammaincc.test_domainc                 C   s   t dddkstd S r   )r   rH   r   r   r   r   r   r   _   s    z TestGammaincc.test_a_eq_0_x_gt_0r   r   r   c                 C   s6   t ||}t|r&t|s2tn||ks2td S r	   )r   rH   r
   r   r   r   r   r   r   r   b   s    
z%TestGammaincc.test_infinite_argumentsc                 C   sD   t ddt tjdksttt ddt dtjddd d S r   )r   rH   r
   r    r   r   r   r   r   r   r!   o   s    
z"TestGammaincc.test_infinite_limitsc                 C   s,   t dd}t dd}t||s(td S r'   )r   rH   r
   r)   r   r*   r   r   r   r,   z   s    zTestGammaincc.test_limit_checkc                 C   s"   t dd}tt|dd d S r"   )r
   r$   r   r   rH   r%   r   r   r   r&      s    zTestGammaincc.test_x_zeroc                 C   sB   t ddd}t ddd}t|t||}t||dd d S )Nr;   r#   r   g+=r5   )r
   r6   r   ZgammainccinvrH   r   r<   r   r   r   r>      s    zTestGammaincc.test_roundtripN)r?   r@   rA   rB   rC   rD   rE   r   r   r
   r    rF   r   r!   r,   r&   r>   r   r   r   r   rG   Y   s   




rG   )rB   Znumpyr
   Znumpy.testingr   r   Zscipy.specialspecialr   Zscipy.special._testutilsr   rF   rE   r   rG   r   r   r   r   <module>   s   	F