ó
    ‰*£hþS ã                   óè  • S r SSKrSSKrSSKJrJrJr  SSKJr  SSK	J
r
  SSKJr  SSKJrJrJrJrJrJrJrJrJrJr  SSKJrJr  SS	KJrJrJrJrJ r J!r!J"r"J#r#  SS
K$J%r%  SSK&J'r'J(r(J)r)  SSK*J+r+J,r,J-r-J.r.J/r/J0r0  SSK1J2r2J3r3  SSK4J5r5J6r6J7r7J8r8  SSK9J:r:J;r;J<r<  SSK=J>r>J?r?  SSK@JArAJBrBJCrCJDrD  SSKEJFrFJGrGJHrHJIrI  SSKJJKrKJLrL  SSKMJNrNJOrOJPrP  SSKQJRrRJSrSJTrTJUrU  SSKVJWrW  SSKXJYrYJZrZ  SSK[J\r\J]r]J^r^  SSK_J`r`JaraJbrbJcrcJdrd  SSKeJfrf  SSKgJhrh  SSKiJjrj  SSKkJlrl  SSKmJnrn  SSKoJprp  SS KqJrrr  SS!KsJtrtJuruJvrv  SS"KwJxrx  SqyS# rzS$ r{S% r|\zS& 5       r}\zS' 5       r~\zS( 5       r\
S) 5       r€\zS* 5       r�\zS+ 5       r‚\zS, 5       rƒ\zS- 5       r„\zS. 5       r…\zS/ 5       r†\zS0 5       r‡\zS1 5       rˆ\zS2 5       r‰\zS3 5       rŠ\zS4 5       r‹\zS5 5       rŒ\zS6 5       r�\zS7 5       rŽS8 r�S9 r�\zS: 5       r‘ " S; S<\]5      r’SPS= jr“\zS> 5       r”\zS? 5       r•\
S@ 5       r–\zSA 5       r—\zSB 5       r˜\zSC 5       r™\zSD 5       rš\zSE 5       r›\zSF 5       rœ\zSG 5       r�\zSH 5       rž\zSI 5       rŸ\zSJ 5       r \zSK 5       r¡ " SL SM\]5      r¢SQSN jr£SO r¤g)RzLaplace Transformsé    N)ÚSÚpiÚI)ÚAdd)Úcacheit)ÚExpr)
ÚAppliedUndefÚ
DerivativeÚexpandÚexpand_complexÚ
expand_mulÚexpand_trigÚLambdaÚWildFunctionÚdiffÚSubs)ÚMulÚprod)Ú
_canonicalÚGeÚGtÚLtÚ
UnequalityÚEqÚNeÚ
Relational)Úordered)ÚDummyÚsymbolsÚWild)ÚreÚimÚargÚAbsÚ
polar_liftÚperiodic_argument)ÚexpÚlog)ÚcoshÚcothÚsinhÚasinh)ÚMaxÚMinÚsqrt)Ú	PiecewiseÚpiecewise_exclusive)ÚcosÚsinÚatanÚsinc)ÚbesseliÚbesseljÚbesselkÚbessely)Ú
DiracDeltaÚ	Heaviside)ÚerfÚerfcÚEi)ÚdigammaÚgammaÚ
lowergammaÚ
uppergamma)ÚSingularityFunction)Ú	integrateÚIntegral)Ú	_simplifyÚIntegralTransformÚIntegralTransformError)Úto_cnfÚ	conjunctsÚ	disjunctsÚOrÚAnd)Ú
MatrixBase)Ú_lin_eq2dict)ÚPolynomialError)Úroots)ÚPoly)Útogether)ÚRootSum)Úsympy_deprecation_warningÚSymPyDeprecationWarningÚignore_warnings)Údebugfc                 ó   ^ • U 4S jnU$ )Nc                  ód  >• SSK Jn  U(       d  T" U 0 UD6$ [        S:X  a  [        S[        R
                  S9  [        SS[        -  < TR                  < U < 3[        R
                  S9  [        S-  qTR                  S:X  d  TR                  S	:X  aA  S
[         l        [        SS[        -  -  [        R
                  S9  T" U 0 UD6nS[         l        OT" U 0 UD6n[        S-  q[        SS[        -  < SU< 3[        R
                  S9  [        S:X  a  [        S[        R
                  S9  U$ )Nr   ©ÚSYMPY_DEBUGzO
------------------------------------------------------------------------------©Úfileú-LT- ú  é   Ú_laplace_transform_integrationÚ&_inverse_laplace_transform_integrationFz**** %sIntegrating ...Tz---> zO------------------------------------------------------------------------------
)Úsympyr\   Ú	_LT_levelÚprintÚsysÚstderrÚ__name__)ÚargsÚkwargsr\   ÚresultÚfuncs       €ÚT/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/integrals/laplace.pyÚwrapÚDEBUG_WRAP.<locals>.wrap1   só   ø€ Ý%ö Ù˜Ð( Ñ(Ð(ä˜‹>Ü�-¤c§j¡jÒ1Ý˜t¤I›~¨t¯}«}ºdÐCÜ—:‘:ò	ä�Q‰ˆ	à—‘Ð!AÓAØ—‘Ð!IÓIØ %ŒEÔÜÐ*¨d´9©nÑ=ÄCÇJÁJÒOÙ˜4Ð* 6Ñ*ˆFØ $ŒEÕá˜4Ð* 6Ñ*ˆFÜ�Q‰ˆ	Ý $¤y¤.²&Ð9ÄÇ
Á
ÒKÜ˜‹>Ü�-¤c§j¡jÒ1Øˆó    © )rm   ro   s   ` rn   Ú
DEBUG_WRAPrs   0   s   ø€ õð4 €Krq   c                 ól   • SSK Jn  U(       a'  [        SS[        -  < U < 3[        R
                  S9  g g )Nr   r[   r_   r`   r]   )rd   r\   rf   re   rg   rh   )Útextr\   s     rn   Ú_debugrv   N   s$   € Ý!æÝ˜T¤)›^ªTÐ2¼¿¹ÓDð rq   c                 óÖ   ^^^^^• U4S jmUUUU4S jmU4S jmU4S jnS nSSK Jn  U" U 5      n U" U [        T5      n U" U [        U4S j5      n U" U [        U5      n [        U 5      $ )	aª  
Naively simplify some conditions occurring in ``expr``,
given that `\operatorname{Re}(s) > a`.

Examples
========

>>> from sympy.integrals.laplace import _simplifyconds
>>> from sympy.abc import x
>>> from sympy import sympify as S
>>> _simplifyconds(abs(x**2) < 1, x, 1)
False
>>> _simplifyconds(abs(x**2) < 1, x, 2)
False
>>> _simplifyconds(abs(x**2) < 1, x, 0)
Abs(x**2) < 1
>>> _simplifyconds(abs(1/x**2) < 1, x, 1)
True
>>> _simplifyconds(S(1) < abs(x), x, 1)
True
>>> _simplifyconds(S(1) < abs(1/x), x, 1)
False

>>> from sympy import Ne
>>> _simplifyconds(Ne(1, x**3), x, 1)
True
>>> _simplifyconds(Ne(1, x**3), x, 2)
True
>>> _simplifyconds(Ne(1, x**3), x, 0)
Ne(1, x**3)
c                 ón   >• U T:X  a  gU R                   (       a  U R                  T:X  a  U R                  $ g )Nra   )Úis_PowÚbaser'   )ÚexÚss    €rn   ÚpowerÚ_simplifyconds.<locals>.powerv   s*   ø€ Ø�‹7ØØ�9�9˜Ÿ™ A›Ø—6‘6ˆMØrq   c                 óB  >• U R                  T5      (       a  UR                  T5      (       a  g[        U [        5      (       a  U R                  S   n [        U[        5      (       a  UR                  S   nU R                  T5      (       a  T" SU-  SU -  5      $ T" U5      nUc  g US:”  a-  [        U 5      [        T5      U-  :*  [        R
                  :X  a  gUS:  a.  [        U 5      [        T5      U-  :¬  [        R
                  :X  a  ggg! [         a     gf = f)zRReturn True only if |ex1| > |ex2|, False only if |ex1| < |ex2|.
Else return None. Nr   ra   FT)ÚhasÚ
isinstancer$   rj   r   ÚtrueÚ	TypeError)Úex1Úex2ÚnÚaÚbiggerr}   r|   s      €€€€rn   rˆ   Ú_simplifyconds.<locals>.bigger}   sò   ø€ ð �7‰7�1�:‰:˜#Ÿ'™' !Ÿ*™*ØÜ�cœ3×ÑØ—(‘(˜1‘+ˆCÜ�cœ3×ÑØ—(‘(˜1‘+ˆCØ�7‰7�1�:‰:Ù˜!˜C™%  3¡Ó'Ð'Ù�#‹JˆØ‰9Øð	Ø�1‹uœ#˜c›(¤c¨!£f¨a¡iÑ/´A·F±FÓ:ØØ�1‹uœ#˜c›(¤c¨!£f¨a¡iÑ/´A·F±FÓ:Øð ;ˆuøäó 	Ùð	ús   Â)2D Ã2D Ä
DÄDc                 óÐ   >• U R                   (       d  [        U [        5      (       a&  UR                   (       d  [        U[        5      (       d  X:  $ T" X5      nUb  U(       + $ X:  $ )zsimplify x < y )Úis_positiver�   r$   )ÚxÚyÚrrˆ   s      €rn   ÚreplieÚ_simplifyconds.<locals>.replie“   sL   ø€ à——¤*¨Q´×"4Ñ"4ØŸŸ¬°A´s×);Ñ);Ø‘EˆNÙ�1‹LˆØ‰=Ø”5ˆLØ‘ˆrq   c                 ó8   >• T" X5      nUS;   a  g[        X5      $ )N©TFT)r   )rŒ   r�   Úbrˆ   s      €rn   ÚreplueÚ_simplifyconds.<locals>.replue�   s"   ø€ Ù�1‹LˆØ�ÓØÜ˜!ÓÐrq   c                 óB   • U S;   a  [        U 5      $ U R                  " U6 $ )Nr’   )ÚboolÚreplace)r{   rj   s     rn   ÚreplÚ_simplifyconds.<locals>.repl£   s"   € Ø�ÓÜ˜“8ˆOØ�zŠz˜4Ð Ð rq   r   )Úcollect_absc                 ó   >• T" X5      $ ©Nrr   )rŒ   r�   r�   s     €rn   Ú<lambda>Ú _simplifyconds.<locals>.<lambda>«   s	   ø€ ¡v¨a¤|rq   )Úsympy.simplify.radsimpr›   r   r   r   r   )	Úexprr|   r‡   r”   r™   r›   rˆ   r}   r�   s	    ``   @@@rn   Ú_simplifycondsr¢   U   se   ü€ õB÷ð õ,õ ò!õ
 3Ù�tÓ€DÙ�”b˜&Ó!€DÙ�”bÔ3Ó4€DÙ�”j &Ó)€DÜˆT‹7€Nrq   c                 ó>   • [        X R                  [        5      5      $ )zg
Expand an expression involving DiractDelta to get it as a linear
combination of DiracDelta functions.
)rO   Úatomsr:   ©r¡   s    rn   Úexpand_dirac_deltar¦   °   s   € ô ˜Ÿj™j¬Ó4Ó5Ð5rq   c                ón  ^^^^• [        S5      mU R                  [        5      (       a  g[        U [	        T* T-  5      -  T[
        R                  [
        R                  45      nUR                  [        5      (       d;  [        UR                  TT5      U5      [
        R                  [
        R                  4$ UR                  (       d  gUR                  S   u  pEUR                  [        5      (       a  gUU4S jn[        U5       Vs/ s H
  ov" U5      PM     nnU V	s/ s H5  o™S   [
        R                   :w  d  M  U	S   [
        R                  Ld  M3  U	PM7     n
n	U
(       d*  U V	s/ s H  o™S   [
        R                   :w  d  M  U	PM     n
n	[#        [%        U
5      5      nS mUR'                  U4S jS9  U(       d  gUS   u  p¼UU4S	 jnU(       a  [)        UTU5      n[)        UTU5      n[        UR                  TT5      U5      U" U5      [+        U" U5      5      4$ s  snf s  sn	f s  sn	f )
zªThe backend function for doing Laplace transforms by integration.

This backend assumes that the frontend has already split sums
such that `f` is to an addition anymore.
r|   Nr   c                 ó,	  >^• SSK Jn  [        R                  n[        R                  n[        [        U 5      5      n [        S[        T/S9u  pEpgp‰n
U[        [        TU-   U-  5      5      -  U:  U[        [        TU-   U-  5      5      -  U:*  [        [        TU-   U-  U-  U5      5      U:  [        [        TU-   U-  U-  U5      5      U:*  [        [        [        TU-   5      U-  U-  U5      5      U:  [        [        [        TU-   5      U-  U-  U5      5      U:*  4nU  GHJ  n[        R                  n/ n[        U5       GHñ  nUR                  (       a&  TUR                   R"                  ;   a  UR$                  nUR                  (       a'  ['        U[(        [*        45      (       a  UR,                  nU H  nUR/                  U5      mT(       d  M    O   T(       a?  TU   R0                  (       a+  TU   TU   -  [2        S-  :X  a  [5        TTU   -   5      * S:  nUR/                  U[7        U[        [        TU
-  5      5      -  U-  5      [        TU-  5      U	-  -  -
  S:  5      mT(       dN  UR/                  [7        U[        [        TU-  U
-  U5      5      U-  -
  5      [        TU-  5      U	-  -  S:  5      mT(       dW  UR/                  U[7        [        [        [        T5      U-  U
-  U5      5      U-  5      [        TU-  5      U	-  -  -
  S:  5      mT(       a.  [9        U4S jXgX‰U
4 5       5      (       a  [5        T5      TU   :„  nUR;                  [4        S 5      R=                  [5        T5      T5      nUR                  (       a<  UR>                  S;   d,  URA                  T5      (       d  URA                  T5      (       d  Xï/-  nGM–  U" UT5      nUR                  (       a  UR>                  S;   a  Xï/-  nGMÈ  URB                  T:X  a      g	[E        URB                  U5      nGMô     U[        R                  La  [G        XÒ5      nGM8  [I        U[K        U6 5      nGMM     X#R                  (       a  URL                  4$ U4$ )
z6Turn ``conds`` into a strip and auxiliary conditions. r   ©Ú_solve_inequalityzp q w1 w2 w3 w4 w5©ÚclsÚexcludeé   c              3   óB   >#   • U  H  nTU   R                   v •  M     g 7fr�   )r‹   )Ú.0ÚwildÚms     €rn   Ú	<genexpr>ÚH_laplace_transform_integration.<locals>.process_conds.<locals>.<genexpr>ø   s#   øé € ð -ò >,°T˜Q˜t™W×0Ö0ò >,ùs   ƒc                 óD   • U R                  5       R                  5       S   $ ©Nr   )r   Úas_real_imag)rŒ   s    rn   rž   ÚG_laplace_transform_integration.<locals>.process_conds.<locals>.<lambda>ü   s   €  !§(¡(£*×"9Ñ"9Ó";¸AÒ">rq   )z==z!=N)'Úsympy.solvers.inequalitiesrª   r   ÚNegativeInfinityr‚   rJ   rI   r   r    r$   r#   r&   r%   ÚInfinityrK   Úis_RelationalÚrhsÚfree_symbolsÚreversedr�   r   r   ÚreversedsignÚmatchr‹   r   r!   r2   Úallr˜   ÚsubsÚrel_opr€   Últsr.   r-   rM   rL   Ú	canonical)Úcondsrª   r‡   ÚauxÚpÚqÚw1Úw2Úw3Úw4Úw5ÚpatternsÚcÚa_Úaux_ÚdÚpatÚd_Úsolnr²   r|   Úts                      @€€rn   Úprocess_condsÚ5_laplace_transform_integration.<locals>.process_condsÑ   s	  ù€ å@Ü×ÑˆÜ�f‰fˆÜœ& ›-Ó(ˆÜ#*Ø ¤d°Q°Cñ$9Ñ ˆˆb�b˜bð Œc”#�q˜2‘v˜q‘j“/Ó"Ñ" RÑ'ØŒc”#�q˜2‘v˜q‘j“/Ó"Ñ" bÑ(ÜÔ! 1 r¡6¨A¡+¨a¡-°Ó4Ó5¸Ñ:ÜÔ! 1 r¡6¨A¡+¨a¡-°Ó4Ó5¸Ñ;ÜÔ!¤:¨a°"©fÓ#5¸Ñ"9¸!Ñ";¸RÓ@ÓAÀBÑFÜÔ!¤:¨a°"©fÓ#5¸Ñ"9¸!Ñ";¸RÓ@ÓAÀRÑGðIˆô ˆAÜ—‘ˆBØˆDÜ˜q—\�Ø—?—? q¨A¯E©E×,>Ñ,>Ó'>ØŸ
™
�AØ—?—?¤z°!´b¼"°X×'>Ñ'>ØŸ™�AÛ#�CØŸ™ ›�Aß�qÙñ $ö ˜˜1™×)×)¨a°©e°A°a±D©j¼B¸q¹DÓ.@Ü˜A  "¡™I›˜¨Ñ*�AØ—G‘G˜A¤ B¤s¬3¨q°©t«9£~Ñ$5°bÑ$8Ó 9¼#¸aÀ¹e»*Àb¹.Ñ HÑHÈ1ÑLÓM�ÞØŸ™Ü˜A¤Ô$5°a¸±e¸B±hÀÓ$BÓ CÀBÑ FÑFÓGÜ˜A˜r™E›
 B™ñ'Ø)*ñ+ó,�Aö ØŸ™ØœCÜÔ 1´*¸Q³-ÀÑ2CÀBÑ2FÈÓ JÓKÈBÑNóä! ! R¡%›j¨"™nñ-ñ -à/0ñ1ó2�Aö œô -Ø ¨ñ>,ó -÷ -ñ -ä˜1›  !¡™�AØ—Y‘YÜÑ>ó@ß@DÁÄRÈÃUÈAÃð ð ŸOŸO¨q¯x©x¸<Ó/GØŸ6™6 !Ÿ9™9¨B¯F©F°1¯I©IØ˜C‘K�DÚÙ(¨¨QÓ/�Ø×)×)¨T¯[©[¸LÓ-HØ˜C‘K�DÚØ—8‘8˜q“=Úä˜TŸX™X rÓ*“BñM "ðN œŸ™Ò#Ü˜“J“ä˜#œr 4˜yÓ)“ñ[ ð\ ×#4×#4�#—-‘-Ð=Ð=¸#Ð=Ð=rq   ra   c                 ó0   • U S;   a  gU R                  5       $ )Nr’   r   )Ú	count_opsr¥   s    rn   ÚcntÚ+_laplace_transform_integration.<locals>.cnt  s   € Ø�=Ó ØØ�~‰~ÓÐrq   c                 ó&   >• U S   * T" U S   5      4$ ©Nr   ra   rr   )rŒ   rÝ   s    €rn   rž   Ú0_laplace_transform_integration.<locals>.<lambda>  s   ø€ ˜q ™t˜e¡S¨¨1©£YÑ/rq   ©Úkeyc                 ó(   >• U R                  TT5      $ r�   )rÃ   )r¡   r|   Ús_s    €€rn   ÚsbsÚ+_laplace_transform_integration.<locals>.sbs!  s   ø€ Ø�y‰y˜˜BÓÐrq   )r   r€   r:   rD   r'   r   ÚZeror»   rE   rF   rÃ   rº   r‚   Úis_Piecewiserj   rK   ÚfalseÚlistr   Úsortr¢   r   )ÚfrØ   rå   ÚsimplifyÚFÚcondrÙ   rÑ   rÇ   rŒ   Úconds2r‡   rÈ   ræ   rÝ   r|   s    ``           @@rn   rb   rb   ¹   sÁ  û€ ô 	ˆc‹
€Aà‡u�uŒZ×ÑØä�!”C˜˜˜1™“I‘+ ¤1§6¡6¬1¯:©:Ð6Ó7€Aà�5‰5”�?‰?Ü˜Ÿ™  2›¨Ó1´1×3EÑ3EÄqÇvÁvÐMÐMà�>�>Øà�f‰f�Q‰i�G€AØ‡u�uŒX‡�Øö=>ô~ (1°¤Ó7¢ !ˆ]˜1Ö¡€EÐ7Ùó :š�A A¡$Ü�g‰gñ#‹aØ˜A™$¤a×&8Ñ&8Ð8÷ ™€Fð :æÙ"Ó6šU˜¨¡d¬a¯g©g¡o—!™UˆÐ6Ü”˜“Ó!€Eò ð 
‡J�JÔ/€JÑ0æØØ�1‰X�F€Aö æÜ˜1˜a Ó#ˆÜ˜S ! QÓ'ˆÜ�Q—V‘V˜A˜r“] HÓ-©s°1«v´zÁ#ÀcÃ(Ó7KÐKÐKùò- 8ùò:ùò 7s$   ÄH(Ä$H-ÅH-ÅH-Å-H2ÆH2c                 óî   • [        U [        5      (       d  U $ U R                  U5      =nb  UR                  5       $ U R                  nU R
                   Vs/ s H  n[        XA5      PM     nnU" U6 $ s  snf )zî
This is an internal helper function that traverses through the expression
tree of `f(t)` and collects arguments. The purpose of it is that
anything like `f(w*t-1*t-c)` will be written as `f((w-1)*t-c)` such that
it can match `f(a*t+b)`.
)r�   r   Úas_polyÚas_exprrm   rj   Ú_laplace_deep_collect)rí   rØ   rÉ   rm   r#   rj   s         rn   rõ   rõ   )  sk   € ô �aœ×ÑØˆØ�Y‰Y�q‹\ÐˆÑ&Ø�y‰y‹{ÐØ�6‰6€DØ56·V²VÓ<²V¨cÔ! #Ö)±V€DÐ<Ù�ˆ;Ðùò =s   ÁA2c                  ó/  ^• [        S5      m[        S5      n [        ST/S9n[        ST/S9n[        ST/S9n[        ST/S9n[        ST/S9nU4S	 jn[        S
5        / XU -  [        R                  [        R
                  U4P[        UT-  U-
  5      [        U * U-  U-  5      [        U5      -  [        [        US:„  US:¬  5      [        US:  US:*  5      5      [        R                  U4P[        UT-  U-
  5      [        S5      [        [        US:  US:¬  5      [        US:„  US:*  5      5      [        R                  U4P[        UT-  U-
  5      [        U * U-  U-  5      U -  [        US:„  US:„  5      [        R
                  U4P[        UT-  U-
  5      S[        U * U-  U-  5      -
  U -  [        US:  US:  5      [        R
                  U4P[        UT-  U-
  5      SU -  [        US:„  US:*  5      [        R
                  U4P[        UT-  U-
  5      S[        US:  US:„  5      [        R
                  U4PTSU S-  -  [        R                  [        R
                  U4PSUT-  U-   -  [        U* U-  U -  5      * [        U* U-  U -  5      -  U-  [        [        X!-  5      5      [        :  [        R
                  U4PS[!        UT-  U-   5      -  [!        U[        -  U -  5      [        X!-  U -  5      -  [#        [!        X!-  U -  5      5      -  U-  [        [        X!-  5      5      [        :  [        R
                  U4PUT-  U-   [        S5      * S-  -  SU[        S5      * S-  -  -  S[        U -  U-  [        S5      S-  -  -  [        X!-  U -  5      -  [#        [!        X!-  U -  5      5      -  U-  -
  [        [        X!-  5      5      [        :  [        R
                  U4P[!        T5      TU-   -  [!        [        U -  5      [        [!        U5      -  [        X -  5      -  [#        [!        X -  5      5      -  -
  [        [        U5      5      [        :  [        R
                  U4PSU[!        T5      -  TS-  -   -  [        U[        S5      S-  -  -  [        X-  5      -  [#        [!        X-  5      5      -  [        R                  [        R
                  U4PTU-  [%        US-   5      XS-   -  -  US:„  [        R
                  U4PUT-  U-   U-  ['        US-   X!-  U -  5      [        U* U-  U -  5      -  XS-   -  -  U-  [        US:„  [        [        X!-  5      5      [        :  5      [        R
                  U4PTU-  TU-   -  X-  [%        US-   5      -  ['        U* X-  5      -  [        US:„  [        [        U5      5      [        :  5      [        R
                  U4P[        UT-  U-
  5      [        U* 5      X-
  -  [        R                  [)        U5      U4PT[        UT-  U-
  5      -  [        U* 5      X-
  S-  -  [        R                  [)        U5      U4PTU-  [        UT-  5      -  [%        US-   5      X-
  US-   -  -  [)        U5      S:„  [)        U5      U4P[        U* TS-  -  5      [!        [        S-  U-  5      [        U S-  S-  U-  5      -  [#        U [!        SU-  5      -  5      -  [)        U5      S:„  [        R
                  U4PT[        U* TS-  -  5      -  SSU-  -  S[!        [        5      -  SU-  [        S5      S-  -  -  U -  [#        U [!        SU-  5      -  5      -  -
  [)        U5      S:„  [        R
                  U4P[        U* T-  5      S[!        X-  5      -  [+        SS[!        X-  5      -  5      -  [)        U5      S:¬  [        R
                  U4P[!        T5      [        U* T-  5      -  [        S5      S-  [!        [        U S-  -  5      -  SS[!        X-  5      -  -   -  [        S[!        X-  5      -  5      -  [)        U5      S:¬  [        R
                  U4P[        U* T-  5      [!        T5      -  [!        [        U -  5      [        S[!        X-  5      -  5      -  [)        U5      S:¬  [        R
                  U4P[        U* T-  5      T[!        T5      -  -  [!        [        U-  5      [        S[!        X-  5      -  5      -  [)        U5      S:„  [        R
                  U4PTU-  [        U* T-  5      -  SX-  US-   S-  -  -  [+        US-   S[!        X-  5      -  5      -  [)        U5      S:„  [        R
                  U4P[        U* [        T* 5      -  5      X* -  [-        X5      -  [        R                  [        R
                  U4P[        U* [        T5      -  5      X-  ['        U * U5      -  [)        U5      S:„  [        R
                  U4P[/        UT-  5      [/        [        [        R0                  5      U -  U-  5      * U -  US:„  [        R
                  U4P[/        SUT-  -   5      [        X-  5      * U -  [        U * U-  5      -  [        [        U5      5      [        :  [        R
                  U4P[/        UT-  U-   5      [/        U5      [        X-  U-  5      U -  U-  [        U * U-  5      -  -
  U -  U-  [        US:„  [        [        U5      5      [        :  5      [        R
                  U4P[/        T5      [!        T5      -  [!        [        U -  5      * [/        SU -  [        [        R0                  5      -  5      -  [        R                  [        R
                  U4PTU-  [/        T5      -  [%        US-   5      X* S-
  -  -  [3        US-   5      [/        U 5      -
  -  [)        U5      S:„  [        R
                  U4P[/        UT-  5      S-  [/        [        [        R0                  5      U -  U-  5      S-  [        S-  S-  -   U -  US:„  [        R
                  U4P[5        UT-  5      XPS-  US-  -   -  [        R                  [        [7        U5      5      U4P[        [5        UT-  5      5      XPS-  US-  -   -  [9        [        U -  S-  U-  5      -  US:„  [        R
                  U4P[5        UT-  5      T-  [;        XP-  5      [        R                  [        [7        U5      5      U4P[5        UT-  5      S-  T-  [/        SSUS-  -  U S-  -  -   5      S-  [        R                  S[        [7        U5      5      -  U4P[5        UT-  5      S-  TS-  -  U[;        SU-  U -  5      -  U [/        SSUS-  -  U S-  -  -   5      -  S-  -
  [        R                  S[        [7        U5      5      -  U4P[=        UT-  5      X S-  US-  -   -  [        R                  [        [7        U5      5      U4P[=        UT-  5      S-  U S-  SUS-  -  -   U S-  SUS-  -  -   -  U -  [        R                  S[        [7        U5      5      -  U4P[5        UT-  5      [5        UT-  5      -  SU-  U-  U -  U S-  X-   S-  -   -  U S-  X-
  S-  -   -  [        R                  [        [7        U5      5      [        [7        U5      5      -   U4P[=        UT-  5      [5        UT-  5      -  X S-  US-  -
  US-  -   -  U S-  X-   S-  -   -  U S-  X-
  S-  -   -  [        R                  [        [7        U5      5      [        [7        U5      5      -   U4P[=        UT-  5      [=        UT-  5      -  X S-  US-  -   US-  -   -  U S-  X-   S-  -   -  U S-  X-
  S-  -   -  [        R                  [        [7        U5      5      [        [7        U5      5      -   U4P[?        UT-  5      XS-  US-  -
  -  [        R                  [        [)        U5      5      U4P[A        UT-  5      X S-  US-  -
  -  [        R                  [        [)        U5      5      U4P[?        UT-  5      S-  SUS-  -  U S-  SUS-  -  U -  -
  -  [        R                  S[        [)        U5      5      -  U4P[A        UT-  5      S-  U S-  SUS-  -  -
  U S-  SUS-  -  U -  -
  -  [        R                  S[        [)        U5      5      -  U4P[?        UT-  5      T-  [/        X-   X-
  -  5      S-  [        R                  [        [)        U5      5      U4PTU-  [?        UT-  5      -  [%        US-   5      S-  X-
  U* S-
  -  X-   U* S-
  -  -
  -  US:„  [        U5      U4PTU-  [A        UT-  5      -  [%        US-   5      S-  X-
  U* S-
  -  X-   U* S-
  -  -   -  US:„  [        U5      U4P[C        UT-  5      [        U S-  SU-  S-  -  5      [#        U SU-  -  5      -  U -  S[        [        U5      5      -  [        :  [        R
                  U4P[E        X1T-  5      X-  [!        U S-  US-  -   5      U [!        U S-  US-  -   5      -   U-  -  -  [)        U5      S:„  [        [7        U5      5      U4PTU-  [E        X1T-  5      -  SU-  [!        [        5      -  [%        U[        RF                  -   5      -  X-  -  U S-  US-  -   U* [        RF                  -
  -  -  [        [)        U5      [        RF                  * :„  [I        X#5      5      [        [7        U5      5      U4PTU-  [E        X1T-  5      -  SUS-   -  [!        [        5      -  [%        U[        S5      S-  -   5      -  X-  -  U -  U S-  US-  -   U* [        S5      S-  -
  -  -  [        [)        U5      S:„  [I        X#S-   5      5      [        [7        U5      5      U4P[E        SU[!        TS-  UT-  -   5      -  5      [        X -  U[!        U S-  US-  -   5      -  -
  5      [!        U S-  US-  -   5      -  [        [        U5      5      [        :  [        [7        U5      5      U4P[K        X1T-  5      X-  [!        U S-  US-  -
  5      U [!        U S-  US-  -
  5      -   U-  -  -  [)        U5      S:„  [        [)        U5      5      U4PTU-  [K        X1T-  5      -  SU-  [!        [        5      -  [%        U[        RF                  -   5      -  X-  -  U S-  US-  -
  U* [        RF                  -
  -  -  [        [)        U5      [        RF                  * :„  [I        X#5      5      [        [)        U5      5      U4PTU-  [K        X1T-  5      -  SUS-   -  [!        [        5      -  [%        U[        S5      S-  -   5      -  X-  -  U -  U S-  US-  -
  U* [        S5      S-  -
  -  -  [        [)        U5      S:„  [I        X#S-   5      5      [        [)        U5      5      U4P[M        SUT-  5      S[        -  [O        X-  5      -  [!        U S-  US-  -   5      -  [        R                  [        [7        U5      5      U4P[+        SUT-  5      [/        U [!        U S-  US-  -
  5      -   U-  5      [!        U S-  US-  -
  5      -  [        R                  [)        U5      * U4PnUTU 4$ )a%  
This is an internal helper function that returns the table of Laplace
transform rules in terms of the time variable `t` and the frequency
variable `s`.  It is used by ``_laplace_apply_rules``.  Each entry is a
tuple containing:

    (time domain pattern,
     frequency-domain replacement,
     condition for the rule to be applied,
     convergence plane,
     preparation function)

The preparation function is a function with one argument that is applied
to the expression before matching. For most rules it should be
``_laplace_deep_collect``.
rØ   r|   r‡   ©r­   r“   r†   ÚtauÚomegac                 ó   >• [        U T5      $ r�   )rõ   )rí   rØ   s    €rn   ÚdcoÚ!_laplace_build_rules.<locals>.dcoS  s   ø€ Ô,¨Q°Ó2Ð2rq   z&_laplace_build_rules is building rulesr   ra   r®   é   g      ø?éÿÿÿÿé   éþÿÿÿé   )(r   r    rv   r   r‚   rè   r:   r'   r$   rL   rM   rº   r;   r>   r#   r   r/   r=   r@   rB   r!   r8   rA   r(   Ú
EulerGammar?   r3   r"   r*   r4   r2   r+   r)   r<   r7   ÚHalfr   r6   r9   r,   )	r|   r‡   r“   r†   rø   rù   rû   Úlaplace_transform_rulesrØ   s	           @rn   Ú_laplace_build_rulesr  :  s  ø€ ô$ 	ˆc‹
€AÜˆc‹
€AÜˆS˜1˜#Ñ€AÜˆS˜1˜#Ñ€AÜˆS˜1˜#Ñ€AÜ
ˆu˜q˜cÑ
"€CÜ� 1 #Ñ&€EÝ2Ü
Ð3Ô4ð|Ø	
ˆa‰CÜ	
�‰”—‘˜ð	ð|ô 
�A�a‘C˜‘EÓ	œC   1¡ Q¡›K¬¨A«Ñ.Ü	ŒC��A‘�q˜A‘vÓ¤ A¨¡E¨1°©6Ó 2Ó	3Ü	
×	Ñ	˜Sð	"ð|ô 
�A�a‘C˜‘EÓ	œA˜a›DÜ	ŒC��A‘�q˜A‘vÓ¤ A¨¡E¨1°©6Ó 2Ó	3Ü	
×	Ñ	˜Sð	"ð|ô 
�1�Q‘3�q‘5Ó	œ3 ˜r !™t A™v›; q™=Ü	ˆQ�‰U�A˜‘EÓ	œAŸF™F Cð	)ð|ô 
�1�Q‘3�q‘5Ó	˜Aœc 1 " Q¡$ q¡&›k™M¨1Ñ,Ü	ˆQ�‰U�A˜‘EÓ	œAŸF™F Cð	)ð|ô 
�1�Q‘3�q‘5Ó	˜1˜Q™3Ü	ˆQ�‰U�A˜‘FÓ	œQŸV™V Sð	*ð|ô 
�1�Q‘3�q‘5Ó	˜1Ü	ˆQ�‰U�A˜‘EÓ	œAŸF™F Cð	)ð|ð" 
ˆAˆa�‰d‰FÜ	
�‰”—‘˜ð	ð#|ð& 
ˆAˆa‰C�‰E‰”S˜!˜˜A™˜a™“[�L¤ Q B q¡D¨¡F£Ñ+¨AÑ-Ü	ŒS�‘‹X‹œÑ	œQŸV™V Sð	*ð'|ð* 
Œ4��!‘�A‘‹;‰œ˜Qœr™T !™V›¤S¨©¨Q©£ZÑ/´´T¸!¹#¸a¹%³[Ó0AÑAÀ!ÑCÜ	ŒS�‘‹X‹œÑ	œQŸV™V Sð	*ð+|ð. ˆA‰#ˆa‰%”A�a“D�5˜‘7Ñ	Ø	
ˆ1”�!“ˆu�Q‰w‰<‰˜œ2˜a™4 ™6¤Q q£T¨!¡VÑ,Ñ,¬S°±°Q±«ZÑ7¼$¼tÀAÁCÈÁE»{Ó:KÑKÈAÑMÑ	MÜ	ŒS�‘‹X‹œÑ	œQŸV™V Sð	*ð/|ô4 
ˆa‹�!�A‘#‰œœR ™T›
¤2¤d¨1£g¡:¬c°!±#«hÑ#6´t¼DÀÁ»I³Ñ#FÑFÜ	ŒS�‹V‹”rÑ	œ1Ÿ6™6 3ð	(ð5|ð8 
ˆAŒd�1‹g‰I˜˜C™Ñ Ñ	!¤2 a¬!¨A«$¨q©&¡k¡>´#°a±c³(Ñ#:¼4ÄÀQÁSÃ	»?Ñ#JÜ	
�‰”—‘˜ð	ð9|ð< 
ˆA‰Œu�Q�q‘S‹z˜! ™c™(Ñ"Ø	
ˆR‰”—‘˜ð	ð=|ð@ ˆA‰#ˆa‰%�!‰”Z  !¡ Q¡S¨¡UÓ+¬C°°°1±°Q±«KÑ7¸¸a¹C¹Ñ@ÀÑBÜ	ˆQ�‰V”Sœ˜Q™S›“]¤RÑ'Ó	(¬!¯&©&°#ð	7ðA|ðD 
ˆA‰ˆq�‰s‰�Q‘Tœ%  !¡›*‘_¤Z°°°A±CÓ%8Ñ8Ü	ˆQ�‰V”Sœ˜Q›“[¤2Ñ%Ó	&¬¯©°ð	5ðE|ôH 
ˆQˆq‰S�‰W‹”s˜C˜4“y !¡#‘Ü	
�‰”�A“˜ð	ðI|ðL 
Œ3ˆq�‰s�3‰w‹<‰œ˜c˜T› A¡C¨!¡8Ñ+Ü	
�‰”�A“˜ð	ðM|ðP 
ˆA‰Œc�!�A‘#‹h‰œ˜a ™c›
 A¡C¨1¨Q©3¡<Ñ/Ü	ˆA‹�‰”R˜“U˜Cð	!ðQ|ôT 
ˆaˆR��1‘‰W‹”tœB˜q™D ™F“|¤C¨¨1©¨Q©¨q©£MÑ1´$°q¼¸aÀ¹c»±{Ó2CÑCÜ	ˆA‹�‰”A—F‘F˜Cð	!ðU|ðX 
Œ3�ˆr�!�Q‘$‰w‹<‰Ø	
ˆAˆa‰C‰�”4œ“8‘˜Q˜q™S¤A a£D¨¡F™OÑ+¨AÑ-¬d°1´T¸!¸A¹#³Y±;Ó.?Ñ?Ñ	?Ü	ˆA‹�‰”A—F‘F˜Cð	!ðY|ô^ 
ˆaˆR�‰T‹�A”d˜1™3“i‘K¤¨¨1¬T°!±#«Y©;Ó 7Ñ7Ü	ˆA‹�!‰”Q—V‘V˜Sð	"ð_|ôb 
ˆa‹”�a�R˜‘T“Ñ	Ü	
ˆ1‹ˆa‰””R˜˜1™‘W“Ñ	˜q ¤4¨©£9¡™}Ñ	-¬c°"´T¸!¹#³Y±,Ó.?Ñ	?Ü	ˆA‹�!‰”Q—V‘V˜Sð	"ðc|ôh 
ˆaˆR�‰T‹”4˜“7Ñ	œD¤ A¡›J¤s¨2¬d°1±3«i©<Ó'8Ñ8Ü	ˆA‹�!‰”Q—V‘V˜Sð	"ði|ôl 
ˆaˆR�‰T‹�A”d˜1“g‘IÑ	¤¤R¨¡T£
¬3¨r´$°q±s³)©|Ó+<Ñ <Ü	ˆA‹�‰”A—F‘F˜Cð	!ðm|ðp 
ˆA‰Œc�1�"�Q‘$‹i‰˜˜A™C A a¡C¨¡7Ñ+Ñ+¬G°A°a±C¸¼4ÀÁ»9¹Ó,EÑEÜ	ˆA‹�‰”A—F‘F˜Cð	!ðq|ôB 
ˆaˆR”�Q�B“‰Z‹˜!˜b™'¤*¨QÓ"2Ñ2Ü	
�‰”—‘˜ð	ðC|ôF 
ˆaˆR”�A“‰Y‹˜™œj¨!¨¨QÓ/Ñ/Ü	ˆA‹�‰”A—F‘F˜Cð	!ðG|ôJ 
ˆQˆq‰S‹”CœœAŸL™LÓ)¨!Ñ+¨AÑ-Ó.Ð.¨qÑ0Ø	
ˆQ‰”—‘˜ð	ðK|ôN 
ˆQˆq�‰s‰U‹”c˜!™#“h�Y˜q‘[¤ Q B q¡D£Ñ)Ü	ŒS�‹V‹”rÑ	œ1Ÿ6™6 3ð	(ðO|ôR 
ˆQˆq‰S�‰U‹”c˜!“fœS ¡ Q¡›Z¨™\¨!™^¬B°¨r°!©t«HÑ4Ñ4°aÑ7¸Ñ9Ü	ˆQ�‰U”Cœ˜A›“K¤"Ñ$Ó	%¤q§v¡v¨sð	4ðS|ôV 
ˆQ‹”�Q“‰œ$œr !™t›*˜¤S¨¨1©¬S´·±Ó->Ñ)>Ó%?Ñ?Ü	
�‰”—‘˜ð	ðW|ðZ 
ˆA‰Œc�!‹f‰”e˜A˜a™C“j  R¨¡T¡Ñ*¬G°A°a±C«L¼¸Q»Ñ,?Ñ@Ü	ˆA‹�‰”Q—V‘V˜Sð	"ð[|ô^ 
ˆQˆq‰S‹�1‰”sœ3œqŸ|™|Ó,¨QÑ.¨qÑ0Ó1°1Ñ4´R¸±U¸1±WÑ<¸aÑ?Ø	
ˆQ‰”—‘˜ð	ð_|ôb 
ˆU�1‰W‹�u ™d 5¨!¡8™mÑ,Ü	
�‰””R˜“Y“ ð	&ðc|ôf 
ŒS��q‘‹\Ó	˜E a¡4¨¨q©¡=Ñ1´$´r¸!±t¸A±v¸e±|Ó2DÑDØ	�‰”A—F‘F˜Cð	!ðg|ôj 
ˆU�1‰W‹�a‰œ˜e™g›Ü	
�‰””R˜“Y“ ð	&ðk|ôn 
ˆU�1‰W‹�q‰˜Ñ	œC  ! E¨1¡H¡*¨Q°©T¡/Ñ 1Ó2°1Ñ4Ü	
�‰�”3”r˜%“y“>Ñ! 3ð	(ðo|ôr 
ˆU�1‰W‹�q‰˜˜A™Ñ	Ø	Œt�A�e‘G˜A‘I‹Ñ	˜q¤ Q q¨°©¡z°!°Q±$¡Ñ%6Ó!7Ñ7¸Ñ9Ñ	9Ü	
�‰�”3”r˜%“y“>Ñ! 3ð	(ðs|ô@ 
ˆU�1‰W‹�q˜Q™$˜u a™x™-Ñ(Ü	
�‰””R˜“Y“ ð	&ðA|ôD 
ˆU�1‰W‹�q‰˜1˜a™4  %¨¡(¡
™?¨Q°©T°!°E¸1±H±*©_Ñ=¸aÑ?Ü	
�‰�”3”r˜%“y“>Ñ! 3ð	(ðE|ôP 
ˆQˆq‰S‹”#�a˜‘c“(Ñ	˜A˜a™C ™E !™G Q¨¡T¨1©3°©(¡]Ñ3°Q¸±T¸1¹3À¹(±]ÑCÜ	
�‰””R˜“U“œC¤ 1£›JÑ&¨ð	-ðQ|ôT 
ˆQˆq‰S‹”#�a˜‘c“(Ñ	˜A !™t A q¡D™y¨¨A©™~Ñ.°°1±°a±c¸A±X±Ñ>ÀÀ1ÁÀaÁcÈAÁXÁÑNÜ	
�‰””R˜“U“œC¤ 1£›JÑ&¨ð	-ðU|ôX 
ˆQˆq‰S‹”#�a˜‘c“(Ñ	˜A !™t A q¡D™y¨¨A©™~Ñ.°°1±°a±c¸A±X±Ñ>ÀÀ1ÁÀaÁcÈAÁXÁÑNÜ	
�‰””R˜“U“œC¤ 1£›JÑ&¨ð	-ðY|ô\ 
ˆa�‰c‹�A˜!‘t˜A˜q™D‘y‘MÜ	
�‰””R˜“U“˜Sð	"ð]|ô` 
ˆa�‰c‹�A˜!‘t˜A˜q™D‘y‘MÜ	
�‰””R˜“U“˜Sð	"ða|ôd 
ˆa�‰c‹�A‰�q˜˜A™‘v˜q !™t A a¨¡d¡F¨1¡H™}Ñ-Ü	
�‰�”3”r˜!“u“:‘˜sð	$ðe|ôh 
ˆa�‰c‹�A‰˜˜1™˜Q˜q !™t™V™ a¨¡d¨1¨Q°©T©6°!©8¡mÑ4Ü	
�‰�”3”r˜!“u“:‘˜sð	$ði|ôl 
ˆa�‰c‹�1‰”c˜1™3 ¡™+Ó& qÑ(Ü	
�‰””R˜“U“˜Sð	"ðm|ðp 
ˆA‰Œd�1�Q‘3‹i‰œ˜q ™s› A™¨©°¨r°!©t¡}°a±c¸a¸RÀ¹T±]Ñ'BÑCØ	
ˆR‰”�Q“˜ð	ðq|ðt 
ˆA‰Œd�1�Q‘3‹i‰œ˜q ™s› A™¨©°¨r°!©t¡}°a±c¸a¸RÀ¹T±]Ñ'BÑCØ	
ˆR‰”�Q“˜ð	ðu|ôb 
ˆQˆq‰S‹”3�q˜!‘t˜Q˜q™S 1™H‘}Ó%¤d¨1¨a°©c©7£mÑ3°AÑ5Ø	
Œ3Œs�1‹v‹;‰œÑ	œQŸV™V Sð	*ðc|ô~ 
��a‘C‹˜!™$¤ Q¨¡T¨!¨Q©$¡Y£°´4¸¸1¹¸QÀ¹T¹	³?Ñ1BÀQÑ0FÑ FÑGÜ	ˆA‹�‰”Sœ˜A›“Z ð	&ð|ðB 
ˆA‰Œg�a˜1™‹oÑ	Ø	
ˆA‰Œd”2‹h‰”u˜QœqŸv™v™X“Ñ	& q¡tÑ	+¨Q°©T°!°Q±$©Y¸1¸"¼Q¿V¹V¹)Ñ,DÑ	DÜ	ŒR�‹U”a—f‘f�W‰_œb ›hÓ	'¬¬R°«U«°Sð	:ðC|ðH 
ˆA‰Œg�a˜1™‹oÑ	Ø	
ˆQˆq‰S‰”$”r“(Ñ	œ5 ¤1 Q£4¨¡6¡›?Ñ	*¨1©4Ñ	/°Ñ	1°1°a±4¸¸1¹±9ÀÀÄ1ÀQÃ4ÈÁ6Á	Ñ2JÑ	JÜ	ŒR�‹U�R‰Zœ˜A ™s›Ó	$¤c¬"¨Q«%£j°#ð	7ðI|ôV 
��A”d˜1˜a™4  !¡™8“nÑ$Ó	%Ü	ˆQ‰S�”4˜˜1™˜Q ™T™	“?Ñ"Ñ"Ó	#¤D¨¨A©¨a°©d©£OÑ	3Ü	ŒS�‹V‹”rÑ	œ3œr !›u›: sð	,ðW|ô\ 
��a‘C‹˜!™$¤ Q¨¡T¨!¨Q©$¡Y£°´4¸¸1¹¸QÀ¹T¹	³?Ñ1BÀQÑ0FÑ FÑGÜ	ˆA‹�‰”Sœ˜A›“Z ð	&ð]|ð` 
ˆA‰Œg�a˜1™‹oÑ	Ø	
ˆA‰Œd”2‹h‰”u˜QœqŸv™v™X“Ñ	& q¡tÑ	+¨Q°©T°!°Q±$©Y¸1¸"¼Q¿V¹V¹)Ñ,DÑ	DÜ	ŒR�‹U”a—f‘f�W‰_œb ›hÓ	'¬¬R°«U«°Sð	:ða|ðf 
ˆA‰Œg�a˜1™‹oÑ	Ø	
ˆQˆq‰S‰”$”r“(Ñ	œ5 ¤1 Q£4¨¡6¡›?Ñ	*¨1©4Ñ	/°Ñ	1°1°a±4¸¸1¹±9ÀÀÄ1ÀQÃ4ÈÁ6Á	Ñ2JÑ	JÜ	ŒR�‹U�R‰Zœ˜A ™s›Ó	$¤c¬"¨Q«%£j°#ð	7ðg|ôp 
��A�a‘C‹˜"œR™%¤ a¡c£
Ñ*¬4°°1±°Q¸±T±	«?Ñ:Ü	
�‰””R˜“U“˜Sð	"ðq|ôt 
��A�a‘C‹œ#˜q¤4¨¨1©¨Q°©T©	£?Ñ2°AÑ5Ó6¼¸QÀ¹TÀ!ÀQÁ$¹Y»ÑHÜ	
�‰”"�Q“%�˜ð	ðu|Ððz # A qÐ(Ð(rq   c                 ó€  • [        SU/S9n[        SSS9nU R                  U5      nU(       a‘  XT   R                  S   R	                  U5      nUR                  " X1-  5      nU(       aV  Xs   R
                  (       aC  Xs   S:w  a;  [        S5        [        SXs   -  XT   R                  U5      -  XXs   -  SS	9u  p‰n
X‰U
4$ g
)zÎ
This function applies the time-scaling rule of the Laplace transform in
a straight-forward way. For example, if it gets ``(f(a*t), t, s)``, it will
compute ``LaplaceTransform(f(t)/a, t, s/a)`` if ``a>0``.
r‡   r÷   Úgra   )Únargsr   z     rule: time scaling (4.1.4)F©rî   N)	r    r   rÁ   rj   Úcollectr‹   rv   Ú_laplace_transformrm   )rí   rØ   r|   r‡   r  Úma1r#   Úma2rŽ   ÚprÚcrs              rn   Ú_laplace_rule_timescaler    s³   € ô 	ˆS˜1˜#Ñ€AÜ�S Ñ"€AØ
�'‰'�!‹*€CÞ
Ø‰f�k‰k˜!‰n×$Ñ$ QÓ'ˆØ�iŠi˜™‹nˆÞ�3‘6×%×%¨#©&°A«+ÜÐ4Ô5Ü*Ø�#‘&‘˜™Ÿ™ Q›Ñ'¨¨c©f©H¸uñF‰IˆA�2à˜2�;ÐØrq   c                 ó  • [        SU/S9n[        S5      n[        S5      nU R                  [        U5      U-  5      =n(       Ga9  Xd   R                  X-
  5      =n(       aŠ  Xs   R                  (       aE  [	        S5        [        Xe   R                  XXs   -   5      XSS9u  p‰n
[        Xs   * U-  5      U-  Xš4$ Xs   R                  (       a  [	        S5        [        Xe   XSS9u  p‰n
X‰U
4$ Xd   R                  X1-
  5      =n(       aw  Xs   R                  (       a3  [	        S	5        [        S
[        XU   -
  5      -
  Xe   -  XSS9u  p‰n
X‰U
4$ Xs   R                  (       a  [	        S5        SS[        R                  4$ g)aâ  
This function deals with time-shifted Heaviside step functions. If the time
shift is positive, it applies the time-shift rule of the Laplace transform.
For example, if it gets ``(Heaviside(t-a)*f(t), t, s)``, it will compute
``exp(-a*s)*LaplaceTransform(f(t+a), t, s)``.

If the time shift is negative, the Heaviside function is simply removed
as it means nothing to the Laplace transform.

The function does not remove a factor ``Heaviside(t)``; this is done by
the simple rules.
r‡   r÷   r�   r  z     rule: time shift (4.1.4)Fr	  z8     rule: Heaviside factor; negative time shift (4.1.4)z      rule: Heaviside window openra   z"     rule: Heaviside window closedr   N)r    rÁ   r;   r‹   rv   r  rÃ   r'   Úis_negativer   r‚   )rí   rØ   r|   r‡   r�   r  r  r  rŽ   r  r  s              rn   Ú_laplace_rule_heavisider  ,  sp  € ô 	ˆS˜1˜#Ñ€AÜˆS‹	€AÜˆS‹	€AØ�g‰g”i “l QÑ&Ó'Ð'€sÖ'Ø‘&—,‘,˜q™uÓ%Ð%ˆ3Õ%Ø‰v×!×!ÜÐ6Ô7Ü.Ø‘F—K‘K  s¡v¡:Ó.°¸uñF‘	��rä˜S™V˜G a™KÓ(¨1Ñ,¨bÐ5Ð5Ø‰v×!×!ÜØNôPä.¨s©v°qÀeÑL‘	��rØ˜r�{Ð"Ø‘&—,‘,˜q™uÓ%Ð%ˆ3Õ%Ø‰v×!×!ÜÐ9Ô:Ü.Øœ 1¨1¡v¡:Ó.Ñ.°#±&Ñ8¸!ÈñP‘	��rà˜r�{Ð"Ø‰v×!×!ÜÐ;Ô<Ø˜1œaŸf™f�~Ð%Ørq   c                 óH  • [        SU/S9n[        S5      n[        S5      nU R                  [        U5      U-  5      nU(       a]  Xd   R                  U5      R                  X1-  5      nU(       a2  [	        S5        [        Xe   XXs   -
  SS9u  p‰n
X‰[        Xs   5      -   U
4$ g)	a  
If this function finds a factor ``exp(a*t)``, it applies the
frequency-shift rule of the Laplace transform and adjusts the convergence
plane accordingly.  For example, if it gets ``(exp(-a*t)*f(t), t, s)``, it
will compute ``LaplaceTransform(f(t), t, s+a)``.
r‡   r÷   r�   Úzz$     rule: multiply with exp (4.1.5)Fr	  N)r    rÁ   r'   r
  rv   r  r!   )rí   rØ   r|   r‡   r�   r  r  r  rŽ   r  r  s              rn   Ú_laplace_rule_expr  V  s›   € ô 	ˆS˜1˜#Ñ€AÜˆS‹	€AÜˆS‹	€AØ
�'‰'”#�a“&˜‘(Ó
€CÞ
Ø‰f�n‰n˜QÓ×%Ñ% a¡cÓ*ˆÞÜÐ9Ô:Ü*¨3©6°1¸¹±hØ49ñ;‰IˆA�2àœ"˜S™V›*‘} bÐ)Ð)Ørq   c           
      ó~  • [        SU/S9n[        SU/S9n[        S5      n[        S5      nU R                  [        U5      U-  5      nU(       Gab  Xv   R                  [        5      (       GdE  Xu   R	                  U5      R                  XA-  U-
  5      nU(       Ga  [        S5        Xƒ   X„   -  n	[        U	5      S:¼  aÔ  [        U	5      S:X  aÅ  [        Xƒ   * X„   -  U-  5      Xv   -  n
U
R                  [        [        5      (       a#  U
R                  [        5      R                  5       n
U
R                  5        Vs/ s H  o»R                  XU   X„   -  5      PM     snu  pÍUS:w  a(  XÍ-  X„   -  [         R"                  [         R$                  4$ gS[         R"                  [         R$                  4$ Xu   R'                  U5      (       aæ  [)        Xu   U5      nU0 :w  aÒ  [+        UR-                  5       5      S	1:X  a´  [/        Xu   U5      n[1        [3        UR5                  5       5       Vs/ s HZ  n[        U5      S:X  d  M  [        U5      S:¼  d  M%  [        U* U-  5      Xv   R                  X5      -  UR                  X5      -  PM\     sn6 nU[         R"                  [         R$                  4$ gs  snf s  snf )
zÜ
If this function finds a factor ``DiracDelta(b*t-a)``, it applies the
masking property of the delta distribution. For example, if it gets
``(DiracDelta(t-a)*f(t), t, s)``, it will return
``(f(a)*exp(-a*s), -a, True)``.
r‡   r÷   r“   r�   r  z#     rule: multiply with DiracDeltar   Nra   )r    rÁ   r:   r€   r
  rv   r!   r"   r'   r3   r2   Úrewriter5   ÚratsimpÚas_numer_denomrÃ   r   rº   r‚   Úis_polynomialrQ   ÚsetÚvaluesr   r   rë   Úkeys)rí   rØ   r|   r‡   r“   r�   r  r  r  ÚlocÚfnrŒ   r†   rÔ   ÚroÚsloperŽ   s                    rn   Ú_laplace_rule_deltar#  m  sO  € ô 	ˆS˜1˜#Ñ€AÜˆS˜1˜#Ñ€AäˆS‹	€AÜˆS‹	€AØ
�'‰'”*˜Q“- ‘/Ó
"€Cß
�3‘6—:‘:œj×)Ò)Ø‰f�n‰n˜QÓ×%Ñ% a¡c¨!¡eÓ,ˆßÜÐ8Ô9Ø‘&˜™‘-ˆCÜ�#‹w˜!‹|¤ 3£¨1£Ü˜#™&˜ ¡™¨Ñ)Ó*¨3©6Ñ1�Ø—6‘6œ#œs×#Ñ#ð Ÿ™¤DÓ)×1Ñ1Ó3�BØ:<×:KÑ:KÔ:MÓNÒ:M°QŸ™˜q a¡&¨©¡-Ö0Ñ:MÑN‘�Ø˜“6Ø™C ¡™J¬×(:Ñ(:¼A¿F¹FÐCÐCààœ1×-Ñ-¬q¯v©vÐ6Ð6Ø‰6×Ñ ×"Ñ"Ü�s‘v˜qÓ!ˆBØ�R‹xœC §	¡	£Ó,°°Ó3Ü˜S™V Q›�Üä# B§G¡G£IœóMÚ.˜!´"°Q³%¸1±*ó CÜACÀAÃÈ!Áó C”c˜1˜"˜Q™$“i ¡§¡¨AÓ 1Ñ1°%·*±*¸QÓ2BÔBÙ.ñMðN�ð œ1×-Ñ-¬q¯v©vÐ6Ð6Øùò OùòMs   Ä?"J5È.J:ÉJ:É9J:c                 óJ  • [         R                  /n[         R                  /n[        R                  " U 5       HU  nUR	                  [
        [        [        [        [        5      (       a  UR                  U5        MD  UR                  U5        MW     [        U6 n[        U6 nXE4$ )zº
Helper function for `_laplace_rule_trig`.  This function returns two terms
`f` and `g`.  `f` contains all product terms with sin, cos, sinh, cosh in
them; `g` contains everything else.
)r   ÚOner   Ú	make_argsr€   r3   r2   r+   r)   r'   Úappend)r   ÚtrigsÚotherÚtermrí   r  s         rn   Ú_laplace_trig_splitr+  š  sw   € ô �U‰UˆG€EÜ�U‰UˆG€EÜ—’˜bÖ!ˆØ�8‰8”Cœœd¤D¬#×.Ñ.Ø�L‰L˜Öà�L‰L˜Öñ	 "ô
 	ˆUˆ€AÜˆUˆ€AØˆ4€Krq   c                 óx  • [        SU/S9n[        SU/S9n[        SU/S9n/ n/ nU R                  [        5      R                  5       n[        R
                  " U5       HÖ  nUR                  U5      (       d#  UR                  SUSS[        S[        S05        M<  [        UR                  SS	9U5      nUR                  U[        X!-  U-   5      -  5      =n	bK  UR                  SX”   [        X“   5      -  SX’   [        [        X’   5      [        [        X’   5      05        MÅ  UR                  U5        MØ     XV4$ )
a‡  
Helper function for `_laplace_rule_trig`.  This function expects the `f`
from `_laplace_trig_split`.  It returns two lists `xm` and `xn`.  `xm` is
a list of dictionaries with keys `k` and `a` representing a function
`k*exp(a*t)`.  `xn` is a list of all terms that cannot be brought into
that form, which may happen, e.g., when a trigonometric function has
another function in its argument.
Úc1r÷   Úc0rÉ   Úkr‡   r   r'   )Úcombine)r    r  r'   r   r   r&  r€   r'  r!   r"   rõ   ÚpowsimprÁ   )
rí   rØ   r-  r.  rÉ   ÚxmÚxnÚx1r*  rŽ   s
             rn   Ú_laplace_trig_expsumr5  ­  s  € ô 
ˆd˜Q˜CÑ	 €BÜ	ˆd˜Q˜CÑ	 €BÜˆS˜1˜#Ñ€AØ	€BØ	€Bà	
�‰”3‹×	Ñ	Ó	 €Bä—’˜bÖ!ˆØ�x‰x˜�{‰{Ø�I‰I�s˜D # q¬"¨a´°QÐ7Ô8ÙÜ$ T§\¡\¸% \Ð%@À!ÓDˆà—‘˜Aœc "¡$ r¡'›l™NÓ+Ð+ˆAÑ8Ø�I‰IØ�Q‘Tœ#˜a™e›*‘_ c¨1©5Ü”B�q‘u“Iœr¤2 a¡e£9ð.ö /ð �I‰I�dŽOñ "ð ˆ6€Mrq   c           	      óê  ^• / n/ nS mU4S jnU4S jnU4S jnU4S jnS n	[        U 5      S:”  Ga±  U R                  5       n
SnSnSn[        [        U 5      5       HÇ  nU
[           X   [           :H  nU
[           X   [           * :H  nU
[           X   [           :H  nU
[           X   [           * :H  nU(       a%  U(       a  U
[           S:w  a  U
[           S:w  a  UnM…  U(       a  U(       a  U
[           S:w  a  UnM¤  U(       d  M­  U(       d  M¶  U
[           S:w  d  MÅ  UnMÉ     Ub…  Ub‚  Ub  UR                  U" U
X   S	   X   S	   X   S	   U5      5        UR                  [        [        U
S
   5      5      5        X¼U/nUR                  SS9  U H  nU R                  U5        M     GO"UbH  UR                  U" X U   S	   U5      5        UR                  U
[           5        U R                  U5        O×UbQ  UR                  U" X U   S	   U5      5        UR                  [        U
[           5      5        U R                  U5        OƒUbQ  UR                  U" X U   S	   U5      5        UR                  [        U
[           5      5        U R                  U5        O/UR                  U	" X¢5      5        UR                  U
[           5        [        U 5      S:”  a  GM±  [        U6 [        U6 4$ )zð
Helper function for `_laplace_rule_trig`.  This function takes the list of
exponentials `xm` from `_laplace_trig_expsum` and simplifies complex
conjugate and real symmetric poles.  It returns the result as a sum and
the convergence plane.
c                 ó>  • U R                  5       n[        [        U5      5       Ht  nX   R                  5       nUS   R	                  [
        5      (       a  X   R                  [        5      X'   MM  US   [        US   -  -   R                  [        5      X'   Mv     U$ rà   )	ÚcopyÚrangeÚlenr·   r€   r"   r  r2   r   )ÚcoeffsÚncr/  Úris       rn   Ú_simpcÚ"_laplace_trig_ltex.<locals>._simpcÙ  s{   € Ø�[‰[‹]ˆÜ”s˜2“w–ˆAØ‘×#Ñ#Ó%ˆBØ�!‰u�y‰yœ�}‰}Ø™Ÿ™¤cÓ*�“à˜A™¤ 2 a¡5¡™×1Ñ1´#Ó6�“ñ  ð ˆ	rq   c           
      ó  >• U S   U S   U [            U [           4u  pVpxXa-   U-   U-   XVU-   U-
  U-
  -  S[        -  U-  U-  -
  S[        -  U-  U-  -   US-  U* U-
  U-
  U-
  -  US[        -  U-  U-  S[        -  U-  U-  -   -  -   SUS-  -  U-  -   SUS-  -  U-  -   US-  U* U-
  U-   U-   -  US-  S[        -  U-  U-  S[        -  U-  U-  -   S[        -  U-  U-  -
  S[        -  U-  U-  -
  -  -   USUS-  -  U-  SUS-  -  U-  -
  -  -   /n	[        R                  [        R
                  SUS-  -  SUS-  -  -
  [        R
                  US-  SUS-  -  US-  -  -   US-  -   /n
[        [        T" U	5      [        [        U	5      5      S S S2   5       VVs/ s H  u  p¼X´U-  -  PM     snn6 n[        [        U
[        [        U
5      5      S S S2   5       VVs/ s H  u  p¼X´U-  -  PM     snn6 nXÞ-  $ s  snnf s  snnf )Nr‡   r/  r®   rÿ   rý   rþ   )
r!   r"   r   r   r%  rè   r   Úzipr9  r:  )Út1Úk1Úk2Úk3r|   r‡   Úk0Úa_rÚa_ir<  ÚdcrŒ   r�   r†   rÔ   r>  s                  €rn   Ú	_quadpoleÚ%_laplace_trig_ltex.<locals>._quadpoleã  s`  ø€ Ø˜S™' 2 c¡7¨B¬r©F°B´r±FÐ:‰ˆˆsà‰G�b‰L˜2ÑØ�B‰w˜‰|˜bÑ Ñ! A¤a¡C¨¡G¨B¡JÑ.°´1±°S±¸±Ñ;à�1‘�r�c˜B‘h ‘m bÑ(Ñ)Ø�1”Q‘3�s‘7˜2‘: ¤!¡ C¡¨¡
Ñ*Ñ+ñ,à�#�q‘&‘˜‘ñà  Q¡™h r™kñ*ð �1‘�r�c˜B‘h ‘m bÑ(Ñ)Ø�1‘�aœ‘c˜#‘g˜b‘j 1¤Q¡3 s¡7¨2¡:Ñ-°´!±°C±¸±
Ñ:¸Q¼q¹SÀ¹WÀR¹ZÑGÑHñIà�1�S˜!‘V‘8˜B‘;  3¨¡6¡¨"¡Ñ,Ñ-ñ.ð
ˆô �E‰E”1—6‘6˜1˜S !™V™8 a¨¨Q©¡hÑ.Ü�F‰F�C˜‘F˜Q˜s A™v™X c¨1¡f™_Ñ,¨s°A©vÑ5ð7ˆô Ü!$¡V¨B£Z´´s¸2³w³ÁÀ"ÀÑ1EÔ!FÔGÒ!F™˜ˆa�1‘ŒfÑ!FÒGðIˆäÜ!$ R¬¬s°2«w«¹¸"¸Ñ)=Ô!>Ô?Ò!>™˜ˆa�1‘ŒfÑ!>Ò?ðAˆà‰sˆ
ùó Hùã?s   ÆG>
Ç"H
c           
      óö  >• U S   U S   U [            U [           4u  p4pVXA-   U* U-  X1-  -
  S[        -  U-  U-  -   /n[        R                  SU-  US-  US-  -   /n[        [        T" U5      [        [        U5      5      S S S2   5       V	V
s/ s H  u  pšX’U
-  -  PM     sn
n	6 n[        [        U[        [        U5      5      S S S2   5       V	V
s/ s H  u  pšX’U
-  -  PM     sn
n	6 nX¼-  $ s  sn
n	f s  sn
n	f ©Nr‡   r/  r®   r   rþ   ©	r!   r"   r   r   r%  r   rA  r9  r:  )rB  rC  r|   r‡   rF  rG  rH  r<  rI  rŒ   r�   r†   rÔ   r>  s                €rn   Ú_ccpoleÚ#_laplace_trig_ltex.<locals>._ccpoleú  s   ø€ Ø˜S™' 2 c¡7¨B¬r©F°B´r±FÐ:‰ˆˆsØ‰g˜�r˜"‘u˜q™t‘| a¬¡c¨#¡g¨b¡jÑ0Ð1ˆÜ�e‰e�R˜‘V˜S !™V c¨1¡f™_Ð-ˆÜÜ!$¡V¨B£Z´´s¸2³w³ÁÀ"ÀÑ1EÔ!FÔGÒ!F™˜ˆa�1‘ŒfÑ!FÒGðIˆäÜ!$ R¬¬s°2«w«¹¸"¸Ñ)=Ô!>Ô?Ò!>™˜ˆa�1‘ŒfÑ!>Ò?ðAˆà‰sˆ
ùó Hùã?s   ÂC/
ÃC5
c           
      ó  >• U S   U S   U [            U [           4u  p4pVXA-   X4-  X1-  -
  S[        -  U-  U-  -
  /n[        R                  S[        -  U-  US-  * US-  -
  /n[        [        T" U5      [        [        U5      5      S S S2   5       V	V
s/ s H  u  pšX’U
-  -  PM     sn
n	6 n[        [        U[        [        U5      5      S S S2   5       V	V
s/ s H  u  pšX’U
-  -  PM     sn
n	6 nX¼-  $ s  sn
n	f s  sn
n	f rM  rN  )rB  rD  r|   r‡   rF  rG  rH  r<  rI  rŒ   r�   r†   rÔ   r>  s                €rn   Ú_rspoleÚ#_laplace_trig_ltex.<locals>._rspole  s  ø€ Ø˜S™' 2 c¡7¨B¬r©F°B´r±FÐ:‰ˆˆsØ‰g�q‘t˜a™d‘{ Q¤q¡S¨¡W¨R¡ZÑ/Ð0ˆÜ�e‰e�Rœ‘T˜#‘X  Q¡˜w¨¨a©Ñ/Ð0ˆÜÜ!$¡V¨B£Z´´s¸2³w³ÁÀ"ÀÑ1EÔ!FÔGÒ!F™˜ˆa�1‘ŒfÑ!FÒGðIˆäÜ!$ R¬¬s°2«w«¹¸"¸Ñ)=Ô!>Ô?Ò!>™˜ˆa�1‘ŒfÑ!>Ò?ðAˆà‰sˆ
ùó Hùã?s   ÂC5
ÃC;
c           
      ó²  >• U S   U S   pCXA-   X4U-
  -  /n[         R                  [         R                  US-  * /n[        [	        T" U5      [        [        U5      5      S S S2   5       VVs/ s H  u  pxXrU-  -  PM     snn6 n	[        [	        U[        [        U5      5      S S S2   5       VVs/ s H  u  pxXrU-  -  PM     snn6 n
Xš-  $ s  snnf s  snnf )Nr‡   r/  r®   rþ   )r   r%  rè   r   rA  r9  r:  )rB  rE  r|   r‡   rF  r<  rI  rŒ   r�   r†   rÔ   r>  s              €rn   Ú_sypoleÚ#_laplace_trig_ltex.<locals>._sypole  sÐ   ø€ Ø�3‘˜˜C™ˆ2Ø‰g�q˜r™'‘{Ð#ˆÜ�e‰e”Q—V‘V˜a ™d˜UÐ#ˆÜÜ!$¡V¨B£Z´´s¸2³w³ÁÀ"ÀÑ1EÔ!FÔGÒ!F™˜ˆa�1‘ŒfÑ!FÒGðIˆäÜ!$ R¬¬s°2«w«¹¸"¸Ñ)=Ô!>Ô?Ò!>™˜ˆa�1‘ŒfÑ!>Ò?ðAˆà‰sˆ
ùó Hùã?s   Á-C
Â1C
c                 ó(   • U S   U S   p2UnX-
  nXE-  $ )Nr‡   r/  rr   )rB  r|   r‡   rF  r†   rÔ   s         rn   Ú_simplepoleÚ'_laplace_trig_ltex.<locals>._simplepole  s$   € Ø�3‘˜˜C™ˆ2ØˆØ‰EˆØ‰sˆ
rq   r   Nr/  r‡   T)Úreverse)
r:  Úpopr9  r!   r"   r'  r$   rì   r   r-   )r2  rØ   r|   ÚresultsÚplanesrJ  rO  rR  rU  rX  rB  Ú	i_imagsymÚ	i_realsymÚ
i_pointsymÚiÚreal_eqÚrealsymÚimag_eqÚimagsymÚindices_to_popr>  s                       @rn   Ú_laplace_trig_ltexrg  Î  s¢  ø€ ð €GØ€Fòõõ.õõòô ˆb‹'�AŒ+Ø�V‰V‹XˆØˆ	Øˆ	Øˆ
ô
 ”s˜2“w–ˆAØœ‘f ¡¤b¡	Ñ)ˆGØœ‘f ¡¤r¡ 
Ñ*ˆGØœ‘f ¡¤b¡	Ñ)ˆGØœ‘f ¡¤r¡ 
Ñ*ˆGÞž7 r¬"¡v°£{°r¼"±vÀ³{Ø’
ÞžW¨¬B©°1«Ø’	ß�ŸW˜W¨¬B©°1­Ø’	ñ  ð( Ñ%¨)Ñ*?ØÑ*Ø�N‰NÙ˜"Ø™-¨Ñ,¨b©m¸CÑ.@Ø™.¨Ñ-¨qó2ô3ð �M‰Mœ#œb  C¡›kÓ*Ô+ð (°JÐ?ˆNØ×Ñ¨ÐÑ-Û#�Ø—‘�q–	ó $àÑ"Ø�N‰N™7 2¨)¡}°SÑ'9¸1Ó=Ô>Ø�M‰M˜"œR™&Ô!Ø�F‰F�9ÕØÑ"Ø�N‰N™7 2¨)¡}°SÑ'9¸1Ó=Ô>Ø�M‰Mœ#˜b¤™f›+Ô&Ø�F‰F�9ÕØÑ#Ø�N‰N™7 2¨*¡~°cÑ':¸AÓ>Ô?Ø�M‰Mœ#˜b¤™f›+Ô&Ø�F‰F�:Õà�N‰N™; rÓ-Ô.Ø�M‰M˜"œR™&Ô!ôq ˆb‹'�AŽ+ôt �ˆ=œ#˜v˜,Ð&Ð&rq   c           
      ó\  • [        SSS9nU R                  [        [        [        [
        5      (       d  g[        U R                  X5      5      u  pE[        XC5      u  pg[        U5      S:”  a  gUR                  U5      (       d#  [        XcU5      u  p‰XX-  U	[        R                  4$ / n
/ n[        XSUSS9u  pÍnU HO  nUR                  US   UR                  X"US	   -
  5      -  5        U
R                  U[        US	   5      -   5        MQ     [!        U6 R                  X15      [#        U
6 U4$ )
z¥
This rule covers trigonometric factors by splitting everything into a
sum of exponential functions and collecting complex conjugate poles and
real symmetric poles.
rØ   T©ÚrealNr   Fr	  r/  r‡   )r   r€   r3   r2   r+   r)   r+  rÃ   r5  r:  rg  r   r‚   r  r'  r!   r   r-   )r   Út_r|   rØ   rí   r  r2  r3  rŽ   rÉ   r]  r\  ÚGÚG_planeÚG_condr4  s                   rn   Ú_laplace_rule_trigro  [  s  € ô 	ˆc˜Ñ€Aà�6‰6”#”sœD¤$×'Ñ'Øä˜rŸw™w r›~Ó.�D€AÜ! !Ó'�F€Bä
ˆ2ƒw�ƒ{àà�5‰5��8‰8Ü! "¨Ó+‰ˆØ‰s�A”q—v‘vˆ~Ðð ˆØˆÜ/°°aÀ%ÑHÑˆ�FÛˆBØ�N‰N˜2˜c™7 1§6¡6¨!¨r°#©w©YÓ#7Ñ7Ô8Ø�M‰M˜'¤" R¨¡W£+Ñ-Ö.ñ ô �ˆ=×Ñ˜aÓ$¤c¨6 l°FÐ:Ð:rq   c                 ó€  • [        SU/S9n[        SU/S9n[        S5      nU R                  U[        XQU45      -  5      nU(       aò  Xd   R                  (       aß  Xe   R
                   Vs/ s H  owR                  U5      PM     nn[        U5      S:X  a¤  [        S5        / n	[        Xd   5       H\  n
U
S:X  a  Xe   R                  US5      nO[        Xe   X45      R                  US5      nU	R                  X&U   U
-
  S-
  -  U-  5        M^     [        Xe   XSS	9u  pÍnXc   X&U   -  U-  [        U	6 -
  -  XÞ4$ g
s  snf )zø
This function looks for derivatives in the time domain and replaces it
by factors of `s` and initial conditions in the frequency domain. For
example, if it gets ``(diff(f(t), t), t, s)``, it will compute
``s*LaplaceTransform(f(t), t, s) - f(0)``.
r‡   r÷   r†   r  ra   z"     rule: time derivative (4.1.8)r   Fr	  N)r    r   rÁ   r
   Ú
is_integerrj   r€   Úsumrv   r9  rÃ   r'  r  r   )rí   rØ   r|   r‡   r†   r  r  r  r²   rÔ   r/  r�   rŽ   r  r  s                  rn   Ú_laplace_rule_diffrs  |  s4  € ô 	ˆS˜1˜#Ñ€AÜˆS˜1˜#Ñ€AÜ�SÓ€AØ
�'‰'�!”J˜q a &Ó)Ñ)Ó
*€CÞ
ˆs‰v× × Ø"™vŸ{š{Ó+š{˜!�U‰U�1ŽX™{ˆÐ+Üˆq‹6�Q‹;ÜÐ7Ô8ØˆAÜ˜3™6–]�Ø˜“6Ø™Ÿ™ A qÓ)‘Aä" 3¡6¨A¨6Ó2×7Ñ7¸¸1Ó=�AØ—‘˜ ™V A™X a™Z™¨Ñ*Ö+ñ #ô +¨3©6°1À%ÑH‰IˆA�2Ø‘F˜A 1™v™I a™K¬#¨q¨'Ñ1Ñ2°RÐ<Ð<Øùò ,s   Á+D;c           
      óÈ  • U R                   (       Ga°  S/nS/n[        R                  " U 5       H=  nUR                  U5      (       a  UR	                  U5        M,  UR	                  U5        M?     [        U5      S:”  GaC  [        U5      n[        Xa5      R                  5       n[        U5      nUS:”  Ga  [        U5      n	[        X‘USS9u  p«nU
/nSn [        US   U5      * nU
R                  [        5      (       a=  [        US-
  5       H*  nUR	                  SUS-   -  [        X¢US-   5      -  5        M,     OLU(       aE  UR	                  U5        [        US-
  5       H"  nUR	                  [        US   U5      * 5        M$     U(       a4  [!        [        U5       Vs/ s H  nXxU-
  S-
     UU   -  PM     sn6 nUX¼4$ [#        SU/S9n[#        S5      nU R%                  UU-  U-  5      =n(       aT  UU   R&                  (       a@  UU   R(                  (       a,  [        UU   XSS9u  p«nSUU   -  [        X¢UU   45      -  X¼4$ g	! [         a    Sn GNvf = fs  snf )
zï
This function looks for multiplications with polynoimials in `t` as they
correspond to differentiation in the frequency domain. For example, if it
gets ``(t*f(t), t, s)``, it will compute
``-Derivative(LaplaceTransform(f(t), t, s), s)``.
ra   Fr	  rþ   r®   r†   r÷   r  N)Úis_Mulr   r&  r  r'  r:  r   rR   Ú
all_coeffsr  r   Ú
ValueErrorr€   ÚLaplaceTransformr9  r
   r   r    rÁ   rq  r‹   )rí   rØ   r|   ÚpfacÚofacÚfacÚpexÚpcÚNÚoexÚr_Úp_Úc_ÚderiÚd1r/  r†   rŽ   r  r  s                       rn   Ú_laplace_rule_sdiffr…  ™  s3  € ð 	‡x‡x€xØˆsˆØˆsˆÜ—=’= Ö#ˆCØ× Ñ  ×#Ñ#Ø—‘˜CÖ à—‘˜CÖ ñ	 $ô
 ˆt‹9�qŒ=Ü�t“*ˆCÜ�c“×(Ñ(Ó*ˆBÜ�B“ˆAØ�1ŒuÜ˜4“j�Ü/°¸ÀEÑJ‘
�˜Ø�t�Ø�ðÜ˜t B™x¨Ó+Ð+�Bð —6‘6Ô*×+Ñ+Ü" 1 Q¡3žZ˜ØŸ™ R¨1¨Q©3¡K´
¸2À!ÀAÁ#Ó0FÑ$FÖGò (æØ—K‘K ”OÜ" 1 Q¡3žZ˜ØŸ™¤T¨$¨r©(°AÓ%6Ð$6Ö7ñ (æÜ¼¸q¼ÓBº°A˜b 1¡ Q¡™i¨¨Q©Ô/¹ÑBÐC�AØ˜r˜;Ð&ô 	ˆS˜1˜#Ñ€AÜˆS‹	€AØ�g‰g�a˜‘d˜1‘f‹oÐ€sÕØˆq‰6××  Q¡×!3×!3Ü+¨C°©F°AÀ5ÑI‰JˆB�BØ˜˜Q™‘<¤ R¨S°©V¨Ó 5Ñ5°rÐ=Ð=Øøô) "ó Ø“Bðüò Cs   ÃI Æ!IÉIÉIc                 ól  • [        U SS9nUR                  (       a  [        X1USS9$ [        U 5      nUR                  (       a  [        X1USS9$ [        U 5      nUR                  (       a  [        X1USS9$ X0:w  a  [        X1USS9$ [        [	        U 5      5      nUR                  (       a  [        X1USS9$ g)aj  
This function tries to expand its argument with successively stronger
methods: first it will expand on the top level, then it will expand any
multiplications in depth, then it will try all available expansion methods,
and finally it will try to expand trigonometric functions.

If it can expand, it will then compute the Laplace transform of the
expanded term.
F©Údeepr	  N)r   Úis_Addr  r   r   )rí   rØ   r|   rŽ   s       rn   Ú_laplace_expandrŠ  Ì  sŸ   € ô 	ˆq�uÑ€AØ‡x‡xÜ! !¨°EÑ:Ð:Ü�1‹€AØ‡x‡xÜ! !¨°EÑ:Ð:Üˆq‹	€AØ‡x‡xÜ! !¨°EÑ:Ð:ØƒvÜ! !¨°EÑ:Ð:ÜŒ{˜1‹~Ó€AØ‡x‡xÜ! !¨°EÑ:Ð:Ørq   c                 ó€   • [         [        [        [        [        [
        [        /nU H  nU" XU5      =nc  M  Us  $    g)z_
This function applies all program rules and returns the result if one
of them gives a result.
N)r  r#  r  r  ro  rs  r…  )rí   rØ   r|   Ú
prog_rulesÚp_ruleÚLs         rn   Ú_laplace_apply_prog_rulesr�  é  sG   € ô *Ô+>Ü)Ô+<Ü$Ü$Ô&9ð;€Jó
 ˆÙ˜˜a“Ð ˆAÓ-ØŠHñ ð rq   c                 ó¦  • [        5       u  p4nSnSnU H©  u  p‰p«nXl:w  a  U" U R                  X05      5      nUnUR                  U5      nU(       d  M@   U
R                  U5      nU[
        R                  :X  d  Mh  U	R                  U5      R                  XR05      UR                  U5      [
        R                  4s  $    g! [         a     M»  f = f)z^
This function applies all simple rules and returns the result if one
of them gives a result.
Ú N)r  rÃ   rÁ   Úxreplacerƒ   r   r‚   )rí   rØ   r|   Úsimple_rulesrk  rå   Úprep_oldÚprep_fÚt_domÚs_domÚcheckÚplaneÚprepÚmarÑ   s                  rn   Ú_laplace_apply_simple_rulesrœ  û  sÎ   € ô 0Ó1Ñ€L�bØ€HØ€FÛ,8Ñ(ˆ�e DØÓÙ˜!Ÿ&™& ! ›/Ó*ˆFØˆHØ�\‰\˜%Ó ˆßˆ2ðØ—N‘N 2Ó&�ð
 ”A—F‘F�{ØŸ™ rÓ*×/Ñ/°°Ó8ØŸ™ rÓ*¬A¯F©Fð4ò 4ñ -9ð øô ó ò ðús   ÁCÃ
CÃCc                 ó�  • UR                   (       d6  [        SSS9n[        U R                  X05      U5      R                  X!05      $ [	        U 5      n/ nUR
                   GHÚ  u  pE[        U[        5      (       ad  XR
                  ;   aU  [        U[        [        45      (       a  U s  $ UR                  [        UR                  UR                  -
  5      U-  5        M  [        U[        5      (       ay  [        UR
                  5      S:X  a`  UR
                   HM  nUR                   U:X  a6  UR                  [        UR                  UR                  -
  5      U-  5        MI  U s  s  $    GM  [        U["        5      (       a·  [        UR
                  5      S:X  až  UR
                  u  pxUR                   U:X  a|  UR                   U:X  al  SUR$                  ;   a  X‡p‡UR                  [        UR                  UR                  -
  5      [        UR                  UR                  -
  5      -
  U-  5        GMÕ  U s  $ U s  $    ['        U6 $ )zœ
This function converts a Piecewise expression to an expression written
with Heaviside. It is not exact, but valid in the context of the Laplace
transform.
rŽ   Tri  r®   Ú>)Úis_realr   Ú_piecewise_to_heavisider’  r1   rj   r�   r   r   r   r'  r;   ÚgtsrÅ   rL   r:  ÚlhsrM   rÄ   r   )	rí   rØ   rŽ   rŒ   r   rð   Úc2r.  r-  s	            rn   r   r     s²  € ð �9�9Ü�#˜DÑ!ˆÜ& q§z¡z°1°&Ó'9¸1Ó=×FÑFÈÀvÓNÐNÜ˜AÓ€AØ
€AØ—F•F‰ˆô �dœJ×'Ñ'¨A·±«NÜ˜$¤¤R ×)Ñ)ð
 ’à—‘œ 4§8¡8¨d¯h©hÑ#6Ó7¸Ñ:Ö;Ü˜œb×!Ñ!¤c¨$¯)©)£n¸Ó&9à—i”i�Ø—6‘6˜Q“;Ø—H‘HœY r§v¡v°·±¡Ó7¸Ñ:Ö;à”Hô	  ô
 ˜œc×"Ñ"¤s¨4¯9©9£~¸Ó':à—Y‘Y‰FˆBØ�v‰v˜‹{˜rŸv™v¨›{Ø˜"Ÿ)™)Ó#Ø˜Ø—‘Ü˜rŸv™v¨¯©™Ó/Ü˜rŸv™v¨¯©™Ó/ñ0Ø13ñ4÷5ð ’àŠHñA ôB �ˆ7€Nrq   c          	      óˆ  • [        S5      n[        S5      n[        S5      n[        S5      n[        U [        5      (       a4  U R                  [        5      (       d  U R                  [
        5      (       d  U $ UR                  5        H}  u  pgU R                  [	        U" U5      XC5      5      =nb  X…   X„   :X  a  U" Xƒ   5      s  $ U R                  [        U" U5      X4U5      5      =n c  Mg  X…   Xƒ   :X  d  Ms  U" X„   5      s  $    U R                  n	U R                   V
s/ s H  n
[        X¡5      PM     nn
U	" U6 $ s  sn
f )a�  
This helper function takes a function `f` that is the result of a
``laplace_transform`` or an ``inverse_laplace_transform``.  It replaces all
unevaluated ``LaplaceTransform(y(t), t, s)`` by `Y(s)` for any `s` and
all ``InverseLaplaceTransform(Y(s), s, t)`` by `y(t)` for any `t` if
``fdict`` contains a correspondence ``{y: Y}``.

Parameters
==========

f : sympy expression
    Expression containing unevaluated ``LaplaceTransform`` or
    ``LaplaceTransform`` objects.
fdict : dictionary
    Dictionary containing one or more function correspondences,
    e.g., ``{x: X, y: Y}`` meaning that ``X`` and ``Y`` are the
    Laplace transforms of ``x`` and ``y``, respectively.

Examples
========

>>> from sympy import laplace_transform, diff, Function
>>> from sympy import laplace_correspondence, inverse_laplace_transform
>>> from sympy.abc import t, s
>>> y = Function("y")
>>> Y = Function("Y")
>>> z = Function("z")
>>> Z = Function("Z")
>>> f = laplace_transform(diff(y(t), t, 1) + z(t), t, s, noconds=True)
>>> laplace_correspondence(f, {y: Y, z: Z})
s*Y(s) + Z(s) - y(0)
>>> f = inverse_laplace_transform(Y(s), s, t)
>>> laplace_correspondence(f, {y: Y})
y(t)
rÉ   r|   rØ   r‡   )r    r�   r   r€   rx  ÚInverseLaplaceTransformÚitemsrÁ   rm   rj   Úlaplace_correspondence)rí   ÚfdictrÉ   r|   rØ   r‡   r�   ÚYr²   rm   r#   rj   s               rn   r§  r§  F  s  € ôH 	ˆS‹	€AÜˆS‹	€AÜˆS‹	€AÜˆS‹	€Aä˜1œd×#Ñ#Ø—E‘EÔ*×+Ñ+ØŸ™Ô5×6Ñ6ØˆØ—‘–‰ˆà—g‘gÔ.©q°«t°QÓ:Ó;Ð;�ÑHØ‘D˜A™D“LÙ�Q‘T“7ŠNà—g‘gÔ5±a¸³d¸AÀ!ÓDÓEÐE�Øóà‘D˜A™D•LÙ�Q‘T“7ŠNñ ð �6‰6€DØ:;¿&º&ÓAº&°3Ô" 3Ö.¹&€DÐAÙ�ˆ;Ðùò Bs   Ä#D?c                ó„  • UR                  5        H«  u  p4[        [        U5      5       HŽ  nUS:X  a  U R                  U" S5      US   5      n M&  US:X  a2  U R                  [	        [        U" U5      U5      US5      US   5      n M^  U R                  [	        [        U" U5      X45      US5      XE   5      n M�     M­     U $ )a¡  
This helper function takes a function `f` that is the result of a
``laplace_transform``.  It takes an fdict of the form ``{y: [1, 4, 2]}``,
where the values in the list are the initial value, the initial slope, the
initial second derivative, etc., of the function `y(t)`, and replaces all
unevaluated initial conditions.

Parameters
==========

f : sympy expression
    Expression containing initial conditions of unevaluated functions.
t : sympy expression
    Variable for which the initial conditions are to be applied.
fdict : dictionary
    Dictionary containing a list of initial conditions for every
    function, e.g., ``{y: [0, 1, 2], x: [3, 4, 5]}``. The order
    of derivatives is ascending, so `0`, `1`, `2` are `y(0)`, `y'(0)`,
    and `y''(0)`, respectively.

Examples
========

>>> from sympy import laplace_transform, diff, Function
>>> from sympy import laplace_correspondence, laplace_initial_conds
>>> from sympy.abc import t, s
>>> y = Function("y")
>>> Y = Function("Y")
>>> f = laplace_transform(diff(y(t), t, 3), t, s, noconds=True)
>>> g = laplace_correspondence(f, {y: Y})
>>> laplace_initial_conds(g, t, {y: [2, 4, 8, 16, 32]})
s**3*Y(s) - 2*s**2 - 4*s - 8
r   ra   )r¦  r9  r:  r˜   r   r
   )rí   rØ   r¨  r�   Úicr/  s         rn   Úlaplace_initial_condsr¬  ‚  s¦   € ðD —‘–‰ˆÜ”s˜2“w–ˆAØ�A‹vØ—I‘I™a ›d B q¡EÓ*’Ø�a“Ø—I‘Iœd¤:©a°«d°AÓ#6¸¸1Ó=¸rÀ!¹uÓE’à—I‘Iœd¤:©a°«d°Q°FÓ#;¸QÀÓBÀBÁEÓJ’ó  ñ ð €Hrq   c                ó  ^• [         R                  " U 5      n/ n/ n/ n/ nU GH#  n	U	R                  TSS9u  p«UR                  [        5      (       a[  [         R                  " UR                  [        5      5      nU H*  nUR                  TSS9u  pïUR                  X®-  U45        M,     M‹  UR                  [        :X  ar  UR                  [        T5      5      (       dS  [         R                  " [        UT5      5      nU H*  nUR                  TSS9u  pïUR                  X®-  U45        M,     GM  UR                  X«45        GM&     U GH‚  u  p«UR                  [        5      (       a   [        UTU5      [        R                  S4nGOUR                  [        T5      5      (       a:  UR                  [        T5      5      (       d  UR                  [        T5      S5      n[!        UTU5      =n c!  [#        UTU5      =n c  [%        UTU5      =nb  Oz['        U4S jUR)                  [*        5       5       5      (       a  [        UTU5      [        R                  S4nO.[-        UTX#S9=n b  O[        UTU5      [        R                  S4nUu  nnnUR                  U
U-  5        UR                  U5        UR                  U5        GM…     [        U6 nU(       a  UR/                  SS9n[1        U6 n[3        U6 nUUU4$ )z’
Front-end function of the Laplace transform. It tries to apply all known
rules recursively, and if everything else fails, it tries to integrate.
F©Úas_AddTra   c              3   óD   >#   • U  H  oR                  T5      v •  M     g 7fr�   ©r€   )r°   Úundefrk  s     €rn   r³   Ú%_laplace_transform.<locals>.<genexpr>Û  s   øé € ÐGÒ0F u—Y‘Y˜r—]�]Ò0Fùó   ƒ r	  ©Údoit)r   r&  Úas_independentr€   rC   r  r;   r'  rm   r0   r:   r   rx  r   rº   rÃ   rœ  r�  rŠ  Úanyr¤   r	   rb   rî   r-   rM   )r   rk  rå   rî   Úterms_tÚterms_sÚtermsr]  Ú
conditionsÚffr/  ÚftÚ_termsÚ_termrC  Úf1rŽ   Úri_Úpi_Úci_rl   r™  Ú	conditions    `                     rn   r  r  ¯  s¿  ø€ ô �mŠm˜BÓ€GØ€GØ€EØ€FØ€JäˆØ×!Ñ! "¨UÐ!Ð3‰ˆØ�6‰6Ô%×&Ñ&Ü—]’] 2§:¡:¬iÓ#8Ó9ˆFÛ�Ø×-Ñ-¨b¸Ð-Ð?‘�Ø—‘˜a™d B˜ZÖ(ó  ð �W‰Wœ	Ó!¨"¯&©&´¸B³×*@Ñ*@Ü—]’]Ô#:¸2¸rÓ#BÓCˆFÛ�Ø×-Ñ-¨b¸Ð-Ð?‘�Ø—‘˜a™d B˜ZÖ(ô  ð �L‰L˜!˜×!ñ ô ‰ˆØ�6‰6Ô%×&Ñ&Ü! " b¨"Ó-¬q×/AÑ/AÀ4ÐHŠAà�v‰v”i “m×$Ñ$¨R¯V©V´J¸r³N×-CÑ-Cð —W‘WœY r›]¨AÓ.�ä5°b¸"¸bÓAÐA�QØñ ä3°B¸¸BÓ?Ð?�QØñ ä)¨"¨b°"Ó5Ð5�QÑBØÜÔG°·±¼Ô0FÓG×GÑGô & b¨"¨bÓ1´1×3EÑ3EÀtÐL‘Ü5Ø˜˜Bñ3ð 3�!Ø;?ñ@àä% b¨"¨bÓ1´1×3EÑ3EÀtÐL�Ø‰ˆˆc�3Ø�‰�q˜‘uÔØ�‰�cÔØ×Ñ˜#×ñ; ô> �'ˆ]€FÞØ—‘ e�Ð,ˆÜ�ˆL€EÜ�ZÐ €Ià�5˜)Ð#Ð#rq   c                   ó.   • \ rS rSrSrSrS rS rS rSr	g)	rx  ió  a°  
Class representing unevaluated Laplace transforms.

For usage of this class, see the :class:`IntegralTransform` docstring.

For how to compute Laplace transforms, see the :func:`laplace_transform`
docstring.

If this is called with ``.doit()``, it returns the Laplace transform as an
expression. If it is called with ``.doit(noconds=False)``, it returns a
tuple containing the same expression, a convergence plane, and conditions.
ÚLaplacec                 ó>   • UR                  SS5      n[        XX5S9nU$ )Nrî   Fr	  )Úgetrb   )Úselfrí   rØ   r|   ÚhintsrF   ÚLTs          rn   Ú_compute_transformÚ#LaplaceTransform._compute_transform  s#   € Ø—I‘I˜j¨%Ó0ˆ	Ü+¨A°!ÑHˆØˆ	rq   c                 óx   • [        U[        U* U-  5      -  U[        R                  [        R                  45      $ r�   )rE   r'   r   rè   r»   )rÊ  rí   rØ   r|   s       rn   Ú_as_integralÚLaplaceTransform._as_integral  s,   € Ü˜œ#˜q˜b ™d›)™ a¬¯©´·±Ð%<Ó=Ð=rq   c                 ó  • UR                  SS5      nUR                  SS5      n[        SU R                  U R                  U R                  45        U R                  nU R                  nU R                  n[        XdXSS9nU(       a  US   $ U$ )á"  
Try to evaluate the transform in closed form.

Explanation
===========

Standard hints are the following:
- ``noconds``:  if True, do not return convergence conditions. The
default setting is `True`.
- ``simplify``: if True, it simplifies the final result. The
default setting is `False`.
ÚnocondsTrî   Fz[LT doit] (%s, %s, %s)r	  r   )rÉ  rX   ÚfunctionÚfunction_variableÚtransform_variabler  )rÊ  rË  Ú_nocondsrF   rk  rå   r   rŽ   s           rn   r¶  ÚLaplaceTransform.doit  sŒ   € ð —9‘9˜Y¨Ó-ˆØ—I‘I˜j¨%Ó0ˆ	äÐ'¨$¯-©-Ø*.×*@Ñ*@Ø*.×*AÑ*Að*Cô 	Dð ×#Ñ#ˆØ×$Ñ$ˆØ�]‰]ˆä˜r rÑ>ˆæØ�Q‘4ˆKàˆHrq   rr   N)
ri   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú_namerÍ  rÐ  r¶  Ú__static_attributes__rr   rq   rn   rx  rx  ó  s   † ñð €Eòò
>õrq   rx  c                 óÜ  ^^^• TR                  SS5      nTR                  SS5      n[        U [        5      (       aî  [        U S5      (       aÝ  TR                  SS5      (       + nU(       aD  U(       a=  Sn[	        SSUS9  [        [        5         U R                  UUU4S	 j5      sS
S
S
5        $ U  V	s/ s H  n	[        U	TT40 TD6PM     n
n	U(       a9  [        U
6 u  p¼n[        U 5      " / U R                  QUP76 nU[        U6 [        U6 4$ [        U 5      " / U R                  QU
P76 $ [        U TT5      R                  SUS9u  nnnU(       d  UUU4$ U$ ! , (       d  f       N;= fs  sn	f )a­  
Compute the Laplace Transform `F(s)` of `f(t)`,

.. math :: F(s) = \int_{0^{-}}^\infty e^{-st} f(t) \mathrm{d}t.

Explanation
===========

For all sensible functions, this converges absolutely in a
half-plane

.. math :: a < \operatorname{Re}(s)

This function returns ``(F, a, cond)`` where ``F`` is the Laplace
transform of ``f``, `a` is the half-plane of convergence, and `cond` are
auxiliary convergence conditions.

The implementation is rule-based, and if you are interested in which
rules are applied, and whether integration is attempted, you can switch
debug information on by setting ``sympy.SYMPY_DEBUG=True``. The numbers
of the rules in the debug information (and the code) refer to Bateman's
Tables of Integral Transforms [1].

The lower bound is `0-`, meaning that this bound should be approached
from the lower side. This is only necessary if distributions are involved.
At present, it is only done if `f(t)` contains ``DiracDelta``, in which
case the Laplace transform is computed implicitly as

.. math ::
    F(s) = \lim_{\tau\to 0^{-}} \int_{\tau}^\infty e^{-st}
    f(t) \mathrm{d}t

by applying rules.

If the Laplace transform cannot be fully computed in closed form, this
function returns expressions containing unevaluated
:class:`LaplaceTransform` objects.

For a description of possible hints, refer to the docstring of
:func:`sympy.integrals.transforms.IntegralTransform.doit`. If
``noconds=True``, only `F` will be returned (i.e. not ``cond``, and also
not the plane ``a``).

.. deprecated:: 1.9
    Legacy behavior for matrices where ``laplace_transform`` with
    ``noconds=False`` (the default) returns a Matrix whose elements are
    tuples. The behavior of ``laplace_transform`` for matrices will change
    in a future release of SymPy to return a tuple of the transformed
    Matrix and the convergence conditions for the matrix as a whole. Use
    ``legacy_matrix=False`` to enable the new behavior.

Examples
========

>>> from sympy import DiracDelta, exp, laplace_transform
>>> from sympy.abc import t, s, a
>>> laplace_transform(t**4, t, s)
(24/s**5, 0, True)
>>> laplace_transform(t**a, t, s)
(gamma(a + 1)/(s*s**a), 0, re(a) > -1)
>>> laplace_transform(DiracDelta(t)-a*exp(-a*t), t, s, simplify=True)
(s/(a + s), -re(a), True)

There are also helper functions that make it easy to solve differential
equations by Laplace transform. For example, to solve

.. math :: m x''(t) + d x'(t) + k x(t) = 0

with initial value `0` and initial derivative `v`:

>>> from sympy import Function, laplace_correspondence, diff, solve
>>> from sympy import laplace_initial_conds, inverse_laplace_transform
>>> from sympy.abc import d, k, m, v
>>> x = Function('x')
>>> X = Function('X')
>>> f = m*diff(x(t), t, 2) + d*diff(x(t), t) + k*x(t)
>>> F = laplace_transform(f, t, s, noconds=True)
>>> F = laplace_correspondence(F, {x: X})
>>> F = laplace_initial_conds(F, t, {x: [0, v]})
>>> F
d*s*X(s) + k*X(s) + m*(s**2*X(s) - v)
>>> Xs = solve(F, X(s))[0]
>>> Xs
m*v/(d*s + k + m*s**2)
>>> inverse_laplace_transform(Xs, s, t)
2*v*exp(-d*t/(2*m))*sin(t*sqrt((-d**2 + 4*k*m)/m**2)/2)*Heaviside(t)/sqrt((-d**2 + 4*k*m)/m**2)

References
==========

.. [1] Erdelyi, A. (ed.), Tables of Integral Transforms, Volume 1,
       Bateman Manuscript Prooject, McGraw-Hill (1954), available:
       https://resolver.caltech.edu/CaltechAUTHORS:20140123-101456353

See Also
========

inverse_laplace_transform, mellin_transform, fourier_transform
hankel_transform, inverse_hankel_transform

rÔ  Frî   Ú	applyfuncz#deprecated-laplace-transform-matrixz±
Calling laplace_transform() on a Matrix with noconds=False (the default) is
deprecated. Either noconds=True or use legacy_matrix=False to get the new
behavior.
                z1.9)Údeprecated_since_versionÚactive_deprecations_targetc                 ó    >• [        U TT40 TD6$ r�   )Úlaplace_transform)ÚfijrË  r|   rØ   s    €€€rn   rž   Ú#laplace_transform.<locals>.<lambda>¨  s   ø€ Ô 1°#°q¸!Ñ E¸uÒ Erq   N©rÔ  rî   )rÉ  r�   rN   ÚhasattrrU   rW   rV   rá  rå  rA  ÚtypeÚshaper-   rM   rx  r¶  )rí   rØ   r|   Úlegacy_matrixrË  rØ  rF   rÇ   Úadtræ  Úelements_transÚelementsÚavalsr¼  Ú	f_laplacerÌ  rÉ   rÑ   s    `` `             rn   rå  rå  +  ss  ú€ ðN �y‰y˜ EÓ*€HØ—	‘	˜* eÓ,€Iä�!”Z× Ñ ¤W¨Q°×%<Ñ%<à—I‘I˜i¨Ó/Ô/ˆæ–]Ø7ˆCÜ%ðð
 */Ø+.òô !Ô!8Õ9Ø—{‘{ÞEóG÷ :Ñ9ñ
 01ó2Ú/0¨ô 0Ø�Q˜ñ$Ø"ô$Ù/0ð ð 2æÜ.1°>Ð.BÑ+� Ü  œGÐ7 Q§W¡WÐ7¨hÒ7�	Ø ¤# u +¬s°JÐ/?Ð?Ð?ä˜A”wÐ8 §¡Ð8¨Ò8Ð8ä  1 aÓ(×-Ñ-°eØ7@ð .ð B�H€Bˆˆ1ö Ø�1�aˆxˆàˆ	÷' :Õ9üò2s   ÂEÂ4E)Å
E&c                óÞ  ^^^• SSK JnJm  SSKJn  [        SSS9mUU4S jnU R                  U5      (       a  U R                  U5      n U R                  (       aL  [        U R                   Vs/ s H  n[        X�TX45      PM     sn6 n	[        U	R                  TU5      U5      S4$  U" X[        T* 5      S[        R                   4SS	S
9u  pšU	cq  U" XT5      n	U	c  gU	R$                  (       a-  U	R                  S   u  pšU	R'                  [(        5      (       a  gO[        R*                  n
U	R-                  [.        U5      n	U	R$                  (       a  U	R                  TU5      W
4$ [        S5      m[        R0                  4UU4S jjnU	R-                  [2        U5      n	S nU	R-                  [        U5      n	[        U	R                  TU5      U5      W
4$ s  snf ! ["         a    Sn	 GNf = f)z5The backend function for inverse Laplace transforms. r   )Úmeijerint_inversionÚ_get_coeff_exp)Úinverse_mellin_transformrØ   Tri  c                  óJ  >• [        U 5      S:w  a  [        U 6 $ U S   R                  S   R                  nT" UT5      u  p#U S   R                  S   nU S   R                  S   n[	        S[        U5      -  TU-  -
  5      U-  [	        TU-  S[        U5      -  -
  5      U-  -   $ )z2Simplify a piecewise expression from hyperexpand. rý   r®   r   ra   )r:  r0   rj   Úargumentr;   r$   )rj   r#   ÚcoeffÚexponentÚe1Úe2rô  rØ   s         €€rn   Úpw_simpÚ7_inverse_laplace_transform_integration.<locals>.pw_simpÈ  s¦   ø€ äˆt‹9˜‹>Ü˜dÐ#Ð#Ø�1‰g�l‰l˜1‰o×&Ñ&ˆÙ(¨¨aÓ0‰ˆØ�!‰W�\‰\˜!‰_ˆØ�!‰W�\‰\˜!‰_ˆä�aœ˜E›
‘l Q¨¡[Ñ0Ó1°"Ñ4Ü�a˜‘k A¤c¨%£j¡LÑ0Ó1°"Ñ4ñ5ð	6rq   NF)ÚneedevalrÔ  Úuc                 óV  >• U R                   " [        T* 5      T5      nUR                  T5      (       a  [        X5      $ SSKJn  U" US:„  T5      nUR                  T:X  a$  [        UR                  5      n[        TU-   U5      $ [        UR                  5      n[        TU-   * U5      $ )Nr   r©   )	rÃ   r'   r€   r;   r¹   rª   rÅ   r(   r¡  )r#   ÚH0r‡   rª   Úrelr/  rØ   rÿ  s         €€rn   Úsimp_heavisideÚ>_inverse_laplace_transform_integration.<locals>.simp_heavisideö  s�   ø€ Ø�HŠH”S˜!˜“W˜aÓ ˆØ�5‰5��8‰8Ü˜SÓ%Ð%Ý@Ù  A¡ qÓ)ˆØ�7‰7�a‹<Ü�C—G‘G“ˆAÜ˜Q ™U BÓ'Ð'ä�C—G‘G“ˆAÜ˜q 1™u˜X rÓ*Ð*rq   c                 ó*   • [        [        U 5      5      $ r�   )r   r'   )r#   s    rn   Úsimp_expÚ8_inverse_laplace_transform_integration.<locals>.simp_exp  s   € Üœc #›hÓ'Ð'rq   )Úsympy.integrals.meijerintró  rô  Úsympy.integrals.transformsrõ  r   Úis_rational_functionÚapartr‰  r   rj   rc   rF   rÃ   r'   r   r»   rH   ré   r€   rE   r‚   r˜   r0   r  r;   )rï   r|   rk  r™  rî   ró  rõ  rü  ÚXrí   rð   r  r  rô  rØ   rÿ  s                @@@rn   rc   rc   ¼  s¼  ú€ ÷ NÝCô 	ˆc˜Ñ€Aö
6ð 	×Ñ˜a× Ñ Ø�G‰G�A‹Jˆà‡x‡xÜà—v’vóÚ�!ô 5°Q¸1¸eÖNÙñð ˆô ˜Ÿ™  2›¨Ó1°4Ð7Ð7ðÙ*¨1´°a°R³¸4ÄÇÁÐ:LØ48À%ñI‰ˆð
 	�yÙ  aÓ(ˆØ‰9ØØ�>�>Ø—f‘f˜Q‘i‰GˆAØ�u‰u”X�‰Øð ô —6‘6ˆDØ�I‰I”i Ó)ˆà‡~‡~ð �v‰v�a˜‹}˜dÐ"Ð"äˆc‹
€Aä Ÿv™v÷ +ð +ð 	
�	‰	”)˜^Ó,€Aò(ð 	
�	‰	”#�xÓ €Aä�Q—V‘V˜A˜r“] HÓ-¨tÐ3Ð3ùòcøô "ó Ø‹ðús   Á.GÂ(&G ÇG,Ç+G,c                 óþ   • SSK Jn  U" U 5      u  p4UR                  U5      (       aT  UR                  U5      R	                  5       n[        U5      S:X  a&  Uu  pgnXaUSU-  -  -   S-  X†-  -   USU-  -  S-  -
  -  nX4-  $ )Nr   )Úfractionrý   r®   )r    r  r  ró   rv  r:  )	rí   r|   r  r†   rÔ   Úcfr‡   r“   rÑ   s	            rn   Ú_complete_the_square_in_denomr    s€   € å/Ù�a‹[�F€QØ‡��q×ÑØ�Y‰Y�q‹\×$Ñ$Ó&ˆÜˆr‹7�a‹<Ø‰GˆA�!Ø�a˜˜1™‘g‘I ‘> !¡#Ñ% q¨!¨A©#¡w°¡lÑ2Ñ3ˆAØ‰3€Jrq   c            
      ó¦  • [        S5      n [        S5      n[        SU /S9n[        SU /S9n[        SU /S9n[        S5        S nS	 nX -  U[        R                  US
4X0U-   U* -  -  XS
-
  -  [        U* U-  5      -  [        U5      -  [        R                  US
4S
U S-  US-  -   S-  -  [        X!-  5      X!-  [        X!-  5      -  -
  SUS-  -  -  [        R                  US
4S
X-  -  XS
-
  -  [        U5      -  [        R                  US
4S
X U-   U-  -  -  [        X2U-  5      X#-  [        U5      -  -  [        R                  US
4/nXpU4$ )zÐ
This is an internal helper function that returns the table of inverse
Laplace transform rules in terms of the time variable `t` and the
frequency variable `s`.  It is used by `_inverse_laplace_apply_rules`.
r|   rØ   r‡   r÷   r“   rÑ   z._inverse_laplace_build_rules is building rulesc                 óJ   •  U R                  U5      $ ! [         a    U s $ f = fr�   )ÚfactorrP   )rí   r|   s     rn   Ú_fracÚ+_inverse_laplace_build_rules.<locals>._frac(  s)   € ð	Ø—8‘8˜A“;ÐøÜó 	ØŠHð	ús   ‚ “"¡"c                 ó   • U $ r�   rr   )rí   s    rn   ÚsameÚ*_inverse_laplace_build_rules.<locals>.same.  s   € ˜�rq   ra   r®   rý   )
r   r    rv   r   r‚   r'   r@   r3   r2   rA   )r|   rØ   r‡   r“   rÑ   r  r  Ú
_ILT_ruless           rn   Ú_inverse_laplace_build_rulesr    sp  € ô 	ˆc‹
€AÜˆc‹
€AÜˆS˜1˜#Ñ€AÜˆS˜1˜#Ñ€AÜˆS˜1˜#Ñ€Aä
Ð;Ô<òò ð 
‰ˆa”—‘˜˜qÐ!à�‰s�q�b‰k‰M˜1 ™s™8¤C¨¨¨1©£IÑ-¬e°A«hÑ6Ü�F‰F�D˜!ð	ð 
ˆAˆq‰D��A‘‰I˜‰>Ñ	œC ¡›H q¡s¬3¨q©s«8¡|Ñ3°a¸¸1¹±fÑ=Ü	
�‰��qð	ð 
ˆA‰D‰�1˜1‘u‘:œe A›hÑ&¬¯©°°aÐ8Ø	
ˆA�‰s�Q‰h‰J‰œ A¨¡sÓ+¨Q©T´%¸³(©]Ñ;Ü	
�‰��qð	ð€Jð ˜!ÐÐrq   c                 óF  • U S:X  a&  [        S5        [        U5      [        R                  4$ [	        5       u  p4nSnU R                  X05      nU HÉ  u  p‰p«nXkU4:w  a  U" X|-  5      nX¼4nWR                  U5      nU(       d  M5  U
nU[        R                  La,  US    Vs/ s H  nUR                  U5      PM     nnUS   " U6 nU[        R                  :X  d  MŒ  [        U5      U	R                  U5      R                  XR05      -  [        R                  4s  $    gs  snf )ú8
Helper function for the class InverseLaplaceTransform.
ra   z     rule: 1 o---o DiracDelta()r‘  r   N)	rv   r:   r   r‚   r  rÃ   rÁ   r’  r;   )rí   r|   rØ   r  rå   rk  Ú_prepÚfsubsr—  r–  r˜  rš  r{  Ú_Fr›  rÑ   rŒ   rj   s                     rn   Ú#_inverse_laplace_apply_simple_rulesr   B  s  € ð
 	ˆAƒvÜÐ0Ô1Ü˜!‹}œaŸf™fÐ$Ð$ä5Ó7Ñ€J�BØ€EØ�F‰F�A�7‹O€Eã*4Ñ&ˆ�e 3Ø˜3�KÓÙ�e‘i“ˆBØ�KˆEØ�X‰X�e‹_ˆßˆ2ØˆAØœŸ™ŠØ01°!²Ó5²¨1˜Ÿ
™
 2ž±�Ð5Ø�a’D˜$�K�Ø”A—F‘F�{Ü  “| E§N¡N°2Ó$6×$;Ñ$;¸R¸GÓ$DÑDÄaÇfÁfÐLÒLñ +5ð ùò 6s   Â!Dc           	      ó
  • [        SU/S9n[        SU/S9n[        S5      nU R                  U[        XaU45      -  5      nU(       a<  Xu   R                  (       a)  [	        S5        [        Xv   XUSSS9u  p‰U* Xu   -  U-  U	4$ g)	r  r‡   r÷   r†   r  z3     rule: t**n*f(t) o---o (-1)**n*diff(F(s), s, n)F©rî   Ú
dorationalN)r    rÁ   r
   rq  rv   Ú_inverse_laplace_transform)
rí   r|   rØ   r™  r‡   r†   r  r›  rŽ   rÑ   s
             rn   Ú_inverse_laplace_diffr%  _  s�   € ô
 	ˆS˜1˜#Ñ€AÜˆS˜1˜#Ñ€AÜˆS‹	€AØ	
�‰�”:˜a Q Ó(Ñ(Ó	)€BÞ	ˆb‰e××ÜÐDÔEÜ)Ø‰E�1˜¨¸5ñB‰ˆà��R‘U‰{˜1‰}˜aÐÐØrq   c           	      ó°  • [        SU/S9n[        S5      nU R                  U5      (       d  U [        U5      -  [        R                  4$ U R                  [
        5      (       d  gU R                  [        XA-  5      5      nU(       aZ  Xd   R                  (       a+  [        S5        [        X&U   -   5      [        R                  4$ [        XX#5      [        R                  4$ U R                  [        XA-  5      U-  5      nU(       aN  Xd   R                  (       a  [        S5        [        Xe   XXd   -   USSS	9$ [        XX#5      [        R                  4$ g)
r  r‡   r÷   r  Nz*     rule: exp(-a*s) o---o DiracDelta(t-a)z5     rule: exp(-a*s)*F(s) o---o Heaviside(t-a)*f(t-a)FTr"  )r    r€   r:   r   r‚   r'   rÁ   r  rv   r¥  r$  )rï   r|   rØ   r™  r‡   r  r  s          rn   Ú_inverse_laplace_time_shiftr'  p  s  € ô
 	ˆS˜1˜#Ñ€AÜˆS‹	€Aà�5‰5��8‰8Ø”˜A“‰¤§¡Ð&Ð&Ø�5‰5”�:‰:Øà
�'‰'”#�a‘c“(Ó
€CÞ
Ø‰6××ÜÐ?Ô@Ü˜a A¡™hÓ'¬¯©Ð/Ð/ä*¨1°Ó:¼A¿F¹FÐBÐBà
�'‰'”#�a‘c“(˜1‘*Ó
€CÞ
Ø‰6××ÜÐJÔKÜ-Ø‘˜˜S™V™8 U°UÀtñMð Mô +¨1°Ó:¼A¿F¹FÐBÐBØrq   c                 ó¼  • U R                  U5      (       d  U [        U5      -  [        R                  4$ [	        U R
                  =n5      S:X  a�  [        SU/S9nUS   R                  X-
  5      =n(       ae  [        Xe   5      R                  (       aI  [        S5        [        Xe   * U-  5      [        U R                  U5      XU5      -  [        R                  4$ g)r  ra   r‡   r÷   r   z&     rule: F(s-a) o---o exp(-a*t)*f(t)N)r€   r:   r   r‚   r:  rj   r    rÁ   r!   r‹   rv   r'   r¥  rm   )rï   r|   rØ   r™  rj   r‡   r›  s          rn   Ú_inverse_laplace_freq_shiftr)  �  s½   € ð
 �5‰5��8‰8Ø”˜A“‰¤§¡Ð&Ð&Ü
�1—6‘6ˆ>ˆ4Ó˜aÓÜ�˜q˜cÑ"ˆØ�q‘'—-‘- ¡Ó$Ð$ˆBÕ$¬"¨R©U«)×*?×*?ÜÐ;Ô<ä�R‘U�F˜1‘H“Ü'¨¯©¨q«	°1¸Ó?ñ@ÜABÇÁðIð Ið rq   c           	      ó°  • [        SU/S9n[        S5      nU R                  X-  U-  5      nU(       a£  Xd   R                  (       a�  Xd   R                  (       a}  [	        S5        [        Xe   XUSSS9u  pxUR                  [        U5      S5      nUR                  [        5      (       a  [        XrXd   5      U4$ [        U5      [        XrXd   5      -  U4$ g	)
r  r†   r÷   r  z+     rule: s**n*F(s) o---o diff(f(t), t, n)FTr"  ra   N)r    rÁ   rq  r‹   rv   r$  r˜   r;   r€   r¥  r   )	rï   r|   rØ   r™  r†   r  r  rŽ   rÑ   s	            rn   Ú_inverse_laplace_time_diffr+  ¡  sÀ   € ô
 	ˆS˜1˜#Ñ€AÜˆS‹	€Aà
�'‰'�!‘$�q‘&‹/€CÞ
ˆs‰v× ×  S¡V×%7×%7ÜÐ<Ô=Ü)Ø‰F�A˜%¨%¸DñB‰ˆà�I‰I”i “l AÓ&ˆØ�5‰5Ô(×)Ñ)Ü˜˜c™fÓ% qÐ(Ð(ä˜Q“<¤ Q¨3©6Ó 2Ñ2°AÐ5Ð5Ørq   c           	      ó@-  ^^• [        SU/S9n[        SU/S9m[        SU/S9n[        SU/S9mSn[        R                  nU R                  5       nU V	s/ s H  o™R	                  XAU-  -  T-   T-  5      PM      n
n	SU
;   a  g[        R
                  n/ n/ n/ nU
 Hp  nXô   S:X  a  X¿-  nM  UT   R                  (       a  UR                  U5        M8  UT   R                  (       a  UR                  U5        M_  UR                  U5        Mr     [        UUU4S jS	9n[        UUU4S
 jS	9n[        U5      S:w  a  g[        U5      S:X  GaÔ  [        U5      S:X  GaÄ  US   T   S:X  a¥  US   U   [        R                  :X  a‹  US   T   US   U   -  nSUS   U   -  U-  nUR                  (       aY  U[        [        5      -  [        U5      -  UU-  [        US-  U-  5      -  [        U[        U5      -  5      -  -
  n[!        S5        GOyUS   T   S:X  aÎ  US   U   [        R                  :X  a´  US   T   US   U   -  nUS-  nSUS   U   S-  -  U-  nUR                  (       az  USS[        [        5      -  [        U5      -  [        U5      -  -
  SSU-  U-  -
  [        UU-  5      -  [#        [        U5      [        U5      -  5      S-
  -  -   -  n[!        S5        GOŸUS   T   S:X  aÆ  US   U   [        R                  :X  a¬  US   T   US   U   -  nSUS   U   S-  -  U-  nUR                  (       aw  US[        [        5      -  US-  U-  S-   -  [        U5      -  UU-  [        US-  U-  5      -  SUS-  -  U-  S-   -  [        U[        U5      -  5      -  -
  -  n[!        S5        GOÍUS   T   S:X  aä  US   U   [        R                  :X  aÊ  US   T   US   U   -  nSUS   U   S-  -  U-  S-  nUR                  (       a’  UUSUS-  -  US-  -  SUS-  -  U-  -   S-   -  [        US-  U-  5      -  [        U[        U5      -  5      -  S[        [        5      -  US-  -  U[        S5      S-  -  -  SUS-  -  U-  S-   -  -
  -  n[!        S5        GOÝUS   T   [        R                  * :X  aZ  US   U   S:X  aN  [        US   T   US   U   -  5      nS[        US   U   5      -  U-  nU[%        SUU-  5      -  n[!        S5        GOf[        U5      S:X  Gaÿ  [        U5      S:X  Gaï  US   T   S:X  aè  US   U   [        R                  :X  aÎ  US   T   [        R                  :X  a´  US   T   S:X  a¨  US   T   n[        US   U   5      US   U   -  U-  nUSUS-  -  US-  -  SUS-  -  U-  -   S-   -  [        US-  U-  5      -  [        U[        U5      -  5      -  S[        [        5      -  U-  US-  U-  S-   -  [        U5      -  -
  n[!        S5        US   T   S:X  aí  US   U   S:X  aá  US   T   [        R                  :X  aÇ  US   U   S:X  a»  US   T   US   U   -  nUS   T   US   U   -  n[        US   U   5      US   U   -  U-  nU[        U* U-  5      [        U5      -  [        [        5      -  [        UU-
  5      [        U* U-  5      -  [#        [        UU-
  5      [        U5      -  5      -  -   -  n[!        S5        GOW[        U5      S:X  GaL  [        U5      S:X  Ga<  US   T   S:X  aÍ  US   U   S:X  aÁ  US   T   [        R                  * :X  a¦  US   U   S:X  aš  US   T   S:X  aŽ  US   T   * US   U   -  nS[        US   U   5      -  US   U   -  U-  nUR                  (       aI  U[        U5      -  [        UU-  5      -  [#        [        U5      [        U5      -  5      -  n[!        S5        GO^US   T   S:X  a¶  US   U   S:X  aª  US   T   S:X  až  US   T   S:X  a’  US   U   [        R                  :X  ax  US   T   US   U   -  nSUS   U   -  US   U   -  U-  U-  nUR                  (       a:  US[        US-  U-  5      [        U[        U5      -  5      -  -
  -  n[!        S5        GOœUS   T   S:X  aÈ  US   U   [        R                  :X  a®  US   T   [        R                  * :X  a“  US   U   S:X  a‡  US   T   S:X  a{  US   T   US   U   -  nSUS   U   [        US   U   5      -  -  U-  nUR                  (       a7  U[        US-  U-  5      -  [        U[        U5      -  5      -  n[!        S5        GOÈUS   T   [        S5      * S-  :X  aê  US   U   S:X  aÞ  US   T   S:X  aÒ  US   T   S:X  aÆ  US   U   [        R                  :X  a¬  US   T   US   U   -  nSUS   U   [        S5      S-  -  US   U   -  -  US-  -  U-  nUR                  (       a\  US[        [        5      -  U-  [        U5      -  [        US-  U-  5      [        U[        U5      -  5      -  -   S-
  -  n[!        S5        GOÅUS   T   S:X  aû  US   U   [        R                  :X  aá  US   T   S:X  aÕ  US   U   S:X  aÉ  US   T   S:X  a½  US   T   US   U   -  nUS-  nSUS   U   S-  -  US   U   -  U-  nUR                  (       az  USU-  SU-  SU-  -
  [        UU-  5      -  [        [        U5      [        U5      -  5      -  -   S[        [        5      -  [        U5      -  [        U5      -  -
  -  n[!        S 5        G
O¾US   T   S:X  aó  US   U   [        R                  :X  aÙ  US   T   [        R                  * :X  a¾  US   U   S:X  a²  US   T   S:X  a¦  US   T   US   U   -  nSUS   U   S-  -  [        US   U   5      -  U-  nUR                  (       a_  US[        [        5      -  [        U5      -  SU-  U-  [        US-  U-  5      -  [        U[        U5      -  5      -  -
  -  n[!        S!5        G	O¿US   T   S:X  aå  US   U   [        R                  :X  aË  US   T   [        R                  * :X  a°  US   U   S:X  a¤  US   T   S:X  a˜  US   T   nU[        US   U   5      -  US   U   -  nUSUS-  -  U-  S-   U-  [        US-  U-  5      -  [        U[        U5      -  5      -  S[        [        5      -  U-  U[        S5      S-  -  -  -
  -  n[!        S"5        GOÎUS   T   S:X  aÅ  US   U   S:X  a¹  US   T   [        R                  * :X  až  US   U   S:X  a’  US   T   US   U   -  nUS   T   US   U   -  nU[        US   U   5      -  US   U   -  nUS[        UU-
  5      -  [        U* U-  5      -  [#        [        UU-
  5      [        U5      -  5      -  -  n[!        S#5        GOû[        U5      S:X  Ga  [        U5      S:X  Gaü  US   T   S:X  Ga|  US   U   S:X  Gao  US   T   S:X  Gab  US   U   [        R                  :X  GaG  US   T   [        R                  :X  Ga,  US   U   S:X  Ga  US   T   S:X  Ga  US   T   US   U   -  nUS-  nUS   T   * US   U   -  n[        US   U   5      US   U   -  US   U   -  UU-
  -  U-  nUR                  (       a«  UR                  (       aš  UU[        UU-  5      -  [        [        U5      [        U5      -  5      -  [        U5      [        U5      -  [        UU-  5      -  [        [        U5      [        U5      -  5      -  -   U[        UU-  5      -  -
  -  n[!        S$5        GORUS   T   S:X  aë  US   U   S:X  aß  US   T   S:X  aÓ  US   T   S:X  aÇ  US   U   [        R                  :X  a­  US   T   S:X  a¡  US   U   [        R                  :X  a‡  US   T   US   U   -  nUS   T   US   U   -  nUU-   S:X  aZ  US   U   US   U   -  US   U   -  U-  nUS[        US-  U-  5      -  [        U[        U5      -  5      -  S-
  -  n[!        S%5        GO[US   T   S:X  Ga  US   U   S:X  Ga  US   T   S:X  Ga  US   T   S:X  aø  US   U   [        R                  :X  aÞ  US   T   S:X  aÒ  US   U   [        R                  :X  a¸  US   T   US   U   -  nUS   T   US   U   -  nUU-   S:X  a‹  US   U   S-  US   U   -  US   U   S-  -  U-  nUSS&US-  -  U-  [        US-  U-  5      -  [        U[        U5      -  5      -  -   S&[        [        5      -  U-  [        U5      -  -
  -  n[!        S'5        GO0US   T   S:X  GaB  US   U   S:X  Ga5  US   T   S:X  Ga(  US   T   S:X  Ga  US   U   [        R                  :X  Ga   US   T   S:X  aô  US   U   [        R                  :X  aÚ  US   T   US   U   -  nUS   T   US   U   -  nUU-   S:X  a¯  US   U   S-  US   U   -  US   U   S-  -  U-  nUSS&US-  -  US-  -  S&US-  -  U-  -   S-   -  [        US-  U-  5      -  [        U[        U5      -  5      -  S&[        [        5      -  U-  [        U5      -  SUS-  -  U-  S-   -  -
  S-
  -  n[!        S(5        GOß[        U5      S:X  GaÏ  [        U5      S:X  Ga¿  US   T   S:X  Ga  US   T   S:X  Ga  US   U   S:X  aÿ  US   T   S:X  aó  US   U   S:X  aç  US   T   [        R                  * :X  aÌ  US   U   S:X  aÀ  US   T   * US   U   -  nSUS   U   -  US   U   -  [        US   U   5      -  U-  nUR                  (       ar  UU[        S5      * S-  -  [        UU-  5      -  [#        [        U5      [        U5      -  5      -  SU-  [        [        5      -  [        U5      -  -
  -  n[!        S)5        GOšUS   T   S:X  Ga�  US   U   S:X  Ga€  US   T   S:X  Gas  US   U   [        R                  :X  GaX  US   T   [        R                  * :X  Ga<  US   U   S:X  Ga/  US   T   S:X  Ga"  US   T   US   U   -  nUS-  nUS   T   * US   U   -  nSUS   U   -  US   U   -  [        US   U   5      -  [        U5      UU-
  -  -  nUR                  (       a±  UR                  (       a   U[        U5      [        UU-  5      -  [        [        U5      [        U5      -  5      -  [        U5      [        UU-  5      -  [#        [        U5      [        U5      -  5      -  -   [        U5      [        UU-  5      -  -
  -  n[!        S*5        Uc  g['        U5      U-  U4$ s  sn	f )+r  r‡   r÷   r“   r²   r†   Nr   c                 ó&   >• U T   U T   S:g  U T   4$ r¶   rr   ©rŒ   r“   r†   s    €€rn   rž   Ú-_inverse_laplace_irrational.<locals>.<lambda>Û  ó   ø€ ¨¨1©¨q°©t°q©y¸!¸A¹$Ñ(?rq   râ   c                 ó&   >• U T   U T   S:g  U T   4$ r¶   rr   r.  s    €€rn   rž   r/  Ü  r0  rq   ra   rþ   r®   z     rule 5.3.4r   z     rule 5.3.10éýÿÿÿrý   z     rule 5.3.13éüÿÿÿrÿ   é   é   z     rule 5.3.16z     rule 5.3.35/44z     rule 5.3.14z     rule 5.3.22z     rule 5.3.1z     rule 5.3.5z     rule 5.3.7z     rule 5.3.8z     rule 5.3.11z     rule 5.3.12z     rule 5.3.15z     rule 5.3.23z     rule 5.3.6z     rule 5.3.17é   z     rule 5.3.18z     rule 5.3.19z     rule 5.3.2z     rule 5.3.9)r    r   r‚   Úas_ordered_factorsrÁ   r%  r‹   r'  r  Úsortedr:  r  r/   r   r'   r=   rv   r<   r7   r;   )r   r|   rØ   r™  r‡   r²   rl   rÅ  ÚfarŒ   r›  Ú	constantsÚzerosÚpolesÚrestr*  rÒ   Úk_Úa_sqÚb_Úa_numr“   r†   s                        @@rn   Ú_inverse_laplace_irrationalrB  ¶  sÐ  ù€ ô 	ˆS˜1˜#Ñ€AÜˆS˜1˜#Ñ€AÜˆS˜1˜#Ñ€AÜˆS˜1˜#Ñ€Aà€FÜ—‘€Ià	×	Ñ	Ó	 €Bá*,Ó	-ª" Q�'‰'�1˜‘T‘6˜!‘8˜a‘-Ö
 ©"€BÐ	-àˆrƒzØä—‘€IØ€EØ€EØ€DãˆØ‰7�a‹<Ø!™ŠIØ�!‰W× × Ø�L‰L˜ÖØ�!‰W× × Ø�L‰L˜Öà�K‰K˜Öñ ô �5Õ?Ñ@€EÜ�5Õ?Ñ@€Eä
ˆ4ƒy�Aƒ~Øä
ˆ5ƒz�Q„œ3˜u›:¨œ?Ø�‰8�A‰;˜"Ó  q¡¨!¡´·±Ó!6à�q‘˜!‘˜U 1™X a™[Ñ(ˆBØ�5˜‘8˜A‘;‘˜yÑ(ˆBØ�~�~à”tœB“x‘K¤ Q£Ñ'Ø�r‘Eœ#˜b !™e A™g›,Ñ&¤t¨B¬t°A«w©JÓ'7Ñ7ñ8ð ô Ð(Ô)ùØ�1‰X�a‰[˜BÓ 5¨¡8¨A¡;´!·&±&Ó#8à˜‘8˜A‘;˜u Q™x¨™{Ñ*ˆDØ�q‘ˆBØ�5˜‘8˜A‘; ‘>Ñ! )Ñ+ˆBØ××à˜˜Aœd¤2›h™J¤t¨B£xÑ/´°Q³Ñ7Ñ7Ø˜1˜R™4 ™6™¤3 r¨!¡t£9Ñ,¬c´$°r³(¼4À»7Ñ2BÓ.CÀAÑ.EÑFñGñ Hð ô Ð)Ô*ùØ�1‰X�a‰[˜BÓ 5¨¡8¨A¡;´!·&±&Ó#8à�q‘˜!‘˜U 1™X a™[Ñ(ˆBØ�5˜‘8˜A‘; ‘>Ñ! )Ñ+ˆBØ�~�~à˜œ$œr›(™
 B¨¡E¨!¡G¨A¡IÑ.¬t°A«wÑ6Ø˜1™œS  Q¡ q¡›\Ñ)¨1¨R°©U©7°1©9°Q©;Ñ7¼¸RÄÀQÃ¹ZÓ8HÑHñIñ Jð ô Ð)Ô*ùØ�1‰X�a‰[˜BÓ 5¨¡8¨A¡;´!·&±&Ó#8à�q‘˜!‘˜U 1™X a™[Ñ(ˆBØ�5˜‘8˜A‘; ‘>Ñ! )Ñ+¨AÑ-ˆBØ�~�~à˜˜1˜R ™U™7 1 a¡4™<¨¨2¨q©5©°©
Ñ2°1Ñ4Ñ5´c¸"¸a¹%À¹'³lÑBÜ˜R¤ Q£™ZÓ(ñ)àœ$œr›(™
 2 q¡5Ñ(¨¬Q¨q«T°!©V©Ñ4°a¸¸A¹±g¸a±iÀ±kÑBñCñ Dð ô Ð)Ô*ùØ�1‰X�a‰[œQŸV™V˜GÓ#¨¨a©°©°qÓ(8ä�e˜A‘h˜q‘k %¨¡(¨1¡+Ñ-Ó.ˆBØ”4˜˜a™ ™Ó$Ñ$ YÑ.ˆBØœ' ! R¨¡TÓ*Ñ+ˆFÜÐ(Ô)ùä	ˆU‹�qŒœS ›Z¨1œ_à�a‘˜‘˜rÓ! e¨A¡h¨q¡k´Q·V±VÓ&;Ø�a‘˜‘œqŸv™vÓ%¨%°©(°1©+¸Ó*:ð �q‘˜!‘ˆBÜ�e˜A‘h˜q‘kÓ" 5¨¡8¨A¡;Ñ.¨yÑ8ˆBà�A�b˜!‘e‘G˜A˜q™D‘L  2 q¡5¡¨¡Ñ*¨1Ñ,Ñ-¬c°"°a±%¸±'«lÑ:Ü�Rœ˜Q›‘ZÓ ñ!Ø#$¤T¬"£X¡:¨b¡=°"°a±%¸±'¸!±)Ñ#<¼TÀ!»WÑ#DñEð ô Ð%Ô&à�a‘˜‘˜rÓ! e¨A¡h¨q¡k°QÓ&6Ø�a‘˜‘œqŸv™vÓ%¨%°©(°1©+¸Ó*:ð �q‘˜!‘˜U 1™X a™[Ñ(ˆBØ�q‘˜!‘˜U 1™X a™[Ñ(ˆBÜ�e˜A‘h˜q‘kÓ" 5¨¡8¨A¡;Ñ.¨yÑ8ˆBà”C˜˜˜A™“Jœt A›wÑ&¤t¬B£xÑ/´°R¸±U³Ü˜˜˜A™“Jñ1Ü"¤4¨¨2©£;¬t°A«wÑ#6Ó7ñ18ñ 8ñ 9ð ô Ð%Ô&ùä	ˆU‹�qŒœS ›Z¨1œ_à�a‘˜‘˜rÓ! e¨A¡h¨q¡k°QÓ&6Ø�a‘˜‘¤§¡˜wÓ&¨5°©8°A©;¸!Ó+;Ø�a‘˜‘˜qÓ ð ˜‘(˜1‘+�˜e A™h q™kÑ)ˆBØ”4˜˜a™ ™Ó$Ñ$ U¨1¡X¨a¡[Ñ0°Ñ:ˆBØ�~�~ØœT "›X™+¤c¨"¨Q©$£iÑ/´´D¸³H¼TÀ!»WÑ4DÓ0EÑE�ÜÐ(Ô)ùà�a‘˜‘˜rÓ! e¨A¡h¨q¡k°QÓ&6¸5À¹8ÀA¹;È!Ó;KØ�a‘˜‘˜rÓ! e¨A¡h¨q¡k´Q·V±VÓ&;ð �q‘˜!‘˜U 1™X a™[Ñ(ˆBØ�5˜‘8˜A‘;‘˜u Q™x¨™{Ñ*¨2Ñ-¨iÑ7ˆBØ�~�~Ø˜Qœs 2 q¡5¨¡7›|¬D°´D¸³G±Ó,<Ñ<Ñ<Ñ=�ÜÐ(Ô)ùà�a‘˜‘˜rÓ! e¨A¡h¨q¡k´Q·V±VÓ&;Ø�a‘˜‘¤§¡˜wÓ&¨5°©8°A©;¸!Ó+;Ø�a‘˜‘˜qÓ ð �q‘˜!‘˜U 1™X a™[Ñ(ˆBØ�E˜!‘H˜Q‘K¤ U¨1¡X¨a¡[Ó 1Ñ1Ñ2°9Ñ<ˆBØ�~�~ØœC  A¡ a¡›L™¬¨b´°a³©jÓ)9Ñ9�ÜÐ(Ô)ùà�a‘˜‘¤ !£˜u Q™wÓ&¨5°©8°A©;¸!Ó+;Ø�a‘˜‘˜qÓ  U¨1¡X¨a¡[°BÓ%6Ø�a‘˜‘œqŸv™vÓ%ð
 �q‘˜!‘˜U 1™X a™[Ñ(ˆBØ�E˜!‘H˜Q‘K¤! A£$ q¡&Ñ)¨%°©(°1©+Ñ5Ñ6°r¸1±uÑ<¸YÑFˆBØ�~�~à˜œ$œr›(™
 2™¤d¨1£gÑ-¬c°"°a±%¸±'«l¼4ÀÄ4ÈÃ7Á
Ó;KÑ.KÑKÈAÑMÑNð äÐ(Ô)ùà�a‘˜‘˜rÓ! e¨A¡h¨q¡k´Q·V±VÓ&;Ø�a‘˜‘˜rÓ! e¨A¡h¨q¡k°QÓ&6Ø�a‘˜‘˜qÓ ð ˜‘8˜A‘;˜u Q™x¨™{Ñ*ˆDØ�q‘ˆBØ�5˜‘8˜A‘; ‘>Ñ! %¨¡(¨1¡+Ñ-¨iÑ7ˆBØ××à˜˜"™  !¡ A b¡D¡¬#¨b°©d«)Ñ3´D¼¸b»Ä$ÀqÃ'Ñ9IÓ4JÑJÑJØœ$œr›(™
¤4¨£8Ñ+¬D°«GÑ3ñ4ñ 5ð ô Ð)Ô*ùà�a‘˜‘˜rÓ! e¨A¡h¨q¡k´Q·V±VÓ&;Ø�a‘˜‘¤§¡˜wÓ&¨5°©8°A©;¸!Ó+;Ø�a‘˜‘˜qÓ ð �q‘˜!‘˜U 1™X a™[Ñ(ˆBØ�5˜‘8˜A‘; ‘>Ñ!¤$ u¨Q¡x°¡{Ó"3Ñ3°IÑ=ˆBØ�~�~à˜œ$œr›(™
¤4¨£7Ñ*Ø˜"™˜Q™œs 2 q¡5¨¡7›|Ñ+¬D°´D¸³G±Ó,<Ñ<ñ=ñ >ð ô Ð)Ô*ùà�a‘˜‘˜rÓ! e¨A¡h¨q¡k´Q·V±VÓ&;Ø�a‘˜‘¤§¡˜wÓ&¨5°©8°A©;¸!Ó+;Ø�a‘˜‘˜qÓ ð �q‘˜!‘ˆBØœ4  a¡¨¡Ó,Ñ,¨U°1©X°a©[Ñ8ˆBØØ�2�q‘5‘˜‘˜1‘˜a‘¤ B¨¡E¨!¡G£Ñ,¬T°"´T¸!³W±*Ó-=Ñ=Ø”$”r“(‘
˜2‘˜a¤! A£$ q¡&™kÑ)ñ*ñ+ˆFô Ð%Ö&à�a‘˜‘˜rÓ! e¨A¡h¨q¡k°QÓ&6Ø�a‘˜‘¤§¡˜wÓ&¨5°©8°A©;¸!Ó+;ð �q‘˜!‘˜U 1™X a™[Ñ(ˆBØ�q‘˜!‘˜U 1™X a™[Ñ(ˆBØœ4  a¡¨¡Ó,Ñ,¨U°1©X°a©[Ñ8ˆBØØ”$�r˜"‘u“+‘œc 2 # a¡%›jÑ(¬¬T°"°R±%«[¼¸a»Ñ-@Ó)AÑAñCˆFäÐ%Ô&ùä	ˆU‹�qŒœS ›Z¨1œ_à�a‘˜‘˜rÔ! e¨A¡h¨q¡k°QÔ&6Ø�a‘˜‘˜rÔ! e¨A¡h¨q¡k´Q·V±VÔ&;Ø�a‘˜‘œqŸv™vÔ%¨%°©(°1©+¸Ô*:Ø�a‘˜‘˜qÔ ð ˜‘8˜A‘;˜u Q™x¨™{Ñ*ˆDØ�q‘ˆBØ˜‘(˜1‘+�˜e A™h q™kÑ)ˆBÜ�e˜A‘h˜q‘kÓ" 5¨¡8¨A¡;Ñ.¨u°Q©x¸©{Ñ:¸B¸r¹EÑBÀ9ÑLˆBØ×× B§N§NØØ”s˜2˜a™4“y‘L¤¤d¨2£h¬t°A«wÑ&6Ó!7Ñ7Ü˜“HœT "›XÑ%¤c¨"¨Q©$£iÑ/´´T¸"³X¼dÀ1»gÑ5EÓ0FÑFñGà”s˜2˜a™4“y‘Lñ!ñ"�ô Ð(Ô)ùà�a‘˜‘˜rÓ! e¨A¡h¨q¡k°QÓ&6Ø�a‘˜‘˜qÓ  U¨1¡X¨a¡[°BÓ%6Ø�a‘˜‘œqŸv™vÓ%¨%°©(°1©+¸Ó*:Ø�a‘˜‘œqŸv™vÓ%ð ˜!‘H˜Q‘K  a¡¨¡Ñ+ˆEØ�q‘˜!‘˜U 1™X a™[Ñ(ˆBØ�%‰x˜1‹}Ø˜1‘X˜a‘[  q¡¨!¡Ñ,¨U°1©X°a©[Ñ8¸ÑB�ØØ”c˜"˜a™% ™'“l‘N¤4¨¬4°«7©
Ó#3Ñ3°AÑ5ñ7�äÐ)Ô*ùà�a‘˜‘˜rÔ! e¨A¡h¨q¡k°QÔ&6Ø�a‘˜‘˜qÔ  U¨1¡X¨a¡[°BÓ%6Ø�a‘˜‘œqŸv™vÓ%¨%°©(°1©+¸Ó*:Ø�a‘˜‘œqŸv™vÓ%ð ˜!‘H˜Q‘K  a¡¨¡Ñ+ˆEØ�q‘˜!‘˜U 1™X a™[Ñ(ˆBØ�%‰x˜1‹}Ø˜1‘X˜a‘[ !‘^ E¨!¡H¨Q¡KÑ/°°a±¸±¸Q±Ñ>¸yÑH�ØØ˜˜"˜a™%™ ™	¤# b¨!¡e¨A¡g£,Ñ.¬t°B´t¸A³w±JÓ/?Ñ?Ñ?Ø”dœ2“h‘J˜r‘M¤$ q£'Ñ)ñ*ñ+�ô Ð)Ô*ùà�a‘˜‘˜rÔ! e¨A¡h¨q¡k°QÔ&6Ø�a‘˜‘˜qÔ  U¨1¡X¨a¡[°BÔ%6Ø�a‘˜‘œqŸv™vÔ%¨%°©(°1©+¸Ó*:Ø�a‘˜‘œqŸv™vÓ%ð ˜!‘H˜Q‘K  a¡¨¡Ñ+ˆEØ�q‘˜!‘˜U 1™X a™[Ñ(ˆBØ�%‰x˜1‹}Ø˜1‘X˜a‘[ !‘^ E¨!¡H¨Q¡KÑ/°°a±¸±¸Q±Ñ>¸yÑH�ØØ�q˜˜Q™‘w˜q !™t‘| A b¨!¡e¡G¨A¡IÑ-¨aÑ/Ñ0´°R¸±U¸1±W³Ñ=Ü˜œD ›G™Ó$ñ%Ø%&¤t¬B£x¡Z°¡]´4¸³7Ñ%:¸A¸bÀ!¹e¹GÀA¹IÀa¹KÑ%HñIØIJñKñL�ô Ð)Ô*ùä	ˆU‹�qŒœS ›Z¨1œ_à�a‘˜‘˜rÔ! e¨A¡h¨q¡k°QÔ&6¸5À¹8ÀA¹;È!Ó;KØ�a‘˜‘˜rÓ! e¨A¡h¨q¡k°QÓ&6Ø�a‘˜‘¤§¡˜wÓ&¨5°©8°A©;¸!Ó+;ð ˜‘(˜1‘+�˜e A™h q™kÑ)ˆBØ�5˜‘8˜A‘;‘˜u Q™x¨™{Ñ*¬4°°a±¸±Ó+<Ñ<¸YÑFˆBØ�~�~ØØœ!˜A›$˜˜q™‘M¤C¨¨1©£IÑ-´´D¸³H¼TÀ!»WÑ4DÓ0EÑEØ�b‘Dœœb›‘M¤$ q£'Ñ)ñ*ñ+�ô Ð(Ô)ùà�a‘˜‘˜rÔ! e¨A¡h¨q¡k°QÔ&6Ø�a‘˜‘˜rÔ! e¨A¡h¨q¡k´Q·V±VÔ&;Ø�a‘˜‘¤§¡˜wÔ&¨5°©8°A©;¸!Ô+;Ø�a‘˜‘˜qÔ ð ˜‘8˜A‘;˜u Q™x¨™{Ñ*ˆDØ�q‘ˆBØ˜‘(˜1‘+�˜e A™h q™kÑ)ˆBà�%˜‘(˜1‘+‘˜e A™h q™kÑ)¬$¨u°Q©x¸©{Ó*;Ñ;Ü�b“˜2˜b™5Ñ!ñ#ð ð ×× B§N§NØÜ˜“HœS  A¡›YÑ&¤t¬D°«H´T¸!³WÑ,<Ó'=Ñ=Ü˜“HœS  A¡›YÑ&¤s¬4°«8´D¸³GÑ+;Ó'<Ñ<ñ=ä˜“HœS  A¡›YÑ&ñ'ñ(�ô Ð(Ô)à�~Øä˜‹|˜FÑ" IÐ-Ð-ùòQ	 
.s   Á%AZc                 óD   • [         /nU H  nU" XX#5      =nc  M  Us  $    g©r  N)rB  ©rï   r|   rØ   r™  rŒ  r�  rŽ   s          rn   Ú!_inverse_laplace_early_prog_rulesrF  ñ  s2   € ô
 .Ð.€JãˆÙ˜˜aÓ'Ð'ˆAÓ4ØŠHñ ð rq   c                 ól   • [         [        [        [        [        /nU H  nU" XX#5      =nc  M  Us  $    grD  )r'  r)  r+  r%  rB  rE  s          rn   Ú!_inverse_laplace_apply_prog_rulesrH  þ  sB   € ô
 .Ô/JÜ,Ô.CÜ-ð/€Jó ˆÙ˜˜aÓ'Ð'ˆAÓ4ØŠHñ ð rq   c           	      óº  • U R                   (       a  g[        U SS9nUR                   (       a  [        XAX#SSS9$ [        U 5      nUR                   (       a  [        XAX#SSS9$ [        U 5      nUR                   (       a  [        XAX#SSS9$ U R	                  U5      (       a  U R                  U5      R                  5       nUR                   (       a  [        XAX#SSS9$ g)r  NFr‡  Tr"  )r‰  r   r$  r   r
  r  r¶  )r   r|   rØ   r™  rŽ   s        rn   Ú_inverse_laplace_expandrJ    sÊ   € ð
 
‡y‡yØÜˆr˜Ñ€AØ‡x‡xÜ)Ø�! U°tñ=ð 	=ä�2‹€AØ‡x‡xÜ)Ø�! U°tñ=ð 	=äˆr‹
€AØ‡x‡xÜ)Ø�! U°tñ=ð 	=à	×Ñ˜q×!Ñ!Ø�H‰H�Q‹K×ÑÓˆØ‡x‡xÜ)Ø�! U°tñ=ð 	=àrq   c          
      óî  • [        S5      nU R                  U5      n[        R                  " U5      n/ n[        R
                  /n	U GHø  n
U
R                  5       u  p¼UR                  U5      R                  5       nUS   nU Vs/ s H  oÿU-  PM	     nnUR                  U5      R                  5        Vs/ s H  oÿU-  PM	     nn[        U5      S:X  aK  [        U5      S-
  n[        U5       H,  nUS   [        UUUS   -
  5      -  nUR                  U5        M.     MÙ  [        U5      S:X  a8  US   [        US   * U-  5      -  nUR                  [        U5      U-  5        GM   [        U5      S:X  Ga—  US   S-  nUS   US-  -
  R                  5       n[        U5      S:X  a  [        R                   /U-   n[#        U5      u  nnUS:X  a"  UU-  USUU-  -
  -  -   [        U* U-  5      -  nOýSnUR$                  (       a  U* nSn['        [)        US-  U-
  U5      R+                  5       5      S   n[-        U5      R/                  5       nU(       aM  U[        U* U-  5      -  [1        UU-  5      -  UUU-  -
  U-  [        U* U-  5      -  [3        UU-  5      -  -   nOLU[        U* U-  5      -  [5        UU-  5      -  UUU-  -
  U-  [        U* U-  5      -  [7        UU-  5      -  -   nUR                  [        U5      U-  5        GMÇ  [9        X¡X#USS9u  nnUR                  U5        U	R                  U5        GMû     [        U6 nU(       a  UR/                  SS	9nU[;        U	6 4$ s  snf s  snf )
r  Úx_r   ra   r®   rý   FTr"  rµ  )r   r  r   r&  r   r‚   r  ró   rv  r:  Ú	enumerater:   r'  r'   r;   r  rè   Útupler  rë   rQ   r  r/   rî   r)   r+   r2   r3   r$  rM   )r   r|   rØ   r™  rî   rL  rí   r»  r¹  r¼  r*  r†   rÔ   rI  Údc_leadrŒ   r<  r~  rÑ   rŽ   r‡   r“   Úlr²   ÚhypÚb2Úbsr¾  rð   rl   s                                 rn   Ú_inverse_laplace_rationalrT  (  sB  € ô
 
�‹€BØ
�‰�‹€AÜ�MŠM˜!Ó€EØ€GÜ—&‘&�€JÜˆØ×$Ñ$Ó&‰ˆØ�Y‰Y�q‹\×$Ñ$Ó&ˆØ�Q‘%ˆÙ!#Ó$¢˜A�Œi¡ˆÐ$Ø!"§¡¨1£×!8Ñ!8Ô!:Ó;Ò!:˜A�ŒiÑ!:ˆÐ;Üˆr‹7�a‹<Ü�B“˜‘	ˆAÜ˜r–]�Ø�a‘Dœ A q¨¨1©¡vÓ.Ñ.�Ø—‘˜qÖ!ó #ô �‹W˜‹\Ø�1‘”c˜2˜a™5˜& ™(“mÑ#ˆAØ�N‰Nœ9 Q›<¨™>×*Ü�‹W˜Œ\Ø�1‘�a‘ˆAØ�A‘�q˜!‘t‘×#Ñ#Ó%ˆAÜ�2‹w˜!‹|Ü—f‘f�X ‘]�Ü˜“9‰DˆAˆqØ�A‹vØ�q‘S˜˜A˜a ™c™E™‘]¤C¨¨¨1©£IÑ-‘à�Ø—=—=Ø˜�AØ�CÜœ%  A¡ a¡¨Ó,×1Ñ1Ó3Ó4°QÑ7�Ü˜!“W×%Ñ%Ó'�Þàœ#˜q˜b ™d›)™¤D¨¨A©£JÑ.°!°A°a±C±%Øñ2Ü ˜r !™t›9ñ2%Ü%)¨"¨Q©$£Zñ20ñ 0ñ ð œ#˜q˜b ™d›)™¤C¨¨1©£IÑ-°°1°Q±3±¸±
¼3À¸rÀ!¹t»9Ñ0DÄSÈÈAÉÃYÑ0NÑN�AØ�N‰Nœ9 Q›<¨™>×*ä1Ø˜¨HÀñH‰HˆB�à�N‰N˜2ÔØ×Ñ˜d×#ñQ ôT �'ˆ]€FÞØ—‘ e�Ð,ˆØ”3˜
Ð#Ð#Ð#ùòS %ùÚ;s   ÂM-Â7M2c          	      ó„  ^• [         R                  " U 5      n/ n/ nU GHu  n	U	R                  [        5      (       a2  U	R	                  TT* 5      R                  5       R	                  TT* 5      n	U	R                  TSS9u  p«U(       a&  U	R                  T5      (       a  [        UTX#US9=n cD  [        UTU5      =n c3  [        UTX#5      =n c"  [        UTX#5      =n c  [        UTX#5      =n b  Oy[        U4S jUR                  [        5       5       5      (       a  [!        UTX#5      ["        R$                  4nO.['        UTX#US9=n b  O[!        UTX#5      ["        R$                  4nUu  pÞUR)                  X­-  5        UR)                  U5        GMx     [        U6 nU(       a  UR+                  SS9n[-        U6 nUU4$ )z—
Front-end function of the inverse Laplace transform. It tries to apply all
known rules recursively.  If everything else fails, it tries to integrate.
Fr®  r	  c              3   óD   >#   • U  H  oR                  T5      v •  M     g 7fr�   r±  )r°   r²  rå   s     €rn   r³   Ú-_inverse_laplace_transform.<locals>.<genexpr>„  s   øé € ÐBÒ,A 5—‘˜2—�Ò,Aùr´  rµ  )r   r&  r€   r'   rÃ   rS   r·  r
  rT  r   rF  rJ  rH  r¸  r¤   r	   r¥  r   r‚   rc   r'  rî   rM   )r   rå   rk  r™  rî   r#  r»  r¹  r¼  r*  r/  rí   rŽ   rÂ  rÄ  rl   rÅ  s    `               rn   r$  r$  b  sÛ  ø€ ô �MŠM˜"Ó€EØ€GØ€JäˆØ�8‰8”C�=‰=ð —9‘9˜R " Ó%×.Ñ.Ó0×5Ñ5°b¸2¸#Ó>ˆDØ×"Ñ" 2¨eÐ"Ð4‰ˆæ˜t×8Ñ8¸×<Ñ<Ü/Ø�r˜2¨xñ9ð 9�àñô :¸!¸RÀÓDÐD�Øñä7¸¸2¸rÓIÐI�Øñä-¨a°°RÓ?Ð?�Øñä7¸¸2¸rÓIÐI�ØñàÜÔB¨A¯G©G´LÔ,AÓB×BÑBô )¨¨B°Ó:¼A¿F¹FÐC‰Aä;Ø�r˜2¨xñ9ð 9�ØAEñFð ä(¨¨B°Ó:¼A¿F¹FÐCˆAØ‰
ˆØ�‰�q‘uÔØ×Ñ˜#×ñK ôN �'ˆ]€FÞØ—‘ e�Ð,ˆÜ�ZÐ €Ià�9ÐÐrq   c                   ód   • \ rS rSrSrSr\" S5      r\" S5      rS r	\
S 5       rS rS	 rS
 rSrg)r¥  i›  zé
Class representing unevaluated inverse Laplace transforms.

For usage of this class, see the :class:`IntegralTransform` docstring.

For how to compute inverse Laplace transforms, see the
:func:`inverse_laplace_transform` docstring.
zInverse LaplaceÚNonerÑ   c                 óZ   • Uc  [         R                  n[        R                  " XX#U40 UD6$ r�   )r¥  Ú_none_sentinelrG   Ú__new__)r¬   rï   r|   rŒ   r™  Úoptss         rn   r\  ÚInverseLaplaceTransform.__new__©  s,   € Ø‰=Ü+×:Ñ:ˆEÜ ×(Ò(¨°°uÑEÀÑEÐErq   c                 óN   • U R                   S   nU[        R                  L a  S nU$ )Nrý   )rj   r¥  r[  )rÊ  r™  s     rn   Úfundamental_planeÚ)InverseLaplaceTransform.fundamental_plane®  s(   € à—	‘	˜!‘ˆØÔ+×:Ñ:Ò:ØˆEØˆrq   c                 ó0   • [        XX0R                  40 UD6$ r�   )rc   r`  )rÊ  rï   r|   rØ   rË  s        rn   rÍ  Ú*InverseLaplaceTransform._compute_transformµ  s"   € Ü5Ø�!×+Ñ+ñ6Ø/4ñ6ð 	6rq   c                 ó8  • U R                   R                  n[        [        X#-  5      U-  X$[        R
                  [        R                  -  -
  U[        R
                  [        R                  -  -   45      S[        R                  -  [        R
                  -  -  $ )Nr®   )Ú	__class__Ú_crE   r'   r   ÚImaginaryUnitr»   ÚPi)rÊ  rï   r|   rØ   rÑ   s        rn   rÐ  Ú$InverseLaplaceTransform._as_integral¹  ss   € Ø�N‰N×Ñˆä”S˜™“X˜a‘Z !¬¯©¼¿¹Ñ)CÑ%CØ"#¤a§o¡o´a·j±jÑ&@Ñ"@ð"Bó CàŒq�t‰t‰V”A—O‘OÑ#ñ%ð	&rq   c           	      ó8  • UR                  SS5      nUR                  SS5      n[        SU R                  U R                  U R                  45        U R                  nU R                  nU R                  nU R
                  n[        XdXWUSS9nU(       a  US   $ U$ )rÓ  rÔ  Trî   Fz[ILT doit] (%s, %s, %s)r"  r   )rÉ  rX   rÕ  rÖ  r×  r`  r$  )	rÊ  rË  rØ  rF   rå   rk  r   r™  rŽ   s	            rn   r¶  ÚInverseLaplaceTransform.doitÀ  s¡   € ð —9‘9˜Y¨Ó-ˆØ—I‘I˜j¨%Ó0ˆ	äÐ(¨4¯=©=Ø+/×+AÑ+AØ+/×+BÑ+Bð+Dô 	Eð ×#Ñ#ˆØ×$Ñ$ˆØ�]‰]ˆØ×&Ñ&ˆä&Ø�B¨	¸dñDˆö Ø�Q‘4ˆKàˆHrq   rr   N)ri   rÚ  rÛ  rÜ  rÝ  rÞ  r   r[  rf  r\  Úpropertyr`  rÍ  rÐ  r¶  rß  rr   rq   rn   r¥  r¥  ›  sI   † ñð €EÙ˜6“]€NÙ	ˆs‹€BòFð
 ñó ðò6ò&õrq   r¥  c                 ó"  ^^^^• TR                  SS5      nTR                  SS5      n[        U [        5      (       a)  [        U S5      (       a  U R	                  UUUU4S j5      $ [        U TTT5      R                  SUS9u  pxU(       a  U$ Xx4$ )a‹  
Compute the inverse Laplace transform of `F(s)`, defined as

.. math ::
    f(t) = \frac{1}{2\pi i} \int_{c-i\infty}^{c+i\infty} e^{st}
    F(s) \mathrm{d}s,

for `c` so large that `F(s)` has no singularites in the
half-plane `\operatorname{Re}(s) > c-\epsilon`.

Explanation
===========

The plane can be specified by
argument ``plane``, but will be inferred if passed as None.

Under certain regularity conditions, this recovers `f(t)` from its
Laplace Transform `F(s)`, for non-negative `t`, and vice
versa.

If the integral cannot be computed in closed form, this function returns
an unevaluated :class:`InverseLaplaceTransform` object.

Note that this function will always assume `t` to be real,
regardless of the SymPy assumption on `t`.

For a description of possible hints, refer to the docstring of
:func:`sympy.integrals.transforms.IntegralTransform.doit`.

Examples
========

>>> from sympy import inverse_laplace_transform, exp, Symbol
>>> from sympy.abc import s, t
>>> a = Symbol('a', positive=True)
>>> inverse_laplace_transform(exp(-a*s)/s, s, t)
Heaviside(-a + t)

See Also
========

laplace_transform
hankel_transform, inverse_hankel_transform
rÔ  Trî   Frá  c                 ó"   >• [        U TTT40 TD6$ r�   )Úinverse_laplace_transform)ÚFijrË  r™  r|   rØ   s    €€€€rn   rž   Ú+inverse_laplace_transform.<locals>.<lambda>	  s   ø€ Ô1°#°q¸!¸UÑLÀeÒLrq   rè  )rÉ  r�   rN   ré  rá  r¥  r¶  )	rï   r|   rØ   r™  rË  rØ  rF   rŽ   rÑ   s	    ````    rn   ro  ro  â  s�   û€ ðZ �y‰y˜ DÓ)€HØ—	‘	˜* eÓ,€Iä�!”Z× Ñ ¤W¨Q°×%<Ñ%<Ø�{‰{ßLóNð 	Nô # 1 a¨¨EÓ2×7Ñ7Ø 	ð 8ð +�D€Aö Øˆàˆtˆrq   c                 óœ   ^^^^^^^^^	^
• [        S[        T/S9u  mm	m
UUUUU4S jmU4S jmUU4S jmUU	U
UU4S jmU4S jmT" U 5      $ )zEFast inverse Laplace transform of rational function including RootSumza, b, nr«   c                 ó  >• U R                  T5      (       d  U $ U R                  (       a  T" U 5      $ U R                  (       a  T" U 5      $ U R                  (       a  T" U 5      $ [	        U [
        5      (       a  T" U 5      $ [        er�   )r€   r‰  ru  ry   r�   rT   ÚNotImplementedError)ÚeÚ_ilt_addÚ_ilt_mulÚ_ilt_powÚ_ilt_rootsumr|   s    €€€€€rn   Ú_iltÚ#_fast_inverse_laplace.<locals>._ilt#	  se   ø€ Ø�u‰u�Q�x‰xØˆHØ�X�XÙ˜A“;ÐØ�X�XÙ˜A“;ÐØ�X�XÙ˜A“;ÐÜ˜œ7×#Ñ#Ù “?Ð"ä%Ð%rq   c                 óJ   >• U R                   " [        TU R                  5      6 $ r�   )rm   Úmaprj   )ru  rz  s    €rn   rv  Ú'_fast_inverse_laplace.<locals>._ilt_add1	  s   ø€ Ø�vŠv”s˜4 §¡Ó(Ð)Ð)rq   c                 ón   >• U R                  T5      u  pUR                  (       a  [        eUT" U5      -  $ r�   )r·  ru  rt  )ru  rø  r¡   rz  r|   s      €€rn   rw  Ú'_fast_inverse_laplace.<locals>._ilt_mul4	  s1   ø€ Ø×&Ñ& qÓ)‰ˆØ�;�;Ü%Ð%Ø‘t˜D“zÑ!Ð!rq   c                 ó$  >• U R                  TT-  T-   T-  5      nUbm  UT   UT   UT   pCnUR                  (       a4  US:  a.  T	U* S-
  -  [        XC-  * T	-  5      -  X2* -  [        U* 5      -  -  $ US:X  a  [        XC-  * T	-  5      U-  $ [        erà   )rÁ   Ú
is_Integerr'   r@   rt  )
ru  rÁ   ÚnmÚamÚbmr‡   r“   r†   r|   rØ   s
        €€€€€rn   rx  Ú'_fast_inverse_laplace.<locals>._ilt_pow:	  s    ø€ Ø—‘˜˜1™˜q™ 1™Ó%ˆØÑØ˜q™ 5¨¡8¨U°1©X�BˆBØ�}�}  a£Ø˜B˜3˜q™5‘z¤#¨© h¨q¡j£/Ñ1°2°s±7¼5À"À»:Ñ3EÑFÐFØ�Q‹wÜ˜R™U˜8 A™:“¨Ñ+Ð+Ü!Ð!rq   c                 ó¾   >• U R                   R                  nU R                   R                  u  n[        U R                  [        U[        T" U5      5      5      5      $ r�   )Úfunr¡   Ú	variablesrT   Úpolyr   rS   )ru  r¡   Úvariablerz  s      €rn   ry  Ú+_fast_inverse_laplace.<locals>._ilt_rootsumD	  s@   ø€ Ø�u‰u�z‰zˆØ—U‘U—_‘_‰
ˆÜ�q—v‘vœv h´¹¸d»Ó0DÓEÓFÐFrq   )r   r    )ru  r|   rØ   rz  rv  rw  rx  ry  r‡   r“   r†   s    ``@@@@@@@@rn   Ú_fast_inverse_laplacer�  	  sI   ÿù€ ä�i¤T°A°3Ñ7�G€A€qˆ!÷&ñ &õ*ö"÷"ñ "õGñ
 �‹7€Nrq   )Tr�   )¥rÝ  rg   rd   Ú
sympy.corer   r   r   Úsympy.core.addr   Úsympy.core.cacher   Úsympy.core.exprr   Úsympy.core.functionr	   r
   r   r   r   r   r   r   r   r   Úsympy.core.mulr   r   Úsympy.core.relationalr   r   r   r   r   r   r   r   Úsympy.core.sortingr   Úsympy.core.symbolr   r   r    Ú$sympy.functions.elementary.complexesr!   r"   r#   r$   r%   r&   Ú&sympy.functions.elementary.exponentialr'   r(   Ú%sympy.functions.elementary.hyperbolicr)   r*   r+   r,   Ú(sympy.functions.elementary.miscellaneousr-   r.   r/   Ú$sympy.functions.elementary.piecewiser0   r1   Ú(sympy.functions.elementary.trigonometricr2   r3   r4   r5   Úsympy.functions.special.besselr6   r7   r8   r9   Ú'sympy.functions.special.delta_functionsr:   r;   Ú'sympy.functions.special.error_functionsr<   r=   r>   Ú'sympy.functions.special.gamma_functionsr?   r@   rA   rB   Ú-sympy.functions.special.singularity_functionsrC   Úsympy.integralsrD   rE   r	  rF   rG   rH   Úsympy.logic.boolalgrI   rJ   rK   rL   rM   Úsympy.matrices.matrixbaserN   Úsympy.polys.matrices.linsolverO   Úsympy.polys.polyerrorsrP   Úsympy.polys.polyrootsrQ   Úsympy.polys.polytoolsrR   Úsympy.polys.rationaltoolsrS   Úsympy.polys.rootoftoolsrT   Úsympy.utilities.exceptionsrU   rV   rW   Úsympy.utilities.miscrX   re   rs   rv   r¢   r¦   rb   rõ   r  r  r  r  r#  r+  r5  rg  ro  rs  r…  rŠ  r�  rœ  r   r§  r¬  r  rx  rå  rc   r  r  r   r%  r'  r)  r+  rB  rF  rH  rJ  rT  r$  r¥  ro  r�  rr   rq   rn   Ú<module>r­     sÄ  ðÙ Û 
Û ß Ñ Ý Ý $Ý  ÷&÷ &÷ &÷ %÷<÷ <ó <å &ß 2Ñ 2÷5÷ 5ç ;ß IÓ Iß CÑ C÷$ç IÓ Iß MÓ Mß Iß AÑ A÷,ó ,å Mß /÷:ñ :ç EÕ EÝ 0Ý 6Ý 2Ý 'Ý &Ý .Ý +÷Iñ Iå 'à€	òò<EòXðv ñ6ó ð6ð ñlLó ðlLð^ ñó ðð  	ñX)ó 	ðX)ðv ñó ðð* ñ&ó ð&ðR ñó ðð, ñ)ó ð)ðX ñó ðð$ ñó ðð@ ñI'ó ðI'ðX ñ;ó ð;ð@ ñó ðð8 ñ/ó ð/ðd ñó ðð8 ñó ðð" ñó ðð4 ñ,ó ð,ò^9òx*ðZ ñ@$ó ð@$ôF5Ð(ô 5ôpNðb ñM4ó ðM4ð` ñó ðð 	ñ%ó 	ð%ðP ñó ðð8 ñó ðð  ñó ðð> ñó ðð  ñó ðð( ñw.ó ðw.ðt	 ñ	ó ð	ð ñó ðð ñó ðð4 ñ6$ó ð6$ðr ñ5ó ð5ôpDÐ/ô DôN:óz*rq   