U
    ?h                     @   sL   d dl Z d dlZd dlmZmZ d dlmZ G dd dZ	G dd dZ
dS )    N)assert_allcloseassert_equalc                   @   sf   e Zd Zdd Zdd Zejdddej	gejddd	ej	gejd
ddej	gdd Z
dS )
TestHyperuc              	   C   sT   t dddddgdddddgt ddd\}}}t t t|||sPtd S )N      r         ?   
   )npZmeshgridZlinspaceallisnanschyperuAssertionErrorselfabx r   Y/var/www/html/venv/lib/python3.8/site-packages/scipy/special/tests/test_hypergeometric.pytest_negative_x	   s    
zTestHyperu.test_negative_xc                 C   s   t ddddkstd S )Nr   r   g      ?)r   r   r   r   r   r   r   test_special_cases   s    zTestHyperu.test_special_casesr   r   r   r      r   g      ?   c                 C   s2   t t|||t t |||gks.td S N)r   r   r   r   anyr   r   r   r   r   test_nan_inputs   s    zTestHyperu.test_nan_inputsN)__name__
__module____qualname__r   r   pytestmarkparametrizer   nanr   r   r   r   r   r      s   r   c                   @   s4  e Zd Zejdejddfdejdfddejfgdd Zdd Z	ejddd	d
ddgdd Z
ejdddddddgdd Zejdddddddgdd Zejdd d!d"d#d$d%d&d'gd(d) Zd*d+ Zejd,d-d.d/gd0d1 Zejd2d3d4gd5d6 Zejd7d8d9d:gd;d< Zd=d> Zd?S )@
TestHyp1f1za, b, xr   c                 C   s   t t|||std S r   )r   r   r   hyp1f1r   r   r   r   r   r      s    zTestHyp1f1.test_nan_inputsc              	   C   s$   t tddddddgdtj d S )Nr   r   r   r   )r   r   r(   r   Zinftyr   r   r   r   
test_poles%   s    zTestHyp1f1.test_polesza, b, x, result)r   r   r   r   )r   r   r   g)a?)r   r   r   g*@)r   r   r   g8<S?)r   r   gO§ؿc                 C   s   t t||||ddd d S Nr   gV瞯<ZatolZrtolr   r   r(   r   r   r   r   resultr   r   r   r   (   s    
zTestHyp1f1.test_special_cases)r   r   )\(?gO<?)r   r   r3   gQ?)d   r4   {Gz?gz.A%{@)r	   r4   r5   gG; ?)      ?r4   QM@gݕtu@)      r4   r7   gcmB?c                 C   s   t t||||ddd d S r.   r0   r1   r   r   r   test_geometric_convergence4   s    z%TestHyp1f1.test_geometric_convergence)r   r   r6   r   )r-   r   r6   gӐs?)ir   r6   g*A ?)ir   r6   gIpп)ir   r6   gi%omϿ)ijr   r6   gNO0ƿc                 C   s   t t||||ddd d S Nr   g+=r/   r0   r1   r   r   r   test_a_negative_integerD   s    
z"TestHyp1f1.test_a_negative_integerza, b, x, expected){Gz?   r+   g_?)r      r<   g 
4?)2   r4   r<   g#?)r   333333?g     @gnF)r   r@   g     g
VkZ)	         !@ig@l)rA   rB   igB	b )K   g     ^   g%C"JAc                 C   s   t t||||ddd d S r:   r0   )r   r   r   r   expectedr   r   r   test_assorted_casesP   s    zTestHyp1f1.test_assorted_casesc                 C   s2   d}d}d}d}t |||}t||ddd d S )Ng      $      @g.^?r   gvIh%<=r/   )r   r(   r   )r   r   r   r   rE   Zcomputedr   r   r   test_a_neg_int_and_b_equal_x^   s    z'TestHyp1f1.test_a_neg_int_and_b_equal_xza, b, x, desired)r   r)   r   r   )r   r+   r
   g      @)r)   r)   r   rG   c                 C   s   t ||||kstd S r   r   r(   r   )r   r   r   r   Zdesiredr   r   r   test_gh_11099k   s    zTestHyp1f1.test_gh_11099r   r*   r)   c                 C   s   t |dddkstd S )Nr*   r   r   rI   )r   r   r   r   r   'test_x_zero_a_and_b_neg_ints_and_a_ge_bt   s    z2TestHyp1f1.test_x_zero_a_and_b_neg_ints_and_a_ge_br   r   r   c                 C   s*   t td|dddgtjtjtjg d S )Nr   r8   r6   )r   r   r(   r   inf)r   r   r   r   r   test_legacy_case1   s    zTestHyp1f1.test_legacy_case1c                 C   s   t dddtjkstd S )Nr+   r*   r   )r   r(   r   rM   r   r   r   r   r   test_legacy_case2   s    zTestHyp1f1.test_legacy_case2N)r    r!   r"   r#   r$   r%   r   r&   r   r,   r   r9   r;   rF   rH   rJ   rK   rN   rO   r   r   r   r   r'      sp   












r'   )r#   numpyr   Znumpy.testingr   r   Zscipy.specialspecialr   r   r'   r   r   r   r   <module>   s
   