o
    Ö­j'  ã                   @   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   úd/var/www/html/CropPilot/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   çLE˜N=,?gÅøç„Ï@)r#   r   ç�™Þs?gËS?K=@)r#   r   çš™™™™™¹?g›ù–%÷?)ç€¸Ù<}Zi?r   r$   g‘ˆU’ð?)r(   r   r%   g“WYkð?)r(   r   r&   g{äÐ£ Dð?)r(   r   r'   gæ('ð?)ç4“vQ¸SÃ?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.Ø6¢z*î?)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%   gôšÈJ|tå¿)r,   r   r&   g)"¿­¢»¿)r,   r   r'   gûöMÈ�ÿÝ?c                 C   s   t t |||¡|dd� d S )Nç‚vIhÂ%<=©Ú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   gìQ¸…ëá?)éd   rO   ç{®Gázì?gªz.A%{@)r	   rO   rP   gG;« °Ú?)ç      ø?rO   ç…ëQ¸þM@g¸Ý•¡tu@)ç      ø¿rO   rR   gÄcämBÐ?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ŸÍÀÚ?)içÿÿÿr   rQ   g*A° ÂÐ?)iÎÿÿÿr   rQ   gÐöIpÐ¿)i°ÿÿÿr   rQ   gi†%oömÏ¿)ijÿÿÿr   rQ   gN‚OÑ0Æ¿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))ç{®Gáz„?é–   rA   g•_€Øýï?)r   é   rV   g 
ú¦4ð?)é2   rO   rV   g¶#ˆð?)r   ç333333Ó?g     @�Àg½nüúF¿)r   rZ   g     ˆÃÀg
»ªVkZ¿)é	   ç      !@i¢þÿÿgó©Æ@lÖî»)r[   r\   i�þÿÿgBœ˜	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Á†ðéÍ
z4Ár
   éú   y      $@      .ÀyQ¸w-ó?<kÊ�(�ë¿)Úmarksr'   y      @      8Ày/�Ï_ä²À
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