o
    Ö­jch ã                   @   s°   d Z ddlZddlZddlZddlmZ ddlmZ ddl	m
Z
 ddlmZmZ zddlZW n ey;   edƒZY nw dd	„ ZG d
d„ deƒZG dd„ dƒZG dd„ dƒZdS )z÷Tests for hyp2f1 for complex values.

Author: Albert Steppi, with credit to Adam Kullberg (FormerPhycisist) for
the implementation of mp_hyp2f1 below, which modifies mpmath's hyp2f1 to
return the same branch as scipy's on the standard branch cut.
é    N)Ú
NamedTuple)Úassert_allclose)Úhyp2f1)Úcheck_versionÚMissingModuleÚmpmathc                 C   s®   |j dkot|jƒdk }t||  t||  ƒ ƒdk o!t||  ƒdk}t|| t|| ƒ ƒdk o7t|| ƒdk}|r?|j d }|rK|sK|sK|j d }n|}tt | |||¡ƒS )a)  Return mpmath hyp2f1 calculated on same branch as scipy hyp2f1.

    For most values of a,b,c mpmath returns the x - 0j branch of hyp2f1 on the
    branch cut x=(1,inf) whereas scipy's hyp2f1 calculates the x + 0j branch.
    Thus, to generate the right comparison values on the branch cut, we
    evaluate mpmath.hyp2f1 at x + 1e-15*j.

    The exception to this occurs when c-a=-m in which case both mpmath and
    scipy calculate the x + 0j branch on the branch cut. When this happens
    mpmath.hyp2f1 will be evaluated at the original z point.
    ç      ð?çVçž¯Ò<r   ù                y        Vçž¯Ò<)ÚrealÚabsÚimagÚroundÚcomplexr   r   )ÚaÚbÚcÚzÚon_branch_cutÚcond1Úcond2Úz_mpmath© r   ú\/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/special/tests/test_hyp2f1.pyÚ	mp_hyp2f1   s   ,,
r   c                   @   s>   e Zd ZU eed< eed< eed< eed< eed< eed< dS )ÚHyp2f1TestCaser   r   r   r   ÚexpectedÚrtolN)Ú__name__Ú
__module__Ú__qualname__ÚfloatÚ__annotations__r   r   r   r   r   r   1   s   
 r   c                %   @   sœ  e Zd ZdZej de edddde	j
