K i;UdZddlmZddlZddlmZddlmZmZddl m Z ddl m Z ddl mZdd lmZdd lmZdd lmZmZmZmZmZdd lmZdd lmZddlmZmZddl m!Z!m"Z"m#Z#ddl$m%Z%m&Z&ddl'm(Z(m)Z)m*Z*m+Z+ddl,m-Z-ddl.m/Z/ddl0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;ddlZ>m?Z?ddl@mAZAddlBmCZCmDZDmEZEmFZFddlGmHZHddlImJZJmKZKddlLmMZMmNZNmOZOmPZPddlQmRZRmSZSmTZTmUZUddlVmWZWmXZXddlYmZZZm[Z[ddl\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgddlhmiZidd ljmkZkmlZldd!lmmnZnd"d#lompZpdd$lqmrZrmsZsmtZtmuZumvZvdd%lwmxZxmyZydd&lzm{Z{dd'l|m}Z~dd(l|mZe(d)Zd*Zd+Zdd,lmZed-ZdXd.ZGd/d0eZd1Zd2Zd3Zd4Zd5Zd6Zd7Zd8Zd9Zd:ZiZd;ed<<d=Zd>Zd?ZdYd@ZdAZdZdBZdCZdZdDZdEZdZdFZdGZdHZdIZdJZdKZdaeedYdLZdYdMZdNZdOZdPZedQZdRZdSZdTZdUZedZdVZdWZy)[a Integrate functions by rewriting them as Meijer G-functions. There are three user-visible functions that can be used by other parts of the sympy library to solve various integration problems: - meijerint_indefinite - meijerint_definite - meijerint_inversion They can be used to compute, respectively, indefinite integrals, definite integrals over intervals of the real line, and inverse laplace-type integrals (from c-I*oo to c+I*oo). See the respective docstrings for details. The main references for this are: [L] Luke, Y. L. (1969), The Special Functions and Their Approximations, Volume 1 [R] Kelly B. Roach. Meijer G Function Representations. In: Proceedings of the 1997 International Symposium on Symbolic and Algebraic Computation, pages 205-211, New York, 1997. ACM. [P] A. P. Prudnikov, Yu. A. Brychkov and O. I. Marichev (1990). Integrals and Series: More Special Functions, Vol. 3,. Gordon and Breach Science Publisher ) annotationsN) SYMPY_DEBUG)SExpr)Add)Basic)cacheit)Tuple) factor_terms)expand expand_mulexpand_power_base expand_trigFunction)Mul)ilcm)Rationalpi)EqNe_canonical_coeff)default_sort_keyordered)DummysymbolsWildSymbol)sympify) factorial) reimargAbssign unpolarifypolarify polar_liftprincipal_branchunbranched_argumentperiodic_argument)exp exp_polarlog)ceiling)coshsinh_rewrite_hyperbolics_as_expHyperbolicFunctionsqrt) Piecewisepiecewise_fold)cossinsincTrigonometricFunction)besseljbesselybesselibesselk) DiracDelta Heaviside) elliptic_k elliptic_e) erferfcerfiEiexpintSiCiShiChifresnelsfresnelc)gamma)hypermeijerg)SingularityFunction)Integral)AndOr BooleanAtomNotBooleanFunction)cancelfactor)multiset_partitions)debug)debugfzct|}t|ddrtfd|jDS|jS)N is_PiecewiseFc36K|]}t|gywN)_has).0ifs _/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/integrals/meijerint.py z_has..Ts114;A;1s)r6getattrallargshas)resrfs `rgrcrcOs@  CsNE*1111 377A;c d}tt|d\ }tddgtzztj ddffd dfd }d } | ddfgd <Gd d t } t z  z d z zz gggdg z t  d z zzt dkD t z  z d z zzg gdgg z t  d z zzt dkD tt z d z zz  z d z zz gggdg z t  d z zzt dkD t z d z ztz  z d z zzg gdgg z t  d z zzt dkD z zd z ggdgg z zt z t|  t z  zd z gd z dz gdgd z dz g z dtt zdz ztd z zt  zzt d k  z zz  z z d ggd gg z d z zt tzztz d fd}|dd |dd|tjd |tjd fd}|dd |dd|tjd |tjd t!t#dzggdgg t%gd gtjgd dgdzdz tt'ddz t)gtjgdgtjtjgdzdz tt'ddz tggtjgdgdzdz t+t t-ggdgtjgdzdz t+t t/ggdgt'ddgdzdz t+tdz fd fd |t1ztd z z d|t1ztd z z d fd}|t1z|d|t1 z|t1 tj t3d d ggd gdg z fgzd|t1t z |t1t tt3d d gtjgd gdtjg z fgzd|t5|tj6 tztj8t3gd gddggt#dzfgzd t;d ggtjgddgdzdz t+tdz  t=gd gddgtjgdzdz t+t dz  t?tjggdgt'ddt'ddgt#ddzzdz t+tzdz  tAgtjd gddgtjtjgdzdz tt dz dz  tC g g d z dgg tEd ggtjgdgdzd t+tz  tGgd gdtjggdzd t+tz  tItjggdgt'ddgdz t+tz  tKd ggt'ddgdt'd dgtdzdzzdz tj tMd ggt'd dgdt'ddgtdzdzzdz tj tO gg dz g dz gdzdz  tQ g d z dz g dz dz g d z dz gdzdz  tS gd zdz g dz g dz d zdz gdzdz t tU gg dz dz ggdzdz tj tWtjtjggdgdg tj tYtjdtjzggdgdg t'dddz y)z8 Add formulae for the function -> meijerg lookup table. c&t|tgS)Nexclude)rr^)ns rgwildz"_create_lookup_table..wildZsAs##rnpqabcrsc(|jxr|dkDSNr) is_Integerxs rgz&_create_lookup_table..]s (>Qrn) propertiesTc  jt|tgj||t |||||fg||fyrb) setdefault_mytyper^appendrP) formulaanapbmbqr"faccondhinttables rgaddz!_create_lookup_table..add`sK !,b188''*GBBC,H&I%JDRV:X Yrncljt|tgj||||fyrb)r~rr^r)rinstrrrs rgaddiz"_create_lookup_table..addids0  GQ  %%+VWdD$,G%Hrnc ^|tdgggdgtf|tgdgdggtfgSNrRr)rPr^)as rgconstantz&_create_lookup_table..constanths>GQCR!a01GBaS"a013 3rnceZdZedZy)2_create_lookup_table..IsNonPositiveIntegerc@t|}|jdur|dkSy)NTr)r%rx)clsr"s rgevalz7_create_lookup_table..IsNonPositiveInteger.evalps%S/C~~%ax&rnN)__name__ __module__ __qualname__ classmethodrrrnrgIsNonPositiveIntegerrns    rnrrRr)rcNttddz| |zdz dd|zz zzS)NrrR)rr)rr$nus rgA1z _create_lookup_table..A1s/8B?"TE"HQJ!ac'#:::rnctdzz|zzzdzz|zz dzdz dd|zz dz zgg|zz dz g|zzdz gdzz d|zz z||zy)NrrRr3)rsgnrrrbts rgtmpaddz$_create_lookup_table..tmpadds T!Q$(^c!e #a 'AA 5!eQYAaC!A# &#a%i]Oq3q5y!m_a1f AaCLAsA & (rnrcHttzzz|tztdz zzzztzzz|zz d|z |zdz zgd|z |zdz z gdtjggtzzz dz |z z||zy)NrrRr)r4r^rHalf)rrrrrrpqs rgrz$_create_lookup_table..tmpadds T!a1f* DG A!H 4 4q 8!a1f*q H USU1W_ AAa01aff+r adF1Ha!A#'l2aa=0 2rnc|}tj|zt|ztgdg|dzzdg|dzzgfgSr)r NegativeOnerrPsubsNrsrs rg make_log1z'_create_lookup_table..make_log1sV G!)A,.aS!a%[1#q1u+r1=?@ @rnc `|}t|tdg|dzzggdg|dzzfgSr)rrPrs rg make_log2z'_create_lookup_table..make_log2sH G1!a!eb"qc1q5k1=?@ @rnc&||zSrbr)rrrs rg make_log3z'_create_lookup_table..make_log3s400rnz3/2NT)-listmaprr^rOnerr@rNrTrWr#r8rr rr+r'r0rr/r4r7r9r-rPrF ImaginaryUnitrrHrIrJrKrGrCrDrErLrMr;r<r=r>rArB)rrtcrrrrrrrrrrrrsrrrs` @@@@@@@@@@rg_create_lookup_tablerXs $T7+,MAq!Q S>?@A !Q$A)*DtYI3Xa[$-.E"I x  !a%!a%1q5))A3BQqS aQUSQZ) !a%!a%1q5))2sQCQqS aQUSQZ) !qsacl"#QUa!e$44qc2rA3! aQUSQZ) 1Q3!A#,"#QUa!e$44b1#sB! aQUSQZ)Q1" AwQCQqS!qb'%(2B %a( )+AE aR1q5'QUAI;q1uai[!A# #bd1f+ eAEl"3q6QB</A<A1q1u1vrAq62qs AE 3qt9R!;((  1aL 1bM 1661 166222 1aL 1bM 1661 1662JrN1 r2sB/QaS166(QFAqDFBA4FGQaffXsQVVQVV$4ad1fb(1a.>PQAB1#q!tAvtBx8ABaffXq!tAvtBx8QR!xA/Aab!D@ @ Q9QU# #Y5Q9QU# #Y51QIt$QU #a& aeeWaVR!qc1Q3%GHI I  SQZ(3s1v;/ w1vx!q!&&k1Q3? @ AB  A 1??"2% &1=='"qcAq6SUJrN";$+%*& &  1sB1a&!Q$q&$r(1*=1rA3A!Q$q&48)A+>A"qcHROXb!_#EzRT~VWYZVZGZ[\G\ $r( 1 AQVVQK!Q!&&!&&)91a46 AeH DDq! b1#Aqz2q1AR!&&A31aRj9QaS1aff+r1a448<Q!&&2sXb!_$51uaRjI aS"x1~.HQN0CRU1a4ZPR]TUTZTZ[ aS"x1~.HQN0CRU1a4ZPR]TUTZTZ[1 r2!ur!tfad1f51 ra!eHQJ.key/s{{}rnrc3DK|]}t|D]}|ywrb)r)rdrrrzs rgrhz_mytype..6s#BqGAqMBqBBs r)rzz type[Basic]returnztuple[int, int, str]) free_symbols is_Functiontypetuplesortedrk)rfrzrs ` rgrr-sG  Awx BAFFBL MMrnceZdZdZy)_CoeffExpValueErrorzD Exception raised by _get_coeff_exp, for internal use only. N)rrr__doc__rrnrgrr9s  rnrc6ddlm}t||j|\}}|s|tj fS|\}|j r(|j|k7r td||jfS||k(r|tjfStd|z)a When expr is known to be of the form c*x**b, with c and/or b possibly 1, return c, b. Examples ======== >>> from sympy.abc import x, a, b >>> from sympy.integrals.meijerint import _get_coeff_exp >>> _get_coeff_exp(a*x**b, x) (a, b) >>> _get_coeff_exp(x, x) (1, 1) >>> _get_coeff_exp(2*x, x) (2, 1) >>> _get_coeff_exp(x**3, x) (1, 3) r)powsimpzexpr not of form a*x**bzexpr not of form a*x**b: %s) sympy.simplifyrr as_coeff_mulrZerois_Powbaserr+r)exprrzrrms rg_get_coeff_expr@s&' wt} - : :1 =FQ !&&y CQxx 66Q;%&?@ @!%%x a!%%x!"?$"FGGrnc:fdt}||||S)a Find the exponents of ``x`` (not including zero) in ``expr``. Examples ======== >>> from sympy.integrals.meijerint import _exponents >>> from sympy.abc import x, y >>> from sympy import sin >>> _exponents(x, x) {1} >>> _exponents(x**2, x) {2} >>> _exponents(x**2 + x, x) {1, 2} >>> _exponents(x**3*sin(x + x**y) + 1/x, x) {-1, 1, 3, y} c||k(r|jdgy|jr,|j|k(r|j|jgy|jD] }|||yNrR)updaterrr+rk)rrzrmargument _exponents_s rgrz_exponents.._exponents_us_ 19 JJsO  ;;499> JJz "   *H !S ) *rn)set)rrzrmrs @rg _exponentsrbs"&* %Ca Jrnc|jtDchc]}||jvs|jc}Scc}w)zB Find the types of functions in expr, to estimate the complexity. )atomsrrfunc)rrzes rg _functionsrs. JJx0 HqA4GAFF HH Hs==cdDcgc]}t|gc}\fdt}|||Scc}w)ap Find numbers a such that a linear substitution x -> x + a would (hopefully) simplify expr. Examples ======== >>> from sympy.integrals.meijerint import _find_splitting_points as fsp >>> from sympy import sin >>> from sympy.abc import x >>> fsp(x, x) {0} >>> fsp((x-1)**3, x) {1} >>> fsp(sin(x+3)*x, x) {-3, 0} pqrqct|tsy|jzz}|r$|dk7r|j| |z y|jry|j D] }|| yrw) isinstancermatchris_Atomrk)rrmrrcompute_innermostrrrzs rgrz1_find_splitting_points..compute_innermostsw$%  JJqsQw  1 GGQqTE!A$J   <<   -H h , -rn)rr)rrzrs innermostrrrs ` @@@rg_find_splitting_pointsrsE$+/ /QDQC /DAq -IdI&  0sAc^tj}tj}tj}t|}tj|}|D]}||k(r||z}||j vr||z}"|j r||jj vr|jj|\}}||fk7r't|jj|\}}||fk(r9|||jzz}|tt||jzdz}||z}|||fS)aq Split expression ``f`` into fac, po, g, where fac is a constant factor, po = x**s for some s independent of s, and g is "the rest". Examples ======== >>> from sympy.integrals.meijerint import _split_mul >>> from sympy import sin >>> from sympy.abc import s, x >>> _split_mul((3*x)**s*sin(x**2)*x, x) (3**s, x*x**s, sin(x**2)) F)r) rrrr make_argsrrr+rrr r%r&) rfrzrpogrkrrrs rg _split_mulrs %%C B A!A == D  6 !GB ann $ 1HCxxAQUU%7%77vv**1-19%aff-::1=DAq9!QUU(NB:hq!%%xe&DEEC FA A:rnctj|}g}|D]d}|jrE|jjr/|j}|j }|dkr| }d|z }||g|zz }T|j |f|S)a Return a list ``L`` such that ``Mul(*L) == f``. If ``f`` is not a ``Mul`` or ``Pow``, ``L=[f]``. If ``f=g**n`` for an integer ``n``, ``L=[g]*n``. If ``f`` is a ``Mul``, ``L`` comes from applying ``_mul_args`` to all factors of ``f``. rrR)rrrr+rxrr)rfrkgsrrsrs rg _mul_argsrs == D B   88((A66D1uBv 4&(NB IIaL  Irnct|}t|dkryt|dk(r t|gSt|dDcgc]\}}t |t |fc}}Scc}}w)a Find all the ways to split ``f`` into a product of two terms. Return None on failure. Explanation =========== Although the order is canonical from multiset_partitions, this is not necessarily the best order to process the terms. For example, if the case of len(gs) == 2 is removed and multiset is allowed to sort the terms, some tests fail. Examples ======== >>> from sympy.integrals.meijerint import _mul_as_two_parts >>> from sympy import sin, exp, ordered >>> from sympy.abc import x >>> list(ordered(_mul_as_two_parts(x*sin(x)*exp(x)))) [(x, exp(x)*sin(x)), (x*exp(x), sin(x)), (x*sin(x), exp(x))] rN)rlenrr[r)rfrrzys rg_mul_as_two_partsrs^. 1B 2w{ 2w!|b {-@Q-G H6AqS!Wc1g  HH HsA"c d}tt|jt|jz }|d|jz|dz zz}|dt z|dz |j zzz}|t||j|||j|||j|||j||j|z|||zzzfS)zO Return C, h such that h is a G function of argument z**n and g = C*h. c~tj|t|Dcgc] \}}||z|z c}}Scc}}w)z5 (a1, .., ak) -> (a1/n, (a1+1)/n, ..., (ak + n-1)/n) ) itertoolsproductrange)paramsrsrres rginflatez_inflate_g..inflates3&/&7&7a&IJdaQ JJJs9rRr) rrrrrrdeltarPraotherrbotherr)rrsrvCs rg _inflate_gr s K #add)c!$$i  A AHqsNA!B$1q5!''/ ""A ggaddA&!(<addA&!(<jj!ma!A#h.0 00rncd}t||j||j||j||jd|j z S)zQ Turn the G function into one of inverse argument (i.e. G(1/x) -> G'(x)) c2|Dcgc]}d|z  c}Scc}wrr)lrs rgtrz_flip_g..trs !!A!!! rR)rPrrrrr)rr s rg_flip_grsB" 2add8R\2add8R\1QZZ< PPrnc |dkrtt|| St|j}t|j}t ||\}}|j }|dtzd|z dz z|tddzzz}|||zz}t|Dcgc] }|dz|z  }}|t|j|j|jt|j|z|fScc}w)a\ Let d denote the integrand in the definition of the G function ``g``. Consider the function H which is defined in the same way, but with integrand d/Gamma(a*s) (contour conventions as usual). If ``a`` is rational, the function H can be written as C*G, for a constant C and a G-function G. This function returns C, G. rrrRr)_inflate_fox_hrrrrrrrrrrPrrrrr)rrrrDr^rsbss rgrr"s 1ugaj1"-- !##A !##A a DAq A!B$1q5!) QQ/ //AAIA"1X &1q5!) &B & gaddAHHaddDNR,?C CC 'sC1zdict[tuple[str, str], Dummy]_dummiesc Tt||fi|}||jvr t|fi|S|S)z Return a dummy. This will return the same dummy if the same token+name is requested more than once, and it is not already in expr. This is for being cache-friendly. )_dummy_rr)nametokenrkwargsds rg_dummyr?s8 e&v&AD  T$V$$ Hrnc V||ftvrt|fi|t||f<t||fS)z` Return a dummy associated to name and token. Same effect as declaring it globally. )rr)rrrs rgrrKs7 %=H $"'"7"7$ T5M ""rnc^tfd|jttD S)z Check if f(x), when expressed using G functions on the positive reals, will in fact agree with the G functions almost everywhere c3:K|]}|jvywrb)rrdrrzs rgrhz_is_analytic..XsNd1)))Ns)anyrr@r#)rfrzs `rg _is_analyticr Us$Naggi6MNN NNrnc|r|jdt}d}t|ts|St dt \}t ktkfttttkttdtzz tktttz dfttdtztztktdtztz tkttdfttdtztztktdtztz tktjfttttdz z tdz ktttdz ztdz kttdfttttdz z tdz ktttdz ztdz ktjftttdzdz dztktttdzdz dzttjft ttdzdz dztktddzdz dzz dtjfttt!tktt!t#dtztj$zztktt!t#tj$ tzzdfttt!tdz ktt!t#t tj$zztdz ktt!t#tj$ tzdz zdft ktk|kftdzddzdkDzdzdkDftdz dt'tttzdkDztdkDftdt'tttzdkDztdkDftttdz kt'ttt)tdzzdkDzdzdkDfg}|j*|j,Dcgc]}t/||c}}d }|r]d}t1|D]H\}\}}|j*|j*k7r$t1|j,D] \} } ||j,dj2vr!| j5|j,d} d} n d} | j5|j,d} | sf|j,d | |j,| dzd zD cgc]} | j7| }} | g}|D]}t1|j,D]\}}||vr ||k(r||gz }0t|trE|j,d|k(r3t|tr#|j,d|j,vr||gz }t|ts~|j,d|k(st|ts|j,d|j,vs||gz }t9|t9|dzk7rt1|j,Dcgc] \}}||vr| c}}|j7| gz}t:r|d vr t=d ||j*|}d }HK|r]fd }|jd|}t:r t=d||Scc}wcc} wcc}}w)a Do naive simplifications on ``cond``. Explanation =========== Note that this routine is completely ad-hoc, simplification rules being added as need arises rather than following any logical pattern. Examples ======== >>> from sympy.integrals.meijerint import _condsimp as simp >>> from sympy import Or, Eq >>> from sympy.abc import x, y >>> simp(Or(x < y, Eq(x, y))) x <= y c|jSrb is_Relational_s rgr{z_condsimp..os aoornFzp q r)rrrrRTN) rrr zused new rule:c|jdk7s|jdk7r|S|j}|jt z}|s&|jt t z}|s\t|trJ|jdjs1|jdtjur|jddkDS|S|dkDS)Nz==rrR) rel_oprhslhsrr"r)r'rr*rkis_polarrInfinity)relLHSrrrs rg rel_touchupz_condsimp..rel_touchups :: AJgg IIc!fai  -jmQ.>?@A#01#((1+:N:N qzz1 a(J!qrnc|jSrbr#r%s rgr{z_condsimp..s !//rnz _condsimp: )replacerrrXrrrUrrTr#r"rrfalsertruer)r,rr7r4rrk _condsimp enumeraterrrrrprint)rfirstrrulesr&changeirulefrotorsarg1rnumrz otherargs otherlistarg2karg3arg_newargsr7rrs @@rgr<r<[s& ||57GH dO , g4(GAq! AE2a8 a1f% SQ[B CFQrTM 2b 8 9 CFRK   S3q6B 2 %s1SV8b='9R'? @ CFA  S3q6B " $c!CF(R-&8B&> ?   SQ"Q$ 2a4 'SVbd]);r!t)C D CFA  SQ"Q$ 2a4 'SVbd]);bd)B C   SQT!VaZ !B &3s1a46A:+?(D E   CAqDFQJ 2 %r!QT!VaZ.!'< =   S$Q' (B . "9RU1??-B#CA#EF G2 M O  1??*:2*= >q @ A1 E G S$Q' (BqD 0 "9bS-@#A!#CD EA M O  1??*:2*=a*? @ B CQ G I AFCAqM "AF+ AqD!1q !1a4!8, AaCs3s1v;'A.2 3SVaZ@ AqSSV%c!f,q0 13q6A:> c!f+1 SQ[!1$s1a4y/!AA!E F1qQ9 E< 499DII>qyE*> ?D F  )% 0&  E9Cxx499$$TYY/# 4 000 388A;/ACC 388A;/A03##PQ'(AS0ST1QVVAYT TC %"D#,TYY#7 "4 >$4<%!,I!%dC0TYYq\Q5F *4 5$))A,$)):S%!,I!%dC0TYYq\Q5F *4 5$))A,$)):S%!,I! ""y>S^a%771:4991E2IQy0 257WWQZLA$FF.6 tyy'*G# &  V <<1; ?D mT" K? U&2s`=a7a cXt|tr|St|jS)z Re-evaluate the conditions. )rboolr<doit)rs rg _eval_condrQs"$ TYY[ !!rncPt||}|s|jtd}|S)z Bring expr nearer to its principal branch by removing superfluous factors. This function does *not* guarantee to yield the principal branch, to avoid introducing opaque principal_branch() objects, unless full_pb=True. c|Srbr)rzrs rgr{z&_my_principal_branch..srn)r(r9)rperiodfull_pbrms rg_my_principal_branchrVs) 4 (C kk*N; Jrnc | t||\} t|j|\} |j}t||}|t | dz z dz zzz } fd}|t ||j ||j||j||j||zfS)z Rewrite the integral fac*po*g dx, from zero to infinity, as integral fac*G, where G has argument a*x. Note po=x**s. Return fac, G. rRcF|Dcgc]}|dzz zdz c}Scc}wrr)r rrss rgr z_rewrite_saxena_1..trs(+,-aQUAI !---s) rr get_periodrVr#rPrrrr) rrrrzr&rrTrr rrYs @@rg_rewrite_saxena_1r[s "a DAq !**a (DAq \\^FQ'A SVAQ A & &'A. gbh188 bh188 c rnc  |j}t|j|\}}tt |j t |j t |jt |jg\}}}} || kDr_d} tt| |j | |j| |j | |j||z |S|j D cgc]} t|  dkc} |j D cgc]} ddt| z kc} z} t| }| |jD cgc]} t|  dkc} z } | |jD cgc]} ddt| z kc} z } t| }t|j | dz|z dz z| |z kD}d}d}|d|d|||||| f|dt!|j t!|jf|d t!|j t!|jf|d |||fg}g}d|k|| kd|kg}d|kd|kt#| |dzt%tt#|d t#||dzg}d|kt#| |g}t't)|dz dzD]1}|t+t-t/||d|zz t0zgz }3|d kDt-t/||t0zkg} t+|d |g}|rg}|||fD]}|t|| z|zgz }||z }|d ||g}|rg}tt#|d |dz|k|| kt-t/||t0zkg|g}||z }|d |||g}|rg}t|| kd|k|d kDt#t-t/||t0zg|g}|t|| dz kt#|d t#t-t/|d g|gz }||z }|d|g}|t#|| t#|d t#t/|d t+|d gz }|s||gz }g}t3|j|jD]\} } || | z gz }|tt5|d kgz }t|}||gz }|d|gt|d kDt-t/||t0zkg}|s||gz }t|}||gz }|d|gt7|Scc} wcc} wcc} wcc} w)aV Return a condition under which the mellin transform of g exists. Any power of x has already been absorbed into the G function, so this is just $\int_0^\infty g\, dx$. See [L, section 5.6.1]. (Note that s=1.) If ``helper`` is True, only check if the MT exists at infinity, i.e. if $\int_1^\infty g\, dx$ exists. c2|Dcgc]}d|z  c}Scc}wrrr rzs rgr z _check_antecedents_1..trs#$%aAE% %%r rRrct|yrb)_debug)msgs rgr\z#_check_antecedents_1..debug"s  rnct||yrb_debugf)stringr"s rgr]z$_check_antecedents_1..debugf%s rnz$Checking antecedents for 1 function:z* delta=%s, eta=%s, m=%s, n=%s, p=%s, q=%sz ap = %s, %sz bq = %s, %sz" cond_3=%s, cond_3*=%s, cond_4=%srz case 1:z case 2:z case 3:z extra case:z second extra case:)rrrrrrrrr_check_antecedents_1rPrrr rTrrrrWrr.rr#r)rziprrU) rrzhelperretar&rrsrrr rrtmpcond_3 cond_3_starcond_4r\r]condscase1tmp1tmp2tmp3rJextrarcase2case3 case_extrarY case_extra_2s rgrfrfst GGE AJJ *FCCIs144y#add)SY?@JAq!Q1u &#GBqttHbl,.qttHblAcE%K$%' ' !tt $!BqE6A: $qtt'D!A1I 'D DC #YF )1RUFQJ ))C188 ,aABqE M ,,Cs)K!$$xi1q519a-'!a%/F 01 7 31a #% ?T!$$Zahh89 ?T!$$Zahh89 /&+v1NO E E FAE16 "D FAFBq!a%L#c"Q(Bq!a%L.I*J KD FBq!H D 757#a' (F C+C01EAaCK3CDEEF 19c-c23eBh> ?C QZ E D$ + #C%)**+ UNE +uHE  Aq1q5A:qAv(-.r9C>> from sympy.abc import a, b, c, d, x, y >>> from sympy import meijerg >>> from sympy.integrals.meijerint import _int0oo_1 >>> _int0oo_1(meijerg([a], [b], [c], [d], x*y), x) gamma(-a)*gamma(c + 1)/(y*gamma(-d)*gamma(b + 1)) r) gammasimprR) rryrrrrNrrrr%)rrzryrir&rmrrs rg _int0oo_1rzrs) AJJ *FC C%C TT uQU| TT  uQUQY XX  uQUQY XX uQU| Z_ %%rncfd}t|\}}t|j\}} t|j\}} | dkdk(r| } t|}| dkdk(r| } t|}| jr | jsy| j| j } } | j| j }} t | |z| | z}|| |zz}|| | zz}t||\}}t||\}}||}||}|||zz}t|j\}}t|j\}}|dz|z dz |t||zzz }fd}t||j||j||j||j|z}t|j|j|j|j|z}ddlm}||d||fS) a Rewrite the integral ``fac*po*g1*g2`` from 0 to oo in terms of G functions with argument ``c*x``. Explanation =========== Return C, f1, f2 such that integral C f1 f2 from 0 to infinity equals integral fac ``po``, ``g1``, ``g2`` from 0 to infinity. Examples ======== >>> from sympy.integrals.meijerint import _rewrite_saxena >>> from sympy.abc import s, t, m >>> from sympy import meijerg >>> g1 = meijerg([], [], [0], [], s*t) >>> g2 = meijerg([], [], [m/2], [-m/2], t**2/4) >>> r = _rewrite_saxena(1, t**0, g1, g2, t) >>> r[0] s/(4*sqrt(pi)) >>> r[1] meijerg(((), ()), ((-1/2, 0), ()), s**2*t/4) >>> r[2] meijerg(((), ()), ((m/2,), (-m/2,)), t/4) c t|j\}}|j}t|j|j |j |jt|||zzSrb) rrrZrPrrrrrV)rrrperrUrzs rgpbz_rewrite_saxena..pbs^ajj!,1llnqttQXXqttQXX+AsG.trs!"#AC###  powdenestpolar)rrr is_Rationalrrrrr#rPrrrrrr)rrg1g2rzrUr~r&rYb1b2m1n1m2n2taur1r2C1C2a1ra2r rr+s `` @rg_rewrite_saxenars6C "a DAq 2;; *EAr 2;; *EAr Q4S R[ Q4S R[ >> TT244B TT244B r"ube C r"uB r"uB B FB B FB BB BB2b5LC 2;; *EB 2;; *EB q5!)a-C s1vC C$ BEEBryyM2bee9bmRT JB  255"))RT :B( S %r2 --rnc../0123456tj|\3}tj|\/}ttjtj tj tjg\}}56ttjtj tj tjg\}}02||z56zdz z }||z02zdz z } j56z dz zdz} j02z dz zdz} 20z 65z z } d65z z | z | z } t2|z |z ztt/z20z z 1t6|z |z ztt3z65z z 4tdtd3||56|| ftd/||02| | ftd| | 14ffd}|}tjDcgc]'}jD]}td|z|zdkD)c}}}tj Dcgc]'}j D]}td|z|zdk)c}}}tj Dcgc]2}02z td|zdz zt| z t!d dkD4c}}tjDcgc]/}02z td|zzt| z t!d dkD1c}}tj Dcgc]2}56z td|zdz zt| z t!d dkD4c}}tjDcgc]/}56z td|zzt| z t!d dkD1c}}t| dt| dz 20z z65z 20z zz| dz 65z zzzzdkD}t| dt| dz 20z z65z 20z zz| dz 65z zzzz dkD}tt3|tzk}t#tt3|tz}tt/| tzk}t#tt/| tz}t%|| z tztj&z}t)|/z3z }t)|3z/z } |d| z k(r]tt#| d|| zdkt+t-|dt| | z6z5z dkt| | z2z0z dk}!nd }"tt#| d|dz | zdkt+tt-|d|"|tt| | z6z5z dkt#|d}!tt#| d| dz |zdkt+tt-| d|"| tt| | z2z0z dkt#| d}#t+|!|#}! 20z t/d20z z zzt/1z65z t3d65z z zzt/4zz}$t1|$dkDd k7r|$dkD}%n/0123456fd }&t3|&dd|&d d ztt#t3dt#t/df|&t5t/d|&t5t/d ztt#t3dt-t/df|&dt5t3|&d t5t3ztt-t3dt#t/df|&t5t/t5t3df}'|$dkDtt#|$dt-|'dt| d kDtt#|$dt#|'dt| dkDg}(t+|(}%|df|df|df|df|df|df|df|df|df|df|df|df|df|!df|%dffD]\})}td||)fg..fd}*.t||z|z|zdk7|j8du| j8du|||||gz .|*d.tt#56t#|d| j8du3j8dut| dk|||| gz .|*d.tt#02t#| d|j8du/j8dut| dk|||| gz .|*d.tt#02t#56t#|dt#| d3j8du/j8dut| dkt| dkt-3/||| gz .|*d.tt#02t#56t#|dt#| d3j8du/j8dut| | zdkt-/3||| gz .|*d.t02kD|j8du|j8du| dk\|||||| gz .|*d.t02k|j8du|j8du| dk\|||||| gz .|*d.t56kD|j8du| j8du|dk\|||||| gz .|*d.t56k|j8du| j8du|dk\|||||| gz .|*d.t02kDt#56t#|d| dk\3j8dut| dk||||| gz .|*d.t02kt#56t#|d| dk\3j8dut| dk||||| gz .|*d.tt#0256kD|dk\t#| d/j8dut| dk||||| gz .|*d.tt#0256k|dk\t#| d/j8dut| dk||||| gz .|*d.t02k56kD|dk\| dk\||||||| gz .|*d.t02kD56k|dk\| dk\||||||| gz .|*d.t02kD56kD|dk\| dk\|||||||||! gz .|*d.t02k56k|dk\| dk\|||||||||! gz .|*d.tt#|d|j8du|j8du| j8du|||gz .|*d .tt#|d|j8du|j8du| j:du|||gz .|*d!.tt#|d|j8du| j8du| j:du|||gz .|*d".tt#|d|j8du| j8du| j8du|||gz .|*d#.tt#||zd|j8du| j8du|||||gz .|*d$.tt#||zd|j8du| j8du|||||gz .|*d%t=|d&}+t=|d&},.t|,t#|d5|k|j8du||||gz .|*d'.t|,t#|d6|k|j8du||||gz .|*d(.t|+t#|d0|k| j8du||||gz .|*d).t|+t#|d2|k| j8du||||gz .|*d*t+.}-t1|-d k7r|-S.t||z0kDt#|dt#| d|j8du|j8du| j:dutt/||z0z dztzk||||!|% gz .|*d+.t||z2kDt#|dt#| d|j8du|j8du| j:dutt/||z2z dztzk||||!|% gz .|*d,.tt#02dz t#|dt#| d|j8du|j8du| dk\| tztt/k||||!|% gz .|*d-.tt#02dzt#|dt#| d|j8du|j8du| dk\| tztt/k||||!|% gz .|*d..t02dz kt#|dt#| d|j8du|j8du| dk\| tztt/ktt/||z0z dztzk||||!|% gz .|*d/.t02dzkDt#|dt#| d|j8du|j8du| dk\| tztt/ktt/||z2z dztzk||||!|% gz .|*d0.tt#|dt#| d||zdkD|j8du| j8du|j:dutt3||z5z dztzk||||!|% gz .|*d1.tt#|dt#| d||z6kD|j8du| j8du|j:dutt3||z6z dztzk||||!|% gz .|*d2.tt#|dt#| dt#56dz |j8du| j8du|dk\|tztt3ktt3|dztzk||||!|% gz .|*d3.tt#|dt#| dt#56dz|j8du| j8du|dk\|tztt3ktt3|dztzk||||!|% gz .|*d4.tt#|dt#| d56dz k|j8du| j8du|dk\|tztt3ktt3||z5z dztzk||||!|% gz .|*d5.tt#|dt#| d56dzkD|j8du| j8du|dk\|tztt3ktt3||z6z dztzk||||!|% gz .|*d6t+.Scc}}wcc}}wcc}wcc}wcc}wcc}w#t6$rd }%YwxYw)7z> Return a condition under which the integral theorem applies. rrRzChecking antecedents:z1 sigma=%s, s=%s, t=%s, u=%s, v=%s, b*=%s, rho=%sz1 omega=%s, m=%s, n=%s, p=%s, q=%s, c*=%s, mu=%s,z" phi=%s, eta=%s, psi=%s, theta=%scfD]U}tj|j|jD]&\}}||z }|js|j s%yWy)NFT)rrrr is_integer is_positive)rrejdiffrrs rg_c1z_check_antecedents.._c1s^b !A!))!$$5 !11u??t'7'7  ! ! rnrcL|dk7xrttd|z tkS)aReturns True if abs(arg(1-z)) < pi, avoiding arg(0). Explanation =========== If ``z`` is 1 then arg is NaN. This raises a TypeError on `NaN < pi`. Previously this gave `False` so this behavior has been hardcoded here but someone should check if this NaN is more serious! This NaN is triggered by test_meijerint() in test_meijerint.py: `meijerint_definite(exp(x), x, 0, I)` rR)r#r"r)r^s rg_condz!_check_antecedents.._cond$s$62c#a!e*o2 2rnFc|z ztdz z zztz| z ztd z z zztzzSr)r#r8) c1c2omegarpsirsigmathetaurs rg lambda_s0z%_check_antecedents..lambda_s0Ssc1q5z#e*q!a%y"99#c(B!a%jUaQi!88UCDDrnrTrrr(r)r* r+r,r-r.z c%s: %sc(td|dfy)Nz case %s: %srrc)countrns rgprz_check_antecedents..prls%r!34rnr)rhE1E2E3E4 !"#)rrrrrrrrrrr#r)r`rdrTr rrr+rr%rUrr7rQr5r$ TypeErrorr is_negativerf)7rrrzr&rYrrrsbstarcstarrhomuphirirrrerrc3c4c5c6c7c8c9c10c11c12c13z0zoszsoc14rc14_altlambda_cc15rlambda_srjrr mt1_exists mt2_existsrrnrrrrrrrrs7`` @@@@@@@@@rg_check_antecedentsrsbkk1-HE1bkk1-HE1CJBEE CJBEE CDJAq!QCJBEE CJBEE CDJAq!Q EQUAI E EQUAI E %%1q5!) a C !a% Q B a%1q5/C q1u+ S C q1uqy>C 3E :; ;a!e DC Q^c"5e"<= =A FE "# ? Aq!Qs +- ? Aq!Qr *, 03S%2HI B "%%?Q?Ar!a%!)}q ? ? @B beeCRUUCr!a%!)}u$C$C DB OAAr!a%!)}$r"v-Q?O PB RUUKAr!a%y 2b6)HRO;K LB "%%PQAr!a%!)}$r#w."a@P QB beeLAr!a%y 2c7*Xb!_<L MB c(Qr37QU+q1uq1uo= B !eA  B c(Qr37QU+q1uq1uo= B !eA  B "5) *U2X 5C S$U+ ,eBh 7C "5) *U2X 5C S$U+ ,eBh 7C uu} b  0 1B RXe^ $C RXe^ $C ae|"S!*eemq0RQZBHqL1$4!5!9S1 q()A-/0 3"S!*eai%/14SCU3Z0BHqL1,-12c1:>@Abaj%!)e"3q"8SCU3Z0BHqL1,-12c1:>@AgE3u:1q5 223s8;1uc%j1a!e9--c%j89 hl #u ,a?@2tTghmTnOoAppR+E2A6;Nu;UWX8YZ\4 3E :;TBUV[B\=]^`degHa<r(A8QC2Fr(A8QC1EGCc(CGb!Wr1gAwQ"aGb!Wr1gRy3)"IRy3)c2Y@(a  aY'( E5 c!A#a%'Q, 1 1T 95;L;LPT;TVXZ\^`beEqE c"Q(BuaL%*;*;t*CUEVEVZ^E^`bcf`gjk`kb"c#$$EqE c"Q(BuaL%*;*;t*CUEVEVZ^E^`bce`fij`jb"c#$$EqE c"Q(Bq!HblBuaL##t+U->->$-F2QR TVWZT[^_T_UE"BB011EqE c"Q(Bq!HblBuaL##t+U->->$-F2PS8 WXHXUE"BB011EqE c!a%$.0A0AT0I5TU:b"b#s,--EqE c!a%$.0A0AT0I5TU:b"b#s,--EqE c!a%$.0A0AT0I5TU:b"b#s,--EqE c!a%$.0A0AT0I5TU:b"b#s,--EqE c!a%Aq2eQ<!U=N=NRV=VS'A+r2r2s455ErF c!a%Aq2eQ<!U=N=NRV=VS'A+r2r2s455ErF c"Q(AE5A:r%|U=N=NRV=VR&1*b"b"c344ErF c"Q(AE5A:r%|U=N=NRV=VR&1*b"b"c344ErF c!a%Q EQJb"b"c3011ErF c!a%Q EQJb"b"c3011ErF c!a%Q EQJb"b"b#sC9::ErF c!a%Q EQJb"b"b#sC9::ErF c"Q(AMMT153D3D3LcooaeNegikmors ttErF c"Q(AMMT153D3D3LcooaeNegikmors ttErF c"Q(AMMT153D3D3LcooaeNegikmors ttErF c"Q(AMMT153D3D3LcooaeNegikmors ttErF c"QqS!*e//479J9Jd9Rb"c3())ErF c"QqS!*e//479J9Jd9Rb"c3())ErF&b!D9J%b!D9J c*bAhAu/@/@D/H#rSUWYZ [[EtH c*bAhAu/@/@D/H#rSUWYZ [[EtH c*bAhAu/@/@D/H#rSUWYZ [[EtH c*bAhAu/@/@D/H#rSUWYZ [[EtH E A!} c!a%!)R1Xr#qz1==D3H%J[J[_cJcejevevz~e~)%01QUQY]B4FFb#sC)**ErF c!a%!)R1Xr#qz1==D3H%J[J[_cJcejevevz~e~)%01QUQY]B4FFb#sC)**ErF c"QA,1a"S!*ammt6KUM^M^bfMf1*eBh-@-G)HHb#sC)**ErF c"QA,1a"S!*ammt6KUM^M^bfMf1*eBh-@-G)HHb#sC)**ErF c!a!e)R1Xr#qz1==D3H%J[J[_cJc1*eBh-@-G)HH)%01QUQY]B4FFb#sC)**ErF c AE 2a8RQZ$)>@Q@QUY@Y[`de[e(S!4U!;<<)%01QUQY]B4FFb#sC )**E rF c"Q(BsAJA 1==D3H%J[J[_cJcejevevz~e~)%01QUQY]B4FFb#sC)**ErF c"Q(BsAJA 1==D3H%J[J[_cJcejevevz~e~)%01QUQY]B4FFb#sC)**ErF c"Q(BsAJ1a!e ammt6KUM^M^bfMf1*eBh-@-G)HH)%01UQYNBb#sC)**ErF c"Q(BsAJ1a!e ammt6KUM^M^bfMf1*eBh-@-G)HH)%01UQYNBb#sC)**ErF c 1a"S!*a!a%i$)>@Q@QUY@Y[`de[e b3*5122  &'1q519q="*<< BS#   E rF c 1a"S!*a!a%i$)>@Q@QUY@Y[`de[e b3*5122  &'1q519q="*<< BS#   E rF u:C@COKPLv sB,A\ ,A\% "7A\+04A\0;7A\5 4A\:H#A\?\? A]] A]ct|j|\}}t|j|\}}d}||jt|jz}t|j ||j z}||jt|jz} t|j ||j z} t||| | ||z |z S)a Express integral from zero to infinity g1*g2 using a G function, assuming the necessary conditions are fulfilled. Examples ======== >>> from sympy.integrals.meijerint import _int0oo >>> from sympy.abc import s, t, m >>> from sympy import meijerg, S >>> g1 = meijerg([], [], [-S(1)/2, 0], [], s**2*t/4) >>> g2 = meijerg([], [], [m/2], [-m/2], t/4) >>> _int0oo(g1, g2, t) 4*meijerg(((0, 1/2), ()), ((m/2,), (-m/2,)), s**(-2))/s**2 c.|Dcgc]}| c}Scc}wrbrr^s rgnegz_int0oo..negsqs )rrrrrrrrP) rrrzrir&rrrrrrs rg_int0oor s"BKK +FCbkk1-HE1 RUUd255k !B bii3ryy> )B RUUd255k !B bii3ryy> )B 2r2r59 -c 11rnc F t||\} t|j|\} fd}ddlm}||| z zz dt ||j ||j ||j||j|jfS)z Absorb ``po`` == x**s into g. c:|Dcgc] }|z z c}Scc}wrbr)r rrrYs rgr z_rewrite_inversion..tr+s!"#AAaC###srrTr) rrrrrPrrrr) rrrrzr&rr rrrYs @@rg_rewrite_inversionr&s "a DAq !**a (DAq$( c!ac(l$ / BqttHblBqttHblAJJ O QQrnc tdj}t|\}}|dkr tdtt Sfdfdt t jt jt jt jg\}}}}||z|z } ||z |z } | | z dz } ||z dk(rt j} ndkDrd} nt j} dz dz tjztjz z j} td||||| | | ftd | | fj|dz k\s|dk\r||k\s td y t!j"jjD]'\}}||z j$s||kDstd y ||k\r7td t'jDcgc]}|dz dd|c}Sfd}fd}fd}fd}g}|t'd|kd|k| t(z| z t(dz k\| dkD||t+t j,t(z| dzzzgz }|t'|dz|k|dz|k| dkD| t(dz k|dk(||z dzt(z| z t(dz k\||t+t j,t(z||z zz||t+t j, t(z||z zzgz }|t'||k(|dk(| dkD| zt(z| z t(dz k\||gz }|t't/t'||dz kd| k| dz kt'|dz||zk||z||zdz k| dkD| t(dz k| dzt(z| z t(dz k\||t+t j,t(z| zz||t+t j, t(z| zzgz }|t'd|k| dkD| dkD| | t(zzt(dz k| | zt(z| z t(dz k\||t+t j,t(z| zz||t+t j, t(z| zzgz }||dk(gz }t/|Scc}w)z7 Check antecedents for the laplace inversion integral. z#Checking antecedents for inversion:rz Flipping G.c t| \}}||z}|||zz}||z}g}|ttjt |zt zdz z}|ttj t |zt zdz z} |r|} n| } |t tt|dt |dkt |dkgz }|t t|dtt|dt |dkDt | dkgz }|t t|dtt|dt |dkDt | dkt |dkgz }t|S)Nrrr) rr+rrr rrTrUrrr!) rrrr^pluscoeffexponentrnwpwmwrzs rgstatement_halfz4_check_antecedents_inversion..statement_half<sO(A.x X  UAX  X  s1??2a5(+A-. . sAOO#BqE)",Q./ / AA #bAq2a5A:.1 <== #bAh2a5! beaiACDD #bAh2a5! beaiA!erk#$ $5zrnc Dt||||d||||dS)zW Provide a convergence statement for z**a * exp(b*z**c), c/f sphinx docs. TF)rT)rrrr^rs rg statementz/_check_antecedents_inversion..statementNs1>!Q1d3!!Q1e46 6rnrrRz9 m=%s, n=%s, p=%s, q=%s, tau=%s, nu=%s, rho=%s, sigma=%sz epsilon=%s, theta=%s, delta=%sz- Computation not valid for these parameters.Fz Not a valid G function.z$ Using asymptotic Slater expansion.c ftjDcgc]}|dz dd|c}Scc}wr)rTr)r^rrrs rgEz'_check_antecedents_inversion..E~s/=1Yq1uaA.=>>=s.c" dz |Srr)r^rrrs rgHz'_check_antecedents_inversion..Hs%33rnc$ dz |dS)NrRTrr^rrrs rgHpz(_check_antecedents_inversion..HpseeVQuWa>>rnc$ dz |dS)NrRFrrs rgHmz(_check_antecedents_inversion..HmseeVQuWa??rn)r`rr_check_antecedents_inversionrrrrrrrrNaNrrrdrrrrTrr+rrU)rrzr^r&rrrsrrrrrepsilonrrrrrrrrnrrrrs`` @@@@rgrr2s 01 A !Q DAq1u+GAJ::$6CIs144y#add)SY?@JAq!Q a%!)C QB 8Q,C EE z&& %%%i]S!$$Z '#qtt* 4e ;E GGE G 1ab#u -/ .%0GH GGqsNqAv!q&>? !!!$$-1 E  !a% . / Av56=1Yq1uaA.=>>?4?@ E c!q&!q&#b&5.BqD"8%!)Ac!//",b1f56679::E c!a%1*a!eqj%!)URT\16q519b.5(BqD0Qs1??2-q1u5667QsAOO+B.A6778:;;E  c!q&!q&%!)7?B&."Q$6!>??E c"Sa!eQ#XseAg~>Q!a%Q1q5!));<>!)URT\C!GR<%+?2a4+GQs1??2-b0112QsAOO+B.r1223 566E  c!q&#'519ec"fnr!t.C="$u,14Qs1??2-b0112QsAOO+B.r1223566E  a1fXE u:[>sS8c t|j|\}}tt|j|j |j |j|||zz | \}}||z |zS)zO Compute the laplace inversion integral, assuming the formula applies. )rrrrPrrrr)rrzrrrrs rg_int_inversionrs\ !**a (DAq '!$$!$$!AqD&IA2 NDAq Q3q5Lrnc& !ddlm}m!m}m t siat t t|trt|j|j|\}}t|dkDry|d}|jr&|j|k7s|jj sy||k7ryddt|j"|j$|j&|j(||zfgdfS|}|j+|t,}t/|t,}|t vrt |} | D]\} } } } |j1| d}|si}|j3D] \}}t5t7|dd||<"|}t| t8s| j+|} | d k(r}t| t8t:fst5| j+|} t=| d k(rt| t>s| |} g}| D]\}}tAt5|j+|j+t,|d|} |j+|j+t,|}tE||fzjGtHjJtHjLtHjNrt|j"|j$|j&|j(t5|jd}|jQ||fz|s|| fcS|sytSd  !fd }|}tUd d |}d} |||||d d\}}}|||||}|gtWdd }||jXvrMt[||rA ||j+|||z|||dd \}}}|||||j+|d}|=|jGtHjJtHj\tHjLr tSdyt_j`|}g}|D]}|j|\}}t|dkDr tcd|d}tA|j|\}}||dt|j"|j$|j&|j(t5t7|dd||zzfgz }tSd||dfS#tB$rYwxYw#|$rd}YwxYw#|$rd}YFwxYw)aH Try to rewrite f as a sum of single G functions of the form C*x**s*G(a*x**b), where b is a rational number and C is independent of x. We guarantee that result.argument.as_coeff_mul(x) returns (a, (x**b,)) or (a, ()). Returns a list of tuples (C, s, G) and a condition cond. Returns None on failure. rR)mellin_transforminverse_mellin_transformIntegralTransformErrorMellinTransformStripErrorNrT)old)lift)exponents_onlyFz)Trying recursive Mellin transform method.c  ||||ddS#$r/ddlm}|tt||||ddcYSwxYw)z Calling simplify() all the time is slow and not helpful, since most of the time it only factors things in a way that has to be un-done anyway. But sometimes it can remove apparent poles. T) as_meijergneedevalr)simplify)rrrYr )FrYrzstriprrrs rgmy_imtz_rewrite_single..my_imt s_  0+Aq!U7;dL L( 0 /+q *+Q5$0 0 0s 1AArYzrewrite-singlec &t||d}|Wddlm}|\}}t||d}t ||ft ||t jt jfdfSt ||t jt jfS)NT) only_doubler hyperexpand nonrepsmall)rewrite) _meijerint_definite_4rr_my_unpolarifyr5rSrrr4)rfrzrrrmrs rg my_integratorz&_rewrite_single..my_integrators !!QD 9 = 2IC S-!HICc4[&q1affajj*ABDIK KAqvvqzz233rn) integratorrrr)rrrz"Recursive Mellin transform failed.zUnexpected form...z"Recursive Mellin transform worked:)2 transformsrrrr _lookup_tablerrrPrZrrrrrr+rrrrrrr^rritemsr%r&rOrVrQrr ValueErrorr rlrr4ComplexInfinityNegativeInfinityrr`rrrr rrrNotImplementedError)"rfrz recursiverrrrf_rr rtermsrrrsubs_rCrDrmrrrrrYrrrr&rrkrrrrs" @@rg_rewrite_singler(s;;  ]+!W!**a(55a8q q6A: aD 88vv{!%%"3"3 !VAwqttQXXqttQXXuQwGHI4OO B q! A1 AM ! *+# % &GUD$7777-D#zz|AGC!+HRd,C;?"AE#JA!$-99T?D5=!${(;<%diio6Dd#u,!%.!$KE#*FC' 388D>3F3Fq!3LBF)HIJLB!FF4L--a3 rQDy*..qzz1;L;LaN`N`a ahhahh *1::d KMAJJrQDy)*9$G# %L  67 0 As$a(A4&q!Q=05F 5! 1aE " y C) * ANN "|Aq'9 .qvva1~q!:G8->?34 == D C  (~~a 1 q6A:%&:; ; aDajj!,1 AwqttQXXqttQXX)(#$4+1AE G !1 %&'( ( ( /3 9_&! !` " *  s7%S'S7 AT' S43S47TTTTcZt||\}}}t|||}|r |||d|dfSy)z Try to rewrite ``f`` using a (sum of) single G functions with argument a*x**b. Return fac, po, g such that f = fac*po*g, fac is independent of ``x``. and po = x**s. Here g is a result from _rewrite_single. Return None on failure. rrRN)rr()rfrzr$rrrs rg _rewrite1r*JsCAq!JCQ1i(AB!ad"" rnc t|\}}}tfdt|Dryt|}|syt t |fdfdfdg}t jd|D]N\}\}}t||} t||} | s&| s)t| d| d} | dk7sA||| d | d | fcSy) a  Try to rewrite ``f`` as a product of two G functions of arguments a*x**b. Return fac, po, g1, g2 such that f = fac*po*g1*g2, where fac is independent of x and po is x**s. Here g1 and g2 are results of _rewrite_single. Returns None on failure. c3<K|]}t|dduyw)FN)r(rs rgrhz_rewrite2..as Lt?4E *d 2 LsNc tttt|dtt|dSNrrR)maxrrrrzs rgr{z_rewrite2..g.#c*QqT1-.JqtQ4G0HIrnc tttt|dtt|dSr.)r/rrr0s rgr{z_rewrite2..hr1rnc tttt|dtt|dSr.)r/rrr0s rgr{z_rewrite2..is3#c01q9:01q9:<rnFTrRFr) rrrrrrrrr(rT) rfrzrrrr r$fac1fac2rrrs ` rg _rewrite2r7XsAq!JCQ Ly| LL!A  WQII <=> ?A $-#4#4]A#F3 >> from sympy.integrals.meijerint import meijerint_indefinite >>> from sympy import sin >>> from sympy.abc import x >>> meijerint_indefinite(sin(x), x) -cos(x) r*Try rewriting hyperbolics in terms of exp.rcollectN)rrrrrr_meijerint_indefinite_1rrcrOrPrrlr2r`meijerint_indefiniter1rrsympy.simplify.radsimpr;r rr+extendnextr)rfrzresultsrrmrvr;s rgr=r=us  AG *1a0AFF8;AQ R%affQA&6: hhq!a%  UG $ NN3 J uu  ;< ! ' *A/ b$':|B/#?? NN2 GG$%%rnc xtd|dddlm}m}t |}|y|\}}}}td|t j } |D]\} } } t| j\} }t|\}}|| z }|| zd|zzz|z }|dz|z tdd t j}fd }td || jDritt| jt| j dz gzt| j gzt| j"| }ngtt| jdz gzt| j t| jt| j" gz|}|j$rA|j'dj)t j*t j,sd}nd}||j'|| |zz| }| |||zd z } fd}t/| d} | j0r;g}| j2D]\}}t5||}|||fgz } t7|ddi} nt5|| } t7| t5|ft9|d fS)z0 Helper that does not attempt any substitution. z,Trying to compute the indefinite integral ofwrtr)rrNz could rewrite:rRrzmeijerint-indefinitec4|Dcgc]}|z c}Scc}wrbr)rrrs rgr z#_meijerint_indefinite_1..trs%&'AG' ''rc3HK|]}|jxr|dkdk(yw)rTN)r)rdrs rgrhz*_meijerint_indefinite_1..s%CQq||0aD 00Cs ")placeTrc~tt|d}tj|j dS)aThis multiplies out superfluous powers of x we created, and chops off constants: >> _clean(x*(exp(x)/x - 1/x) + 3) exp(x) cancel is used before mul_expand since it is possible for an expression to have an additive constant that does not become isolated with simple expansion. Such a situation was identified in issue 6369: Examples ======== >>> from sympy import sqrt, cancel >>> from sympy.abc import x >>> a = sqrt(2*x + 1) >>> bad = (3*x*a**5 + 2*x - a**5 + 1)/a**2 >>> bad.expand().as_independent(x)[0] 0 >>> cancel(bad).expand().as_independent(x)[0] 1 F)deeprR)r rYr _from_args as_coeff_add)rmrzs rg_cleanz'_meijerint_indefinite_1.._cleans4.51~~c..q1!455rn)evaluaterMF)r`rrrr*rrrrrrrrrPrrrris_extended_nonnegativerrlrr!r6r`rkrr5rS)rfrzrrrrrglrrmrrYrrrr&rfac_rr rrGrLrMrrs ` @rgr<r<s 91eQG5 1aB zCR b! &&C%-1aajj!,1b!$1 QQwQU#a'1uai 3. 6 ( C"QTT(C CQTT DNaeW4d144jSD66I4PQPXPX>[\^^AQTT aeW$d188nd144j$qxx.UXTXSYBY[\^A $ $QVVAq\-=-=aeeQEVEV-WEE q!AqD&) 7 yat,,K%-N64 t ,C HH DAqvay)A Ax G 151VC[) c>$/08Aq>42H IIrncv td||||ft|}|jtr t dy|jt r t dy||||f\}}}}t d}|j||}|}||k(rtjdfSg} |tjur3|tjur!t|j|| || | S|tjurt dt||} t d| t| td tjgzD]} t d | | j s t d 't#|j||| z|} | t d Tt#|j|| |z |} | t d | \} }| \} }t%t'||}|dk(r t d| | z}||fcSn|tjur't|||tj}|d |dfS||ftjtjfk(r7t#||}|rt)|dt*r| j-|n~|S|tjurt||D]v}||z dk\dk(std|t#|j|||zt/||z|z z|}|sOt)|dt*r| j-|t|cS|j|||z}||z }d}|tjurit1tj2t5|z}t7|}|j|||z}|t/||z |zz}tj}t d||t d|t#||}|r't)|dt*r| j-|n|S|jt8rt dtt;||||}|r[t=|t>s:ddl m!}|tE|d|djGt0f|ddz}|S| jI|| rtKtM| Sy)a Integrate ``f`` over the interval [``a``, ``b``], by rewriting it as a product of two G functions, or as a single G function. Return res, cond, where cond are convergence conditions. Examples ======== >>> from sympy.integrals.meijerint import meijerint_definite >>> from sympy import exp, oo >>> from sympy.abc import x >>> meijerint_definite(exp(-x**2), x, -oo, oo) (sqrt(pi), True) This function is implemented as a succession of functions meijerint_definite, _meijerint_definite_2, _meijerint_definite_3, _meijerint_definite_4. Each function in the list calls the next one (presumably) several times. This means that calling meijerint_definite can be very costly. z$Integrating %s wrt %s from %s to %s.z+Integrand has DiracDelta terms - giving up.Nz5Integrand has Singularity Function terms - giving up.rzTz Integrating -oo to +oo.z Sensible splitting points:)rreversez Trying to split atz Non-real splitting point.z' But could not compute first integral.z( But could not compute second integral.Fz) But combined condition is always false.rrRzTrying x -> x + %szChanged limits tozChanged function tor9r:)'rdrrlr?r`rQrrrrr"r4meijerint_definiterrris_extended_real_meijerint_definite_2r<rTrcrPrr@r+rr"r#r2r1rrr>r;r rr?r@r)rfrzrrr%x_a_b_rrArrres1res2cond1cond2rrmsplitrrBr;s rgrSrSs_< 2Q1aLA AuuZ<=uu !FG1aZNBB c A q! A AAv~GA  1AJJ#6!!&&QB-QB;; a  *+*1a0 -y9 '7F!&&Q A )1 -%%45(1q5)91=D|@A(1q5)91=D|ABKD%KD%S./Du}BC+C9 ) , ajj Aq!**5AwA QAFFAJJ' '#Aq) CFG$s#   ?/15 'INt+0%8/q!e)0D1:1u9q=1I1JKLNCA0#NN3/#&J ' FF1a!e  E  AJJ aooc!f,-CAAq#a% A 1q5!#% %A A"Aq)$a(#Aq) CFG$s#  vv !;<  ' +RR9 b$':l2a512a5;;s3CDFABO NN2 GG$%%rnc|dfg}|dd}|h}t|}||vr||dfgz }|j|t|}||vr||dfgz }|j||jtt r1tt |}||vr||dfgz }|j||jttr+ddl m }||}||vr||dfgz }|j||S) z6 Try to guess sensible rewritings for integrand f(x). zoriginal integrandrrr r zexpand_trig, expand_mul) sincos_to_sumztrig power reduction) r rr rlr:r2rr7r8sympy.simplify.fur_)rfrzrmorigsawexpandedr_reduceds rg_guess_expansionres # $ %C r71:D &C$Hs <()) d|Hs 8$%%  xx%'9:k$/0 3  X89: :C GGH  xxS3% #  W456 6C GGG  Jrnctdd|d}|j||}|}|dk(rtjdfSt ||D]#\}}t d|t ||}|s!|cSy)a Try to integrate f dx from zero to infinity. The body of this function computes various 'simplifications' f1, f2, ... of f (e.g. by calling expand_mul(), trigexpand() - see _guess_expansion) and calls _meijerint_definite_3 with each of these in succession. If _meijerint_definite_3 succeeds with any of the simplified functions, returns this result. rzzmeijerint-definite2T)positiverTryingN)rrrrrer`_meijerint_definite_3)rfrzdummyr explanationrms rgrUrUsw 3-q4 @E q%A AAvvvt|*1a0;x%#Aq) J rncJt||}|r |ddk7r|S|jrztd|jDcgc]}t||}}t d|Dr9g}t j }|D]\}}||z }||gz }t|}|dk7r||fSyyycc}w)z Try to integrate f dx from zero to infinity. This function calls _meijerint_definite_4 to try to compute the integral. If this fails, it tries using linearity. rRFz#Expanding and evaluating all terms.c3$K|]}|du ywrbr)rdrs rgrhz(_meijerint_definite_3..s+q}+sN)ris_Addr`rkrjrrrT)rfrzrmrressrnrrs rgriris 1 %C s1v xx4556VV<%a+<< +d+ +E&&C 1q!  U AEzAv  ,! CQ 8#r1 E&&C 1a6(Q1a4A>1q1a((4!5a!;<5= "$'Du}23?E%k#&67== 1aB ~$ >G$& !CRT 6RR H&&C   B"$ JBB'Br 2a"r'l?(*B7rnc |}|}tdd}|j||}td|t||s tdytj }|j rt|j}nt|tr|g}nd}|r\g}g}|rE|j} t| trmt| } | j r|| jz }J t| jd|\} } | dk(r|j n|j| n| j rt| } | j r|| jz }|| j"j$vrF t| j|\} } | dk(r'|j t'| j"z|j| n|j| |rEt)|}t+|}||j$vrntd ||t-t/|d} | d k(r td y|t1||zz}td || t3|j||| fSt5||}|U|\}}}} td |||tj }|D]P\}}}t7||z|||zz||\}}||t9|||zz }t;| t=||} | d k(sPnt?| } | d k(r tdytd|ddl m!}t?||}|jEtFs|tG|z}|j|||z}t| tHs| j|||z} ddl%m&}t3|j||| f||j||||ddfSy#t$rd} YwxYw#t$rd} YdwxYw)a Compute the inverse laplace transform $\int_{c+i\infty}^{c-i\infty} f(x) e^{tx}\, dx$, for real c larger than the real part of all singularities of ``f``. Note that ``t`` is always assumed real and positive. Return None if the integral does not exist or could not be evaluated. Examples ======== >>> from sympy.abc import x, t >>> from sympy.integrals.meijerint import meijerint_inversion >>> meijerint_inversion(1/x, x, t) Heaviside(t) rTrzLaplace-invertingzBut expression is not analytic.NrrRz.Expression consists of constant and exp shift:Fz3but shift is nonreal, cannot be a Laplace transformz1Result is a delta function, possibly conditional:rsrtz"Result before branch substitution:r)InverseLaplaceTransform)'rrr`r rris_Mulrrkrr+popr rrrrrrr-rrrr!r?r5r*rrrTrrrrrlr@rOrr|)rfrzrr%t_shiftrkrM exponentialsr"rIrrrrmrrrrrrYrr|s rgmeijerint_inversionr!s$ B B cA r1 A " 1 01 FFExxAFF| As s  ((*C#s#c{;;DII%D)#((1+q9DAq6 ''*NN3'c{;;DII%DCHH111-cggq91Av$++Ac#((mO<s#s#;<\" M?EJ"U)Q 5= H I 1u9%%BCN#((1b/4011 1aB ~RD4c2qAff GAq!%c!eR1Wa;DAq 1^Aq!,, ,Ct9!Q?@Du}   d# 5= . / 7 = 2 S!12C779%y|#((1a%i(CdD)yyAI. ;chhq"ot45bgganaTRTXY[ [/I+A/s$"O3O" OO" O10O1)rfrrzrrztuple[type[Basic], ...]r)F)r __future__rrsympyr sympy.corerrsympy.core.addrsympy.core.basicrsympy.core.cacher sympy.core.containersr sympy.core.exprtoolsr sympy.core.functionr r rrrsympy.core.mulrsympy.core.intfuncrsympy.core.numbersrrsympy.core.relationalrrrsympy.core.sortingrrsympy.core.symbolrrrrsympy.core.sympifyr(sympy.functions.combinatorial.factorialsr$sympy.functions.elementary.complexesr r!r"r#r$r%r&r'r(r)r*&sympy.functions.elementary.exponentialr+r,r-#sympy.functions.elementary.integersr.%sympy.functions.elementary.hyperbolicr/r0r1r2(sympy.functions.elementary.miscellaneousr4$sympy.functions.elementary.piecewiser5r6(sympy.functions.elementary.trigonometricr7r8r9r:sympy.functions.special.besselr;r<r=r>'sympy.functions.special.delta_functionsr?r@*sympy.functions.special.elliptic_integralsrArB'sympy.functions.special.error_functionsrCrDrErFrGrHrIrJrKrLrM'sympy.functions.special.gamma_functionsrNsympy.functions.special.hyperrOrP-sympy.functions.special.singularity_functionsrQ integralsrSsympy.logic.boolalgrTrUrVrWrX sympy.polysrYrZsympy.utilities.iterablesr[sympy.utilities.miscr\r`r]rdr^rcrsympy.utilities.timeutilsrtimeitrr rrrrrrrrrrrr__annotations__rrr r<rQrVr[rfrzrrrrrrrr(r*r7r=r<rSrerUrirrrrrnrgrs'8#"$'-88#+::8::&>GF7999JMMIM666698MJJ&902 #JJPb/ )  N * HDBI !H$N.I> 0 QD4+- &,  #O yv" *m`&D>Nn[rn