K irddlmZddlmZddlmZddlmZddlm Z ddl m Z m Z m Z mZmZmZmZmZddlmZmZmZddlmZdd lmZmZmZmZdd lmZdd l m!Z!dd l"m#Z#dd l$m%Z%m&Z&ddl'm(Z(ddl)m*Z*ddl+m,Z,m-Z-m.Z.m/Z/m0Z0ddl1m2Z2ddl3m4Z4m5Z5ddl6m7Z7Gdde Z8Gdde8Z9GddeZ:Gdde8e:Z;dZ<Gdde Z=Gd d!e Z>ed"Z?y#)$) annotations)product)Add)cacheit)Expr)DefinedFunctionArgumentIndexError expand_log expand_mul FunctionClass PoleErrorexpand_multinomialexpand_complex) fuzzy_and fuzzy_notfuzzy_or)Mul)IntegerRationalpiI)global_parameters)Pow)S)WildDummy)sympify) factorial)arg unpolarifyimreAbs)sqrt) multiplicity perfect_power) factorintceZdZdZej fZedZddZ dZ edZ dZ dZ dZd Zd Zd Zd Zd ZdZy)ExpBaseTc.|jjSN)expkindselfs l/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/functions/elementary/exponential.pyr-z ExpBase.kind(sxx}}ctS)z= Returns the inverse function of ``exp(x)``. logr/argindexs r0inversezExpBase.inverse,  r1c|js|tjfS|j}|j}|s| js|j }|r"tj|j | fS|tjfS)a- Returns this with a positive exponent as a 2-tuple (a fraction). Examples ======== >>> from sympy import exp >>> from sympy.abc import x >>> exp(-x).as_numer_denom() (1, exp(x)) >>> exp(x).as_numer_denom() (exp(x), 1) )is_commutativerOner, is_negativecould_extract_minus_signfunc)r/r,neg_exps r0as_numer_denomzExpBase.as_numer_denom2sr ""; hh//11224G 55$))SD/) )QUU{r1c |jdS)z7 Returns the exponent of the function. r)argsr.s r0r,z ExpBase.expLs yy|r1cH|jdt|jfS)z7 Returns the 2-tuple (base, exponent). )r>rrBr.s r0 as_base_expzExpBase.as_base_expSsyy|S$))_,,r1cT|j|jjSr+)r>r,adjointr.s r0 _eval_adjointzExpBase._eval_adjointYsyy))+,,r1cT|j|jjSr+)r>r, conjugater.s r0_eval_conjugatezExpBase._eval_conjugate\yy++-..r1cT|j|jjSr+)r>r, transposer.s r0_eval_transposezExpBase._eval_transpose_rLr1c|j}|jr|jry|jry|jryyNTF)r, is_infiniteis_extended_negativeis_extended_positive is_finiter/rs r0_eval_is_finitezExpBase._eval_is_finitebs9hh ??'''' == r1c|j|j}|j|jk(r=|jj}|ry|jjr t |ryyy|jSrQ)r>rBr,is_zero is_rationalr)r/szs r0_eval_is_rationalzExpBase._eval_is_rationallsc DIItyy ! 66TYY  A""y|(4"== r1c:|jtjuSr+)r,rNegativeInfinityr.s r0 _eval_is_zerozExpBase._eval_is_zerowsxx1----r1cl|j\}}tjt||d|S)z;exp(arg)**e -> exp(arg*e) if assumptions allow it. Fevaluate)rEr _eval_power)r/otherbes r0rdzExpBase._eval_powerzs0!1s1a%8%@@r1c dddlm}ddlm}jd}|j r4|j r(tjfd|jDSt||r8|j r,|j|jg|jSj|S)Nr)Product)Sumc3@K|]}j|ywr+)r>).0xr/s r0 z1ExpBase._eval_expand_power_exp..s? ! ?s) sympy.concrete.productsrisympy.concrete.summationsrjrBis_Addr:rfromiter isinstancer>functionlimits)r/hintsrirjrs` r0_eval_expand_power_expzExpBase._eval_expand_power_exps31iil ::#,,<<?chh?? ? S !c&8&8499S\\2@SZZ@ @yy~r1NrD)__name__ __module__ __qualname__ unbranchedrComplexInfinity_singularitiespropertyr-r7r@r,rErHrKrOrWr]r`rdrwr1r0r)r)#ssJ'')N  4 - -// !.A r1r)c6eZdZdZdZdZdZdZdZdZ dZ y ) exp_polara< Represent a *polar number* (see g-function Sphinx documentation). Explanation =========== ``exp_polar`` represents the function `Exp: \mathbb{C} \rightarrow \mathcal{S}`, sending the complex number `z = a + bi` to the polar number `r = exp(a), \theta = b`. It is one of the main functions to construct polar numbers. Examples ======== >>> from sympy import exp_polar, pi, I, exp The main difference is that polar numbers do not "wrap around" at `2 \pi`: >>> exp(2*pi*I) 1 >>> exp_polar(2*pi*I) exp_polar(2*I*pi) apart from that they behave mostly like classical complex numbers: >>> exp_polar(2)*exp_polar(3) exp_polar(5) See Also ======== sympy.simplify.powsimp.powsimp polar_lift periodic_argument principal_branch TFcDtt|jdSNr)r,r"rBr.s r0 _eval_Abszexp_polar._eval_Abss2diil#$$r1ct|jd} |t kxs |tkD}|r|St |jdj |}|dkDrt|dkr t |S|S#t$rd}YXwxYw)z. Careful! any evalf of polar numbers is flaky rT)r!rBr TypeErrorr, _eval_evalfr")r/precibadress r0rzexp_polar._eval_evalfs tyy|  8%q2vC K$))A,++D1 q5RWq[c7N  C sA:: BBcD|j|jd|zSr)r>rB)r/res r0rdzexp_polar._eval_powersyy1e+,,r1c8|jdjryy)NrT)rBis_extended_realr.s r0_eval_is_extended_realz exp_polar._eval_is_extended_reals 99Q< ( ( )r1ct|jddk(r|tjfStj |Sr)rBrr;r)rEr.s r0rEzexp_polar.as_base_exps1 99Q<1 ; ""4((r1N) ryrzr{__doc__is_polar is_comparablerrrdrrErr1r0rrs-#JHM% -)r1rceZdZdZy)ExpMetact|jjvryt|txr|j t juS)NT)r, __class____mro__rsrbaserExp1)clsinstances r0__instancecheck__zExpMeta.__instancecheck__s8 ($$,, ,(C(DX]]aff-DDr1N)ryrzr{rrr1r0rrsEr1rceZdZdZddZdZedZedZ e e dZ ddZ fdZd Zd Zd Zd Zdd ZdZdZdZdZdZdZdZxZS)r,a9 The exponential function, :math:`e^x`. Examples ======== >>> from sympy import exp, I, pi >>> from sympy.abc import x >>> exp(x) exp(x) >>> exp(x).diff(x) exp(x) >>> exp(I*pi) -1 Parameters ========== arg : Expr See Also ======== log c(|dk(r|St||)z@ Returns the first derivative of this function. rD)r r5s r0fdiffz exp.fdiffs q=K$T84 4r1cvddlm}m}|jd}|jrt t jz}||| fvrt jS|jtt z}|r||jd|zr||j|rt jS||j|rt jS||j|t j zrt S||j|t j zrt Syyyy)Nr)askQ)sympy.assumptionsrrrBis_MulrrInfinityNaNas_coefficientrintegerevenr;odd NegativeOneHalf)r/ assumptionsrrrIoocoeffs r0 _eval_refinezexp._eval_refines,iil ::AJJ,CsSDk!uu &C&&r!t,Eqyy5)*166%=) uu QUU5\* }},QVVEAFFN34 !r QUU5166>23 4+ r1c ddlm}ddlm}ddlm}ddlm}t||r|jStjrttj|S|jr|tj urtj S|j"rtj$S|tj$urtjS|tj&urtj&S|tj(urtj*S|tj,urtj St|t.r|j0dSt||r/|t|j2t|j4St||r|j6|S|j8rP|j:t<t>z}|rd|zj@r|jBrtj$S|jDrtjFS|tjHzjBrt> S|tjHzjDrS|jJr*|dz}|dkDr|dz}||k7r||t<zt>zS|jL\}}|tj(tj&fvr|jNr|tj(ur| }tQ|j"r"|tj*urtj StQ|jRr+tU|tj*urtj,StQ|jVrtj*Sy|gd} } tYjZ|D]M} || } t| t.r| | j0d} -y| j\r| j_| My| r | tY| zSdS|j`rg} g}d}|j0D]}|tj$ur|j_|'||}t||rE|j0d|k7r!|j_|j0dd }n|j_|| j_|| s|rtY| |tc|d zS|j"rtj$Sy) Nr AccumBounds) MatrixBaseSetExpr logcombinerrDFTrb)2sympy.calculusrsympy.matrices.matrixbasersympy.sets.setexprrsympy.simplify.simplifyrrsr,r exp_is_powrrr is_NumberrrYr;rr_Zeror}r4rBminmax _eval_funcrrrr is_integeris_evenis_oddrr is_Rational as_coeff_Mul is_numberr" is_positiver!r<r make_argsrappendrqr)rrrrrrrncoefftermscoeffslog_termtermterm_outadd argchangedanewas r0evalzexp.evals.8.6 c: &3779   ) )qvvs# # ]]aee|uu uu vv  "zz!***vv A%% %55L S !88A;  [ )s377|S\: : W %!3>>#& & ZZ&C&&r!t,EeG''}} uu  }},!&&.11 !r !&&.00 &&"QYFz! "6"9Q;//,3++-LE5++QZZ88?? 2 22!&%y((U!&&-@ uu %y,,E!&&1H 000%y,, vv  %wHF e, "4(eS)'#(::a=#''MM$' .68S&\) ?4 ? ZZCCJXX %:JJqM1vdC(yy|q( 499Q<0%)  1 JJt$ %jCyS#Y!??? ;;55L r1c"tjS)z? Returns the base of the exponential function. )rrr.s r0rzexp.base}s vv r1c|dkrtjS|dk(rtjSt|}|r|d}|||z|z S||zt |z S)zJ Calculates the next term in the Taylor series expansion. r)rrr;rr)nrmprevious_termsps r0 taylor_termzexp.taylor_terms` q566M 655L AJ r"A}1uqy !tIaL  r1c ddlm}m}|jdj \}}|r&|j |fi|}|j |fi|}||||}}t ||zt ||zfS)aJ Returns this function as a 2-tuple representing a complex number. Examples ======== >>> from sympy import exp, I >>> from sympy.abc import x >>> exp(x).as_real_imag() (exp(re(x))*cos(im(x)), exp(re(x))*sin(im(x))) >>> exp(1).as_real_imag() (E, 0) >>> exp(I).as_real_imag() (cos(1), sin(1)) >>> exp(1+I).as_real_imag() (E*cos(1), E*sin(1)) See Also ======== sympy.functions.elementary.complexes.re sympy.functions.elementary.complexes.im r)cossin)(sympy.functions.elementary.trigonometricrrrB as_real_imagexpandr,)r/deeprvrrr"r!s r0rzexp.as_real_imags{0 F1**,B 4)5)B4)5)Br7CGSB SWS[))r1c|jr,t|jt|jz}n$|tj ur|j rt}t|ts|tj ur&d}tj|||||S|tur+|j s||jj||zSt|%||S)Ncp|jst|trt|j ddiS|S)NrcF)is_Powrsr,rrE)rs r0z exp._eval_subs..s1Jq#.q}}??56r1) rr,r4rrr is_Functionrsr _eval_subs_subssuper)r/oldnewfrs r0rzexp._eval_subss ::cggc#((m+,C AFF]sC c3 3!&&=7A>>!D'1S637 7 #:coosC00 0w!#s++r1c|jdjry|jdjr6td tz|jdzt z }|j Sy)NrTr)rBr is_imaginaryrrrrr/arg2s r0rzexp._eval_is_extended_realsW 99Q< ( ( YYq\ & &aD519tyy|+b0D<< 'r1cDd}t||jdS)Nc3DK|j|jywr+) is_complexrS)rs r0complex_extended_negativez7exp._eval_is_complex..complex_extended_negatives.. ** *s r)rrB)r/rs r0_eval_is_complexzexp._eval_is_complexs" +1$))A,?@@r1c|jtz tz jryt |jj r6|jj ry|jtz jryyyrQ)r,rrrZrrY is_algebraicr.s r0_eval_is_algebraiczexp._eval_is_algebraics[ HHrMA  * * TXX%% &xx$$((R-,,- 'r1c|jjr|jdtjuS|jj r*t |jdztz }|jSyr) r,rrBrr_rrrrrs r0_eval_is_extended_positivezexp._eval_is_extended_positives] 88 $ $99Q|ztAtj>|z}|S#t0t$f$rd}Y,wxYw)Nr)signceiling)limitOrderpowsimprlogxrDCannot expand %s around 0c36K|]}t|ywr+)rs)rlrrs r0rnz$exp._eval_nseries..s:z#t$:str Tr,rcombinec:|jxr|jdvS)N))rq)rms r0rz#exp._eval_nseries.. samm@y0@r1w) properties)!$sympy.functions.elementary.complexesr#sympy.functions.elementary.integersrsympy.series.limitsrsympy.series.orderrsympy.simplify.powsimpr r, _eval_nseriesis_OrderremoveOrr_rrRr anyrBras_leading_termgetnNotImplementedError_taylorsubsr4rrreplacerr)r/rmrr cdirrrrr r arg_seriesarg0rntermscf exp_seriesrrep simpleratrrs @r0rzexp._eval_nseriess+ >?-,2hh&S&&qAD9   z> !Z'')1a0 1%% %Aq> ! 1:: K   74@A A : : :K #J *s**148!<AACB "q&QrT]FV^^Av. Ijooad):; ; $ 0tSVnb 66#;$ H "q&  T)A-q1!r!tQh-? ?A  T)A-q1 1A HHJ AD% 0@ ) - IIammQ&q}}a7G(H I'$Y/ B s$)H%%H:9H:cg}d}t|D]T}|j||jd|}|j||}|j |j Vt |S)Nr)r)rangerrBnseriesrr!r)r/rmrlgrs r0r&z exp._taylorsj  q "A  DIIaL!4A !q !A HHQYY[ ! "Awr1cddlm}|jdjj ||}|j |d}|t jurt jSt||r3t|t jkr t| St|S|t jur|j|d}|jdur t|Std|z)NrrrFr )sympy.calculus.utilrrBcancelr#r'rrrsr"rr,rrRr )r/rmr r)rrr+s r0_eval_as_leading_termzexp._eval_as_leading_terms3iil!!#33AD3Asxx1~ !%%<55L dK ( $x!&& D5z!t9  155=399Q?D   u $t9 3t<==r1c nddlm}|t|ztdz zt|t|zzz S)Nr)rr)rrrr)r/rkwargsrs r0_eval_rewrite_as_sinzexp._eval_rewrite_as_sin.s-@1S52a4< 1S3Z<//r1c nddlm}|t|zt|t|ztdz zzzS)Nr)rr)rrrr)r/rr<rs r0_eval_rewrite_as_coszexp._eval_rewrite_as_cos2s.@1S5zAc!C%"Q$,////r1c Hddlm}d||dz zd||dz z z S)Nr)tanhrDr)%sympy.functions.elementary.hyperbolicrA)r/rr<rAs r0_eval_rewrite_as_tanhzexp._eval_rewrite_as_tanh6s(>DQK!d3q5k/22r1c ddlm}m}|jrq|jt t z}|rQ|jrD|t |z|t |z}}t||st||s |t |zzSyyyyy)Nr)rr) rrrrrrrrrs)r/rr<rrrcosinesines r0_eval_rewrite_as_sqrtzexp._eval_rewrite_as_sqrt:swE ::CIIbdOE"2e8}c"U(m!&#.z47M!AdF?*8N.)u r1c |jru|jDcgc].}t|tst |jdk(s-|0}}|r/t |djd|j |dSyycc}wNrDr)rrBrsr4lenrr)r/rr<rlogss r0_eval_rewrite_as_Powzexp._eval_rewrite_as_PowCsq ::"xxS!:a+=#aff+QRBRASDS47<<?ICIId1g,>?? SsBB BrxTr)ryrzr{rrr classmethodrrr staticmethodrrrrrrrrrr&r:r=r?rCrGrL __classcell__rs@r0r,r,s45!(ggR   !  !*@ , A  -^>*003+@r1r,) metaclassc|jtd\}}|dk(r|jr||fS|jt}|r|jr|jr||fSy)a Try to match expr with $a + Ib$ for real $a$ and $b$. ``match_real_imag`` returns a tuple containing the real and imaginary parts of expr or ``(None, None)`` if direct matching is not possible. Contrary to :func:`~.re`, :func:`~.im``, and ``as_real_imag()``, this helper will not force things by returning expressions themselves containing ``re()`` or ``im()`` and it does not expand its argument either. Tas_Addr)NN)as_independentris_realr)exprr_i_s r0match_real_imagr\Js^ 4 0FB Qw2::Bx  1 B bjjRZZBxr1ceZdZUdZded<ej ejfZddZ ddZ e ddZ e edZdd Zd Zdd Zd Zd ZdZdZdZdZdZdZddZdZy)r4a The natural logarithm function `\ln(x)` or `\log(x)`. Explanation =========== Logarithms are taken with the natural base, `e`. To get a logarithm of a different base ``b``, use ``log(x, b)``, which is essentially short-hand for ``log(x)/log(b)``. ``log`` represents the principal branch of the natural logarithm. As such it has a branch cut along the negative real axis and returns values having a complex argument in `(-\pi, \pi]`. Examples ======== >>> from sympy import log, sqrt, S, I >>> log(8, 2) 3 >>> log(S(8)/3, 2) -log(3)/log(2) + 3 >>> log(-1 + I*sqrt(3)) log(2) + 2*I*pi/3 See Also ======== exp z tuple[Expr]rBcH|dk(rd|jdz St||)z? Returns the first derivative of the function. rDr)rBr r5s r0rz log.fdiffs* q=TYYq\> !$T84 4r1ctS)zC Returns `e^x`, the inverse function of `\log(x)`. )r,r5s r0r7z log.inverser8r1Ncddlm}ddlm}t |}|{t |}|dk(r%|dk(rt j St jS t||}|r |t|||zz t|z zSt|t|z S|jr|jrt jS|t jurt jS|t j urt j S|t j"urt j S|t j urt j S|j$r"|j&dk(r||j( S|j*r>|j,t jur"|j.j0r |j.St3|t.r"|j.j0r |j.St3|t.rv|j.j4r`t7|j.\}}|r)|j8r|dt:zz}|t:kDr |dt:zz}|t=|t>zdzSt3|t@rtC|j.St3||r|jDjFr/|t|jDt|jHS|jDjr*|t j"t|jHSt j St3||r|jJ|S|j4rg|jLrt:t>z|| zS|t jurt jS|t jurt jS|jrt jS|jNs|jPt>}||t j urt j S|t j"urt j S|j$r\|jRr't:t>zt jTz||zSt: t>zt jTz|| zS|j4r|jVr|jXt>d\}} |jLr |d z}| d z} t=| d} | jYt>d \}}|jQt>}|jZr{|rw|jZri|jZr[|jro|jFr*t:t>zt jTz|||zzS|jLr,t: t>zt jTz||| zzSydd l.m/} ||z ja} | ja} tc} | | vrQ| |te| z}|jFr||t>| | zzS||t>| | t:z zzS| | vrR| |te| z}|jFr||t>| |  zzS||t>t:| | z zzSyyyyyyy#t$rYnwxYw|t jur||||z S||S) NrrrrDrFrrUrT)ratsimp)3rrrrrrrr}r%r4 ValueErrorrrrYr;rrr_rrrrrr,rrsrr\rrr rrr rrrrr<rqris_nonnegativerrrWrXsympy.simplifyrbr9_log_atan_tabler#)rrrrrrrZr[rarg_rbrt1 atan_tablemoduluss r0rzlog.evals..cl  4=Dqy!855L,,, !s+s3q=1CI===s8CI-- =={{(((vv  "zz!***zz!uu SUUaZCEE {" ::#((aff,1I1I77N c3 CGG$<$<77N S !cgg&7&7$SWW-FBb&&ad 7!B$JBJrAvE::: Y 'cgg& & [ )ww"""3sww<SWW>>"1#5#5s377|DDuu W %!3>>#& & ==AvSD )))))(((uu ;;$$ $zz&C&&q)E AJJ&::%a000::%&&++!AvU;; "sQw/#uf+== ==S--,#,,Qu=KE4    d/D((4(8FB""1%B}} rzz::~~!AvURZ@@ "sQw/#erck2BBB(7B(A"B!0!2JJ")%#d)*;"<>>#&w>#&w[ [[cddlm}|dkrtjSt |}|dk(r|S|r|d}||| |z|z|dzz ddSdd|dzzz ||dzzz|dzz S) zV Returns the next term in the Taylor series expansion of `\log(1+x)`. rr rrDTr,rr)rr rrr)rrmrr rs r0rzlog.taylor_terms 3 q566M AJ 6H r"A}ax!|q1u5D%PPAq1uI QU+QU33r1c 0ddlm}m}|jdd}|jdd}t |j dk(r%t |j|j ||S|j d}|jrpt|}d} d} |dur|\}} |j|} |r=t|}||jvr td |jD} | | | zS|jr+t|j t|j"z S|j$r g} g} |j D]} |s| j&s | j(rd|j| }t+|tr1| j-|j| j.d i|o| j-|| j0rC|j| }| j-|| j-t2j4| j-| t7| tt9| zS|j:st+|t<r|st|j<j>rH|j@j&sH|j<dzj&r|j<dz jBs|j@j(r|j@}|j<}|j|}t+|trtE||j.d i|zStE||zSt+||r>|s|jFj&r&|t|jFg|jHS|j|S) Nr)rjriforceFfactorr)rrmrDc3>K|]\}}|t|zywr+r3)rlvalrs r0rnz'log._eval_expand_log..7s DQ3s8 Dsr)%sympy.concreterjrigetrJrBr r> is_Integerr&r'keyssumitemsrr4rrrrrrsr_eval_expand_logr<rrrrrr,rris_nonpositiver rtru)r/rrvrjrirmrnrrlogargrrYnonposrmrrfrgs r0rwzlog._eval_expand_log$s/ '5)8U+  Na idii3$eL Liil >>c"AFE~ U3cNaffh& D!'') DDF!V|# __suu:CEE * * ZZDFXX %AMMQZZ ! A!!S) $ADIIaL$A$A$JE$JK A]] 1" AKKNMM!--0MM!$ %:CL 11 1 ZZ:c3/11sxx7K7KQTQXQXYZQZQ"%''!)!;!;#((BSBSHHGGIIaLa%%a=+=1+=+=+F+FFF%a=1,, W % 003s||,:szz::yy~r1c "ddlm}m}m}t |j dk(r ||j |j fi|S|j ||j dfi|}|dr||}||d}t||g|dS) Nr)r simplifyinversecombinerr7Trameasure)key)rr r|r}rJrBr>r)r/r<r r|r}rYs r0_eval_simplifyzlog._eval_simplify]sPP tyy>Q IDIItyy1>> from sympy import I, log >>> from sympy.abc import x >>> log(x).as_real_imag() (log(Abs(x)), arg(x)) >>> log(I).as_real_imag() (0, pi/2) >>> log(1 + I).as_real_imag() (log(sqrt(2)), pi/4) >>> log(I*x).as_real_imag() (log(Abs(x)), arg(I*x)) rr4Fcomplex)rBrr#rrrrrr4)r/rrvsargsarg_abssarg_args r0rzlog.as_real_imaghs&yy| &499Q<&&t5u5Dt9 t < t9 99UE "$E) (CM((77B Bx=(* *r1c:|j|j}|j|jk(r^|jddz jry|jdjr't |jddz jryyy|jSNrrDTF)r>rBrYrZrr/r[s r0r]zlog._eval_is_rationals DIItyy ! 66TYY  ! q ))vvay$$DIIaL14D3M3M)N*O$== r1c:|j|j}|j|jk(r^|jddz jryt|jddz jr|jdjryyy|jSr)r>rBrYrrrs r0rzlog._eval_is_algebraics DIItyy ! 66TYY  ! q ))DIIaL1,55699Q<,, -7>> !r1c4|jdjSrrBrTr.s r0rzlog._eval_is_extended_realsyy|000r1ct|jd}t|jt|jgSr)rBrrrrY)r/r\s r0rzlog._eval_is_complexs, IIaL!,, !))(<=>>r1cR|jd}|jry|jSNrF)rBrYrUrVs r0rWzlog._eval_is_finites#iil ;;}}r1c:|jddz jSNrrDrr.s r0rzlog._eval_is_extended_positives ! q 666r1c:|jddz jSr)rBrYr.s r0r`zlog._eval_is_zeros ! q )))r1c:|jddz jSr)rBis_extended_nonnegativer.s r0_eval_is_extended_nonnegativez!log._eval_is_extended_nonnegatives ! q 999r1c R ddlm}ddlm}ddlm}|j d|k(r| t|S|S|j d}|dd} |dk(rd}|j||| z} td td } } | j| | | zz} | e| | | | } } | dk7rV| j| sE| j| s4|| t|zn| |z} | t| | t|zz z } | Sd } | j| |d \}}| || |zzz dz j-j!| |d }|jt.r||}t1||r|j3||| \}}| t|n|}|j4st||t|zz ||zz}|}dddddddddd }|j6di|}|j9s>|j9r.|j| t| j6di|}n+|j|t|j6di|}||k(r|S|||z|zSfd}i}t;j<|j%D]4}||| \}}|j?|t(j*|z||<6t(j@} i}|}| |zkrot(jB| z | z } |D].}!|j?|!t(j*| ||!zz||!<0|||}| t(j@z } | |zkrot||t|zz ||zz}|D]}!|||!j-| |!zzz } |jDrtG| dk7r{ddl$m%}"tM| jO| D]\}#}|jPr|#dk(sn#dkr;jS| \} }|dtTztVz|"tG|  dzz }|j| ||z }|||z|zS#tttf$r| j!| |d }|j"r'dz | j!| |d }|j"r' |j%j| d\}}n@#t$r4|j%j'| dt(j*}}YnwxYwY wxYw)Nrrr)rrTpositiverDkr5cJtjtj}}tj|D]E}|j |r-|j \}}||k7s- |j|cS||z}G||fS#t$r|tjfcYcSwxYwr+) rr;rrrhasrEleadtermrc)rrmrr,rnrs r0 coeff_expz$log._eval_nseries..coeff_exps3E--- $::a= & 2 2 4ID#qy0#'==#33VOE $#:  *0#'</0s$BB"!B"r r))rr r))r)F) rr4mul power_exp power_base multinomialbasicrmrnci}t||D]?\}}||z}|ks|j|tj||||zz||<A|Sr+)rrrrr)d1d2re1e2exrs r0rzlog._eval_nseries..mulscC!"b/ BB"W6!ggb!&&1BrF2b6MACG BJr1 Heavisider),rrrrsympy.core.symbolrrBr4r'rmatchrrrcr%r rr r!r#rrr9r,rsr$rrr=rrrrr;rr<r!'sympy.functions.special.delta_functionsr enumeratelseriesrXas_coeff_exponentrr)$r/rmrr r)rrrrrr\rr5r/rrrfr[r_dr_reslogflagsrYrptermsrco1rrpkrrrrs$ ` r0rzlog._eval_nseriess -6+ 99Q<1 !\3q6 3t 3iil # % 19D CHHQQ Cy$s)1 GGAadFO =Q41qAAvaeeAhquuQx $ Ac!fH!D&SVaD k))  F::ad:3DAq!Q$Z!^ # # % 3 3AA 3 N 55:1 A a AA1s1v4}}a&1SY;&4/CD $T%e#EETX!H4;;**D..0--/7tyy$Q077C(C5tyys1v.55AAt| q!tQ' ' MM!))+. 6Da(GCB/#5F2J 6 EE cAg]]A%%a'E A!IIb!&&1E"R&L@b  ARB JA cAg!fqT{"QtV+ .B 59##%a"g- -C . ==RUaZ I$QYYq\2 4||qAv 1u11!4qr!tBwy"U)Q777hhq!D&!U1a4^##S/; FQT:A**QOOAAO>** Fyy{++AA+61 Fyy{22112=qvv1 F Fs7Q AT&=$S"!T&":TT&TT&%T&c|jdj}tdd}|dk(rd}|j|||z} |j ||d\}}|j|r3|j|||z }|dk7rtd|zt|S|tjk(r7|tjk(r$|tjz j ||St||t|zz } | t|n|}| ||zz } |jrt|dk7r{dd lm} t#|j%|D]\} } | j&r| d k(sn d kr; j)|\}}| d t*zt,z| t| dzz } | S#t $r"|j |||} t| cYSwxYw) NrrTrrDrr rrrr)rBtogetherrr'rrcr#r4rr rr;rr<r!rrrrrXrrr)r/rmr r)r+rr\crgrrrrrrrs r0r:zlog._eval_as_leading_term'syy|$$& # % 19D IIaa  ::ad:3DAq 558q!D&!AAv ;t DEEq6M :!qvv+155L11!$1? ?!fqT{"s1v4 qv  ==RUaZ I$QYYq\2 4||qAv 1u11!4qr!tBwy"U)Q777 7 &&qt$&?Cs8O sF55(G G rxr+rMrN)ryrzr{r__annotations__rrr}r~rr7rOrrPrrrwrrr]rrrrWrr`rrr:rr1r0r4r4_sB ffa//0N5 {L{Lz 4 4 7r 8+@! "1? 7*:r$h*r1r4ceZdZdZeej dd ejfZe d dZ ddZ dZ dZ d Zd Zdfd Zd ZxZS)LambertWa The Lambert W function $W(z)$ is defined as the inverse function of $w \exp(w)$ [1]_. Explanation =========== In other words, the value of $W(z)$ is such that $z = W(z) \exp(W(z))$ for any complex number $z$. The Lambert W function is a multivalued function with infinitely many branches $W_k(z)$, indexed by $k \in \mathbb{Z}$. Each branch gives a different solution $w$ of the equation $z = w \exp(w)$. The Lambert W function has two partially real branches: the principal branch ($k = 0$) is real for real $z > -1/e$, and the $k = -1$ branch is real for $-1/e < z < 0$. All branches except $k = 0$ have a logarithmic singularity at $z = 0$. Examples ======== >>> from sympy import LambertW >>> LambertW(1.2) 0.635564016364870 >>> LambertW(1.2, -1).n() -1.34747534407696 - 4.41624341514535*I >>> LambertW(-1).is_real False References ========== .. [1] https://en.wikipedia.org/wiki/Lambert_W_function rFrbc|tjk(r||S|tj}|jr |jrtjS|tjurtjS|dtjz k(rtj S|t d dz k(r t d S|dt dzk(r t dS|t dz k(rttzdz S|tdtjzk(rtjS|tjurtjSt|jr|jrtjS|tj urb|t dz k(rt tzdz S|dtjz k(rtj S|dtdzk(r td Syy)NrrrDr)rrrYrr;rr4rrr,rrr_r)rrmrs r0rz LambertW.evalysm ;q6M YA 99yyvv AFF{uu BqvvI~}}$SVGAI~AwAc!fH}1v RCEztAv CAFF O#vv AJJzz! QYY yy)))  RCEzr"uQwbi}}$bRj {"! r1c|jd}t|jdk(r"|dk(rPt||dt|zzz S|jd}|dk(rt|||dt||zzz St||)z? Return the first derivative of this function. rrD)rBrJrr )r/r6rmrs r0rzLambertW.fdiffs IIaL tyy>Q 1}{Aq8A;$788 ! A1}1~q!hq!n*<'=>> x00r1c||jd}t|jdk(rtj}n|jd}|jrC|dtj z zj ry|dtj z zjryy|dzjr[|jr!|dtj z zj ry|js |dtj z zjryyt|jr't|dzjr|jryyyyr) rBrJrrrYrrrxr<rdrr)r/rmrs r0rzLambertW._eval_is_extended_reals IIaL tyy>Q A ! A 99AaffH ))ah,../!e__}}!ah,!;!;!!a!AFF(l%B%B&C qyy !iQ&@!!"'A !r1c4|jdjSr)rBrUr.s r0rWzLambertW._eval_is_finitesyy|%%%r1c|j|j}|j|jk(r>t|jdjr|jdjryyy|jSr)r>rBrrYrrs r0rzLambertW._eval_is_algebraicsd DIItyy ! 66TYY 1--.499Q<3L3L4M.>> !r1ct|jdk(r_|jd}|j|dj}|js|j |S|j |SyrI)rJrBr'r9rYr>r#)r/rmr r)rr+s r0r:zLambertW._eval_as_leading_termsf tyy>Q ))A,C388Aq>((*D<<yy&&3&&q) ) r1c Rt|jdk(rddlm}ddlm}|jdj |||}|j||}d} |jr |j} ||| z dk\rqttd||| z D cgc]@} tj | dz zt| | dz zzt| dz z || zzBc} } t!| } ntj"} | |||z|zSt$ |M|||Scc} w)NrDrrrr rr)rJrBrrrrr4r#rr,rr3rr;rrrrrr) r/rmrr r)rrrltlterr[rs r0rzLambertW._eval_nseriess# tyy>Q  C 0))A,&&qAD&9C$$$QT2BCyyffqu~";@GAcEN;SU67EE6QU+GAJQ,??#AE*++.62UV&q)FFuQT1~% %w$Q400UsAD$c|jd}t|jdk(r |jSt|j|jdjgSr)rBrJrYr)r/rms r0r`zLambertW._eval_is_zerosK IIaL tyy>Q 99 aii1)=)=>? ?r1r+rxrN)ryrzr{rrrrr}r~rOrrrrWrr:rr`rQrRs@r0rrTsb!D1662668I8IJN!#!#F1 (&"*1&@r1rc itdtdz dtdz tddtdzz tdz tdtdtdz zdtdzz tdz tddtdzzttddztdttddzzdtdzz ttddztddz tdz tddz tdz tdtdz ttddzz tdz tddzttddzttddztdtdz z ttddztddtdzdz z td z td td zdttddzzz td z tddtdzdz zttdd ztdtd zdtdtdz zz ttdd zdtdz td z dtdzdtdzz td z dtdzttdd zdtdzdtdzz ttdd ziS) NrrDrrrrr )r$rrrr1r0rfrfs  Qa  26  QT!W_rAv   Q$q47{##q47{3R!V   QT!W_rHQN2   Q$tAw{##rDG|4b8Aq>6I  Q! R!V  Q! R!V  Qa[Da1--rAv  Q! R(1a.(  T!Wq[DT!W--rHQN/B  QT!Wq !27  q'DH T$q'A+%6!67b  QT!Wq !2B#7  a48 DT!W$5 56Xa_8L! " DG R"W# $ d1g!d1g+&R% & DG R(1b/) T!Wd1g&Xa_(<) r1N)@ __future__r itertoolsrsympy.core.addrsympy.core.cachersympy.core.exprrsympy.core.functionrr r r r r rrsympy.core.logicrrrsympy.core.mulrsympy.core.numbersrrrrsympy.core.parametersrsympy.core.powerrsympy.core.singletonrrrrsympy.core.sympifyr(sympy.functions.combinatorial.factorialsrrrr r!r"r#(sympy.functions.elementary.miscellaneousr$ sympy.ntheoryr%r&sympy.ntheory.factor_r'r)rrr,r\r4rrfrr1r0rs"$ NNN;;773 ")&>MM95+eoePF)F)REmEl@'Wl@^ *r/rjX@X@v  r1