o
    Eb                     @   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      t t||sJ d S N)npisnanscgammaincselfax r   C/usr/lib/python3/dist-packages/scipy/special/tests/test_gammainc.pytest_domain      zTestGammainc.test_domainc                 C   s   t dddks
J d S Nr   r   )r   r   r   r   r   r   test_a_eq_0_x_gt_0      zTestGammainc.test_a_eq_0_x_gt_0a, x, desiredr   r   c                 C   8   t ||}t|rt|sJ d S ||ksJ d S r
   )r   r   r   r   r   r   r   Zdesiredresultr   r   r   test_infinite_arguments      
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 J d S Ni  d   gN~hr   )Zatolrtol)r   r   r   r   infr   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      zTestGammainc.test_x_zeroc                 C   ,   t dd}t dd}t||sJ d S N绽|=r   r   )r   r   r   iscloser   r   limitr   r   r   test_limit_check8      zTestGammainc.test_limit_checkc                 C   sX   t g d}d}d}|D ]}||| 8 }|| }q|t dt j |  }|d7 }|S )N)gUUUUUUտgt:W^g;dp?g4;GE?g{>Lg
6r   r      g      ?)r   ZarrayZsqrtZ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   r4   gdy=r#   )
r   logspaceZlog10Zvstackr7   Tr   r   r   check)r   r   r   Zdatasetr   r   r   	test_lineK   s   zTestGammainc.test_linec                 C   B   t ddd}t ddd}t|t||}t||dd d S )Nr'   r"   r.   r9   )r   r:   r   Zgammaincinvr   r   r   r   r   yr   r   r   test_roundtripQ      zTestGammainc.test_roundtripN)__name__
__module____qualname__pytestmarkparametrizeINVALID_POINTSr   r   r   r$   nanr   r%   r*   r2   r7   r=   rB   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   r	   r
   )r   r   r   	gammainccr   r   r   r   r   [   r   zTestGammaincc.test_domainc                 C   s   t dddks
J d S r   )r   rM   r   r   r   r   r   _   r   z TestGammaincc.test_a_eq_0_x_gt_0r   r   r   c                 C   r   r
   )r   rM   r   r   r   r   r   r   r   b   r    z%TestGammaincc.test_infinite_argumentsc                 C   sD   t ddt tjdksJ tt ddt dtjddd d S r!   )r   rM   r   r$   r   r   r   r   r   r%   o   s   

z"TestGammaincc.test_infinite_limitsc                 C   r,   r-   )r   rM   r   r/   r0   r   r   r   r2   z   r3   zTestGammaincc.test_limit_checkc                 C   s"   t dd}tt|dd d S r&   )r   r(   r   r   rM   r)   r   r   r   r*      r+   zTestGammaincc.test_x_zeroc                 C   r>   )Nr?   r'   r"   g+=r9   )r   r:   r   ZgammainccinvrM   r   r@   r   r   r   rB      rC   zTestGammaincc.test_roundtripN)rD   rE   rF   rG   rH   rI   rJ   r   r   r   r$   rK   r   r%   r2   r*   rB   r   r   r   r   rL   Y   s    




rL   )rG   Znumpyr   Znumpy.testingr   r   Zscipy.specialZspecialr   Zscipy.special._testutilsr   rK   rJ   r   rL   r   r   r   r   <module>   s    	F