
    ^Mhch                        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 	 ddlZn# e$ r  ed          ZY nw xY wd Z G d	 d
e          Z G d d          Z G d d          ZdS )zTests 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                    |j         dk    ot          |j                  dk     }t          || z
  t          || z
            z
            dk     ot          || z
            dk    }t          ||z
  t          ||z
            z
            dk     ot          ||z
            dk    }|r
|j         dz   }|r|s|s|j         dz   }n|}t	          t          j        | |||                    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_mpmaths           _/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/special/tests/test_hyp2f1.py	mp_hyp2f1r      s     FSL:S[[7%:MAa!e$%%/EE!a%LLA4EEAa!e$%%/EE!a%LLA4EE FTM e u 6H$6=Aq(33444    c                   L    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   1   sI         HHHHHHHHHJJJ
KKKKKr   r   c            %        >   e Zd ZdZej                            d ej         edddde	j
        dz   d	                     ej         eddddd
d	                     ej         eddddd
d	                     ej         eddddd
d	                     ej         edddde	j
        dz   d	                     ej         edddde	j        dz   d	                     ej         edddddd	                     ej         edddddd	                     ej         edddddd	                     ej         edddddd	                     ej         edddd
dd	                    g          d             Zej                            d ej         edddd
dd	                     ej         edddd
dd	                     ej         ed d!d"d
d#d$	                     ej         ed%d&d"d
d'd(	                     ej         ed&d%d"d
d)d*	                     ej         ed+d,d-d
d.d	                     ej         ed,d+d-d
d.d(	                     ej         ed/d0d1d
d2d(	                     ej         ed0d/d1d
d2d(	                     ej         ed3d4d5d
d6d7	                     ej         ed8d9dd
d:d$	                    g          d;             Zej                            d ej         eddd5d<d=d	                     ej         eddd>d<d?d	                     ej         ed@dAdBd<dCdD	                     ej         ed3d4dEd<dFdD	          ej                            ej        dGk     dHI          J          g          dK             Zej                            d ej         eddLdMdNdOd$	                     ej         edPdQdRdSdTd(	                     ej         edPdUdVdNdWdX	                     ej         eddYdZd[d\d*	                     ej         edLdd]dNd^d(	                     ej         edQdPdRd_d`d*	                     ej         edaddVdNdbd*	                     ej         edcdddedfdgd$	                    g          dh             Zej                            d ej         edidjdkdldmdn	                     ej         edodZddNdpdq	                     ej         edodjdrdsdtdu	                     ej         edidjdkdvdwdu	                     ej         edxdidkdydzdX	                    g          d{             Zej                            d ej         edxdjd|d}d~d	                     ej         eddjd|ddd	                     ej         edLdMdddd	                     ej         edLddddd	                     ej         edad]dddd	                     ej         edLd]dd}dd	                     ej         edxdjd|ddd(	                     ej         edxdjddddD	          ej                            d          J           ej         edLddddd(	                    g	          d             Zej                            d ej         edLdMdddd	                     ej         edddddd	                     ej         edd]dddd	                     ej         edaddddd	                     ej         edLd]dddd	                     ej         edLddddd*	                     ej         edddddd(	                     ej         edUdZdddd	                     ej         edaddddd(	                     ej         edddddd	                     ej         edUdZd|ddd	                     ej         eddRdddd	                     ej         edUddddd	                     ej         edYdMdddd	                     ej         edQddddd	                     ej         edQdddddĬ	                     ej         edYdMdddd	                     ej         eddVdddd	                     ej         eddMd|ddd	                     ej         edQdjdddd	                     ej         eddRdddd	                     ej         edYddddd	                     ej         edxddddd	                     ej         edxdd|ddd	                     ej         eddjdddd(	                    g          dք             Zej                            dg  ej         edddddd	                     ej         edddddd	                     ej         edddddd	                     ej         edddkddd	                     ej         edddiddd	                     ej         edddddd	                     ej         edddddd	                     ej         edddkddd	                     ej         edddddd	                     ej         edadZd|dNdd	                     ej         edddidNdd	                     ej         edQddddd	                     ej         edYdMddNdd	                     ej         edddddd	          ej                            d          J           ej         edddddd	                     ej         eddddNdd	                     ej         edddddd	                     ej         edddiddd(	                     ej         edddddd	                     ej         edxdddNd d(	                     ej         eddVdddd(	                     ej         eddddNdd	                     ej         eddMdddd(	                     ej         edddoddd	                     ej         edLddddd	                     ej         edddoddd	                     ej         edddidڐd	d	                     ej         edad]ddߐd
d	                     ej         edQdddڐdd	                     ej         eddMdddd	                     ej         eddRddڐdd(	                     ej         edddddd	                              d             Zej                            dg  ej         edddrddd	                     ej         edddddd	                     ej         edddddd	                     ej         edaddddd	                     ej         edLdRdddd	                     ej         edLdjdddd	                     ej         eddYdddd	                     ej         edddRdd d	                     ej         ediddrd!d"d*	                     ej         eddVddd#d	                     ej         edxddjdd$d*	                     ej         eddddd%d	                     ej         eddZdd!d&d	                     ej         eddjddd'd	                     ej         edddސdd(d)	          ej                            d          J           ej         eddddd*d	                     ej         eddd]d!d+d	                     ej         eddoddd,d	                     ej         edrddVdd-d	                     ej         edoddRdd.d	                     ej         edkddVdd/d	                     ej         ediddjd!d0d(	                     ej         edidddd1d	                     ej         edddjdd2d	                     ej         edddd3d4d)	          ej                            d          J           ej         edddd5d6d	                     ej         edddid7d8d	                     ej         edddRd7d9d	                     ej         edUdRdd:d;d	                     ej         edadZdd<d=d(	                     ej         edaddِd>d?d	                     ej         edddސd<d@d(	                     ej         edɐddVdAdBd	                     ej         edQddVdCdDd	                     ej         edkdMddEdFd	                     ej         edQdd|dCdGd	                     ej         edddd7dHd	                     ej         edkddd7dId(	                     ej         edddid7dJd	                     ej         edYdRdd:dKd	                     ej         edddd>dLd	                     ej         eddodZd7dMd(	                     ej         edrddVdCdNd$	                     ej         edoddRd7dOd	                     ej         edddVd:dPd	                     ej         eddodjd5dQd	                     ej         eddidMd<dRd	                     ej         edidkddSdTdU	                              dV             Zej                            dg  ej         edddodWdXdY	                     ej         eddddZd[d	                     ej         edLd]ddWd\d	                     ej         edddRdWd]d^	                     ej         edUdiddWd_d	                     ej         eddRddWd`d)	          ej                            d          J           ej         eddYdRdZdad(	                     ej         edadkddbdcdd	                     ej         edd]ddZded(	                     ej         edQd]ddZdfd	                     ej         edQdVddgdhd	                     ej         eddddWdid	                     ej         eddjddgdjd	                     ej         edQdjddbdkd	                     ej         eddRddZdldD	                     ej         eddddgdmd	                     ej         edddMdbdnd	                     ej         eddodZdZdod	                     ej         edrdkdMdWdpdq	                     ej         eddidRdWdrd	                     ej         edddVdZdsd	                     ej         edkddjdWdtd	                     ej         edddVdgdud	                     ej         edkddjdbdvd	                     ej         eddddwdxd)	          ej                            d          J           ej         edLdddydzd	                     ej         edddZd{d|d(	                     ej         edaddd}d~d	                     ej         edddddd	                     ej         edoddoddd	                     ej         edUddddd	                     ej         edddސdddY	                     ej         edddddd	                     ej         edxdMdd}dd	                     ej         edddkddd(	                     ej         edddkddd	                     ej         edQdjdddd	                     ej         edkdRdddd*	                     ej         edddِddd	                     ej         edQdkdd{dd	                     ej         edddMddd	                     ej         edrddZddd	                     ej         edddMddd	                     ej         eddddydd	                     ej         eddoddyddĬ	                     ej         edddZddd	                     ej         eddd]ddd	                     ej         edkddjddd	                              d             Zej                            d ej         edUdVdddd	                     ej         edd]dddd	                     ej         edddddd	                     ej         edd]d|ddd	                     ej         edadVd|ddd	                     ej         edaddddd*	                     ej         edUddddd	                     ej         edddddd	                     ej         eddjdddd	                     ej         edddddd	                     ej         edadZdddd	                     ej         eddRdddd	                     ej         edYdVdddd	                     ej         edddddd	                     ej         edYddddd	                     ej         eddMdddd	                     ej         edxdMdddd	                     ej         eddddddu	                     ej         edQdZdddd	                     ej         edxdRdddd	                     ej         edxddddd	                     ej         edYdZdddd	                     ej         edYdRdddd	                     ej         edYdRdddd	                     ej         edddddd	                    g          d             Zej                            d ej         ed5dÐdĐdŐdd	                    g          dǄ             Zej        j         eedȦ          dɄ                         Zdʄ ZdS (  
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?iy??r   r   )r   r   r   r   r   r    y      ?        yV?t[59?r   y. |?lo8?iyx R?gvIh%<=g	@y>
ףp=?|Gz?g333333?yQ?        c                 \    |\  }}}}}}t          t          ||||          ||           d S Nr    r   r   selfr)   r   r   r   r   r   r    s           r   test_c_non_positive_intz"TestHyp2f1.test_c_non_positive_intK   s@    h &6"1aHdq!Q**H4@@@@@@r   g      ?y
d?        g(@g       @g(\O4@y*kA        g33333#r@g     t@g@yk|@X        g-q=gffffff"@g     l@y:5>dA        g-a=yk@5>dA        gdy=gLYgfffffyg33333eyF%佰G        g     e@g)igfffffb@youMď$        gfffffYgL4g?y(D        gt =g33333Sigfffff&N@yRU3T        c                     |\  }}}}}}|dk    r||z
  |z
  dk    sJ t          t          ||||          ||           dS )z^Tests for case z = 1, c - a - b > 0.

        Expected answers computed using mpmath.
           r   r0   Nr1   r2   s           r   test_unital_argumentzTestHyp2f1.test_unital_argument   s]    t &6"1aHdAvv!a%!)a----q!Q**H4@@@@@@r   y              y+i,?        g433333@y7G&SԾ        g     k@ǧV@g`@y -$ F7        gHz>g333333TyL"CA        l        zFails on 32 bit.)	conditionreason)marksc                     |\  }}}}}}t          d|z   |z
  |z
            dk     rt          |dz             dk     sJ t          t          ||||          ||           dS )z^Tests for case z ~ -1, c ~ 1 + a - b

        Expected answers computed using mpmath.
        r6   r   r0   Nr   r   r   r2   s           r    test_special_case_z_near_minus_1z+TestHyp2f1.test_special_case_z_near_minus_1@  sy    j &6"1aHd1q519q=!!E))c!a%jj5.@.@.@.@q!Q**H4@@@@@@r   gj{k8 @gQDi?y5P?0y,B.j?kggRigKgty/y       @0yyv?1AAeg-1 @gHh@y)14#<6i1Gg|=gB!uZgsStyl(?`Cy5ԿyaƮ('qgog @yL2|R?ѓB*?yP^Cy? ?y4=2UX6K[:g;R@y]AאPE0Cig@g333ENHAy       @       @y4$?s)0>c                     |\  }}}}}}|t          |          k    r|dk     s|t          |          k    r|dk     sJ t          t          ||||          ||           d S )Nr   r0   )intr   r   r2   s           r   test_a_b_negative_intz TestHyp2f1.test_a_b_negative_inty  sq    l &6"1aHdCFF{{q1uuSVVAq!Q**H4@@@@@@r   g      gbɰg      /yl(?l(yJ?^&?gAfc=g      !@y$i8Q@#;$gAfc=g      @yl(?0yU tv?gdy=y4P^C?l(y{h`?@,/gާ7yx5? ?yj?<?CXic                 (   |\  }}}}}}t          ||z
  t          ||z
            z
            dk     r	||z
  dk     s4t          ||z
  t          ||z
            z
            dk     r	||z
  dk     sJ t          t          ||||          ||           d S )Nr   r   r0   )r   r?   r   r   r2   s           r   :test_a_b_neg_int_after_euler_hypergeometric_transformationzETestHyp2f1.test_a_b_neg_int_after_euler_hypergeometric_transformation  s    t &6"1aHdQQU#$$u,,QQQU#$$u,,Qq!Q**H4@@@@@@r   gy]Q/y ?`Cy5Կyg	?ת ?g+=gnho?yx5?x5?yi|8?:ASrg|=gb'y ?@y5?y9)@b$8@g+<g0z0@gԔ8 @y`Cy5?Dy5y_oڿ+ ug-=y@y5?0yܭ$@g!D)gPcP@yd?dֿgV瞯<y`Cy5?z5yեIp?88?gRcy?%g?zPoor convergence.)r9   yx5?z5yܓ8{b@*?c                     |\  }}}}}}t          |          dk     r|j        dk    sJ t          t          ||||          ||           dS )z|z| < 0.9 and real(z) >= 0.?r   r0   Nr   r   r   r   r2   s           r   test_region1zTestHyp2f1.test_region1  s]    D &6"1aHd1vv||!q!Q**H4@@@@@@r   y`Cy5Կ@y5?y$i^?`o?gl0@gXQ @y5P`Cy5Կy><Ia-
>g:0y5>gda0@y00yb?7@p9g՗' @y`Cy5ԿDy5yT?lZu{ڿg>Vyz5`Cy5?yy>T	;*?gڏyzR@GI@ghyz5x5?yтq@8Tyz50y&
@??gvIh%,=g%+g
?y`Cy5Կ5Py=?@=	Yx<pgqyDy5`Cy5Կy
-=@T~n 6@yDy50y
W`?|6dy`Cy5Կz5y85|@.AyRJ?x?nӿy5P0y84?_ᴾ?yz5Dy5y-@^cy즻@eCgV瞯<yGq?+g\1/yDy5x5?y`B8Agմ/Qyq?^Ғ-?y0 ?y)b?rt{?y0z5yf|#SI\y0`Cy5?y-?Y|?yDy5`Cy5?y<nk(@$nSyz5 ?ySh?>RyX7>~rX@42c                     |\  }}}}}}t          |          dk     r|j        dk     sJ t          t          ||||          ||           dS )z|z| < 1 and real(z) < 0.r6   r   r0   NrE   r2   s           r   test_region2zTestHyp2f1.test_region2z  s]    B &6"1aHd1vvzzafqjjjjq!Q**H4@@@@@@r   g     @0@g      g      yx5?@y5?y^->xcg     /g      @g      y5P?`Cy5?yM\iƔ\g      @yx5?Dy5yAޒm4mg      g      y2ş?}q^oҿg      ?g      @y+}<]#xX@y4⦷?3S	0g      y5P? ?y`B3A>5C;Ay_qd#Z?yZy!Aj6my
B6&yعjޥ?XR¿y5P?`Cy5Կy[^0|UFt@yR[?gB?g     0@y;쿧kg:0yE>zUnhandled parameters.g      yZh@7})ʱg      @yǾܬ]@x͠AytX| ƒRAywr|Y1AARyWQIAyhü'}eqyՊ8?QD?y@y5?x5?y~Cujy2}@?1OSg?y@y5?z5yGU<ARt%3@yT85@+08@ygТ@fȀAy]xO@FygSsa@yÁ32Ao<hKAy4B?3V?yN?{E7g&.>y~y> As4 Ay=ۊ-%ΰ7?c                     |\  }}}}}}dt          |          cxk    rdk    rn nt          d|z
            dk     sJ t          t          ||||          ||           dS )z"0.9 <= |z| <= 1 and |1 - z| < 0.9.rD   r6   r0   Nr<   r2   s           r   test_region3zTestHyp2f1.test_region3  s    T
 &6"1aHdc!ff!!!!!!!!!c!a%jj3&6&6&6&6q!Q**H4@@@@@@r   y ?՗
Z}y{i{4C@&F>       @ytO#,4?՗
Z}y'OV/xTyP0*9AJOpDg      0@yJ/:XBr      @y7wd?gh㈵>y:Tq?@?y ?՗
Z}?yb&?T,#?r
   yT?z]DytO#,4?՗
Z}?y1`-w?01cy ky 6LyED @y'[RjݻyyU쿢f*E @y4y?f?y+*9,gMbP?yeL@>9@yϞQ}_@y}X4;@A,GIyqR!)?-?yNT+N@>By?~.9M@yXR>@bNj}Ϧ:yYˊ?ZEyi@CPHmë@yy!?lFX?y [? Uf?y](?T?y>e@yy!?jFXy(D!&nyVy\ @!ݨy@6Qk?lFX?yʈ NƐ<y<?lFX?yLaa'*@6-*A@y<?T?y4?a&[֮gοy}>Ӓ@+.AP@y@6Qk?jFXyϝ#9Ġ_@y](?Ty_k@?p~yXA/?T?y|WE AgܢOAy&+￉31@yl^ @Nt~yEDC@yw3>#i.y* Ay݃}K?""?y2ODGA+Ay ,J8l?|p5˿y@0-nq@y"Yښ4sWKR@y0BCEhBNySd?F?yXA/?TyPlQ;N@g8J==c                     |\  }}}}}}dt          |          cxk    rdk    rn nt          d|z
            dk    sJ t          t          ||||          ||           dS )z0.9 <= |z| <= 1 and |1 - z| >= 1.

        This region is unhandled by of the standard transformations and
        needs special care.
        rD   r6   r0   Nr<   r2   s           r   test_region4zTestHyp2f1.test_region4  s    b &6"1aHdc!ff!!!!!!!!!c!a%jjC&7&7&7&7q!Q**H4@@@@@@r   y&Jvm?T?y9?梤΀gHj>y&Jvm?Ty
`C0˝7y[
*2yw3BLSg+=yz5?COyXI@T!NyI	NiYytO#,4?Ty׮[՚)-ڤAg-C6
?y!'h@qiq@y2$н'?cҳ?ytO#,4?T?y,AmڑyAe4y/ ?B`s?y(&	@:˕)	y9MR@b@yS.׿Ӄ?y2F$@EDƓyV'c)d yRQ"(@!-gMb@?yL7@IX@yv1m@f4^@yĴگbBui'6(_By"NhVk0@y)F+]@yy!?-tbyטp~׋J?y<?-tb?y^?]ѽ?y](?lFX?yFMI@(v@yXA/?jFXybp֛ZއnoBAyiF?-tb?yW>A`Тy<?-tby?D6?!48@y ?T?yf|^)c:My ?lFX?y1jGV`+@I@yI_˿G pysh?Gġ?yXA/?lFX?yI?cnx@?y](?jFXyb.OǸ4g^~z=y ?jFXy:&@A0bfy^Dh@ݾu@y ?TyM;HBnM+By9~:1<y| ?aPe2?y Ą@*Ky@6Qk?-tb?yU5q?38yA7&/1)@ynDǿO?x?y](?-tbymAAyÀD?0Д@gMg<yβK@]C@c                     |\  }}}}}}dt          |          cxk     rdk     r$n n!t          d|z
            dk    r|j        dk    sJ t          t          ||||          ||           dS )z11 < |z| < 1.1 and |1 - z| >= 0.9 and real(z) >= 0r6   皙?rD   r   r0   NrE   r2   s           r   test_region5zTestHyp2f1.test_region5  s    Z &6"1aHd3q66CCAJJ#$5$5!&A++++q!Q**H4@@@@@@r   y5Px5?yj]+Bl?yDy5Dy5y.թ'."thyz55Pyٞ?_bMοy5Pz5yˡ?5rZ]?yhF?@҅PyR,\i@0gA@yDy5@y5?yY6c$#y|N"@y?v:[y0 DEw?&Y9߿ylboE,S*5yXٕ*B@vKdo@yxs6A{;yz55P?yt _iNL<y( @uV1?yE*l>@IryC?.IyOKTO9W?ό>7ᘿyEi3?:p?y3¿gF?yQ5dQX6@ySͧ䄪}yAHq@3'U@yc4V$k$ynt`_OAr6      y      @      @yŞμ?DB]?c                    |\  }}}}}}t          |          dk    r>dt          |          cxk     rdk     r&n n#t          d|z
            dk    r|j        dk    rJ t          t          ||||          ||           dS )z|z| > 1 but not in region 5.r6   rP   rD   r   r0   NrE   r2   s           r   test_region6zTestHyp2f1.test_region6  s    B &6"1aHdFFQJJSVV!!!!c!!!!!c!a%jjC&7&7AFaKKKKq!Q**H4@@@@@@r   gɿg333333?g g@ԛ?c                 \    |\  }}}}}}t          t          ||||          ||           d S r/   r1   r2   s           r   test_miscellaneouszTestHyp2f1.test_miscellaneous	  s?    " &6"1aHdq!Q**H4@@@@@@r   z1.0.0c           
            fdt                     D             }|D ]S}                     t           |                    }|D ]+\  }}}}}}	t          t	          ||||          |d           ,Td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                     g | ]<}|                     d           r%t          t          |                    r|dk    :|=S )testtest_test_hyp2f1)
