o
    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   sH   t g dg dt ddd\}}}t t t|||s"J d S )N)      r         ?   r   
   )npmeshgridlinspaceallisnanschyperuselfabx r   b/var/www/html/scripts/venv/lib/python3.10/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J d S )Nr   r   g      ?)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J d S N)r   r   r   r   anyr   r   r   r   test_nan_inputs   s   2zTestHyperu.test_nan_inputsN)__name__
__module____qualname__r   r   pytestmarkparametrizer   nanr    r   r   r   r   r      s    r   c                   @   s  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g dd	d
 Z
ejdg ddd Zejdg ddd Zejdg ddd Zdd Zejdg ddd Zejdddgdd Zejd g d!d"d# Zd$d% Zd&S )'
TestHyp1f1za, b, xr   c                 C   s   t t|||sJ d S r   )r   r   r   hyp1f1r   r   r   r   r       s   zTestHyp1f1.test_nan_inputsc                 C   s   t tdg ddtj d S )Nr   )r   r   r   r   r   r)   r   infr   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      t t||||ddd d S Nr   gV瞯<atolrtolr   r   r)   r   r   r   r   resultr   r   r   r   (      
zTestHyp1f1.test_special_cases))r   r   )\(?gO<?)r   r   r:   gQ?)d   r;   {Gz?gz.A%{@)r	   r;   r<   gG; ?)      ?r;   QM@gݕtu@)      r;   r>   gcmB?c                 C   r1   r2   r6   r7   r   r   r   test_geometric_convergence4   s   z%TestHyp1f1.test_geometric_convergence))r   r   r=   r   )r0   r   r=   gӐs?)ir   r=   g*A ?)ir   r=   gIpп)ir   r=   gi%omϿ)ijr   r=   gNO0ƿc                 C   r1   )Nr   gt=r3   r6   r7   r   r   r   test_a_negative_integerD   r9   z"TestHyp1f1.test_a_negative_integerza, b, x, expected)){Gz?   r,   g_?)r      rB   g 
4?)2   r;   rB   g#?)r   333333?g     @gnF)r   rF   g     g
VkZ)	         !@ig@l)rG   rH   igB	b )K   g     ^   g%C"JAc                 C   r1   )Nr   g+=r3   r6   )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%<=r3   )r   r)   r   )r   r   r   r   rK   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   rM   c                 C   s   t ||||ksJ d S r   r   r)   )r   r   r   r   desiredr   r   r   test_gh_11099k   s   zTestHyp1f1.test_gh_11099r   r+   r*   c                 C   s   t |dddksJ d S )Nr+   r   r   rP   )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|g dtjtjtjg d S )Nr   )r?   r   r=   r-   )r   r   r   r   r   test_legacy_case1   s   (zTestHyp1f1.test_legacy_case1c                 C   s   t dddtjksJ d S )Nr,   r+   r   )r   r)   r   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   r@   rA   rL   rO   rR   rS   rU   rV   r   r   r   r   r(      s0    












r(   )r$   numpyr   numpy.testingr   r   scipy.specialspecialr   r   r(   r   r   r   r   <module>   s    