d dd	�¡e eddddd
dd	�¡e eddddd
dd	�¡e eddddd
dd	�¡e edddde	j
d dd	�¡e edddde	jd dd	�¡e eddddddd	�¡e eddddddd	�¡e eddddddd	�¡e eddddddd	�¡e edddd
ddd	�¡g¡dd„ ƒZej de edddd
ddd	�¡e edddd
d dd	�¡e ed!d"d#d
d$d%d	�¡e ed&d'd#d
d(d)d	�¡e ed'd&d#d
d*d+d	�¡e ed,d-d.d
d/dd	�¡e ed-d,d.d
d/d)d	�¡e ed0d1d2d
d3d)d	�¡e ed1d0d2d
d3d)d	�¡e ed4d5d6d
d7d8d	�¡e ed9d:dd
d;d%d	�¡g¡d<d=„ ƒZej de eddd6d>d?dd	�¡e eddd@d>dAdd	�¡e edBdCdDd>dEdFd	�¡ejed4d5dGd>dHdFd	�ejjejdIk dJdK�dL�g¡dMdN„ ƒZej de eddOdPdQdRd%d	�¡e edSdTdUdVdWd)d	�¡e edSdXdYdQdZd[d	�¡e edd\d]d^d_d+d	�¡e edOdd`dQdad)d	�¡e edTdSdUdbdcd+d	�¡e eddddYdQded+d	�¡e edfdgdhdidjd%d	�¡g¡dkdl„ ƒZej de edmdndodpdqdrd	�¡e edsd]ddQdtdud	�¡e edsdndvdwdxdyd	�¡e edmdndodzd{dyd	�¡e ed|dmdod}d~d[d	�¡g¡dd€„ ƒZej de ed|dnd�d‚dƒd„d	�¡e ed…dnd�d†d‡dˆd	�¡e edOdPd‰dŠd‹dŒd	�¡e edOd�dŽd�d�d‘d	�¡e eddd`dŽd’d“dŒd	�¡e edOd`d”d‚d•d–d	�¡e ed|dnd�d—d˜d)d	�¡ejed|dnd™d—dšdFd	�ejjd›dœ�dL�e edOd�dŽd�džd)d	�¡g	¡dŸd „ ƒZej de edOdPd”d¡d¢dŒd	�¡e ed£d�d¤d¥d¦d§d	�¡e ed…d`d¨d©dªdŒd	�¡e eddd«d¨d¬d­dŒd	�¡e edOd`d®d¯d°dd	�¡e edOd«d±d¥d²d+d	�¡e ed£d«d³d´dµd)d	�¡e edXd]dŽd¶d·d¸d	�¡e eddd¹dºd»d¼d)d	�¡e ed£d½d¤d¾d¿dŒd	�¡e edXd]d�dÀdÁd¸d	�¡e ed…dUd³dÂdÃd¸d	�¡e edXd¹d‰d©dÄdd	�¡e ed\dPdŽdÅdÆd¸d	�¡e edTd�d”dÇdÈdŒd	�¡e edTd�d¤d¡dÉdÊd	�¡e ed\dPd®d©dËdŒd	�¡e edÌdYd³dÍdÎd¸d	�¡e edÏdPd�d¯dÐdŒd	�¡e edTdnd¤dÑdÒdŒd	�¡e edÏdUd¤dÓdÔdŒd	�¡e ed\d½d¤dÕdÖdŒd	�¡e ed|d¹d®d×dØd¸d	�¡e ed|d¹d�dÙdÚd„d	�¡e edÌdnd®dÂdÛd)d	�¡g¡dÜdÝ„ ƒZej dg e edÞdßdàdádâd¸d	�¡‘e edãdädådædçd¸d	�¡‘e edèdèdådédêdŒd	�¡‘e edëdìdodádíd–d	�¡‘e edîdïdmdédðdŒd	�¡‘e edëdèddádñd¸d	�¡‘e edädãdòdódôd¸d	�¡‘e edãdìdodédõdd	�¡‘e edädèdàdédöd¸d	�¡‘e eddd]d�dQd÷d¸d	�¡‘e edãdädmdQdød¸d	�¡‘e edTd½d®dùdúd¸d	�¡‘e ed\dPdŽdQdûdŒd	�¡‘ejedïdÞdüdádýdþd	�ejjdÿdœ�dL�‘e edä�d dådæ�ddd	�¡‘e edãdß�ddQ�ddd	�¡‘e edïdãdàdá�dd„d	�¡‘e edädãdmdé�dd)d	�¡‘e edÞdìdòdæ�dd¸d	�¡‘e ed|d¹d‰dQ�dd)d	�¡‘e ed£dYd‰�d�d	d)d	�¡‘e edîdìddQ�d
dŒd	�¡‘e ed…dPd‰�d�dd)d	�¡‘e edßdãds�d�dd–d	�¡‘e edOd�d¤�d�dd¸d	�¡‘e edßdìds�d�ddŒd	�¡‘e edädìdmdá�dd¸d	�¡‘e eddd`d®dæ�dd¸d	�¡‘e edTd½dŽdá�dd¸d	�¡‘e ed…dPd¨�d�d�dd	�¡‘e ed£dUd¤dá�dd)d	�¡‘e edèdäddé�ddd	�¡‘¡�d�d„ ƒZej dg e edÞdïdv�d�dd¸d	�¡‘e e�dd£d��d�ddd	�¡‘e edd…d¹�d�dd¸d	�¡‘e edd�dd¹�d�d d„d	�¡‘e edOdU�d!�d�d"�d#d	�¡‘e edOdnd¤�d�d$d¸d	�¡‘e e�dd\d¹�d%�d&dŒd	�¡‘e e�d'dÌdU�d�d(�dd	�¡‘e edmd�dv�d)�d*d+d	�¡‘e edÏdYd¤�d%�d+d¸d	�¡‘e ed|ddn�d�d,d+d	�¡‘e edÏd�d‰�d%�d-d§d	�¡‘e edÌd]d¨�d)�d.d¸d	�¡‘e edÏdnd”�d%�d/dd	�¡‘ejedãdëdå�d%�d0�d1d	�ejjdÿdœ�dL�‘e edÌd½d‰�d�d2d¸d	�¡‘e e�d�dd`�d)�d3d¸d	�¡‘e e�ddsd½�d�d4d¸d	�¡‘e edvdådY�d�d5d¸d	�¡‘e edsdòdU�d%�d6d¸d	�¡‘e edodüdY�d%�d7d„d	�¡‘e edm�ddn�d)�d8d)d	�¡‘e edmdàd��d�d9dd	�¡‘e edàdòdn�d�d:d¸d	�¡‘ejedèdädü�d;�d<�d1d	�ejjdÿdœ�dL�‘e edädÞ�d�d=�d>d¸d	�¡‘e edïdïdm�d?�d@dŒd	�¡‘e ed…ddU�d?�dAd¸d	�¡‘e edXdUd¨�dB�dC�dd	�¡‘e eddd]dº�dD�dEd)d	�¡‘e edddàdà�dF�dGdŒd	�¡‘e edïdßdå�dD�dHd)d	�¡‘e edÏ�ddY�dI�dJdŒd	�¡‘e edT�ddY�dK�dLd¸d	�¡‘e edodPdò�dM�dNdŒd	�¡‘e edTd«d��dK�dOdˆd	�¡‘e edìdëd�d?�dPd¸d	�¡‘e edod½d�d?�dQd)d	�¡‘e edßdãdm�d?�dRdŒd	�¡‘e ed\dUd®�dB�dSdŒd	�¡‘e eddüd��dF�dTdd	�¡‘e edüdsd]�d?�dUd)d	�¡‘e edvdòdY�dK�dVd%d	�¡‘e edsdòdU�d?�dWd¸d	�¡‘e edàdüdY�dB�dXdŒd	�¡‘e edòdsdn�d=�dYd¸d	�¡‘e edådmdP�dD�dZdd	�¡‘e edmdod¹�d[�d\�d]d	�¡‘¡�d^�d_„ ƒZej dg e e�dd�ds�d`�da�dbd	�¡‘e edädï�d�dc�dddŒd	�¡‘e edOd`d³�d`�dedŒd	�¡‘e ed£�d'dU�d`�df�dgd	�¡‘e edXdmd�d`�dhdˆd	�¡‘ejed£dU�d!�d`�di�d1d	�ejjdÿdœ�dL�‘e e�d!d\dU�dc�djd)d	�¡‘e edddodò�dk�dl�dmd	�¡‘e edÌd`�d'�dc�dnd)d	�¡‘e edTd`�d!�dc�dod¸d	�¡‘e edTdYd³�dp�dqdŒd	�¡‘e edÌdd½�d`�drd¸d	�¡‘e edàdn�d�dp�dsdŒd	�¡‘e edTdnd¤�dk�dtd¸d	�¡‘e edÏdUd‰�dc�dudFd	�¡‘e edßdìdò�dp�dvdŒd	�¡‘e eddüdP�dk�dwd§d	�¡‘e eddsd]�dc�dxd¸d	�¡‘e edvdodP�d`�dy�dzd	�¡‘e eddmdU�d`�d{d¸d	�¡‘e edòdüdY�dc�d|dŒd	�¡‘e edodüdn�d`�d}dŒd	�¡‘e edòdàdY�dp�d~dŒd	�¡‘e edodådn�dk�dd¸d	�¡‘ejedÞdè�d�d€�d��d1d	�ejjdÿdœ�dL�‘e edOddü�d‚�dƒd¸d	�¡‘e ed£�d'd]�d„�d…d)d	�¡‘e eddd�d³�d†�d‡d¸d	�¡‘e edÞdãd�dˆ�d‰�d#d	�¡‘e edsd¹ds�dŠ�d‹�dd	�¡‘e edXd½d‰�dŒ�d�d¸d	�¡‘e edÞ�d då�dŽ�d��dbd	�¡‘e edàd«dü�dŽ�d�dŒd	�¡‘e ed|dPdŽ�d†�d‘dŒd	�¡‘e edëdèdo�d’�d“d)d	�¡‘e edìdïdo�d”�d•�d–d	�¡‘e edTdnd¤�d—�d˜dŒd	�¡‘e edodUdü�dˆ�d™d+d	�¡‘e edãdãdà�dš�d›d¸d	�¡‘e edTdodò�d„�dœdŒd	�¡‘e e�dddP�dš�d�dd	�¡‘e edv�dd]�d’�džd¸d	�¡‘e eddådP�dŸ�d dd	�¡‘e e�ddåd¹�d‚�d¡d¸d	�¡‘e edòdsd��d‚�d¢dÊd	�¡‘e edòdüd]�d£�d¤d¸d	�¡‘e edådàd`�dŸ�d¥�d¦d	�¡‘e edodådn�dš�d§d¸d	�¡‘¡�d¨�d©„ ƒZej de edXdYd”�dª�d«dŒd	�¡e ed£d`dº�d¬�d­dd	�¡e ed…d«d”�d®�d¯dd	�¡e ed…d`d��d°�d±d¸d	�¡e edddYd��d°�d²d¸d	�¡e eddd«d‰�dª�d³d+d	�¡e edXd¹dŽ�d´�dµd¸d	�¡e ed…d½d¨�dª�d¶dŒd	�¡e ed£dnd¨�dª�d·d¸d	�¡e ed…d½d®�d°�d¸d¸d	�¡e eddd]d±�d®�d¹d¸d	�¡e ed…dUd®�dª�dºd„d	�¡e ed\dYdº�d»�d¼dŒd	�¡e edÏd«d¨�d°�d½dŒd	�¡e ed\d«d¤�dª�d¾dd	�¡e edÏdPd³�d®�d¿dŒd	�¡e ed|dPd±�d´�dÀd¸d	�¡e edÏd�d‰�d´�dÁdyd	�¡e edTd]d¨�dª�dÂdˆd	�¡e ed|dUdº�d»�dÃd¸d	�¡e ed|d¹d”�d°�dÄd¸d	�¡e ed\d]d‰�d°�dÅdŒd	�¡e ed\dUd³�d®�dÆdŒd	�¡e ed\dUd³�d°�dÇd¸d	�¡e e�dÈ�dÈ�dÉ�dÊ�dËd¸d	�¡g¡�dÌ�dÍ„ ƒZej de ed6�dÎ�dÏ�dÐ�dÑdŒd	�¡g¡�dÒ�dÓ„ ƒZejjee�dÔƒ�dÕ�dÖ„ ƒƒZ�d×�dØ„ Z�dÙS (Ú  Ú
TestHyp2f1a†  Tests for hyp2f1 for complex values.

    Expected values for test cases were computed using mpmath. See
    `scipy.special._precompute.hyp2f1_data`. The verbose style of specifying
    test cases is used for readability and to make it easier to mark individual
    cases as expected to fail. Expected failures are used to highlight cases
    where improvements are needed. See
    `scipy.special._precompute.hyp2f1_data.make_hyp2f1_test_cases` for a
    function to generate the boilerplate for the test cases.

    Assertions have been added to each test to ensure that the test cases match
    the situations that are intended. A final test `test_test_hyp2f1` checks
    that the expected values in the test cases actually match what is computed
    by mpmath. This test is marked slow even though it isn't particularly slow
    so that it won't run by default on continuous integration builds.
    Úhyp2f1_test_caseg      à?gš™™™™™É?iöÿÿÿyš™™™™™É?š™™™™™É?r
   r   )r   r   r   r   r   r   y      ð?        éûÿÿÿyã�VäêÊð?t[5âÜ9­?r	   yŸ. îÉ|ñ?•lôoð8Á?iìÿÿÿy�žÌx¾³¿£ •×RÀ?g‚vIhÂ%<=éÿÿÿÿgš™™™™™	@y>
×£p=ú?|®Gázä?éþÿÿÿg333333ó?éüÿÿÿy…ëQ¸ý?        c                 C   ó,   |\}}}}}}t t||||ƒ||d� d S ©N©r   ©r   r   ©Úselfr$   r   r   r   r   r   r   r   r   r   Útest_c_non_positive_intK   s   tz"TestHyp2f1.test_c_non_positive_intg      ø?y
šñdò?        gš™™™™™(@g       @g�Âõ(\O4@y*Ìk“„�A        g33333#r@g     t@gÍÌÌÌÌà…@yk˜|öÿ@X        gê-�™—q=gffffff"@g     lƒ@yÉ:5>ºdÌA        gê-�™—a=yk@5>ºdÌA        g•dyáý•=gÍÌÌÌÌLYÀgfffffyÀg33333ƒeÀyFÔ%ä½°G        g     �e@gš™™™™)iÀgfffffæb@yoîuMÄ�$        gfffff†YÀgÍÌÌÌÌL4ÀgÍÌÌÌÌÌô?y¥(‰¥¡—D        g´àø¤tã =g33333SiÀgfffff&N@yîRUË3”T´        c                 C   sH   |\}}}}}}|dkr|| | dksJ ‚t t||||ƒ||d� dS )z^Tests for case z = 1, c - a - b > 0.

        Expected answers computed using mpmath.
        é   r   r+   Nr,   r-   r   r   r   Útest_unital_argumentÂ   s   zzTestHyp2f1.test_unital_argumenty      ð¿        y+�i,î?        g433333@y7ÃG&SÔ¾        g     °k@gÍÌÌÌÌŒV@gš™™™™‰`@yÁ -$ ÙF7        gH¯¼šò×z>g333333TÀyL"¾C·†…A        l        zFails on 32 bit.)Ú	conditionÚreason)Úmarksc                 C   sX   |\}}}}}}t d| | | ƒdk rt |d ƒdk sJ ‚tt||||ƒ||d� dS )z^Tests for case z ~ -1, c ~ 1 + a - b

        Expected answers computed using mpmath.
        r0   r	   r+   N©r   r   r   r-   r   r   r   Ú test_special_case_z_near_minus_1@  s   5,z+TestHyp2f1.test_special_case_z_near_minus_1gj{k°ž8 @gQDi¯Ýåð?yå5”×Pî?0¯¡¼†òº¿y¤,úB¹.j?‚k„gg‰R¿iøÿÿÿgˆµÊKÀÀgt„y®í/Ày       @0¯¡¼†òº¿yžyšµv?1�AÖßAe¿gÑ-†1 @g�H€îh@y)Ó1Œä4¿#<6i1G¿g»½×Ùß|Û=gB!½uZ¦ÀgsSÄÛtÀyl(¯¡¼†ò?`Cyå5Ô¿yöö²©a¿ôÆ®('q¿go»ñg @yÈL2|R?àÑ“B±‘*?yP^Cyåõ? ¯¡¼†òº?y4=2Uò¿X6Kòª[:¿gí;™R@yÍ]ÌA¿×�±PE0C¿iðØÿÿgš™™™™™@g333ENH–Ay       @       @y¼4­$üï?¥sð)0Õ>¿c                 C   sX   |\}}}}}}|t |ƒkr|dk s|t |ƒkr|dk sJ ‚tt||||ƒ||d� d S )Nr   r+   )Úintr   r   r-   r   r   r   Útest_a_b_negative_inty  s   V,z TestHyp2f1.test_a_b_negative_intg      à¿gbðõÉ°Ðî¿g      /Àyl(¯¡¼†ò?l(¯¡¼†ò¿yôã‹�Jï?¸²^è&’¦?gßÄAfcŠ=g      !@yÜæ$i8Q@­#íáß;$ÀgßÄAfcš=g      @yl(¯¡¼†ò?0¯¡¼†òº¿y³³U ÁÀ†±Ìtvä?g•dyáý¥=y4”×P^Cù?l(¯¡¼†ò¿yÝ{°hº`î?¼@,/¦¿gÞ§7�í¿yxå5”×à? ¯¡¼†òº?yj?<‡ƒ€ï?C«°X�i¿c                 C   s€   |\}}}}}}t || t|| ƒ ƒdk r|| dk s2t || t|| ƒ ƒdk r0|| dk s2J ‚tt||||ƒ||d� d S )Nr	   r   r+   )r   r7   r   r   r-   r   r   r   Ú:test_a_b_neg_int_after_euler_hypergeometric_transformationÓ  s   :(,zETestHyp2f1.test_a_b_neg_int_after_euler_hypergeometric_transformationg—yÎ]Qí/Ày ¯¡¼†òº?`Cyå5Ô¿yg’	Ðï?„×ª ü‘?g›+¡†›„=gn¶h§oð?yxå5”×à?xå5”×à?yi�›|8Ÿð?:AÅêSr¸¿g»½×Ùß|Ë=gbÑ'ÂûÀÀy ¯¡¼†òº?@yå5”ç?y9½¶)�@ðb¶í$ï8@g›+¡†›„ö<gÙÉ0z˜0@gÔ”œÕ8 @y`Cyå5Ô?Dyå5”ç¿y_™ oïÚ¿òŒ+ u±¿gê-�™—�=y@yå5”ç?0¯¡¼†òº¿yÜ­$­«@£g€!D)æ¿gP¸cÄP@yd·ëæð?°�d‰­êÖ¿gVçž¯Â<y`Cyå5Ô?zå5”×à¿yÕ¥éIpï?Õ8Ó8ù�?gþ¡ÚRôcÀyÈí¯šœñï?£å%íúg?zPoor convergence.)r3   yxå5”×à?zå5”×à¿yƒÜ“8æ¿{b@*ê?c                 C   sF   |\}}}}}}t |ƒdk r|jdksJ ‚tt||||ƒ||d� dS )z|z| < 0.9 and real(z) >= 0.çÍÌÌÌÌÌì?r   r+   N©r   r   r   r   r-   r   r   r   Útest_region1  s   bzTestHyp2f1.test_region1y`Cyå5Ô¿@yå5”ç?yö$i^Îè?`o�ÃÎÎ?g½øƒl0@gúÀÚXQ @yå5”×Pî¿`Cyå5Ô¿yáÞþªç¦><Ia-
¼>g:Œ0âŽy5>g da‹0@y0¯¡¼†òº¿0¯¡¼†òº¿yýøbüŽï?7¬@“p9‹¿gˆÕ—‘' @y`Cyå5Ô¿Dyå5”ç¿yÓTõ�°Ä?lÃÎZu{Ú¿g£>V’í¿yzå5”×à¿`Cyå5Ô?yy>ëT	À;òÜ*²Á?gâíÚ�ðÀyzÓò‹ýâR@‰ÍŠáGI@g¥üùÿíhÿ¿yzå5”×à¿xå5”×à?yòÑ‚Ìö q@ðÔç8”TÀyzå5”×à¿0¯¡¼†òº¿yž&ª
ê·@¼?Ó÷?g‚vIhÂ%,=g%+ ¶²ÌÀgÑúãòÍ
ñ?y`Cyå5Ô¿å5”×Pî¿y¶³=?¢@=	Yx<ØpÀgq´£ÆÜþ¿yDyå5”ç¿`Cyå5Ô¿yø
Ý-=@áT~Çn 6@yDyå5”ç¿0¯¡¼†òº¿y
Wôú`¦Ê?ŽÊ|�6d¨¿y`Cyå5Ô¿zå5”×à¿yŠ¢ý8Á5Ê|@.AyR¿†J˜°Ó?x?•nóÓ¿yå5”×Pî¿0¯¡¼†òº¿yì×Å84Üú?ã_Ýá´¾¹?yzå5”×à¿Dyå5”ç¿yþ-ª–»@ê^‚ÈcðÈÀy—á¬ì¦»ê@ÁeC‰‰ÖÀgVçž¯â<yGÎˆqó?¢… +ÌÀg¡Ð\·1ö/ÀyDyå5”ç¿xå5”×à?y¢É`€èéB8¯îÚØAgÕ´/Q¾þ¿y½Ñq·–çí?Ì^Ò’”-£?y0¯¡¼†òº¿ ¯¡¼†òº?yß)bã?rèÖt¤{Ù?y0¯¡¼†òº¿zå5”×à¿yf|í�#À¢±SþI\Ày0¯¡¼†òº¿`Cyå5Ô?y…ÛÛ-Ý?©ƒY|ñ?yDyå5”ç¿`Cyå5Ô?yÌ<nük«(@ÀÝ$n²SÀyzå5”×à¿ ¯¡¼†òº?yÂS¾ßhÕó?>€÷R¨¿yX7ò>~rX@4îëéïÿ2Àc                 C   sF   |\}}}}}}t |ƒdk r|jdk sJ ‚tt||||ƒ||d� dS )z|z| < 1 and real(z) < 0.r0   r   r+   Nr;   r-   r   r   r   Útest_region2z  s
     zTestHyp2f1.test_region2g     @0@g      Àg      Àyxå5”×à?@yå5”ç?y^«¸-õý“À>xcÔý¡Àg     €/Àg     € @g      ø¿yå5”×Pî?`Cyå5Ô?yÜ×Mõ¹\ÁÀ˜‘iÆ”\ÇÀg      @yxå5”×à?Dyå5”ç¿yˆAïÞ’mÀ’£4öºÐmÀg      è¿g      Àyº2ÅŸ°øé?}Ÿq^oÊÒ¿g      ô?g      @yáÉ+}‘<Àò]#x‚¹X@y4â¦·Ïþà?3ØS	ž0î¿g      Àyå5”×Pî? ¯¡¼†òº?yâçÍ`B3A>5C¢Ñ;Ay¹®_q„„¿d#”‚„Z×?y£ýZÃyß!A½j6ãÕmàÀy¦¥
Ëù­äB6þ&£ý°ãÂyØ¹jüÞ¥?ÏX�ñRÂ¿yå5”×Pî?`Cyå5Ô¿y[^Ç0|À„UÊéFt@y¼“ÜþR[ä?ÂgíB�?g     €0@y•Ÿ;˜ìì¿§k™ë‘ø¿g:Œ0âŽyE>zUnhandled parameters.g      ü¿y’ Zh„@7Ñ} )Ê±Àg      @yÇ¾ôÜ¬]@xÍ ôAÀy¦¬tôX| ÁùýÆ’õRAywör|Y1AA÷RyW®QIAyhÃ¼“¾†ÁÁ¨'}eqÁy€ÕŠ8²?ÎQŽD¾?y@yå5”ç?xå5”×à?y�~šCòu€øžÑjÃy£2}ã@“?1OÂSïg?y@yå5”ç?zå5”×à¿yGU<A»ùÁÀœRt%3È@yT¢85³ß@+¡ž�¦08@y·õgµ°Ð¢@fÈ€ßA³°Ày]·xO�@F¹ÿ¼Ày÷€œgœÑóÀ¾S¢s÷aë@yì·Ã�¤32Ao<»h‰¦KAyŽ�4ëBý?•Å3Vßþ?yN™€‚ÌÒð?{E7¦¿g•Ö&è.>y~¦y>Š AsÊ4Ñ —Ay=›ÛŠ-Ý%ÀèÎ°¤7žþ?c                 C   s^   |\}}}}}}dt |ƒ  krdkrn J ‚t d| ƒdk s!J ‚tt||||ƒ||d� dS )z"0.9 <= |z| <= 1 and |1 - z| < 0.9.r:   r0   r+   Nr5   r-   r   r   r   Útest_region3  s
     L2zTestHyp2f1.test_region3y ðøÃ�ß?¡Õ—
Z}é¿y{i{¿4C@Â&F™‚>Àç       @ytO#,÷4â?¡Õ—
Z}é¿y”ýÞ'OVå¿áûù/xTð¿y÷P0*°ž9AJOãp÷DÁg      0@yßJ/:¹XB’ôö™þrÂç      @yÂà7„¯w¿«ÿÙdþš?gñhãˆµøÔ>yÂ:òTqæÝ?@úáÜè?y ðøÃ�ß?¢Õ—
Z}é?yÄbÀ¼&î?T×,þ#�õ?r   yTü­¯®Ú?�‚¡z]Dï¿ytO#,÷4â?¢Õ—
Z}é?y1`Ã-wô?…01ÆÿcÀy  ùky’ À6®L†é¿y­EŸÆõÀþD @yî'[¾�®¸À·R�„jÝ»Àyy�“«Uì¿¢Ïf*E @y4þÌy²–ó?Òf¦×?yÝ+*ûŸ9ù¿,†€…Àgü©ñÒMbP?y½ÜµeL@Ùæ>£9@yÏžQÔ}ÀÞ_’‹ó@y}X4õ;œ@Að,£èGIÁyqRøü!)Ý?Œ-ÛÞàã?yNT+„N@íž>›Â—BÀyÛ?~¡í.àÀ9¼çñ¦MÔ@yÿØëXRÇ>@bNj}Ï¦:ÀyòYËŠöñ?ú‰úZEµ¿yÚåi˜äÑ@CPHmÃ«@yÀÒy‹!½?l„åžFXî?yª [™Ü?¬û Uüfç?yŒ’]›(ÙÕ?­¾TÐêë?y—„ò÷á>Àeí†öù‹@yÀÒy‹!½?j„åžFXî¿y´�øþ¬(DÀ!&¯n�yVÀy\õô ­é@†!‘ÌÝ¨úÀy@»6Q²k£?l„åžFXî?yÊˆ”êô ó¿ÀüNÆ�<ø¿yÄã<þÐ?l„åžFXî?yLaæa­'*@åÐ6-*‰A@yÄã<þÐ?­¾TÐêë?y4÷?a¡&á¿[Ö®«gÎ¿yÂá}ö>Ó’@™+.AP@y@»6Q²k£?j„åžFXî¿y±²Ï�“´#À9Ä Ç_@yŒ’]›(ÙÕ?­¾TÐêë¿y_¢³k„€@?ûp~Ý–ÀyXA«/´Ú?­¾TÐêë?y|WðžÓE Ag¶Ü¢õOAy—&‹+ôï¿‰Ú3�1@yl¿ó^” @Nt~´µÕÀyEËùÙðDÀõçú•ÐC@ÀyÚw3>#­ÀÅi.¬àèÝÀy…* ø ÁþáÅAyµÝƒ}øKÈ?¸ˆ"Ø"é?y2OóD’GšA®î+°–žAy ,ëJ8lÑ?�|¬p5äË¿y@0Ú-šÀ©¬näþq@yÙ"žYÚš4ÀšsWK³ R@y0õ¸BCEÁhö�BNÁyàSd§žó?û®F¼´ñä?yXA«/´Ú?­¾TÐêë¿yPÇlQ¤¡À;ØùÀNÁ@g8JåÏ=ã=c                 C   s^   |\}}}}}}dt |ƒ  krdkrn J ‚t d| ƒdks!J ‚tt||||ƒ||d� dS )z�0.9 <= |z| <= 1 and |1 - z| >= 1.

        This region is unhandled by of the standard transformations and
        needs special care.
        r:   r0   r+   Nr5   r-   r   r   r   Útest_region4Í  s      t2zTestHyp2f1.test_region4yÚ&Jvm¢ä?­¾TÐêë?y°ˆÅ9“?æ¢¤àÎ€³¿gH¯¼šò×j>yÚ&Jvm¢ä?­¾TÐêë¿y
Ÿè`ÉCö¿0Ë�¥7¾¿yáç‡[
¢À¢ŒÔ*æ2žÀyð²w¶í3BL�ó‡ÇS�Âg›+¡†›„=yzá5¼ó?CìÛðÄOÀyXIí©¥÷ø@•T!NöåÀyŽ›IÐ	¬À†ïNiYÃÀytO#,÷4â?­¾TÐêë¿y×®[ÍÕšÁÛ)×-ÊÚ¤Ag-Cëâ6
?y!'µh@½œqiq@y2ý$Ð½'?’á”cÒ³?ytO#,÷4â?­¾TÐêë?yï,‹”AŒmÚ‘Áy–½ÁÔA§e¡4²áÁyø/ ‰Úö?¥B`s¶ä?y(ç»Ã&	@ÓÉ:Ë•)	Ày9àÑM”ÑR@Ÿó½b@y—S.­×¿©¤Óƒëñë?yü2Fø$@EDÆ“‹ÄÀyðÚÿV«ã'Á c�)Ñd ÁyRQ"´²°(@™Ê!‹ü-Àgü©ñÒMb@?yï‰L·²7@˜�äî™IX@yv·1m‘@f4¤À^ŸŒ@yÄ´ÍÚ¯bBu�i'6(_By"N¯ÂÁÀhVk¡à0@y±¹øÊ)FÀ+Œ]œ¦�@yÀÒy‹!½?è-†tÞbð¿y±×˜p~–¿ó»×‹ÍJ„?yÄã<þÐ?è-†tÞbð?y^…ßð?]äÑ½‡É?yŒ’]›(ÙÕ?l„åžFXî?yFMI“‡Ô@™³(vÿè@yXA«/´Ú?j„åžFXî¿ybpòÖ›ËZÁÞ‡nƒoîBAyði„åžFÈ?è-†tÞbð?yW>Ëãë–AÌ`ŒÐ¢¸ÁyÄã<þÐ?è-†tÞbð¿y?DÐ6©ïþ?Ë!48ò@y ðøÃ�ß?­¾TÐêë?y—fà|°¡^À)cª:µÜMÀy ðøÃ�ß?l„åžFXî?y1jGËšVÀ`+¹Ô@I@yÐI_©ò—Ë¿èG Ïpâ¿ysªùhî?G·Ä¡½?yXA«/´Ú?l„åžFXî?y±£I‚ú¶í?c²µnx@ê?yŒ’]›(ÙÕ?j„åžFXî¿yb.ÔÐð¿O®Ç¸4Õñ¿g^~zÅ=y ðøÃ�ß?j„åžFXî¿y:&ô­@A¼0ébfÀy^DŒñõh@�Ý¾“³¼u@y ðøÃ�ß?­¾TÐêë¿yúˆ´M;HÂÍBËnM+ByýóÅî9~ÖÀ§:1<ÔÑÀyÇ| ø?”aPe2»ó?yýç Ä„»@*º²K¢ãÀy@»6Q²k£?è-†tÞbð?yÙUƒ±5qÑ?Õ3±8€úÀyóŽA7€&À/Ýé”Ý1)@ynñˆD³Ç¿±�O?xé?yŒ’]›(ÙÕ?è-†tÞbð¿y†mõÀÍA¢¨’ÐAyî÷Ã€D°á?ñŽ0Ð”@gMgâñžÕ<yûÏ¨Î²K@ßª]½CŽ@c                 C   sh   |\}}}}}}dt |ƒ  k rdk r$n J ‚t d| ƒdkr$|jdks&J ‚tt||||ƒ||d� dS )z11 < |z| < 1.1 and |1 - z| >= 0.9 and real(z) >= 0r0   çš™™™™™ñ?r:   r   r+   Nr;   r-   r   r   r   Útest_region5Â  s      p<zTestHyp2f1.test_region5yå5”×Pî¿xå5”×à?yšjµþ¤]¿+¯B†l?yDyå5”ç¿Dyå5”ç¿y.Õ©‰'¬.¿"¼¼thÛò¾yzå5”×à¿å5”×Pî¿yÈæó´ÙžÌ?_bM ÖÎ¿yå5”×Pî¿zå5”×à¿yì›Ë¡¯ó?5rº°Z]Â?yhçF—Ò?@…¥Ò…PÀyR¸,\åi@ð0gA@yDyå5”ç¿@yå5”ç?y»Y©6úócÀ$#y|öN"@y�½–ýðñ?vÞ:[²¿y0 DEwþ?&Y9±ß¿ylÉboEþ,ÀSîÊ*Äå5Ày–XÙ•Ø*B@víK¢d¼o@yxs¸�÷6AÅ{ö´;ˆÁyzå5”×à¿å5”×Pî?yt´Á Òò_ÀiNÜLñ²<Ày(˜‹¨ @ÜÐuV1¸ç?yŒE*l¬º>@’ŠáIrÀyÇùóC¶ò?Šè.“I‡ç¿yOKTO9Wä?ÏŒ>7á˜¿yÁE¢ði3Þ?:êÄpöä?y3ƒÂÁÙÊÂ¿gF™Ä?yQ5d¹Q¿ÀÉXºŽâ6@y·¹SÍ§è¿ä„ª}¤ñ¿yAHq�ÿ@ü3'U±Ä@ycä4íÀü‰VÞ$k$Áyž‹ôüónÁt`_“ÁOAr0   é   y      @      @yÅžÎ¼�‚ß?Dû�B]ã?c                 C   sr   |\}}}}}}t |ƒdkr)dt |ƒ  k rdk r+n nt d| ƒdkr+|jdkr+J ‚tt||||ƒ||d� dS )z|z| > 1 but not in region 5.r0   rB   r:   r   r+   Nr;   r-   r   r   r   Útest_region6³  s     :zTestHyp2f1.test_region6gš™™™™™É¿g333333Ó?gÍÌÌÌÌÌ Àg@¢Ô›ý?c                 C   r)   r*   r,   r-   r   r   r   Útest_miscellaneous¼	  s   zTestHyp2f1.test_miscellaneousz1.0.0c           
         sb   ‡ fdd„t ˆ ƒD ƒ}|D ]!}ˆ  tˆ |ƒ¡}|D ]\}}}}}}	tt||||ƒ|dd� qqdS )aŽ  Test that expected values match what is computed by mpmath.

        This gathers the parameters for the test cases out of the pytest marks.
        The parameters are a, b, c, z, expected, rtol, where expected should
        be the value of hyp2f1(a, b, c, z) computed with mpmath. The test
        recomputes hyp2f1(a, b, c, z) using mpmath and verifies that expected
        actually is the correct value. This allows the data for the tests to
        live within the test code instead of an external datafile, while
        avoiding having to compute the results with mpmath during the test,
        except for when slow tests are being run.
        c                    s0   g | ]}|  d ¡rttˆ |ƒƒr|dkr|‘qS )ÚtestÚtest_test_hyp2f1)Ú