startswithcallablegetattr).0test_methodr3   s     r   
<listcomp>z/TestHyp2f1.test_test_hyp2f1.<locals>.<listcomp>	  se     
 
 
'%%f--
 WT;//00	
 --- 
 .--r   gziu6<r0   N)dir_get_test_parametersr]   r   r   )
r3   test_methodsr_   paramsr   r   r   r   r   _s
   `         r   rZ   zTestHyp2f1.test_test_hyp2f1	  s    
 
 
 
+.t99
 
 
 ( 	P 	PK..wt[/I/IJJF+1 P P'1aHa	!Q1 5 5xhOOOOOP	P 	Pr   c                 $    d |j         D             S )z4Get pytest.mark parameters for a test in this class.c                 ^    g | ]*}|j         d k    |j        d         D ]}|j        d         +S )parametrizer6   r   )nameargsvalues)r^   markcases      r   r`   z3TestHyp2f1._get_test_parameters.<locals>.<listcomp>	  sL     
 
 
#yM))	! *) KN))))r   )
pytestmark)r3   r_   s     r   rb   zTestHyp2f1._get_test_parameters	  s&    
 
'2'=
 
 
 	
r   N) r!   r"   r#   __doc__pytestrl   rh   paramr   npinfnanr4   r7   xfailsysmaxsizer=   r@   rB   rF   rH   rJ   rN   rQ   rT   rV   slowr   r   rZ   rb   r&   r   r   r(   r(   :   s:          [FL Vb[  	 	 FL#  	 	 FL #  	 	 FL #  	 	 FL Vb[  	 	 FLVb[  	 	 FL E  	 	 FL A  	 	 FL G  	 	 FL D  	 	 FL4  	 	Ko	
r rfA Agr rfA [FL4  	 	 FL3  	 	 FL5  	 	 FL2  	 	 FL2  	 	 FL7  	 	 FL7  	 	 FL7  	 	 FL7  	 	 FL7  	 	 FL9  	 	Oq	
t tjA Akt tjA [FL4       FL'8  	 	 FL8  	 	 FL3   k''!kE1- (    =,	
/ /`A Aa/ /`A [FL&(>J  	 	 FL()-I  	 	 FL'(>K  	 	 FL()=K  	 	 FL&'>J  	 	 FL()>L  	 	 FL'(>J  	 	 FL H  	 	OQ	
T TjA AkT TjA
 [FL)=F  	 	 FL)>C  	 	 FL)>E  	 	 FL)=E  	 	 FL)>F  	 	S3	
