
    (phch                        S r SSKrSSKrSSKrSSKJr  SSKJr  SSK	J
r
  SSKJrJr   SSKrS r " S	 S
\5      r " S S5      r " S S5      rg! \ a    \" S5      r N3f = f)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                    UR                   S:  =(       a    [        UR                  5      S:  n[        X -
  [        X -
  5      -
  5      S:  =(       a    [        X -
  5      S:*  n[        X!-
  [        X!-
  5      -
  5      S:  =(       a    [        X!-
  5      S:*  nU(       a  UR                   S-   nU(       a  U(       d  U(       d  UR                   S-   nOUn[	        [
        R                  " XX'5      5      $ )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           R/var/www/html/venv/lib/python3.13/site-packages/scipy/special/tests/test_hyp2f1.py	mp_hyp2f1r      s     FFSL:S[7%:Mae$%/EE!%LA4EEae$%/EE!%LA4EEFFTMeu66H$6==q344    c                   R    \ rS rSr% \\S'   \\S'   \\S'   \\S'   \\S'   \\S'   Srg	)
Hyp2f1TestCase1   r   r   r   r   expectedrtol N)__name__
__module____qualname____firstlineno__float__annotations__r   __static_attributes__r"   r   r   r   r   1   s!    HHHJ
Kr   r   c            &       6   \ rS rSrSr\R                  R                  S\R                  " \	" SSSS\
R                  S-   S	S
95      \R                  " \	" SSSSSS	S
95      \R                  " \	" SS	SSSS	S
95      \R                  " \	" SS	S	SSS	S
95      \R                  " \	" SSS	S\
R                  S-   S	S
95      \R                  " \	" SSS	S\
R                  S-   S	S
95      \R                  " \	" SSSSSSS
95      \R                  " \	" SSSSSSS
95      \R                  " \	" SSSSSSS
95      \R                  " \	" SSSSSSS
95      \R                  " \	" SSSSSSS
95      /5      S 5       r\R                  R                  S\R                  " \	" SSSSSSS
95      \R                  " \	" SSSSS SS
95      \R                  " \	" S!S"S#SS$S%S
95      \R                  " \	" S&S'S#SS(S)S
95      \R                  " \	" S'S&S#SS*S+S
95      \R                  " \	" S,S-S.SS/SS
95      \R                  " \	" S-S,S.SS/S)S
95      \R                  " \	" S0S1S2SS3S)S
95      \R                  " \	" S1S0S2SS3S)S
95      \R                  " \	" S4S5S6SS7S8S
95      \R                  " \	" S9S:SSS;S%S
95      /5      S< 5       r\R                  R                  S\R                  " \	" SSS6S=S>SS
95      \R                  " \	" SSS?S=S@SS
95      \R                  " \	" SASBSCS=SDSES
95      \R                  " \	" S4S5SFS=SGSES
9\R                  R                  \R"                  SH:  SISJ9SK9/5      SL 5       r\R                  R                  S\R                  " \	" SSMSNSOSPS%S
95      \R                  " \	" SQSRSSSTSUS)S
95      \R                  " \	" SQSVSWSOSXSYS
95      \R                  " \	" SSZS[S\S]S+S
95      \R                  " \	" SMSS^SOS_S)S
95      \R                  " \	" SRSQSSS`SaS+S
95      \R                  " \	" SbSSWSOScS+S
95      \R                  " \	" SdSeSfSgShS%S
95      /5      Si 5       r\R                  R                  S\R                  " \	" SjSkSlSmSnSoS
95      \R                  " \	" SpS[SSOSqSrS
95      \R                  " \	" SpSkSsStSuSvS
95      \R                  " \	" SjSkSlSwSxSvS
95      \R                  " \	" SySjSlSzS{SYS
95      /5      S| 5       r\R                  R                  S\R                  " \	" SySkS}S~SSS
95      \R                  " \	" SSkS}SSSS
95      \R                  " \	" SMSNSSSSS
95      \R                  " \	" SMSSSSSS
95      \R                  " \	" SbS^SSSSS
95      \R                  " \	" SMS^SS~SSS
95      \R                  " \	" SySkS}SSS)S
95      \R                  " \	" SySkSSSSES
9\R                  R                  SS9SK9\R                  " \	" SMSSSSS)S
95      /	5      S 5       r\R                  R                  S\R                  " \	" SMSNSSSSS
95      \R                  " \	" SSSSSSS
95      \R                  " \	" SS^SSSSS
95      \R                  " \	" SbSSSSSS
95      \R                  " \	" SMS^SSSSS
95      \R                  " \	" SMSSSSS+S
95      \R                  " \	" SSSSSS)S
95      \R                  " \	" SVS[SSSSS
95      \R                  " \	" SbSSSSS)S
95      \R                  " \	" SSSSSSS
95      \R                  " \	" SVS[S}SSSS
95      \R                  " \	" SSSSSSSS
95      \R                  " \	" SVSSSSSS
95      \R                  " \	" SZSNSSSSS
95      \R                  " \	" SRSSSSSS
95      \R                  " \	" SRSSSSSS
95      \R                  " \	" SZSNSSSSS
95      \R                  " \	" SSWSSSSS
95      \R                  " \	" SSNS}SSSS
95      \R                  " \	" SRSkSSSSS
95      \R                  " \	" SSSSSSSS
95      \R                  " \	" SZSSSSSS
95      \R                  " \	" SySSSSSS
95      \R                  " \	" SySS}SSSS
95      \R                  " \	" SSkSSSS)S
95      /5      S 5       r\R                  R                  S/ \R                  " \	" SSSSSSS
95      P\R                  " \	" SSSSSSS
95      P\R                  " \	" SSSSSSS
95      P\R                  " \	" SSSlSSSS
95      P\R                  " \	" SSSjSSSS
95      P\R                  " \	" SSSSSSS
95      P\R                  " \	" SSSSSSS
95      P\R                  " \	" SSSlSSSS
95      P\R                  " \	" SSSSSSS
95      P\R                  " \	" SbS[S}SOSSS
95      P\R                  " \	" SSSjSOSSS
95      P\R                  " \	" SRSSSSSS
95      P\R                  " \	" SZSNSSOSSS
95      P\R                  " \	" SSSSSSS
9\R                  R                  SS9SK9P\R                  " \	" SSSSSSS
95      P\R                  " \	" SSSSOSSS
95      P\R                  " \	" SSSSSSS
95      P\R                  " \	" SSSjSSS)S
95      P\R                  " \	" SSSSGS SS
95      P\R                  " \	" SySSSOGSS)S
95      P\R                  " \	" SSWSGSGSS)S
95      P\R                  " \	" SSSSOGSSS
95      P\R                  " \	" SSNSGSGSS)S
95      P\R                  " \	" SSSpGSGSSS
95      P\R                  " \	" SMSSGSGSSS
95      P\R                  " \	" SSSpGSGS	SS
95      P\R                  " \	" SSSjSGS
SS
95      P\R                  " \	" SbS^SSGSSS
95      P\R                  " \	" SRSSSGSSS
95      P\R                  " \	" SSNSGSGSGSS
95      P\R                  " \	" SSSSSGSS)S
95      P\R                  " \	" SSSSGSSS
95      P5      GS 5       r\R                  R                  S/ \R                  " \	" SSSsGSGSSS
95      P\R                  " \	" GSSSGSGSSS
95      P\R                  " \	" SSSGSGSSS
95      P\R                  " \	" SbGSSGSGSSS
95      P\R                  " \	" SMSSGSGSGSGSS
95      P\R                  " \	" SMSkSGSGSSS
95      P\R                  " \	" GSSZSGSGSSS
95      P\R                  " \	" GS SSSGSGS!GSS
95      P\R                  " \	" SjSSsGS"GS#S+S
95      P\R                  " \	" SSWSGSGS$SS
95      P\R                  " \	" SySSkGSGS%S+S
95      P\R                  " \	" SSSGSGS&SS
95      P\R                  " \	" SS[SGS"GS'SS
95      P\R                  " \	" SSkSGSGS(SS
95      P\R                  " \	" SSSGSGS)GS*S
9\R                  R                  SS9SK9P\R                  " \	" SSSGSGS+SS
95      P\R                  " \	" SSS^GS"GS,SS
95      P\R                  " \	" SSpSGSGS-SS
95      P\R                  " \	" SsSSWGSGS.SS
95      P\R                  " \	" SpSSSGSGS/SS
95      P\R                  " \	" SlSSWGSGS0SS
95      P\R                  " \	" SjSSkGS"GS1S)S
95      P\R                  " \	" SjSSGSGS2SS
95      P\R                  " \	" SSSkGSGS3SS
95      P\R                  " \	" SSSGS4GS5GS*S
9\R                  R                  SS9SK9P\R                  " \	" SSSGS6GS7SS
95      P\R                  " \	" SSSjGS8GS9SS
95      P\R                  " \	" SSSSGS8GS:SS
95      P\R                  " \	" SVSSSGS;GS<GSS
95      P\R                  " \	" SbS[SGS=GS>S)S
95      P\R                  " \	" SbSSGS?GS@SS
95      P\R                  " \	" SSSGS=GSAS)S
95      P\R                  " \	" SGSSWGSBGSCSS
95      P\R                  " \	" SRGSSWGSDGSESS
95      P\R                  " \	" SlSNSGSFGSGSS
95      P\R                  " \	" SRSS}GSDGSHSS
95      P\R                  " \	" SSSGS8GSISS
95      P\R                  " \	" SlSSGS8GSJS)S
95      P\R                  " \	" SSSjGS8GSKSS
95      P\R                  " \	" SZSSSGS;GSLSS
95      P\R                  " \	" SSSGS?GSMSS
95      P\R                  " \	" SSpS[GS8GSNS)S
95      P\R                  " \	" SsSSWGSDGSOS%S
95      P\R                  " \	" SpSSSGS8GSPSS
95      P\R                  " \	" SSSWGS;GSQSS
95      P\R                  " \	" SSpSkGS6GSRSS
95      P\R                  " \	" SSjSNGS=GSSSS
95      P\R                  " \	" SjSlSGSTGSUGSVS
95      P5      GSW 5       r\R                  R                  S/ \R                  " \	" SSSpGSXGSYGSZS
95      P\R                  " \	" SSSGS[GS\SS
95      P\R                  " \	" SMS^SGSXGS]SS
95      P\R                  " \	" SGS SSGSXGS^GS_S
95      P\R                  " \	" SVSjSGSXGS`SS
95      P\R                  " \	" SSSGSGSXGSaGS*S
9\R                  R                  SS9SK9P\R                  " \	" GSSZSSGS[GSbS)S
95      P\R                  " \	" SbSlSGScGSdGSeS
95      P\R                  " \	" SS^GS GS[GSfS)S
95      P\R                  " \	" SRS^GSGS[GSgSS
95      P\R                  " \	" SRSWSGShGSiSS
95      P\R                  " \	" SSSGSXGSjSS
95      P\R                  " \	" SSkSGShGSkSS
95      P\R                  " \	" SRSkSGScGSlSS
95      P\R                  " \	" SSSSGS[GSmSES
95      P\R                  " \	" SSSGShGSnSS
95      P\R                  " \	" SSSNGScGSoSS
95      P\R                  " \	" SSpS[GS[GSpSS
95      P\R                  " \	" SsSlSNGSXGSqGSrS
95      P\R                  " \	" SSjSSGSXGSsSS
95      P\R                  " \	" SSSWGS[GStSS
95      P\R                  " \	" SlSSkGSXGSuSS
95      P\R                  " \	" SSSWGShGSvSS
95      P\R                  " \	" SlSSkGScGSwSS
95      P\R                  " \	" SSSGSxGSyGS*S
9\R                  R                  SS9SK9P\R                  " \	" SMSSGSzGS{SS
95      P\R                  " \	" SGS S[GS|GS}S)S
95      P\R                  " \	" SbSSGS~GSSS
95      P\R                  " \	" SSSGSGSGSS
95      P\R                  " \	" SpSSpGSGSGSS
95      P\R                  " \	" SVSSGSGSSS
95      P\R                  " \	" SSSGSGSGSZS
95      P\R                  " \	" SSSGSGSSS
95      P\R                  " \	" SySNSGS~GSSS
95      P\R                  " \	" SSSlGSGSS)S
95      P\R                  " \	" SSSlGSGSGSS
95      P\R                  " \	" SRSkSGSGSSS
95      P\R                  " \	" SlSSSGSGSS+S
95      P\R                  " \	" SSSGSGSSS
95      P\R                  " \	" SRSlSGS|GSSS
95      P\R                  " \	" SSSNGSGSSS
95      P\R                  " \	" SsSS[GSGSSS
95      P\R                  " \	" SSSNGSGSSS
95      P\R                  " \	" SSSGSzGSSS
95      P\R                  " \	" SSpSGSzGSSS
95      P\R                  " \	" SSS[GSGSSS
95      P\R                  " \	" SSS^GSGSGSS
95      P\R                  " \	" SlSSkGSGSSS
95      P5      GS 5       r\R                  R                  S\R                  " \	" SVSWSGSGSSS
95      \R                  " \	" SS^SGSGSSS
95      \R                  " \	" SSSGSGSSS
95      \R                  " \	" SS^S}GSGSSS
95      \R                  " \	" SbSWS}GSGSSS
95      \R                  " \	" SbSSGSGSS+S
95      \R                  " \	" SVSSGSGSSS
95      \R                  " \	" SSSGSGSSS
95      \R                  " \	" SSkSGSGSSS
95      \R                  " \	" SSSGSGSSS
95      \R                  " \	" SbS[SGSGSSS
95      \R                  " \	" SSSSGSGSSS
95      \R                  " \	" SZSWSGSGSSS
95      \R                  " \	" SSSGSGSSS
95      \R                  " \	" SZSSGSGSSS
95      \R                  " \	" SSNSGSGSSS
95      \R                  " \	" SySNSGSGSSS
95      \R                  " \	" SSSGSGSSvS
95      \R                  " \	" SRS[SGSGSSS
95      \R                  " \	" SySSSGSGSSS
95      \R                  " \	" SySSGSGSSS
95      \R                  " \	" SZS[SGSGSSS
95      \R                  " \	" SZSSSGSGSSS
95      \R                  " \	" SZSSSGSGSSS
95      \R                  " \	" GSGSGSGSGSSS
95      /5      GS 5       r\R                  R                  S\R                  " \	" S6GSGSGSGSSS
95      /5      GS 5       r\R                  R8                  \" \GS5      GS 5       5       rGS r GSr!Gg(  
TestHyp2f1:   aR  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                 8    Uu  p#pEpg[        [        X#XE5      XgS9  g Nr!   r   r   selfr-   r   r   r   r   r    r!   s           r   test_c_non_positive_int"TestHyp2f1.test_c_non_positive_intK   s"    h &6"aHqQ*H@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                 ^    Uu  p#pEpgUS:X  a  XB-
  U-
  S:  d   e[        [        X#XE5      XgS9  g)zNTests for case z = 1, c - a - b > 0.

Expected answers computed using mpmath.
   r   r4   Nr5   r6   s           r   test_unital_argumentTestHyp2f1.test_unital_argument   s;    t &6"aHAv!%!)a-''qQ*H@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                     Uu  p#pEpg[        SU-   U-
  U-
  5      S:  a  [        US-   5      S:  d   e[        [        X#XE5      XgS9  g)zNTests for case z ~ -1, c ~ 1 + a - b

Expected answers computed using mpmath.
r;   r   r4   Nr   r   r   r6   s           r    test_special_case_z_near_minus_1+TestHyp2f1.test_special_case_z_near_minus_1@  sP    j &6"aH1q519q=!E)c!a%j5.@@@qQ*H@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                     Uu  p#pEpgU[        U5      :X  a  US:  d  U[        U5      :X  a  US:  d   e[        [        X#XE5      XgS9  g )Nr   r4   )intr   r   r6   s           r   test_a_b_negative_int TestHyp2f1.test_a_b_negative_inty  sI    l &6"aHCF{q1uSVA==qQ*H@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                     Uu  p#pEpg[        XB-
  [        XB-
  5      -
  5      S:  a  XB-
  S:  d)  [        XC-
  [        XC-
  5      -
  5      S:  a  XC-
  S:  d   e[        [        X#XE5      XgS9  g )Nr   r   r4   )r   rF   r   r   r6   s           r   :test_a_b_neg_int_after_euler_hypergeometric_transformationETestHyp2f1.test_a_b_neg_int_after_euler_hypergeometric_transformation  sr    t &6"aHQU#$u,QU#$u,	
< 	qQ*H@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.)r?   yx5?z5yܓ8{b@*?c                 z    Uu  p#pEpg[        U5      S:  a  UR                  S:  d   e[        [        X#XE5      XgS9  g)z|z| < 0.9 and real(z) >= 0.?r   r4   Nr   r   r   r   r6   s           r   test_region1TestHyp2f1.test_region1  s=    D &6"aH1v|!++qQ*H@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                 z    Uu  p#pEpg[        U5      S:  a  UR                  S:  d   e[        [        X#XE5      XgS9  g)z|z| < 1 and real(z) < 0.r;   r   r4   NrN   r6   s           r   test_region2TestHyp2f1.test_region2z  s=    B &6"aH1vzaffqj((qQ*H@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                     Uu  p#pEpgS[        U5      s=::  a  S::  a  O   e[        SU-
  5      S:  d   e[        [        X#XE5      XgS9  g)z"0.9 <= |z| <= 1 and |1 - z| < 0.9.rM   r;   r4   NrB   r6   s           r   test_region3TestHyp2f1.test_region3  sN    T
 &6"aHc!f!!66c!a%j3&666qQ*H@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                     Uu  p#pEpgS[        U5      s=::  a  S::  a  O   e[        SU-
  5      S:  d   e[        [        X#XE5      XgS9  g)zw0.9 <= |z| <= 1 and |1 - z| >= 1.

This region is unhandled by of the standard transformations and
needs special care.
rM   r;   r4   NrB   r6   s           r   test_region4TestHyp2f1.test_region4  sN    b &6"aHc!f!!77c!a%jC&777qQ*H@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                     Uu  p#pEpgS[        U5      s=:  a  S:  a&  O   e[        SU-
  5      S:  a  UR                  S:  d   e[        [        X#XE5      XgS9  g)z11 < |z| < 1.1 and |1 - z| >= 0.9 and real(z) >= 0r;   皙?rM   r   r4   NrN   r6   s           r   test_region5TestHyp2f1.test_region5  sX    Z &6"aH3q6CEECAJ#$5!&&A+EEqQ*H@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Ar;      y      @      @yŞμ?DB]?c                     Uu  p#pEpg[        U5      S:  a;  S[        U5      s=:  a  S:  a'  O  O$[        SU-
  5      S:  a  UR                  S:  a   e[        [        X#XE5      XgS9  g)z|z| > 1 but not in region 5.r;   r]   rM   r   r4   NrN   r6   s           r   test_region6TestHyp2f1.test_region6  sd    B &6"aHFQJSV!c!c!a%jC&7AFFaK	
I 	qQ*H@r   gɿg333333?g g@ԛ?c                 8    Uu  p#pEpg[        [        X#XE5      XgS9  g r3   r5   r6   s           r   test_miscellaneousTestHyp2f1.test_miscellaneous	  s!    " &6"aHqQ*H@r   z1.0.0c           
      D   [        U 5       Vs/ s H@  nUR                  S5      (       d  M  [        [        X5      5      (       d  M6  US:w  d  M>  UPMB     nnU H?  nU R	                  [        X5      5      nU H  u  pEpgp[        [        XEXg5      USS9  M     MA     gs  snf )aF  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.
testtest_test_hyp2f1gziu6<r4   N)dir
startswithcallablegetattr_get_test_parametersr   r   )
r7   test_methodtest_methodsparamsr   r   r   r   r    _s
             r   ri   TestHyp2f1.test_test_hyp2f1	  s     ,/t9
+4K%%f-  WT/0 
 -- 9 	 
 (K..wt/IJF+1'aH	! 5xhO ,2 (
s   BBBBc                     UR                    VVs/ s H;  nUR                  S:X  d  M  UR                  S     H  nUR                  S   PM     M=     snn$ s  snnf )z4Get pytest.mark parameters for a test in this class.parametrizer;   r   )
pytestmarknameargsvalues)r7   ro   markcases       r   rn   TestHyp2f1._get_test_parameters	  s]     (3'='=
'=tyyM) 		! KKN$ '=
 	
 
s
   A*Ar"   N)"r#   r$   r%   r&   __doc__pytestrz   ru   paramr   npinfnanr8   r<   xfailsysmaxsizerC   rG   rJ   rO   rR   rU   rZ   r^   rb   re   slowr   r   ri   rn   r)   r"   r   r   r+   r+   :   s*     [[LL VVb[	 LL#	 LL #	 LL #	 LL VVb[	 LLVVb[	 LL E	 LL A	 LL G	 LL D	 LL4	Ko	
rfAgrfA [[LL4	 LL3	 LL5	 LL2	 LL2	 LL7	 LL7	 LL7	 LL7	 LL7	 LL9	Oq	
tjAktjA [[LL4  LL'8	 LL8	 LL3 kk''!kkE1- ( =,	
/`Aa/`A [[LL&(>J	 LL()-I	 LL'(>K	 LL()=K	 LL&'>J	 LL()>L	 LL'(>J	 LL H	OQ	
TjAkTjA
 [[LL)=F	 LL)>C	 LL)>E	 LL)=E	 LL)>F	S3	
6nAo6nA [[LL)))>E	 LL())=E	 LL&('>D	 LL&('<F	 LL'''>C	 LL&''>C	 LL)))=F	 LL)))=F kk''/B'C
 LL&('=E	e\	
_@AA_@A [[LL&('>E	 LL(((>K	 LL('(@F	 LL''(=F	 LL&'(>E	 LL&')>B	 LL(')>B	 LL')'?C	 LL'((>C	 LL('(=D	 LL'))>F	 LL())>D	 LL'('@E	 LL(('?E	 LL(('=A	 LL(((>D	 LL(((@A	 LL)()=D	 LL)()>E	 LL()(@B	 LL))(?C	 LL('(?E	 LL)((=C	 LL)()?F	 LL))(>B	c{	
~~A~~A [[D	
LL=D	D	
 LL=D	D	
* LL<D	+D	
> LL=E	?D	
R LL<D	SD	
f LL=D	gD	
z LL>C	{D	
N LL<G	OD	
b LL<B	cD	
v LL'))>B	wD	
J LL>F	KD	
^ LL('(=C	_D	
r LL(('>F	sD	
F LL=E kk''2 ( GD	
` LL=B	aD	
t LL>B	uD	
H LL=C	ID	
\ LL<B	]D	
p LL=C	qD	
D LL)('>F	ED	
X LL(('=K	YD	
l LL>F	mD	
@ LL(('=D	AD	
T LL=C	UD	
h LL&((=C	iD	
| LL=C	}D	
P LL=A	QD	
d LL''(=D	eD	
x LL(''=D	yD	
L	 LL(((=D	M	D	
`	 LL()(=A	a	D	
t	 LL<E	u	D	
GP
AQ
GP
A [[g	
LL=C	g	
 LL((=E	g	
* LL((=C	+g	
> LL'(=D	?g	
R LL&)=J	Sg	
f LL&)(=D	gg	
z LL((=D	{g	
N LL))=D	Og	
b LL(=B	cg	
v LL)((=D	wg	
J LL))=C	Kg	
^ LL)('=C	_g	
r LL))(=D	sg	
F LL))'=D	Gg	
Z LL=E kk''2 ( [g	
t LL)''=C	ug	
H LL'=C	Ig	
\ LL'=D	]g	
p LL(=E	qg	
D LL)=C	Eg	
X LL(=E	Yg	
l LL)=C	mg	
@ LL(=E	Ag	
T LL)=D	Ug	
h LL>D kk''2 ( ig	
B LL=C	Cg	
V LL>C	Wg	
j LL()>D	kg	
~ LL')(>D	g	
R	 LL')(>D	S	g	
f	 LL'>E	g	g	
z	 LL>C	{	g	
N
 LL)(>B	O
g	
b
 LL((=A	c
g	
v
 LL(=C	w
g	
J LL(')=C	Kg	
^ LL>C	_g	
r LL'>C	sg	
F LL>E	Gg	
Z LL()(>E	[g	
n LL(>E	og	
B LL)>C	Cg	
V LL(=E	Wg	
j LL)>D	kg	
~ LL(>C	g	
R LL)=D	Sg	
f LL(>D	gg	
z LL(=D 	{g	
jVAWjVA [[g	
LL(=G	g	
 LL=C	g	
* LL&')=D	+g	
> LL()=B	?g	
R LL'=D	Sg	
f LL()=C kk''2 ( gg	
@ LL()=D	Ag	
T LL'=D	Ug	
h LL)'=C	ig	
| LL('=G	}g	
P LL(()=B	Qg	
d LL)'=C	eg	
x LL)=C	yg	
L LL()(=C	Mg	
` LL))'=B	ag	
t LL=E	ug	
H LL(=D	Ig	
\ LL)=B	]g	
p LL(=D	qg	
D LL)=C	Eg	
X LL(=C	Yg	
l LL)=C	mg	
@ LL(=D	Ag	
T LL)=D	Ug	
h LL=I kk''2 ( ig	
B LL&=E	Cg	
V LL()=B	Wg	
j LL'()=B	kg	
~ LL=>	g	
R	 LL(=C	S	g	
f	 LL'''=D	g	g	
z	 LL=C	{	g	
N
 LL'=D	O
g	
b
 LL)('=E	c
g	
v
 LL=D	w
g	
J LL=E 	Kg	
^ LL()(=B	_g	
r LL)=D	sg	
F LL=E	Gg	
Z LL(=C	[g	
n LL(=C	og	
B LL)=C	Cg	
V LL(=C	Wg	
j LL(=E	kg	
~ LL(=F	g	
R LL)<B	Sg	
f LL'=C 	gg	
z LL)=B	{g	
jVAWjVA [[LL'('>J	 LL('(<M	 LL(''>F	 LL(')>D	 LL'()>C	 LL'''>C	 LL'('=D	 LL('(>D	 LL()(>D	 LL('(>E	 LL'))>C	 LL()(>C	 LL(((>D	 LL)'(>C	 LL('(>C	 LL)()>C	 LL)()=E	 LL)('=C	 LL()(>G	 LL))(>D	 LL)('>E	 LL()'>C	 LL())>C	 LL())>B	 LLE	c{	
~~A~~A [[ LL/		
 A! A [[67#P $ P2
 
r   r+   c            	          \ rS rSr\R
                  R                  SSSS\R                  * \R                  /5      \R
                  R                  SSSS\R                  * \R                  /5      \R
                  R                  S	/ S
Q5      \R
                  R                  SS/5      S 5       5       5       5       r	S r
Srg)TestHyp2f1ExtremeInputsi	  r   r
   rW         @r   rX         @r   )r   r   g      @g      @r         @      ?c                     [         R                  " [         R                  " [         R                  " X/5      5      5      (       a(  [         R                  " [        XX45      5      (       d   eg g )N)r   anyisinfasarrayisnanr   )r7   r   r   r   r   s        r   test_inf_a_b$TestHyp2f1ExtremeInputs.test_inf_a_b	  sH    
 66"((2::qf-.//88F1.//0/ 0r   c                 (   [         R                  " [        SSSS5      5      (       d   e[         R                  " [        SSSS5      5      (       d   e[         R                  " [        SSSS5      5      (       d   e[         R                  " [        SSSS5      5      (       d   e[         R                  " [        [         R                  SSS5      5      (       d   e[         R                  " [        S[         R                  SS5      5      (       d   eg )Ni r
   r   r   iigrX   )r   r   r   r   )r7   s    r   test_large_a_b&TestHyp2f1ExtremeInputs.test_large_a_b	  s    xxuc3
;<<=<xxvsC<==>=xxsE3
;<<=<xxsFC<==>= xxrvvsC56676xxsBFFC56676r   r"   N)r#   r$   r%   r&   r~   rz   ru   r   r   r   r   r)   r"   r   r   r   r   	  s    [[S3S266'266"BC[[S3S266'266"BC[[S"67[[S:,/1 0 8 D D1	8r   r   )r}   r   r~   numpyr   typingr   numpy.testingr   scipy.specialr   scipy.special._testutilsr   r   r   ImportErrorr   r   r+   r   r"   r   r   <module>r      so        )   A%
52Z w&
 w&
rM8 8N  %8$F%s   A A"!A"