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                   @   s   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
ejdg ddd Z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   e/home/air/shanriGPT/back/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         ?)r   r   r   r   r   r   test_special_cases   s   zTestHyperu.test_special_casesr   r   r   r      r         ?   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_inputsza,b,x,expected))~?r   h㈵>g{n@)r#   r   LEN=,?g@)r#   r   珙s?gS?K=@)r#   r   皙?g%?)瀸<}Zi?r   r$   gU?)r(   r   r%   gWYk?)r(   r   r&   g{У D?)r(   r   r'   g('?)4vQS?r   r$   gFs@)r)   r   r%   g`5)Fy@)r)   r   r&   g]?)r)   r   r'   g).?)@{~ޅr   r$   g?)r*   r   r%   gj?)r*   r   r&   g.6z*?)r*   r   r'   gdm25?)`nȰr   r$   gɛI.?)r+   r   r%   gGG?)r+   r   r&   g 3?)r+   r   r'   g?)ez$˿r   r$   gܔ)r,   r   r%   gJ|t)r,   r   r&   g)")r,   r   r'   gMȍ?c                 C   s   t t||||dd d S )NvIh%<=rtol)r   r   r   r   r   r   r   expectedr   r   r   test_gh_15650_mp   s   2zTestHyperu.test_gh_15650_mpc                 C   sV   t ddd}t ddd}t ||\}}t|d|}t t |dk s)J d S )Nr   r   i  gư>r'   r   g     @@)r   r   r   r   r   r   abs)r   r   r   resultsr   r   r   test_gh_15650_sanityN   s
   zTestHyperu.test_gh_15650_sanityN)__name__
__module____qualname__r   r   pytestmarkparametrizer   nanr"   r2   r5   r   r   r   r   r      s    
r   c                   @   sX  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 d!d"d#d$ejd%d&d'd(ejjd)ejd*dd+d,ejjd)gd-d. Zejd/g d0d1d2 Zd3d4 Zd5S )6
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_polesc   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瞯<atolr/   r   r   r>   r   r   r   r   resultr   r   r   r   f      
zTestHyp1f1.test_special_cases))r   r   )\(?gO<?)r   r   rN   gQ?)d   rO   {Gz?gz.A%{@)r	   rO   rP   gG; ?)      ?rO   QM@gݕtu@)      rO   rR   gcmB?c                 C   rF   rG   rJ   rK   r   r   r   test_geometric_convergencer   s   z%TestHyp1f1.test_geometric_convergence))r   r   rQ   r   )rE   r   rQ   gӐs?)ir   rQ   g*A ?)ir   rQ   gIpп)ir   rQ   gi%omϿ)ijr   rQ   gNO0ƿc                 C   rF   )Nr   g+=rH   rJ   rK   r   r   r   test_a_negative_integer   rM   z"TestHyp1f1.test_a_negative_integerza, b, x, expected)){Gz?   rA   g_?)r      rV   g 
4?)2   rO   rV   g#?)r   333333?g     @gnF)r   rZ   g     g
VkZ)	         !@ig@l)r[   r\   igB	b )K   g     ^   g%C"JAc                 C   rF   )Nr   g+=rH   rJ   r0   r   r   r   test_assorted_cases   s   zTestHyp1f1.test_assorted_casesc                 C   s2   d}d}d}d}t |||}t||ddd d S )Ng      $      @g.^?r   r-   rH   r   r>   r   )r   r   r   r   r1   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   rA   r
   g      @)r?   r?   r   r`   c                 C   s   t ||||ksJ d S r    r   r>   )r   r   r   r   desiredr   r   r   test_gh_11099   s   zTestHyp1f1.test_gh_11099r   r@   r?   c                 C   s   t |dddksJ d S )Nr@   r   r   rd   )r   r   r   r   r   'test_x_zero_a_and_b_neg_ints_and_a_ge_b   s   z2TestHyp1f1.test_x_zero_a_and_b_neg_ints_and_a_ge_bza, b, z, ref)g      пr         ?       @y"=?rBw)r   r   rh   y{[?;8?)   rQ   y              yI,/j!I篩py@)   rS   y      $      4@yßsS
z4r
      y      $@      .yQw-?<kʁ()marksr'   y      @      8y/_
N@7@c                 C   s    t |||}t||dd d S )NgV瞯<r.   ra   )r   r   r   zrefhr   r   r   test_complex_z   s   zTestHyp1f1.test_complex_zr   )r   r   c                 C   s(   t td|g dtjtjtjg d S )Nr   )rS   r   rQ   rB   )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 )NrA   r@   r   )r   r>   r   rC   r   r   r   r   test_legacy_case2   s   zTestHyp1f1.test_legacy_case2N)r6   r7   r8   r9   r:   r;   r   r<   r"   rD   r   rT   rU   r_   rc   rf   rg   paramxfailrp   rr   rs   r   r   r   r   r=   Y   sR    












r=   )r9   numpyr   numpy.testingr   r   scipy.specialspecialr   r   r=   r   r   r   r   <module>   s    R