6 6nA Ao6 6nA [FL)))>E  	 	 FL())=E  	 	 FL&('>D  	 	 FL&('<F  	 	 FL'''>C  	 	 FL&''>C  	 	 FL)))=F  	 	 FL)))=F   k''/B'CC
 
 
 FL&('=E  	 	e\	
_ _@A AA_ _@A [FL&('>E  	 	 FL(((>K  	 	 FL('(@F  	 	 FL''(=F  	 	 FL&'(>E  	 	 FL&')>B  	 	 FL(')>B  	 	 FL')'?C  	 	 FL'((>C  	 	 FL('(=D  	 	 FL'))>F  	 	 FL())>D  	 	 FL'('@E  	 	 FL(('?E  	 	 FL(('=A  	 	 FL(((>D  	 	 FL(((@A  	 	 FL)()=D  	 	 FL)()>E  	 	 FL()(@B  	 	 FL))(?C  	 	 FL('(?E  	 	 FL)((=C  	 	 FL)()?F  	 	 FL))(>B  	 	c{	
~ ~~A A~ ~~A [D	
FL=D  	 	D	
 FL=D  	 	D	
* FL<D  	 	+D	
> FL=E  	 	?D	
R FL<D  	 	SD	
f FL=D  	 	gD	
z FL>C  	 	{D	
N FL<G  	 	OD	
b FL<B  	 	cD	
v FL'))>B  	 	wD	
J FL>F  	 	KD	
^ FL('(=C  	 	_D	
r FL(('>F  	 	sD	
F FL=E   k''2 (    GD	
` FL=B  	 	aD	
t FL>B  	 	uD	
H FL=C  	 	ID	
\ FL<B  	 	]D	
p FL=C  	 	qD	
D FL)('>F  	 	ED	
X FL(('=K  	 	YD	
l FL>F  	 	mD	
@ FL(('=D  	 	AD	
T FL=C  	 	UD	
h FL&((=C  	 	iD	
| FL=C  	 	}D	
P FL=A  	 	QD	
d FL''(=D  	 	eD	
x FL(''=D  	 	yD	
L	 FL(((=D  	 	M	D	
`	 FL()(=A  	 	a	D	
t	 FL<E  	 	u	D	
G GP
A AQ
G GP
A [g	
FL=C  	 	g	
 FL((=E  	 	g	
* FL((=C  	 	+g	
> FL'(=D  	 	?g	
R FL&)=J  	 	Sg	
f FL&)(=D  	 	gg	
z FL((=D  	 	{g	
N FL))=D  	 	Og	
b FL(=B  	 	cg	
v FL)((=D  	 	wg	
J FL))=C  	 	Kg	
^ FL)('=C  	 	_g	
r FL))(=D  	 	sg	
F FL))'=D  	 	Gg	
Z FL=E   k''2 (    [g	
t FL)''=C  	 	ug	
H FL'=C  	 	Ig	
\ FL'=D  	 	]g	
p FL(=E  	 	qg	
D FL)=C  	 	Eg	
X FL(=E  	 	Yg	
l FL)=C  	 	mg	
@ FL(=E  	 	Ag	
T FL)=D  	 	Ug	
h FL>D   k''2 (    ig	
B FL=C  	 	Cg	
V FL>C  	 	Wg	
j FL()>D  	 	kg	
~ FL')(>D  	 	g	
R	 FL')(>D  	 	S	g	
f	 FL'>E  	 	g	g	
z	 FL>C  	 	{	g	
N
 FL)(>B  	 	O
g	
b
 FL((=A  	 	c
g	
v
 FL(=C  	 	w
g	
J FL(')=C  	 	Kg	
^ FL>C  	 	_g	
r FL'>C  	 	sg	
F FL>E  	 	Gg	
Z FL()(>E  	 	[g	
n FL(>E  	 	og	
B FL)>C  	 	Cg	
V FL(=E  	 	Wg	
j FL)>D  	 	kg	
~ FL(>C  	 	g	
R FL)=D  	 	Sg	
f FL(>D  	 	gg	
z FL(=D   	 	{g	
j jVA AWj jVA [g	
FL(=G  	 	g	
 FL=C  	 	g	
* FL&')=D  	 	+g	
> FL()=B  	 	?g	
R FL'=D  	 	Sg	
f FL()=C   k''2 (    gg	
@ FL()=D  	 	Ag	
T FL'=D  	 	Ug	
h FL)'=C  	 	ig	
| FL('=G  	 	}g	
P FL(()=B  	 	Qg	
d FL)'=C  	 	eg	
x FL)=C  	 	yg	
L FL()(=C  	 	Mg	
` FL))'=B  	 	ag	
t FL=E  	 	ug	
H FL(=D  	 	Ig	
\ FL)=B  	 	]g	
p FL(=D  	 	qg	
D FL)=C  	 	Eg	
X FL(=C  	 	Yg	
l FL)=C  	 	mg	
@ FL(=D  	 	Ag	
T FL)=D  	 	Ug	
h FL=I   k''2 (    ig	
B FL&=E  	 	Cg	
V FL()=B  	 	Wg	
j FL'()=B  	 	kg	
~ FL=>  	 	g	
R	 FL(=C  	 	S	g	
f	 FL'''=D  	 	g	g	
z	 FL=C  	 	{	g	
N
 FL'=D  	 	O
g	
b
 FL)('=E  	 	c
g	
v
 FL=D  	 	w
g	
J FL=E   	 	Kg	
^ FL()(=B  	 	_g	
r FL)=D  	 	sg	
F FL=E  	 	Gg	
Z FL(=C  	 	[g	
n FL(=C  	 	og	
B FL)=C  	 	Cg	
V FL(=C  	 	Wg	
j FL(=E  	 	kg	
~ FL(=F  	 	g	
R FL)<B  	 	Sg	
f FL'=C   	 	gg	
z FL)=B  	 	{g	
j jVA AWj jVA [FL'('>J  	 	 FL('(<M  	 	 FL(''>F  	 	 FL(')>D  	 	 FL'()>C  	 	 FL'''>C  	 	 FL'('=D  	 	 FL('(>D  	 	 FL()(>D  	 	 FL('(>E  	 	 FL'))>C  	 	 FL()(>C  	 	 FL(((>D  	 	 FL)'(>C  	 	 FL('(>C  	 	 FL)()>C  	 	 FL)()=E  	 	 FL)('=C  	 	 FL()(>G  	 	 FL))(>D  	 	 FL)('>E  	 	 FL()'>C  	 	 FL())>C  	 	 FL())>B  	 	 FLE  	 	c{	
~ ~~A A~ ~~A [ FL/  	 		
  A A!  A []67##P P $# P2
 
 
 
 
r   r(   c            	       h   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                                                 Zd Z	dS )TestHyp2f1ExtremeInputsr   r
   rK         @r   rL         @r   )r{   r|   g      @g      @r         @      ?c                     t          j        t          j        t          j        ||g                              r&t          j        t          ||||                    sJ d S d S )N)rr   anyisinfasarrayisnanr   )r3   r   r   r   r   s        r   test_inf_a_bz$TestHyp2f1ExtremeInputs.test_inf_a_b	  sb    
 6"(2:q!f--..// 	18F1aA..//000	1 	100r   c                    t          j        t          dddd                    sJ t          j        t          dddd                    sJ t          j        t          dddd                    sJ t          j        t          dddd                    sJ t          j        t          t           j        ddd                    sJ t          j        t          dt           j        dd                    sJ d S )Ni r
   r{   r}   iigrL   )rr   r   r   rs   )r3   s    r   test_large_a_bz&TestHyp2f1ExtremeInputs.test_large_a_b	  s    xuc3
;;<<===xvsC<<==>>>xsE3
;;<<===xsFC<<==>>> xrvsC5566777xsBFC556677777r   N)
r!   r"   r#   rp   rl   rh   rr   rs   r   r   r&   r   r   rz   rz   	  s        [S3S26'26"BCC[S3S26'26"BCC[S"6"6"677[S:,//1 1 0/ 87 DC DC1	8 	8 	8 	8 	8r   rz   )ro   rv   rp   numpyrr   typingr   numpy.testingr   scipy.specialr   scipy.special._testutilsr   r   r   ImportErrorr   r   r(   rz   r&   r   r   <module>r      sX    


            ) ) ) ) ) )             A A A A A A A A%MMMM % % %]8$$FFF%5 5 52    Z   w&
 w&
 w&
 w&
 w&
 w&
 w&
 w&
rM8 8 8 8 8 8 8 8 8 8s   / AA