startswithÚcallableÚgetattr)Ú.0Útest_method©r.   r   r   Ú
<listcomp>Þ	  s    þüûz/TestHyp2f1.test_test_hyp2f1.<locals>.<listcomp>gzÍiu„6°<r+   N)ÚdirÚ_get_test_parametersrK   r   r   )
r.   Útest_methodsrM   Úparamsr   r   r   r   r   Ú_r   rN   r   rH   Ð	  s   
ÿÿþzTestHyp2f1.test_test_hyp2f1c                 C   s   dd„ |j D ƒS )z4Get pytest.mark parameters for a test in this class.c                 S   s0   g | ]}|j d kr|jd D ]}|jd ‘qqS )Úparametrizer0   r   )ÚnameÚargsÚvalues)rL   ÚmarkÚcaser   r   r   rO   í	  s    
ÿþz3TestHyp2f1._get_test_parameters.<locals>.<listcomp>)Ú
pytestmark)r.   rM   r   r   r   rQ   ë	  s   ÿzTestHyp2f1._get_test_parametersN) r   r   r    Ú__doc__ÚpytestrY   rU   Úparamr   ÚnpÚinfÚnanr/   r1   ÚxfailÚsysÚmaxsizer6   r8   r9   r<   r=   r>   rA   rC   rE   rF   Úslowr   r   rH   rQ   r   r   r   r   r#   :   s   úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ›þ
súÿ
úÿ
úÿúÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ™þ
u	úÿ	úÿ
úÿ
úþ÷âþ
0	úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ¹þ
Uúÿ
úÿ
úÿ
úÿ
úÿ×þ
7
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
ú÷úÿ®þ
`úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ �Žþ  
úÿÿúÿõúÿëúÿá)úÿ×3úÿÍ=úÿÃGúÿ¹Qúÿ¯[úÿ¥eúÿ›oúÿ‘yúÿ‡ úÿ÷ �ü úÿ �ï úÿ �å %úÿ �Û /úÿ �Ñ 9úÿ �Ç Cúÿ �½ Múÿ �³ Wúÿ �© aúÿ �Ÿ kúÿ �• uúÿ �‹ úÿ ��  
úÿ � �ö  úÿ � �ì  úÿ � �â  (úÿ � �Ø  2úÿ � �Î  <úÿ � �Äþ  Júÿÿúÿõúÿëúÿá)úÿ×3úÿÍ=úÿÃGúÿ¹Qúÿ¯[úÿ¥eúÿ›oúÿ‘yúÿ‡ úÿ �ü úÿ÷ �ò úÿ �å %úÿ �Û /úÿ �Ñ 9úÿ �Ç Cúÿ �½ Múÿ �³ Wúÿ �© aúÿ �Ÿ kúÿ �• uúÿ÷ �‹  úÿ � �ý  úÿ � �ó  úÿ � �é  !úÿ � �ß  +úÿ � �Õ  5úÿ � �Ë  ?úÿ � �Á  Iúÿ � �·  Súÿ � �­  ]úÿ � �£  gúÿ � �™  qúÿ � ��  {úÿ � �…   úÿ � � �ú   úÿ � � �ð   úÿ � � �æ   $úÿ � � �Ü   .úÿ � � �Ò   8úÿ � � �È   Búÿ � � �¾   Lúÿ � � �´   Vúÿ � � �ª   `úÿ � � � þ   n
úÿÿúÿõúÿëúÿá)úÿ×3úÿ÷Í@úÿÀJúÿ¶Túÿ¬^úÿ¢húÿ˜rúÿŽ|úÿ„ úÿ �ù úÿ �ï úÿ �å %úÿ �Û /úÿ �Ñ 9úÿ �Ç Cúÿ �½ Múÿ �³ Wúÿ �© aúÿ �Ÿ kúÿ �• uúÿ÷ �‹  úÿ � �ý  úÿ � �ó  úÿ � �é  !úÿ � �ß  +úÿ � �Õ  5úÿ � �Ë  ?úÿ � �Á  Iúÿ � �·  Súÿ � �­  ]úÿ � �£  gúÿ � �™  qúÿ � ��  {úÿ � �…   úÿ � � �ú   úÿ � � �ð   úÿ � � �æ   $úÿ � � �Ü   .úÿ � � �Ò   8úÿ � � �È   Búÿ � � �¾   Lúÿ � � �´   Vúÿ � � �ª   `úÿ � � � þ   núÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ
úÿ �Žþ  
úÿþþ
r#   c                	   @   sz   e Zd Zej ddddej ejg¡ej ddddej ejg¡ej dg d	¢¡ej d
dg¡dd„ ƒƒƒƒZdd„ Z	dS )ÚTestHyp2f1ExtremeInputsr   r   r?   ç      @r   r@   ç      @r   )rg   rh   g      @g      @r   ù      @      ð?c                 C   s:   t  t  t  ||g¡¡¡rt  t||||ƒ¡sJ ‚d S d S )N)r_   ÚanyÚisinfÚasarrayÚisnanr   )r.   r   r   r   r   r   r   r   Útest_inf_a_bõ	  s   ÿz$TestHyp2f1ExtremeInputs.test_inf_a_bc                 C   s˜   t  tddddƒ¡sJ ‚t  tddddƒ¡sJ ‚t  tddddƒ¡s$J ‚t  tddddƒ¡s0J ‚t  tt jdddƒ¡s=J ‚t  tdt jddƒ¡sJJ ‚d S )Ni€–˜ r   rg   ri   i€igÿr@   )r_   rm   r   r`   rN   r   r   r   Útest_large_a_bý	  s   z&TestHyp2f1ExtremeInputs.test_large_a_bN)
r   r   r    r]   rY   rU   r_   r`   rn   ro   r   r   r   r   rf   ó	  s    rf   )r\   rc   r]   Únumpyr_   Útypingr   Únumpy.testingr   Úscipy.specialr   Úscipy.special._testutilsr   r   r   ÚImportErrorr   r   r#   rf   r   r   r   r   Ú<module>   sH    ÿ	                   L