
    MZdy                        d dl mZmZmZ d dlmZ d dlmZmZm	Z	m
Z
mZmZmZ d dlmZ d dlmZmZ d dlmZmZmZmZ d dlmZmZmZ d dlmZmZ d d	lm Z  d d
l!m"Z"m#Z#m$Z$ d dl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 d dl8m9Z9m:Z: d dl;m<Z<m=Z= d dl>m?Z?m@Z@ d dlAmBZB d dlCmDZD d dlEmFZF d dlGmHZH d dl mIZI d dl%mJZJmKZK d dlLmMZM  ed      \  ZNZOZP edd      ZQ edd      ZRd ZSd ZTd ZUd ZVd  ZWd! ZXd" ZYd# ZZd$ Z[d% Z\d& Z]d' Z^d( Z_d) Z`d* Zad9d+Zbd, Zcd:d.Zdd/ Zed0 Zfd1 Zgd2 Zhd3 Zid4 Zjd5 Zkd6 Zld7 Zmd8 Zny-);    )diffexpandexpand_func)
EulerGamma)EFloatIRationalnanoopi)S)Symbolsymbols)	conjugateim
polar_liftre)exp	exp_polarlog)coshsinh)sqrt)cossinsinc)ChiCiE1EiLiShiSierferf2erf2inverfcerfcinverfierfinvexpintfresnelcfresnelsli)gamma
uppergamma)hypermeijerg)Integral	integrate)gruntz)limit)O)	unchanged)ArgumentIndexError)_erfs_eis)raiseszx,y,zwTrealn)integerc                     t        t              t        u sJ t        t              dk(  sJ t        t               dk(  sJ t        d      t        j                  u sJ t        t
        t        z        t        t
        z  k(  sJ t        t
         t        z        t         t
        z  k(  sJ t        d      t        d       k(  sJ t        t         t        z        t        t        t        z         k(  sJ t        t         t        z
        t        t        t        z          k(  sJ t        t        t                    t        k(  sJ t        t        t                    dt        z
  k(  sJ t        t        dt                    t        k(  sJ t        t        dt        d            t        k(  sJ t        t        dt        t        dt        t        t                    z
                          t        k(  sJ t        t
              j                  du sJ t        dd      j                  sJ t        dd      j                  sJ t        t        t                    t        t        t                    k(  sJ t        t              j                  t              dt        z  t!        t"              z  k(  sJ t        t        t        z        j                  t              dt        z  t        z  t!        t"              z  k(  sJ t        t        t        z        t        t              z  j                  t              t        k(  sJ t        dt        z        j                  t              t        j$                  k(  sJ t        t              j'                  d      t!        t        dz        dt)        t!        t        dz              z
  z  t        z  k(  sJ t        t              j'                  d	      t        j$                  t)        t              z
  k(  sJ t        t              j'                  d
      t
         t+        t
        t        z        z  k(  sJ t        t              j'                  d      dt
        z   t-        t        dt
        z
  z  t!        t"              z        t
        t/        t        dt
        z
  z  t!        t"              z        z  z
  z  k(  sJ t        t              j'                  d      dt
        z   t-        t        dt
        z
  z  t!        t"              z        t
        t/        t        dt
        z
  z  t!        t"              z        z  z
  z  k(  sJ t        t              j'                  d      dt        z  t1        t        j2                  gdt        j2                  z  gt        dz         z  t!        t"              z  k(  sJ t        t              j'                  d      t        t5        t        j2                  gg dgt7        dd      gt        dz        z  t!        t"              z  k(  sJ t        t              j'                  d      t!        t        dz        t        z  t        t9        t        j2                  t        dz        z  t!        t        j:                        z  z
  k(  sJ t=        t?        t              t?        t        dz        z  t        t        dt?        t              z  z         t        t              z
  z  t        t              dt!        t"              z  k(  sJ t=        dt        t              z
  t?        t        dz        z  t        z  t        t              dt!        t"              z  k(  sJ t=        dt        t              z
  t?        t        dz        z  t!        t"              z  t        z  t        t              dk(  sJ t=        dt        t              z
  t?        t        dz        z  t!        t"              z  t        z  dz
  dz  t        dz  z  t        t              dk(  sJ t=        t        t              t        z  t        d      dt!        t"              z  k(  sJ t=        t        dz  t!        t"              t        t        dz        z  dt        dz  z  z  z
  t        d      t        d      dz  k(  sJ t        t              jA                         t        tC        t              t
        tE        t              z  z
        dz  t        tC        t              t
        tE        t              z  z         dz  z   t
         t        tC        t              t
        tE        t              z  z
         t        tC        t              t
        tE        t              z  z         z   z  dz  fk(  sJ t        t              jA                  d      t        tC        t              t
        tE        t              z  z
        dz  t        tC        t              t
        tE        t              z  z         dz  z   t
         t        tC        t              t
        tE        t              z  z
         t        tC        t              t
        tE        t              z  z         z   z  dz  fk(  sJ t        tF              jA                         t        tF              dfk(  sJ t        tF              jA                  d      t        tF              dfk(  sJ t        t
              jA                         dt
         t        t
              z  fk(  sJ tI        tJ        d        t        t              jM                         t        k(  sJ y )N   r      Fevaluater1   r(   r*   r.   r-   r2      r3   r,      deepc                  >    t        t              j                  d      S NrG   )r%   xfdiff     T/usr/lib/python3/dist-packages/sympy/functions/special/tests/test_error_functions.py<lambda>ztest_erf.<locals>.<lambda>\   s    s1v||A rT   )'r%   r   r   r   Zeror	   rQ   yr+   r)   r'   is_realis_zeror   zas_leading_termr   r   Onerewriter(   r*   r-   r.   r2   Halfr3   r
   r,   Pir7   r   as_real_imagr   r   r>   r=   r:   inverserS   rT   rU   test_erfrc      s-   s8s??r7a<<s8r>>q6QVVqt91r"u:"Qr7s1vgr!t9QqS	!!!rAv;3q1u:+%%%vay>Qwqz?a!e###wq!}"""wq!e,-222wq#ga#fQi.&89:;<AAAq6>>U"""q5!))))q5!))))SVIaL 1111q6!!!$!DH444qs8##A&!A#a%R.888!HSVO,,Q/1444qs8##A&!%%///q6>>,'41:q4QT
;K7K+LQ+NNNNq6>>&!QUUT!W_444q6>>&!aRQqS	\111q6>>*%!a%(1a!e9T"X;M2N	(1a!e9T"X%
&&3' *( ( ( (q6>>*%!a%(1a!e9T"X;M2N	(1a!e9T"X%
&&3' *( ( ( (q6>>'"ac%1QVV8*q!te*L&LTRTX&UUUUq6>>)$'166(BhrSToEVXY[\X\*](]^bce^f(ffffq6>>(#tAqDz!|aqvvq!t8L6LTRSRVRVZ6W'WWWWQAqD	!3q1SV8|#4s1v#=>2F	$r(
  !c!f*c!Q$i')1b1QtBxZ???!c!f*c!Q$i'R02Ar:a???1s1v:s1a4y(b1!3a7:1a4?BG2MMMQ1a Ad2hJ...R48C1I-1a488!Q?1Q46IIIq6 	RUQr!uW_	a	#bea1go"6q"8	8
c"Q%!BqE'/""SA2a5%99	:1	<	>> > > q6E*	RUQr!uW_	a	#bea1go"6q"8	8
c"Q%!BqE'/""SA2a5%99	:1	<	>> > > q6 SVQK///q6E*s1vqk999q6 Q3q6	N222
67q6>>v%%%rT   c                     t        t              j                  t        dd      dt        z  t        t              z  dt        dz  z  dz  t        t              z  z
  t        dz  dz  t        t              z  z   t        t        dz        z   k(  sJ t        t              j                  t        t              t        t        dz          ddt        dz  z  z  ddt        dz  z  z  z
  dt        z  z   t        t        dz  t        t        f      z   z  t        t              z  dz   k(  sJ t        t        dz        j                  t        t        d	
      ddt        dz  z  z  t        dz  z   t        t        dz  t        t        f      z   t        t        dz         z  t        t              z  dz  dz   k(  sJ t        t        t                    j                  t        t        d
      t        dt        z        dt        z  t        d      dz  z  dz  z
  ddt        z  t        d      dz  z  z  dz  z   t        t        dz  t        t        f      z   t        t               z  t        t              z  dz  dz   k(  sJ y )Nr      rG   rJ         rD      rA   rE   rL   rF   i)	r%   rQ   seriesr   r   r8   r   r   r   rS   rT   rU   test_erf_seriesrm   a   s1   q6==Aq!QqSb\	!Q$qb&qDF48O&,./1g&6 6 6 6 q6==B	adUQ!Q$Z!Qq!tV*,qs2Qq2wB5HHI$r(RUVVW W Wq!t9ArQ'	Qq!tVq2w	1r7QG!4	4c1a4%j@bI"LqPQ Q QtAw<q"*tAaCyAaC1Q46?1;L/L
QqSAaDFO
A
0 !!b'Ar7 30458!W/==A"X/FFH/IKL/M M M MrT   c                  N    t        t        t        d            dz
        dk  sJ y )N       @g$?:0yE>)absr%   r   rS   rT   rU   test_erf_evalfrr   m   s"    E#J+-/$666rT   c                  b   t        t              j                  t              dt        t        j
                        z  dt        z  t        t              z  z   k(  sJ t        dt        z        j                  t              t        t        t              z  t        dz  dt        t              z  z  z
  dt        dz  z  dt        t              z  z  z   t        t        dz        z   k(  sJ t        t        t              j                  d      j                  t              j                  d	            t        t              j                  t              k(  sJ t        t              j                  d	      t        t               dz   t        t        dz        z  k(  sJ t        t        d
        y )NrF   rG   rD   rJ   rf   rg   rL   	tractableintractablec                  >    t        t              j                  d      S rP   )r;   r[   rR   rS   rT   rU   rV   ztest__erfs.<locals>.<lambda>z   s    uQx~~a'8 rT   )r;   r[   r   r   r   r`   rl   r   r8   r   r%   r^   r   r=   r:   rS   rT   rU   
test__erfsrw   q   s5   8==r$qtt*}qs58|;;;;1:Q	$r(
QT1T"X:&&1a448)<<qAwFG G G #a&..-2215==mLMq6;;q>  8M*Aw{C1I.EEEE
89rT   c                     t        t              t        u sJ t        t              t        j                  u sJ t        t               dk(  sJ t        d      dk(  sJ t        t
        t        z        t         t
        z  k(  sJ t        t
         t        z        t        t
        z  k(  sJ t        t               t        d      t        t              z
  k(  sJ t        t        t                    t        k(  sJ t        t
              j                  du sJ t        dd      j                  sJ t        dd      j                  du sJ t        t        t                    dt        z
  k(  sJ t        t        t                    t        t        t                    k(  sJ t        t              j                  t              t        j                  u sJ t        dt        z        j                  t              t        j                  k(  sJ t        t              j                  d      dt!        t              z
  k(  sJ t        t              j                  d      dt
        t#        t
        t        z        z  z   k(  sJ t        t              j                  d      ddt
        z   t%        t        dt
        z
  z  t'        t(              z        t
        t+        t        dt
        z
  z  t'        t(              z        z  z
  z  z
  k(  sJ t        t              j                  d	      ddt
        z   t%        t        dt
        z
  z  t'        t(              z        t
        t+        t        dt
        z
  z  t'        t(              z        z  z
  z  z
  k(  sJ t        t              j                  d
      ddt        z  t-        t        j.                  gdt        j.                  z  gt        dz         z  t'        t(              z  z
  k(  sJ t        t              j                  d      dt        t1        t        j.                  gg dgt3        dd      gt        dz        z  t'        t(              z  z
  k(  sJ t        t              j                  d      dt'        t        dz        dt        t'        t        dz              z
  z  t        z  z
  k(  sJ t        t              j                  d      t        j                  t'        t        dz        t        z  z
  t        t5        t        j.                  t        dz        z  t'        t        j6                        z  z   k(  sJ t        t              j                  d      t9        t              t;        t        dz         z  k(  sJ t=        t!        t              t        t              z         t        j                  u sJ t        t              j?                         t        tA        t              t
        tC        t              z  z
        dz  t        tA        t              t
        tC        t              z  z         dz  z   t
         t        tA        t              t
        tC        t              z  z
         t        tA        t              t
        tC        t              z  z         z   z  dz  fk(  sJ t        t              j?                  d      t        tA        t              t
        tC        t              z  z
        dz  t        tA        t              t
        tC        t              z  z         dz  z   t
         t        tA        t              t
        tC        t              z  z
         t        tA        t              t
        tC        t              z  z         z   z  dz  fk(  sJ t        tD              j?                         t        tD              dfk(  sJ t        tD              j?                  d      t        tD              dfk(  sJ tG        tH        d        t        t              jK                         t        k(  sJ y )NrG   r   rD   FrH   r%   r*   r.   r-   r2   rJ   r3   rE   r1   r,   rt   rM   c                  >    t        t              j                  d      S rP   )r(   rQ   rR   rS   rT   rU   rV   ztest_erfc.<locals>.<lambda>       tAw}}Q'7 rT   )&r(   r   r   r   rW   r	   rQ   r)   rY   rZ   r+   r   r[   r\   r]   r^   r%   r*   r-   r   r   r.   r2   r_   r3   r
   r,   r`   r;   r   r   ra   r   r   r>   r=   r:   rb   rS   rT   rU   	test_erfcr{   }   s   98qvv9>>7a<<":"Q2;"Q$8qtd1g~%%%
q   7??e###E"****E"**e333q	?a!e###T!Wil!33337""1%...!9$$Q'1661117??5!QQZ///7??6"a!D1I+o5557??:&!q1ux1q5	$r(@R7S	(1a!e9T"X%
&&8' /( +( ( ( (7??:&!q1ux1q5	$r(@R7S	(1a!e9T"X%
&&8' /( +( ( ( (7??7#q1Q3uaffX!&&zAqD5/Q+QRVWYRZ+Z'ZZZZ7??9%QwxaS8TVXY?J[]^`a]a/b-bcghjck-k)kkkk7??<(AQT
AT!Q$Z@P<P0QRS0S,SSSS7??8$QT
1(<qPQSTPTAU?UVZ[\[_[_V`?`(````7??;'58CAJ+>>>>s1vQ'(AEE1117!	bea1go	q	 41"Q%#8#:	:
d2a51RU7?##d2a51RU7?&;;	<Q	>	@@ @ @ 7U+	bea1go	q	 41"Q%#8#:	:
d2a51RU7?##d2a51RU7?&;;	<Q	>	@@ @ @ 7!d1gq\1117U+Q|;;;
787??'''rT   c                  T   t        t              j                  t        dd      ddt        z  t        t              z  z
  dt        dz  z  dz  t        t              z  z   t        dz  dz  t        t              z  z
  t        t        dz        z   k(  sJ t        t              j                  t        t              ddt        dz  z  z  ddt        dz  z  z  z
  dt        z  z   t        t        dz  t        t        f      z   t        t        dz         z  t        t              z  k(  sJ y )	Nr   re   rD   rG   rJ   rf   rg   rh   )r(   rQ   rl   r   r   r8   r   r   rS   rT   rU   test_erfc_seriesr}      s    7>>!Q"a!A#d2h,&6	!Q$qb'qDF48O',./1g'6 6 6 6 7>>!R !Q$Z!Qq!tV*$qs*Qq2wB-@@#q!te*LTRTXUV V VrT   c                  N    t        t        t        d            dz
        dk  sJ y )Nro   gʋ(s?rp   )rq   r(   r   rS   rT   rU   test_erfc_evalfr      s#    U3Z :-/$666rT   c                     t        t              t        u sJ t        t              t        j                  u sJ t        t               t        j
                  u sJ t        d      t        j                  u sJ t        t        t        z        t        k(  sJ t        t         t        z        t         k(  sJ t        t               t        t               k(  sJ t        t        t        t              z        t        t        z  k(  sJ t        t        t        t              z        t        dt        z
  z  k(  sJ t        t        t        dt              z        t        t        z  k(  sJ t        t        t        dt        d      z        t        t        z  k(  sJ t        t              j                  du sJ t        dd      j                  sJ t        dd      j                  sJ t        t        t                    t        t        t                    k(  sJ t        t              j!                  t              dt        z  t#        t$              z  k(  sJ t        t        t&        z        j!                  t&              dt        z  t&        z  t#        t$              z  k(  sJ t        t        t&        z        t        t&              z  j!                  t&              t        k(  sJ t        dt        z        j!                  t              t        dt        z        k(  sJ t        t              j)                  d      t         t+        t        t        z        z  k(  sJ t        t              j)                  d      t        t-        t        t        z        z  t        z
  k(  sJ t        t              j)                  d      dt        z
  t/        t        dt        z   z  t#        t$              z        t        t1        t        dt        z   z  t#        t$              z        z  z
  z  k(  sJ t        t              j)                  d	      dt        z
  t/        t        dt        z   z  t#        t$              z        t        t1        t        dt        z   z  t#        t$              z        z  z
  z  k(  sJ t        t              j)                  d
      dt        z  t3        t        j4                  gdt        j4                  z  gt        dz        z  t#        t$              z  k(  sJ t        t              j)                  d      t        t7        t        j4                  gg dgt9        dd      gt        dz         z  t#        t$              z  k(  sJ t        t              j)                  d      t#        t        dz         t        z  t;        t        j4                  t        dz         t#        t        j<                        z  t        j>                  z
  z  k(  sJ t        t              j)                  d      t#        t        dz         t        z  t        tA        t        j4                  t        dz         z  t#        t        j<                        z  z
  k(  sJ t        t              j)                  d      t         tC        t        t        z         tE        t        dz        z  dz   z  k(  sJ tG        t        t        t        z              t        t+        t              z  k(  sJ t        t              jI                         t        tK        t              t        tM        t              z  z
        dz  t        tK        t              t        tM        t              z  z         dz  z   t         t        tK        t              t        tM        t              z  z
         t        tK        t              t        tM        t              z  z         z   z  dz  fk(  sJ t        t              jI                  d      t        tK        t              t        tM        t              z  z
        dz  t        tK        t              t        tM        t              z  z         dz  z   t         t        tK        t              t        tM        t              z  z
         t        tK        t              t        tM        t              z  z         z   z  dz  fk(  sJ t        tN              jI                         t        tN              dfk(  sJ t        tN              jI                  d      t        tN              dfk(  sJ tQ        tR        d        y )Nr   rD   FrH   rG   r%   r(   r.   r-   r2   rJ   r3   rE   r1   r,   rt   rM   c                  >    t        t              j                  d      S rP   )r*   rQ   rR   rS   rT   rU   rV   ztest_erfi.<locals>.<lambda>   rz   rT   )*r*   r   r   r   InfinityNegativeInfinityrW   r	   rQ   r+   r)   r'   rY   rZ   r   r[   r\   r   r   rX   r^   r%   r(   r-   r.   r2   r_   r3   r
   r1   r`   r]   r,   r;   r   r   ra   r   r   r>   r=   r:   rS   rT   rU   	test_erfir      s   98qzz!!!9*****7aff":??2;1"8Qx&)!###'!*AE***'!Q- AaC''''!Q//0AaC7777??e###E"****E"****T!Wil!33337""1%1T"X555!9$$Q'1Q3q5b>9991Id1g..q1Q666!9$$Q'4!94447??5!aRAaC[0007??6"aQqS	kAo5557??:&1q58Aq1uId2h<N3O	(1a!e9T"X%
&&4' +( ( ( (7??:&1q58Aq1uId2h<N3O	(1a!e9T"X%
&&4' +( ( ( (7??7#qs5!&&AaffH:q!t+L'LTRTX'UUUU7??9%7AFF8R!xPRTUFWZ[]^Z^Y^+_)_`deg`h)hhhh7??<(T1a4%[]Jqvv	
A=ADDz=EE=" .# $ $ $7??8$adUA&!Q$:O8OPTUVUYUYPZ8Z(ZZZZ7??;'A2ac
{3q!t9/Dq/H+IIIItAaCy!Qs1vX---7!	bea1go	q	 41"Q%#8#:	:
d2a51RU7?##d2a51RU7?&;;	<Q	>	@@ @ @ 7U+	bea1go	q	 41"Q%#8#:	:
d2a51RU7?##d2a51RU7?&;;	<Q	>	@@ @ @ 7!d1gq\1117U+Q|;;;
78rT   c                  Z   t        t              j                  t        dd      dt        z  t        t              z  dt        dz  z  dz  t        t              z  z   t        dz  dz  t        t              z  z   t        t        dz        z   k(  sJ t        t              j                  t        t              ddt        dz  z  z  ddt        dz  z  z  z   dt        z  z   t        t        dz  t        t        f      z   t        t        dz        z  t        t              z  t        z
  k(  sJ y )	Nr   re   rG   rJ   rf   rg   rD   rh   )	r*   rQ   rl   r   r   r8   r   r   r	   rS   rT   rU   test_erfi_seriesr      s    7>>!Q"ac$r(l	!Q$qb'qDF48O',./1g'6 6 6 6 7>>!R 	
AadFa1a4j	 1Q3	&1r7QG)<	<c!Q$iGRPSTTU U UrT   c                  N    t        t        t        d            dz
        dk  sJ y )Nro   gM䖐2@vIh%<=)rq   r*   r   rS   rT   rU   test_erfi_evalfr      s$    U3Z #335===rT   c                     t        dd      t        j                  u sJ t        t        t              t        j                  u sJ t        t        d      t        u sJ t        t
         t              t        t              dz   k(  sJ t        t
        t              t        t              dz
  k(  sJ t        t        t
              dt        t              z
  k(  sJ t        t        t
               dt        t              z
  k(  sJ t        t        t        t        t                    t        k(  sJ t        t         t               t        t        t               k(  sJ t        t         t              t        t              t        t              z   k(  sJ t        t        t               t        t               t        t              z
  k(  sJ t        t        t              j                  d      t        t              j                  t              t        t              j                  t              z
  k(  sJ t        t        t              j                  d      t        t              j                  t              t        t              j                  t              z
  k(  sJ t        t        t              j                  d      t        t              j                  t              t        t              j                  t              z
  k(  sJ t        t        t              j                  d      t        t              j                  t              t        t              j                  t              z
  k(  sJ t        t        t              j                  d      t        t              j                  t              t        t              j                  t              z
  k(  sJ t        t        t              j                  d	      t        t              j                  t              t        t              j                  t              z
  k(  sJ t        t         d      j"                  d
u sJ t        ddd
      j"                  sJ t        ddd
      j$                  sJ t        t        t        d
      j$                  sJ t        t        t              j$                  J t'        t        t              t        t        t              z         t        t              k(  sJ t)        t        t        t                    t        t)        t              t)        t                    k(  sJ t        t        t              j                  d      t        t              t        t              z
  k(  sJ t        t        t              j                  d      t+        t              t+        t              z
  k(  sJ t        t        t              j                  d      t         t-        t         t        z        t-        t         t        z        z
  z  k(  sJ t        t        t              j/                  t              t        t        t              j1                  d      k(  sJ t        t        t              j/                  t              t        t        t              j1                  d      k(  sJ t        t        t              j/                  t              dt3        t        dz         z  t5        t6              z  k(  sJ t        t        t              j/                  t              dt3        t        dz         z  t5        t6              z  k(  sJ t9        t:        d        t        t        t              j<                  J t?        dd      \  } }t        | |      j<                  du sJ y )Nr   rD   rE   r.   r-   r2   r3   r1   r,   FrH   r%   r(   r*   rG   rF   c                  H    t        t        t              j                  d      S NrJ   )r&   rQ   rX   rR   rS   rT   rU   rV   ztest_erf2.<locals>.<lambda>*  s    tAqz'7'7': rT   zxr yrT)extended_real) r&   r   rW   rQ   r   r   rX   r%   r'   r^   r.   r-   r2   r3   r1   r,   r	   rY   rZ   r   r   r(   r*   r   rR   r   r   r   r=   r:   is_extended_realr   )xryrs     rU   	test_erf2r     s    1:1:Q<3a=SVaZ'''a=SVaZ'''!R=QQZ'''!RC=BQK'''71a=!Q&&&QB<D1I:%%%Q<3q6CF?***QB<CF7SV++++1:j)SV^^H-Ec!fnnU]F^-^^^^1:j)SV^^H-Ec!fnnU]F^-^^^^1:g&#a&..*?Au@U*UUUU1:i(CFNN7,CCFNNSZD[,[[[[1:l+s1v~~j/ICPQFNN[eLf/ffff1:h'3q6>>&+A#a&..QWBX+XXXX1:&&&1u%----1u%----1u%----1:%%%s1vQ
*+s1v555T!QZ D1y|$DDDD1:e$Q#a&8881:f%a47)::::1:f%D1IQqS	,A)BBBB1:??1a!1!1!!44441:??1a!1!1!!44441:??1CAJtBx!77771:??131u:d2h!6666
:;1:&&...WD1FBB<((D000rT   c                     t        d      t        j                  u sJ t        d      t        j                  u sJ t        t              t        j
                  u sJ t        d      t        j                  u sJ t        t        t                    t        k(  sJ t        t        t                     t         k(  sJ t        t              j                         t        t              t        t        t              dz        z  dz  k(  sJ t        t        d        t        t               j#                  d      t%        dt         z
        k(  sJ t        t               j'                         t        k(  sJ y )Nr   rD   rE   rG   c                  >    t        t              j                  d      S rP   )r+   rQ   rR   rS   rT   rU   rV   ztest_erfinv.<locals>.<lambda>;  s    vayq'9 rT   r)   )r+   r   rW   r   r   NaNr   r%   r>   rQ   r   r   r   r   r=   r:   r[   r^   r)   rb   rS   rT   rU   test_erfinvr   1  s   !9!9

"""#;!%%":+++++#a&>Q#qb'?qb   !9>>tBxF1IqL(99!;;;;
9:!9Y'71Q3<777!9#%%%rT   c                  N    t        t        t        d            dz
        dk  sJ y )Ng?gP	r7,?r   )rq   r+   r   rS   rT   rU   test_erfinv_evalfr   A  s$    uSz"%6685@@@rT   c                  ,   t        d      t        j                  u sJ t        d      t        j                  u sJ t        t              t        j
                  u sJ t        t              j                         t        t               t        t        t              dz        z  dz  k(  sJ t        t        d        t        t              j                  d      t        dt        z
        k(  sJ t        t              j!                         t"        k(  sJ y )NrD   r   rG   c                  >    t        t              j                  d      S rP   )r)   rQ   rR   rS   rT   rU   rV   ztest_erfcinv.<locals>.<lambda>K  s    wqz'7'7': rT   r+   )r)   r   rW   r   r   r   rQ   r   r   r   r   r=   r:   r[   r^   r+   rb   r(   rS   rT   rU   test_erfcinvr   E  s    1:1:###3<155   1:??b	#gaj!m*< <Q >>>>
:;1:h'6!A#;6661:4'''rT   c                     t        dd      t        j                  u sJ t        dd      t        j                  u sJ t        dd      t        j                  u sJ t        dt
              t        t
              k(  sJ t        t        t
              t        t
               k(  sJ t        t        d      t        k(  sJ t        t        t              t        t              k(  sJ t        t        d      t        u sJ t        dt              t        u sJ t        t        t
              j                  t              t        t        dz   t        t        t
              dz  z         k(  sJ t        t        t
              j                  t
              t        t              t        t        t        t
              dz        z  dz  k(  sJ t        t         d        y )Nr   rD   rG   c                  H    t        t        t              j                  d      S r   )r'   rQ   rX   rR   rS   rT   rU   rV   ztest_erf2inv.<locals>.<lambda>^  s    wq!}':':1'= rT   )r'   r   rW   r   r]   rX   r+   r   r)   rQ   r   r   r   r   r   r=   r:   rS   rT   rU   test_erf2invr   Q  sS   1a=AFF"""1a=AJJ&&&1a=AEE!!!1a=F1I%%%2q>WaR[(((1a=A1b>VAY&&&3?c!!!1c?c!!!1a=a CA1q0@(@$AAAA1a=a DHSA1A-B$B1$DDDD
=>rT   c                     ddl m}m} i }| j                  D ]  }||k7  s	 |       ||<    ||k(  xr*  || j	                  |      |j	                  |      ||      S )Nr   )verify_numericallyrandom_complex_number)d)sympy.core.randomr   r   free_symbolssubs)	expr1expr2expr3rQ   r   r   r   r   as	            rU   mytnr   e  sk    KD .6+-DG. E> I0D1A/4zz$/?aI IrT   c                     ddl m}m} i }| j                  D ]  }||k7  s	 |       ||<    | j	                  |      |k(  xr  || j                  |      |      S )Nr   )test_derivative_numericallyr   )r   r   r   r   r   r   )r   r   rQ   r   r   r   r   s          rU   mytdr   o  s`    D .6+-DG. ::a=E!V&A%**TBRTU&VVrT   Nc                 x    ddl m}  fd} |dd      } ||t        t        t        z        z         ||t        t         t        z        z        z
  }d} || |t        z  z          || |t        z  z
        z
  }t        |j                         |j                         z
        j                         dk  S )Nr   uniformc                 *     |       S  |       S NrS   )rQ   funcss    rU   fnztn_branch.<locals>.fn|  s    97NAqzrT   rD   rf   V瞯<绽|=)r   r   r   r	   r   rq   rA   )r   r   r   r   cexprepsr   s   ``      rU   	tn_branchr   y  s    ) 	1Aa	!B$ 2a	1"R%(8&8#99D
CrCEzNRSU
^+Etvvx%'')#$&&(500rT   c                     t        d      t        j                  u sJ t        t              t        j                  u sJ t        t               t        j
                  u sJ t        t               sJ t        t        t              t        t              t        z  t              sJ t        t        t              t        t              j                  t              t        dt        t        d      z         t        t        z  z
  t              sJ t        t        t              t        t              j                  t               t!        dt        t        d      z         t        t        z  z
  t              sJ t        t              j                  t               j                  t               t        t              k(  sJ t        t        t#        dt        z  t        z        z        t        t              dt        z  t        z  z   k(  sJ t        t        t#        dt        z  t        z        z        t        t              dt        z  t        z  z
  k(  sJ t        t        t              t        t              j                  t$              t'        t              t%        t              z   t              sJ t        t        t        t        t              z        t        t        t        t              z        j                  t(              t+        t              t        t)        t              z  z   t        t        z  dz  z   t              sJ t        t-        t                    j                  t.              t/        t              k(  sJ t        dt-        t              z        j                  t.              t/        t        dz        k(  sJ t1        t        t        t        t               z         t        t               z  t        z  t        t              dk(  sJ t        t              j3                  t              t4        t-        t              z   t        z   t        dz  dz  z   t        dz  dz  z   t        dz  d	z  z   t        d
z  dz  z   t7        t        dz        z   k(  sJ t        t              j3                  t        dd      t        d      t8        t        dz
  z  z   t7        t        dz
  dz  t        df      z   k(  sJ t        t              j3                  t        t              dt        d
z  z  dt        dz  z  z   dt        dz  z  z   dt        dz  z  z   dt        z  z   dz   t7        t        dz  t        t        f      z   t        t              z  t        z  k(  sJ t;        t        t=        d            j?                  d            dk(  sJ tA        tB        d        y )Nr   rE   rD   rG   rF   rg   rJ      `   rf   X  rL   x      rh   
   rj   z-0.6760647401c                  >    t        t              j                  d      S rP   )r!   rQ   rR   rS   rT   rU   rV   ztest_ei.<locals>.<lambda>      r!u{{1~ rT   )"r!   r   r   r   r   rW   r   r   rQ   r   r   r^   r1   r   r	   r   r,   r   r#   r   r$   r   r   r/   r6   rl   r   r8   r   strr   evalfr=   r:   rS   rT   rU   test_eir     s/   a5A&&&&&b6QZZrc7affR==1s1vax###1r!u}}Z0AqB/001R47< < <1r!u}}V,1Z^+,,qt3Q8 8 8a5== ((,1555a	!A#b&!!"beac"fn444a	"Q$r'""#r!uqs2v~5551r!u}}S)3q6CF?A>>>1Z]?#R*Q-%8%@%@%D1"Q%!B$q&(!- - - c!f:b!RU***aAh<#r!Q$x///"QsA2wY-QB')1b1Q666a5<<?j3q61A51Q>	1RQ$r'qDH%'(Aw/ / / /a5<<1a BqEAq1uI$51q51*q!f8M$MMMMa5<<2	QTBq!tG	a1f	$qAv	-!	3a	7!AGaW:M	MsSTvUVWWX X X r#a&z"%&/999
56rT   c                     t        t        t        t              t        t        t              j	                  t
              t        t        dz
  z  t        dt        z
  t              z  t              sJ t        t        t        t              t        t        dz
  z   t        g ddgdddt        z
  gg t              z  t              sJ t        t        t        t              t        t        dz
  t               t              sJ t        t        dt              t        dt              j	                  t              t        t        t        d      z         t        t        z  z   t              sJ t        dt              t        t               t        z  dt        t               z  t        dz  z  z   dt        t               z  t        dz  z  z   d	t        t               z  t        dz  z  z   d	t        t               z  t        d
z  z  z   k(  sJ t        t        dd      t              t        t               t        z  dt        t               z  dt        dz  z  z  z   dt        t              z  t        t        t                    z  dt        t!        d      z  z  z  z   k(  sJ t#        t        d      sJ t#        t        d      sJ t#        t        d      sJ t#        t        d      sJ t#        t        t              sJ t        t        t        t%        dt        z  t        z        z        t        t        dz
  z  t        dt        z  t        z  t        z        dz
  z  t'        t         dz         z  t        t        t              z   k(  sJ t        t        t        t%        dt        z  t        z        z        t        t        dz
  z  t        dt        z  t        z  t        z        dz
  z  t'        t         dz         z  t        t        t              z   k(  sJ t        dt        t%        dt        z  t        z        z        dt        z  t        z  t        z  t        dt              z   k(  sJ t        dt        t%        dt        z  t        z        z        dt        z  t        z  t        z  t        dt              z   k(  sJ t        dt              j	                  t              j	                  t              t        dt              k(  sJ t        t        t              j	                  t              t        t        t              k(  sJ t        t        t              j	                  t(              t        t        t              k(  sJ t        t+        t              t+        t              j	                  t,              t-        t              t/        t              z
  t              sJ t        t+        t        t              t        z        t+        t        t              t        z        j	                  t0              t)        t               t        t1        t              z  z   t        t        z  dz  z
  t              sJ t        t        dt              t        dt              j	                  t              j	                  t              t         t+        t              z  t        t               z   t              sJ t        t        dt              t        dt              j	                  t              j	                  t              t        dz  t+        t              z  dz  dt        z
  t        t               z  dz  z   t              sJ t        t        dd      t2              j5                  t2              ddt2        z  z   t2        dz  dz  z
  t2        dz  dz  z   t2        dz  dz  z
  t2        d
z  dz  z   dt        t              z  t        t2              z  z
  t7        t2        dz        z   k(  sJ t+        t2              j9                  t2              t:         t=        t2              z
  t2        z   t2        dz  dz  z
  t2        dz  dz  z   t2        dz  dz  z
  t2        d
z  dz  z   t7        t2        dz        z   k(  sJ t        dt2              j9                  t2              t        dd      t2        dz  z
  t2        dz  dz  z   t2        dz  t=        t2              dz  t        dd      z
  t:        dz  z   t        t        z  dz  z
  z  z   t2        dz  d	z  z
  t2        d
z  dz  z   t7        t2        dz        z   k(  sJ t        t>        t              j9                  t        t@        d      t>        t>        dz   z  t        dz  z  t>        t        z  z
  dz   t7        t        dz  t        t@        f      z   t        t               z  t        z  k(  sJ t        t2        t              j9                  t2        dd      t        t               t        z  t2        t        ddt              z  t        z  z
  t7        t2        dz        z   k(  sJ tC        tD        d        tG        dd      } t        |       j	                  t0              t-        |       t/        |       z   t        t        z  z
  k(  sJ y ) NrD   r   rE   rK   rg   rG      rJ   r   rf   rk   z5/2g333333?rF      T   i  rL   r   r   r      $      rj   )rS   rD   rD   ))r   r   rD   rS   c                  H    t        t        t              j                  d      S r   )r,   rQ   rX   rR   rS   rT   rU   rV   ztest_expint.<locals>.<lambda>  s    va|'9'9!'< rT   negTnegative)$r   r,   rQ   rX   r^   r1   r   r3   r!   r   r	   r   r   r
   r   r(   r   r   r   r0   r   r    r#   r   r$   r[   nseriesr8   rl   r   r   rA   r   r=   r:   r   )r   s    rU   test_expintr     sb   q!fQl22:>AE
:a!eQ//4 4 4q!q1q5zk'"q!fq!QUmR"KKQP P Pq!va!eQ//333q!fQl2226Ajn$%%",a1 1 1 "a=CGAI#qb'	!Q$6CGAqDH
S!W*QT/sA2wJq!tO, , , ,(2q/1%QB	Ac1"gIqAv&&48DaM)A1Q%[=)QQR R R VQVQVQVS!!!VR   !Qy1R(()	AE
C!BqMA%&uaR!V}4va|CD D D!QyAb))*	AE
C1R	NQ&'qb1f5q!DE E E!Qy1R(()QqSVAXq!-DDDD!QyAb))*bd2gai&A,.FFFF!Q<#++F3va|CCC!Q<#va|333!Q<#va|3331r!u}}S)3q6CF?A>>>:a=?#R
1a%8%@%@%DA2a5 1R46)1. . . q!fQl2226>>vF2a53r7"A' ' 'q!fQl2226>>vF1RU
1AsA2wq00!5 5 5 (1a.!$,,Q/	AaC!Q$q&1a47"QT"W,q!tCx7	$r(
47	q!tW	%% % % a5<<?zkCF2Q6	1QAba47#%&T#X.01!Q$8 8 8 8 !Q<q!Xa^ac%9AqDF%B	1c!fQh"b))JqL81R46AB&CEFT"W&M	1S&QT7&    !Q<q"*	
AE1a4!A#		!Aa"g2w$7	7aR@BC C C !Q<q!Q'3r719q"11:6 866788 ,8:;AqD',B B B B
<=

&Cc7??2#c(SX"5""<<<<rT   c                  .   t        t              j                  t              t        t               dt        z  z   k(  sJ t        dt        z        j                  t              t        t        dz  z   dt        dz  z  z   dt        dz  z  z   dt        dz  z  z   t	        t        dz        z   k(  sJ t        t              j                  d      t        t              t        t              z  k(  sJ t        t              j                  d      t        t        t        t                    z  k(  sJ t        t              j                  d	      t        t               t        t              z  k(  sJ t        t        t              j                  d      j                  t              j                  d	            t        t              j                  t              k(  sJ t        t        t              j                  d      j                  t              j                  d	            t        t              j                  t              k(  sJ t        t              j                  t        d
      t        t        t              z   t        t        t               t        z
  dz   z  z   t        dz  t        t              dz  t        dd      z
  t        dz  z   z  z   t	        t        dz  t        t              z        z   k(  sJ t        t        d        y )NrD   rG   rJ   rL   rg   r   rf   rt   ru   rj   c                  >    t        t              j                  d      S rP   )r<   r[   rR   rS   rT   rU   rV   ztest__eis.<locals>.<lambda>  rz   rT   )r<   r[   r   rl   r8   r!   r^   r   r/   r   r   r   r
   r=   r:   rS   rT   rU   	test__eisr     sC   7<<?tAwh1n,,,!9A	AqD1QT6AadF"R1W,qAw67 7 7 a5==%QQ777a5==%4A<7777??=)S!WRU]:::"Q%--,11!4<<]KLa5::a=   "Q%--,11!4<<]KLa5::a=   7>>!q>!Z#a&%81s1vg?? < &Q$Aq8Aq> 9JqL HI&J
AqDQK.&    78rT   c                 >     fd} |t        t        t        z  dz        t        d      xrq  |t        t         t        z  dz        t         d      xrH  |t        t        t        z        dt              xr$  |t        t         t        z        dt               S )Nc                     ddl m}  |dd      } | t        z        j                  t        |      j	                         } ||z  |dz  z         j	                         }t        ||z
        j	                         dk  S )Nr   r   rD   rf   r   r   )r   r   rQ   r   rA   rq   )arge1e2r   vv1v2r   s          rU   testztn_arg.<locals>.test  sm    -AqM#a%[a#%%'"Q$E/"$$&27|~~%''rT   rG   rD   rE   )r   r	   r   )r   r   s   ` rU   tn_argr     s    ( 	!B$q&!1a( 'Yr"uQw!Q''Yqt_b!$' 	Yr"urA2&'rT   c            	         t        d      t        dd      } t        dd      }t        dd      }t        d      t        j                  u sJ t        d      t         u sJ t        t              t        u sJ t        t              t              sJ t        t        |       sJ t        t        |      sJ t        t                    dt              z  k(  sJ t        t                    t        t                    k(  sJ t        t        |              t        |        k(  sJ t        t        t        |             sJ t        t        t        |            sJ t              j                  t              t              t        d      z   k(  sJ t              j                  t              t        t                    k(  sJ t              j                  t              t        dt              z         dz  t        t                     z
  t        t                    dz  z   t        dt                     z
  k(  sJ t              j                  t              t        t         t              z         t        dt              z        dz  z
  t        t                    dz  z   t#        t         t              z        z   t%        t                    z   k(  sJ t              j                  t"              t        t         t              z         t        dt              z        dz  z
  t        t                    dz  z   t#        t         t              z        z   t%        t                    z   k(  sJ t              j                  t$              t        dt              z         dz  t        t                    dz  z   t'        t                    z   t%        t                    z
  k(  sJ t              j                  t&              t        dt              z         dz  t        t                    dz  z   t'        t                    z   t%        t                    z
  k(  sJ t              j                  t(              t              t)        d	d
t                    z  t        dt              z        dz  z
  t        t                    dz  z   t*        z   k(  sJ t              j                  t,              t        dt              z         dz  t        t                     z
  t        t                    dz  z   t-        ddt                     z
  k(  sJ t/        dt              z  t              t        j                  u sJ t              j1                        t              dz  dz  t              dz  dz  z   t              dz  dz  z   t              dz  dz  z   t              z   t        t                    z   t*        z   k(  sJ t3        t4        fd       y )Nr[   Tr?   )positiver   r   rD   rG   r   )rG   rG   rS   )rD   ))r   r   rS   rf   r   rg   r   rJ   r   c                  8    t               j                  d      S rP   )r/   rR   )r[   s   rU   rV   ztest_li.<locals>.<lambda>3  s    r!u{{1~ rT   )r   r/   r   rW   r   
isinstancer9   r   r   r   r^   r"   r!   r1   r,   r$   r	   r   r#   r   r2   r   r3   r6   rl   r=   r:   )zrzpznr[   s      @rU   test_lir   
  sA   sA	$	B	d	#B	d	#Ba5AFF??a5RC<<b6R<<beR   R"R1q>Qs1vX%%%RUr)A,////RWRC(((YB3(((Y2'''a5==11---a5==3q6
***a5==$#aAh-)9CQL)H),SVQ*79?CF79K*L M M Ma5==#aAh-#aAh-/!A!$SVQ"/13Ac!fH">@CCF"L M M Ma5==#aAh-#aAh-/!A!$SVQ"/13Ac!fH">@CCF"L M M Ma5==3qQx=."2SQ[]"B"%c!f+#.03CF#< = = =a5==3qQx=."2SQ[]"B"%c!f+#.03CF#< = = =a5==3q6%A*G#G#&qQx=?$358Q[]$CEO$P Q Q Qa5==!s1SV8}nQ&6c!fW&ECPQFTU&U&-j,Q&P'Q R R R !BqE'1b!QVV+++a5<<?c!faimc!fail:SVQYr\ICPQFTUIVWKWFQ[!#-. . . .
56rT   c                     t        d      t        j                  u sJ t        t              t        u sJ t	        t        t
              t               sJ t        t        t
              t
              dt        t
              z  k(  sJ t        dt        t
              z  t
        t              t        j                  u sJ t        t
              j                  t              t        t
              t        d      z
  k(  sJ t        t
              j                  t
              t        t
              dz  dz  t        t
              dz  dz  z   t        t
              dz  dz  z   t        t
              dz  dz  z   t        t
              z   t        t        t
                    z   t        d      z
  t        z   k(  sJ t        t        d	        y )
NrG   rD   rf   r   rg   r   rJ   r   c                  >    t        t              j                  d      S rP   )r"   r[   rR   rS   rT   rU   rV   ztest_Li.<locals>.<lambda>B  r   rT   )r"   r   rW   r   r   r[   r   r   r6   r^   r/   rl   r   r=   r:   rS   rT   rU   test_Lir   6  s>   a5AFF??b6R<<beR   1q>Qs1vX%%%!BqE'1b!QVV+++a5==11---a5<<?A	#A	"$s1vqy|3c!faikACFJSQTUVQW[X[]^_[``cmmn n n
56rT   c                     t        t        t        z        t        t        t              z  k(  sJ t        t        t        z        t        t        t              z  k(  sJ t        t         t        z        t         t        t              z  k(  sJ t        t         t        z        t         t        t              z  k(  sJ t        t               t        t               k(  sJ t        t               t        t               k(  sJ t        t	        dt
        z  t        z        t        z        t        t              k(  sJ t        t	        dt
        z  t        z        t        z        t        t              k(  sJ t        t	        dt
        z  t        z        t        z        t        t              k(  sJ t        t	        dt
        z  t        z        t        z        t        t              k(  sJ t        t              t
        dz  k(  sJ t        t               t
         dz  k(  sJ t        t              t        u sJ t        t               t         u sJ t        t        t              t        t              t        z  t              sJ t        t        t              t        t              t        z  t              sJ t        t        t              t        t              j                  t              t         t        t        t	        t         t
        z  dz        z         dz  t        t        t	        t        t
        z  dz        z        dz  z   t        t
        z  z
  z  t
        dz  z   t              sJ t        t        t              t        t              j                  t              t         t        dt        t	        t         t
        z  dz        z         dz  t        dt        t	        t        t
        z  dz        z        dz  z   z  t
        dz  z   t              sJ t        t        t              t        t              j                  t              t        t              dz  t        t        t	        t        t
        z        z        dz  z
  t        t
        z  dz  z   t              sJ t        t        t              t        t              j                  t              t        dt              dz  t        dt        t	        t        t
        z        z        dz  z
  t        t
        z  dz  z
  t              sJ t        t               sJ t        t              sJ t        t              j                  t        d      t        t        dz  dz  z
  t        dz  d	z  z   t        d
z  dz  z
  t!        t        dz        z   k(  sJ t        t              j                  t        d      t        t        dz  dz  z   t        dz  d	z  z   t        d
z  dz  z   t!        t        dz        z   k(  sJ t        t        t                    j                  t        d      t        dt        dz  z  dz  z
  dt        dz  z  dz  z   t!        t        dz        z   k(  sJ t        t              j                  t        dd      t        d      t        dz
  t        d      z  z   t        dz
  dz  t        d       dz  t#        d      dz  z   z  z   t!        t        dz
  dz  t        df      z   k(  sJ t        t              j%                  t        t              t
        dz  dt        dz  z  dt        z  z   t!        t        dz  t        t        f      z   t        t              z  t        z  z
  dt        dz  z  dt        dz  z  z
  dz   t!        t        dz  t        t        f      z   t#        t              z  t        z  z
  k(  sJ t'        dd      } t        t              j                  t(              t+        t)        |       | dt        f      k(  sJ t-        t        t              t        t.        j0                        t.        j0                  k(  sJ t-        t        t              t        t.        j2                        t.        j2                  k(  sJ y )NrG   rF   rD   ri   rj   rJ   r   rf   r   re   iЉ  	      i  rL   rh   r   rg   tT)Dummyr   )r$   r	   rQ   r#   r   r   r   r   r   r   r   r^   r!   r,   r   r   r8   r   rl   r   r   r4   r7   r   r   r   )r   s    rU   test_sir   E  s   ac7aAhqs8qAwqbd8r#a&y   r!t92a5   qb6beVr7s1vgi"Q!"be+++i2a "#r!u,,,y2a "#s1v---yBq!!#$A...b6RT>>rc7rc!er7b==s8s??1s1vax###AQ	1%%%1r!u}}R(R)QBrE!G,,--a/Ai"Q''(*+-.rT2 357T:;<> > > 1r!u}}V,VAqA2b57!3344Q61a	!B$q& 112145 68:1=>?A A A AAr*1a"Qy2./11AbDF:A? ? ?AAv.q!Q1Yqt_+<!=a!??!B$q&H!M M M "::#;;a5==a= 	AqDGad3hAe+a1g56 6 6q6>>!q>!	AqDGad3hAe+a1g56 6 6c!f:a1%Qq!tVAX1a4)Ca1g)MMMMa5==A=#
1QA!a%!c!fWQYQ-A!BBQAPQzTUWXSYEZZ[ [ [ a5<<2"Q$#ad(QqS.
AGaW
+"1v*&&'*( #(+-ad7Qq!tV+;a+?
AGaW
,"1v+&&'+(#( ( ( ( 	s$Aa5==(47Q1I">>>>QAJJ'1::555QA../13E3EEEErT   c                     t        t        t        z        } t        t         t        z        }t        t        t        z  dz        }t        t         t        z  dz        }t        | t        z        t        t              t        t        z  z   k(  sJ t        |t        z        t        t              t        t        z  z
  k(  sJ t        |t        z        t        t              t        t        z  dz  z   k(  sJ t        |t        z        t        t              t        t        z  dz  z
  k(  sJ t        | t        z        t        t              t        t        z  z   k(  sJ t        |t        z        t        t              t        t        z  z
  k(  sJ t        |t        z        t        t              t        t        z  dz  z   k(  sJ t        |t        z        t        t              t        t        z  dz  z
  k(  sJ t        t        dt        z  t        z        t        z        t        t              dt        z  t        z  z   k(  sJ t        t        dt        z  t        z        t        z        t        t              dt        z  t        z  z
  k(  sJ t        t        dt        z  t        z        t        z        t        t              dt        z  t        z  z   k(  sJ t        t        dt        z  t        z        t        z        t        t              dt        z  t        z  z
  k(  sJ t        t              t        j                  u sJ t        t               t        t        z  k(  sJ t        t              t        u sJ t        t               t        u sJ t        t        t              t        t              t        z  t              sJ t        t        t              t        t              t        z  t              sJ t        t        t              t        t              j                  t              t        t        t        t         t        z  dz        z        dz  t        t        t        t        t        z  dz        z        dz  z   t              sJ t        t        t              t        t              j                  t              t        t              dz  t        t        t        t        t        z        z        dz  z   t        t        z  dz  z
  t              sJ t        t              sJ t        t
              sJ t        t              j!                  t        d      t"        t%        t              z   t        dz  dz  z
  t        dz  dz  z   t'        t        dz        z   k(  sJ t        t              j!                  t        d      t"        t%        t              z   t        dz  dz  z   t        dz  dz  z   t'        t        dz        z   k(  sJ t        t              j)                  t        t              t        t               dt        dz  z  d	t        z  z   t'        t        d
z  t        t        f      z   z  t        z  dt        dz  z  dt        dz  z  z
  d	z   t'        t        d
z  t        t        f      z   t+        t              z  t        z  z   k(  sJ t-        t%        t              t        dt        z        z
  t        d      t%        d       t"        z
  k(  sJ t        t              j                  t.              t1        d	t        t        t         t        z  dz        z         dz  t1        d	t        t        t        t        z  dz        z        dz  z
  k(  sJ t        t              j                  t0              t1        d	t        t        t         t        z  dz        z         dz  t1        d	t        t        t        t        z  dz        z        dz  z
  k(  sJ t3        t4        d        y )NrG   rF   rg   rj   r   rf   rh   rJ   rD   r   r   r   c                  >    t        t              j                  d      S rP   )r   rQ   rR   rS   rT   rU   rV   ztest_ci.<locals>.<lambda>  r   rT   )r   r	   r   r   rQ   r   r   r   rW   r   r   r   r   r^   r!   r   r   r   r   r8   rl   r   r7   r1   r,   r=   r:   )m1m1_pImIs       rU   test_cir   z  s   	1R4B
QBrE
C	1R46	B	A2b57	Bbd8r!uqt|###c!e91"$$$bd8s1v"Q&&&bd8s1v"Q&&&r!t9A2%%%s1u:Q!B$&&&r!t91"Q&&&r!t91"Q&&&i!B!"beac"fn444yAb!!#$A1R777y1R "#s1v!B666i1R "#r!uqs2v~555b6QVVrc7ad??r7b==s8r>>1s1vax###AQ	1%%%1r!u}}R(1Yr"uQw''(*R)AbDF2C0C-DQ-FFK K KAAr*1a"Qy2./11AbDF:A? ? ? "::#;;a5==a= SVad1f$q!tBw.1a489 9 9q6>>!q>!SVad1f$q!tBw.1a489 9 9 a5<<23q6'2ad7QqS=
AGaW
, # #!$&q!tGa1f$4q$8
AGaW
%"1v$&&'$(#( ( ( ( Q"QqS'!1a(SVGj,@@@@a5==$1Yr"uQw5G3G)H(H(J(.q!Iad1f4E2E(Fq(H)I I I Ia5== VAqA2b571C/C%D$DQ$F(.q!Iad1f4E2E(Fq(H%I I I I
56rT   c                  !   t        d      t        j                  u sJ t        t              t        j                  u sJ t        t               t        dd      k(  sJ t        t        t        z        t         t        j                  z  k(  sJ t        t         t              sJ t        t               t        t               k(  sJ t        t        t        z        t         t        t              z  k(  sJ t        t         t        z        t        t        t              z  k(  sJ t        t        t                    t        t        t                    k(  sJ t        t              j                  t              t        t        t        dz  z  dz        k(  sJ t        t              j                  t              t        j                  t        z   dz  t        t        j                  t        z   dz  t!        t              z  t        z        t        t        t        j                  t        z
  dz  t!        t              z  t        z        z  z
  z  k(  sJ t        t              j                  t"              t        t        dz  z  dz  t#        t        dd      gt        dd      t        dd      gt        dz   t        dz  z  dz        z  k(  sJ t        t              j%                  t        d	
      t        t        dz  z  dz  t        dz  t        dz  z  dz  z
  t        dz  t        dz  z  dz  z   t'        t        d	z        z   k(  sJ t        t(              j*                  du sJ t        t(              j,                  du sJ t        t              j*                  J t        t              j,                  J t        t              j/                         t        t1        t              t        t3        t              z  z
        dz  t        t1        t              t        t3        t              z  z         dz  z   t         t        t1        t              t        t3        t              z  z
         t        t1        t              t        t3        t              z  z         z   z  dz  fk(  sJ t        t              j/                  d      t        t1        t              t        t3        t              z  z
        dz  t        t1        t              t        t3        t              z  z         dz  z   t         t        t1        t              t        t3        t              z  z
         t        t1        t              t        t3        t              z  z         z   z  dz  fk(  sJ t        t(              j/                         t        t(              dfk(  sJ t        t(              j/                  d      t        t(              dfk(  sJ t        ddt        z  z         j/                         t        ddt        z  z         dz  t        ddt        z  z
        dz  z   t         t        ddt        z  z         t        ddt        z  z
        z
  z  dz  fk(  sJ t5        t7        t        t              t                    t        t        t              z  t9        t        t        dz  z  dz        t        z  z   k(  sJ t        t              j                  t:              t!        d      t        z  t        t        dd      z  z  t;        dt        dd      ft        dd      dfft        dz   t        dz  z  dz        z  dt         t        dd      z  z  t        dz  t        dd      z  z  z  k(  sJ t=        d      t        j                  u sJ t=        t              t        j                  k(  sJ t=        t               t        dd      k(  sJ t=        t        t        z        t        t        j                  z  k(  sJ t        t<        t              sJ t=        t               t=        t               k(  sJ t=        t        t        z        t        t=        t              z  k(  sJ t=        t         t        z        t         t=        t              z  k(  sJ t        t=        t                    t=        t        t                    k(  sJ t=        t              j                  t              t9        t        t        dz  z  dz        k(  sJ t=        t              j                  t              t        j                  t        z
  dz  t        t        j                  t        z   dz  t!        t              z  t        z        t        t        t        j                  t        z
  dz  t!        t              z  t        z        z  z   z  k(  sJ t=        t              j                  t"              t        t#        t        dd      gt        j                  t        dd      gt        dz   t        dz  z  dz        z  k(  sJ t=        t(              j*                  du sJ t=        t              j/                         t=        t1        t              t        t3        t              z  z
        dz  t=        t1        t              t        t3        t              z  z         dz  z   t         t=        t1        t              t        t3        t              z  z
         t=        t1        t              t        t3        t              z  z         z   z  dz  fk(  sJ t=        t              j/                  d      t=        t1        t              t        t3        t              z  z
        dz  t=        t1        t              t        t3        t              z  z         dz  z   t         t=        t1        t              t        t3        t              z  z
         t=        t1        t              t        t3        t              z  z         z   z  dz  fk(  sJ t=        ddt        z  z         j/                         t=        ddt        z  z
        dz  t=        ddt        z  z         dz  z   t         t=        ddt        z  z         t=        ddt        z  z
        z
  z  dz  fk(  sJ t5        t7        t=        t              t                    t        t=        t              z  t        t        t        dz  z  dz        t        z  z
  k(  sJ t=        t              j                  t:              t!        d      t        z  t        t        dd      z  z  t;        dt        dd      ft        dd      dfft        dz   t        dz  z  dz        z  dt         t        dd      z  z  t        dz  t        dd      z  z  z  k(  sJ ddlm }   | t1        t        t                    t        t              j/                         d   t                | t3        t        t                    t        t              j/                         d   t                | t        t              t        t              j                  t"              t                | t        t              t        t              j                  t:              t                | t1        t=        t                    t=        t              j/                         d   t                | t3        t=        t                    t=        t              j/                         d   t                | t=        t              t=        t              j                  t"              t                | t=        t              t=        t              j                  t:              t               tC        tD        d        tC        tD        d        t        tF              jI                  dtF              t        j                  u sJ t=        tF              jI                  dtF              t        j                  u sJ t=        tF              jI                  dtF              t        dz   tF        dz  z  dz  k(  sJ y )Nr   rE   rG   rg   rJ   rL   re      r   rj   iP  rf   r   i   TFrM   r   r   rD   r   c                  >    t        t              j                  d      S rP   )r.   r[   rR   rS   rT   rU   rV   ztest_fresnel.<locals>.<lambda>      x{'8'8'; rT   c                  >    t        t              j                  d      S rP   )r-   r[   rR   rS   rT   rU   rV   ztest_fresnel.<locals>.<lambda>  r   rT   (   )%r.   r   rW   r   r_   r
   r	   r9   r[   r   r   r   r   r^   r%   r]   r   r2   rl   r8   r>   r   	is_finitera   r   r   r   r5   r   r3   r-   r   r   r=   r:   rQ   taylor_termr   s    rU   test_fresnelr    s   A;!&&   B<166!!!RC=HRO+++AbD>aRY&&&Xq!!!QB<HQK<'''AaC=QBx{N***QBqD>Qx{]***Xa[!Xil%;;;;A;A#bAgai.000A;s#	1}QUUQYM$r("1$%#quuqy!mDH.DQ.F*G(GG(I I I I A;u%
1a4	E8Aq>*Xa^Xa^,LrSTufUVXYUYkZ\n]]^ ^ ^ A;a2&
1a4	BE!Q$JsN"RU1b5[%661b5AB B B A;''4///A;  D(((A;''///A;  (((A;##%(2a51RU7?*CA*ERUQr!uW_-a/+0B"Q%!BqE'/22Xbea1go5NNOPQQ*S S S S A;###/HRUQr!uW_4Ma4ORUQr!uW_-a/50B"Q%!BqE'/22Xbea1go5NNOPQQ4S S S S A;##%(1+q)9999A;###.8A;2BBBBA!G))+Q1Wa(1qs7"3A"55BQqS!HQ1W$556q80   
 y!a01	(1+Bq!tGAIr))* * * A;w'472:a!Q6G+G
hq!n.	!Q!1ufQTk"n	.,./01"x1~1E/Eq!thWXZ[nF\/\,^ ^ ^ ^ A;!&&   B<166!!!RC=HRO+++AbD>QqvvX%%%Xq!!!QB<HQK<'''AaC=AhqkM)))QBqD>aR^+++Xa[!Xil%;;;;A;A#bAgai.000A;s#	1}QUUQYM$r("1$%#quuqy!mDH.DQ.F*G(GG(I I I I A;u%	E8Aq>"QVVXa^$<r1ufQTk"nMMN N N A;''4///A;##%	"Q%!BqE'/	"1	$x1"Q%'@'B	B
hr!uqAw''(2a51RU7?*CC	DQ	F	HH H H A;###/	"Q%!BqE'/	"1	$x1"Q%'@'B	B
hr!uqAw''(2a51RU7?*CC	DQ	F	HH H H A!G))+QqS!hq1Q3w/11
Xa!A#g!ac'!22	3A	50   
 y!a01	(1+Bq!tGAIr))* * * A;w'472:a!Q6G+G
hq!n.	!Q!1ufQTk"n	.,./01"x1~1E/Eq!thWXZ[nF\/\,^ ^ ^ ^ 5r(1+(@(@(B1(EqIr(1+(@(@(B1(EqIx{HQK$7$7$>Bx{HQK$7$7$@!Dr(1+(@(@(B1(EqIr(1+(@(@(B1(EqIx{HQK$7$7$>Bx{HQK$7$7$@!D
;<
;<A;""2q)QVV333A;""2q)QVV333A;""1a(RUF1a4KN:::rT   c                     t        t              j                  t        d      t        t        dz  t        dz  z  dz  z
  t        dz  t        dz  z  dz  z   t        d	z  t        d
z  z  dz  z
  t	        t        dz        z   k(  sJ t
        j                  t        t        t        dz  z  dz        t        dz  t        dz  z  z  z
  dt        t        z  z  dt        dz  t        dz  z  z  z   t        t        t        dz  z  dz        z  z   } t
        j                  t        t        t        dz  z  dz        t        dz  t        dz  z  z  z
  dt        t        z  z  dt        dz  t        dz  z  z  z
  t        t        t        dz  z  dz        z  z   }t        t              j                  t        t              | t	        t        dz  t        t        f      z   k(  sJ t        t              j                  t        t              |t	        t        dz  t        t        f      z   k(  sJ t        t              j                  t        t               | j                  t        t               z   j                         j                  sJ t        t              j                  t        t               |j                  t        t               z   j                         j                  sJ t        dt        z        j                  t              | j                  t        dt        z        z
  j                         j                  sJ t        dt        z        j                  t              |j                  t        dt        z        z
  j                         j                  sJ dt        dt        z        z  j                  t        t              d| j                  t        dt        z        z  z
  j                         j                  sJ dt        dt        z        z  j                  t        t              d|j                  t        dt        z        z  z
  j                         j                  sJ y )Nr   rj   rG   rf   r  rg   r   i  rL      i $	 rJ   rE   rD   rh   )r-   r[   rl   r   r8   r   r_   r   r   r.   r   r   r   is_Order)fsfcs     rU   test_fresnel_seriesr     s;   A;a2&	BE!Q$JrMBE!Q$JtO+b!eArEk&.@@1QU8KL L L &&3r!Q$wqy>2q5A:.
.r!t9q"a%1*~%s2ad719~
56B
&&3r!Q$wqy>2q5A:.
.bd8aQq!tn$c"QT'!)n
45BA;a$Qq2wB-@(@@@@A;a$Qq2wB-@(@@@@QKq2#&QB7??AJJJJQKq2#&QB7??AJJJJQqSM  #bgga1o5==?HHHHQqSM  #bgga1o5==?HHHHx!}_$$Q+a1Q3.??GGIRRRRx!}_$$Q+a1Q3.??GGIRRRRrT   )r   r   )osympy.core.functionr   r   r   
sympy.corer   sympy.core.numbersr   r   r	   r
   r   r   r   sympy.core.singletonr   sympy.core.symbolr   r   $sympy.functions.elementary.complexesr   r   r   r   &sympy.functions.elementary.exponentialr   r   r   %sympy.functions.elementary.hyperbolicr   r   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   r   r   'sympy.functions.special.error_functionsr   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   'sympy.functions.special.gamma_functionsr0   r1   sympy.functions.special.hyperr2   r3   sympy.integrals.integralsr4   r5   sympy.series.gruntzr6   sympy.series.limitsr7   sympy.series.orderr8   sympy.core.exprr9   r:   r;   r<   sympy.testing.pytestr=   rQ   rX   r[   r>   rA   rc   rm   rr   rw   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  rS   rT   rU   <module>r     s9   ; ; ! C C C " / P P H H > 9 E E d  d  d  d  d G : ; & %   % 2 ? '
'
1a
3T
3B&J	M7	:2(jV759pU>,1^& A	(?(IW17D:=z9.
')7X72Fj07fp;fSrT   