ó
    ˆ*£hq>  ã                   ó  • S SK JrJr  SSKJr  SSKJr  SSKJr  SSK	J
r
  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ r    " S S\!5      r" " S S\"\\\
\\\\\\\\\\5      r#g)é    )ÚgtÚlté   )Úxrange)ÚSpecialFunctions)ÚRSCache)ÚQuadratureMethods)Ú LaplaceTransformInversionMethods)ÚCalculusMethods)ÚOptimizationMethods)Ú
ODEMethods)ÚMatrixMethods)ÚMatrixCalculusMethods)ÚLinearAlgebraMethods)ÚEigen)ÚIdentificationMethods)ÚVisualizationMethods)Úlibmpc                   ó   • \ rS rSrSrg)ÚContexté   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    ÚL/home/mande/repo/quber/.venv/lib/python3.13/site-packages/mpmath/ctx_base.pyr   r      s   † Úr   r   c                   óZ  • \ rS rSr\R
                  r\R                  rS rS rSr	Sr
S rS rS rS rS	 rS
 rS rS rS rS rS"S jrS#S jrS rS$S jrS%S jrS&S jrS rS rS rS rS r\ " \RB                  5      r"\ " \RF                  5      r#\ " \RH                  5      r$\ " \RJ                  5      r%\ " \RL                  5      r&\ " \RN                  5      r(\ " \RR                  5      r*\ " \RV                  5      r,\ " \RZ                  5      r.S'S jr/S'S jr0S r1S r2S r3S  r4S!r5g)(ÚStandardBaseContexté   c                 ó  • 0 U l         [        R                  " U 5        [        R                  " U 5        [        R                  " U 5        [
        R                  " U 5        [        R                  " U 5        [        R                  " U 5        g ©N)Ú_aliasesr   Ú__init__r   r	   r
   r   r   )Úctxs    r   r&   ÚStandardBaseContext.__init__*   s]   € ØˆŒä×!Ò! #Ô&Ü×Ò˜ÔÜ×"Ò" 3Ô'Ü(×1Ò1°#Ô6Ü× Ò  Ô%Ü×Ò˜sÕ#r   c           	      ó˜   • U R                   R                  5        H  u  p [        X[        X5      5        M     g ! [         a     M-  f = fr$   )r%   ÚitemsÚsetattrÚgetattrÚAttributeError)r'   ÚaliasÚvalues      r   Ú_init_aliasesÚ!StandardBaseContext._init_aliases4   sC   € ØŸL™L×.Ñ.Ö0‰LˆEðÜ˜¤G¨CÓ$7Ö8ò 1øô "ó Úðús   ¡;»
A	ÁA	Fc                 ó   • [        SU5        g )NzWarning:)Úprint©r'   Úmsgs     r   ÚwarnÚStandardBaseContext.warn@   s   € Üˆj˜#Õr   c                 ó   • [        U5      er$   )Ú
ValueErrorr4   s     r   Ú
bad_domainÚStandardBaseContext.bad_domainC   s   € Ü˜‹oÐr   c                 ó@   • [        US5      (       a  UR                  $ U$ )NÚreal)Úhasattrr=   ©r'   Úxs     r   Ú_reÚStandardBaseContext._reF   s   € Ü�1�f×ÑØ—6‘6ˆMØˆr   c                 óT   • [        US5      (       a  UR                  $ U R                  $ )NÚimag)r>   rD   Úzeror?   s     r   Ú_imÚStandardBaseContext._imK   s!   € Ü�1�f×ÑØ—6‘6ˆMØ�x‰xˆr   c                 ó   • U$ r$   r   r?   s     r   Ú
_as_pointsÚStandardBaseContext._as_pointsP   s   € Øˆr   c                 ó&   • U R                  U5      * $ r$   ©Úconvert)r'   r@   Úkwargss      r   ÚfnegÚStandardBaseContext.fnegS   s   € Ø—‘˜A“ˆÐr   c                 óH   • U R                  U5      U R                  U5      -   $ r$   rL   ©r'   r@   ÚyrN   s       r   ÚfaddÚStandardBaseContext.faddV   ó   € Ø�{‰{˜1‹~˜cŸk™k¨!›nÑ,Ð,r   c                 óH   • U R                  U5      U R                  U5      -
  $ r$   rL   rR   s       r   ÚfsubÚStandardBaseContext.fsubY   rV   r   c                 óH   • U R                  U5      U R                  U5      -  $ r$   rL   rR   s       r   ÚfmulÚStandardBaseContext.fmul\   rV   r   c                 óH   • U R                  U5      U R                  U5      -  $ r$   rL   rR   s       r   ÚfdivÚStandardBaseContext.fdiv_   rV   r   c                 ó  • U(       aA  U(       a  [        S U 5       U R                  5      $ [        S U 5       U R                  5      $ U(       a  [        S U 5       U R                  5      $ [        XR                  5      $ )Nc              3   ó>   #   • U  H  n[        U5      S -  v •  M     g7f©é   N©Úabs©Ú.0r@   s     r   Ú	<genexpr>Ú+StandardBaseContext.fsum.<locals>.<genexpr>e   s   é € Ð4ªt¨!œC ›F AžIªtùs   ‚c              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr$   rd   rf   s     r   rh   ri   f   s   é € Ð-ª 1œ˜AŸ˜ªùs   ‚c              3   ó*   #   • U  H	  oS -  v •  M     g7frb   r   rf   s     r   rh   ri   h   s   é € Ð+¢d ˜1ž¢dùs   ‚)ÚsumrE   )r'   ÚargsÚabsoluteÚsquareds       r   ÚfsumÚStandardBaseContext.fsumb   s_   € ÞÞÜÑ4©tÓ4°c·h±hÓ?Ð?ÜÑ-©Ó-¨s¯x©xÓ8Ð8ÞÜÑ+¡dÓ+¨S¯X©XÓ6Ð6Ü�4Ÿ™Ó"Ð"r   Nc                 óÀ   ^• Ub  [        X5      nU(       a,  U R                  m[        U4S jU 5       U R                  5      $ [        S U 5       U R                  5      $ )Nc              3   ó>   >#   • U  H  u  pUT" U5      -  v •  M     g 7fr$   r   )rg   r@   rS   Úcfs      €r   rh   Ú+StandardBaseContext.fdot.<locals>.<genexpr>p   s   øé € Ð0ªR¡E Q˜™"˜Q›%žªRùs   ƒc              3   ó.   #   • U  H  u  pX-  v •  M     g 7fr$   r   )rg   r@   rS   s      r   rh   ru   r   s   é € Ð,ª¡ ˜žªùs   ‚)ÚzipÚconjrl   rE   )r'   ÚxsÚysÚ	conjugatert   s       @r   ÚfdotÚStandardBaseContext.fdotk   sK   ø€ Ø‰>Ü�R“ˆBÞØ—‘ˆBÜÔ0©RÓ0°#·(±(Ó;Ð;äÑ,©Ó,¨c¯h©hÓ7Ð7r   c                 ó8   • U R                   nU H  nX#-  nM	     U$ r$   )Úone)r'   rm   ÚprodÚargs       r   ÚfprodÚStandardBaseContext.fprodt   s!   € Ø�w‰wˆÛˆCØ‰KŠDñ àˆr   c                 ó<   • [        U R                  " X40 UD65        g)z&
Equivalent to ``print(nstr(x, n))``.
N)r3   Únstr)r'   r@   ÚnrN   s       r   ÚnprintÚStandardBaseContext.nprintz   s   € ô 	ˆc�hŠh�qÑ&˜vÑ&Õ'r   c                 óœ  ^ ^• Tc  ST R                   -  m T R                  U5      n[        U5      n[        U5      T:  a  T R                  $ T R	                  U5      (       ai  [        TUT-  5      n[        UR                  5      U:  a  UR                  $ [        UR                  5      U:  a  T R                  SUR                  5      $ U$ ! [         as    [        UT R                  5      (       a  UR                  U U4S j5      s $ [        US5      (       a+  U Vs/ s H  nT R                  UT5      PM     Os  snf sns $  U$ f = f)a~  
Chops off small real or imaginary parts, or converts
numbers close to zero to exact zeros. The input can be a
single number or an iterable::

    >>> from mpmath import *
    >>> mp.dps = 15; mp.pretty = False
    >>> chop(5+1e-10j, tol=1e-9)
    mpf('5.0')
    >>> nprint(chop([1.0, 1e-20, 3+1e-18j, -4, 2]))
    [1.0, 0.0, 3.0, -4.0, 2.0]

The tolerance defaults to ``100*eps``.
éd   r   c                 ó(   >• TR                  U T5      $ r$   )Úchop)Úar'   Útols    €€r   Ú<lambda>Ú*StandardBaseContext.chop.<locals>.<lambda>Ÿ   s   ø€ ¨¯©°!°SÔ)9r   Ú__iter__)ÚepsrM   re   rE   Ú_is_complex_typeÚmaxrD   r=   ÚmpcÚ	TypeErrorÚ
isinstanceÚmatrixÚapplyr>   rŒ   )r'   r@   rŽ   ÚabsxÚpart_tolr�   s   ` `   r   rŒ   ÚStandardBaseContext.chop€   s  ù€ ð ‰;Ø�c—g‘g‘+ˆCð	5Ø—‘˜A“ˆAÜ�q“6ˆDÜ�1‹v˜‹|Ø—x‘x�Ø×#Ñ# A×&Ñ&ä˜s D¨¡HÓ-�Ü�q—v‘v“; Ó)ØŸ6™6�MÜ�q—v‘v“; Ó)ØŸ7™7 1 a§f¡fÓ-Ð-ð ˆøô ó 	5Ü˜!˜SŸZ™Z×(Ñ(Ø—w‘wÕ9Ó:Ò:Ü�q˜*×%Ñ%Ù23Ó4²!¨Q˜Ÿ™  CÖ(²!ùÔ4Ò4ð &àˆð	5ús0   –6C ÁA	C Â4C Ã;EÄEÄ D=Ä<	EÅ
Ec                 ó  • U R                  U5      nUc$  Uc!  U R                  SU R                  * S-   5      =p4Uc  UnOUc  Un[        X-
  5      nXT::  a  g[        U5      n[        U5      nXg:  a  XW-  nXƒ:*  $ XV-  nXƒ:*  $ )a  
Determine whether the difference between `s` and `t` is smaller
than a given epsilon, either relatively or absolutely.

Both a maximum relative difference and a maximum difference
('epsilons') may be specified. The absolute difference is
defined as `|s-t|` and the relative difference is defined
as `|s-t|/\max(|s|, |t|)`.

If only one epsilon is given, both are set to the same value.
If none is given, both epsilons are set to `2^{-p+m}` where
`p` is the current working precision and `m` is a small
integer. The default setting typically allows :func:`~mpmath.almosteq`
to be used to check for mathematical equality
in the presence of small rounding errors.

**Examples**

    >>> from mpmath import *
    >>> mp.dps = 15
    >>> almosteq(3.141592653589793, 3.141592653589790)
    True
    >>> almosteq(3.141592653589793, 3.141592653589700)
    False
    >>> almosteq(3.141592653589793, 3.141592653589700, 1e-10)
    True
    >>> almosteq(1e-20, 2e-20)
    True
    >>> almosteq(1e-20, 2e-20, rel_eps=0, abs_eps=0)
    False

r   é   T)rM   ÚldexpÚprecre   )	r'   ÚsÚtÚrel_epsÚabs_epsÚdiffÚabssÚabstÚerrs	            r   ÚalmosteqÚStandardBaseContext.almosteq¤   s˜   € ðB �K‰K˜‹NˆØ‰?˜w™Ø #§	¡	¨!¨c¯h©h¨Y°q©[Ó 9Ð9ˆGØ‰?Ø‰GØ‰_ØˆGÜ�1‘3‹xˆØ‹?ØÜ�1‹vˆÜ�1‹vˆØ‹;Ø‘)ˆCð ‰~Ðð ‘)ˆCØ‰~Ðr   c                 óZ  • [        U5      S::  d  [        S[        U5      -  5      e[        U5      S:¼  d  [        S[        U5      -  5      eSnSn[        U5      S:X  a  US   nO[        U5      S:¼  a
  US   nUS   n[        U5      S:X  a  US   nU R                  U5      U R                  W5      U R                  U5      p4nX#-   U:w  d   S5       eX$:”  a  US:”  a  / $ [        nOUS:  a  / $ [        n/ nSnUn X#U-  -   nUS-  nU" X„5      (       a  UR                  U5        O U$ M0  )a¡  
This is a generalized version of Python's :func:`~mpmath.range` function
that accepts fractional endpoints and step sizes and
returns a list of ``mpf`` instances. Like :func:`~mpmath.range`,
:func:`~mpmath.arange` can be called with 1, 2 or 3 arguments:

``arange(b)``
    `[0, 1, 2, \ldots, x]`
``arange(a, b)``
    `[a, a+1, a+2, \ldots, x]`
``arange(a, b, h)``
    `[a, a+h, a+h, \ldots, x]`

where `b-1 \le x < b` (in the third case, `b-h \le x < b`).

Like Python's :func:`~mpmath.range`, the endpoint is not included. To
produce ranges where the endpoint is included, :func:`~mpmath.linspace`
is more convenient.

**Examples**

    >>> from mpmath import *
    >>> mp.dps = 15; mp.pretty = False
    >>> arange(4)
    [mpf('0.0'), mpf('1.0'), mpf('2.0'), mpf('3.0')]
    >>> arange(1, 2, 0.25)
    [mpf('1.0'), mpf('1.25'), mpf('1.5'), mpf('1.75')]
    >>> arange(1, -1, -0.75)
    [mpf('1.0'), mpf('0.25'), mpf('-0.5')]

é   z+arange expected at most 3 arguments, got %ir   z+arange expected at least 1 argument, got %ir   rc   z0dt is too small and would cause an infinite loop)Úlenr–   Úmpfr   r   Úappend)	r'   rm   r�   ÚdtÚbÚopÚresultÚir¢   s	            r   ÚarangeÚStandardBaseContext.arange×   sJ  € ô@ �4‹y˜A‹~ÜÐIÜ! $›iñ(ó )ð )ä�4‹y˜A‹~ÜÐIÜ! $›iñ(ó )ð )ð ˆØˆäˆt‹9˜‹>Ø�Q‘‰AÜ�‹Y˜!‹^Ø�Q‘ˆAØ�Q‘ˆAÜˆt‹9˜‹>Ø�a‘ˆBØ—7‘7˜1“:˜sŸw™w q›z¨3¯7©7°2«;ˆbˆØ‰v˜‹{ÐNÐNÓNˆ{à‹5Ø�A‹vØ�	Ü‰Bà�A‹vØ�	ÜˆBàˆØˆØˆØØ�q‘D‘ˆAØ�‰FˆAÙ�!�x‰xØ—‘˜aÕ àØˆñ r   c                 óÔ  • [        U5      S:X  a7  U R                  US   5      nU R                  US   5      n[        US   5      nOi[        U5      S:X  aC  [        US   S5      (       d   eUS   R                  nUS   R
                  n[        US   5      nO[        S[        U5      -  5      eUS:  a  [        S5      eSU;  d
  US   (       aW  US:X  a  U R                  U5      /$ XC-
  U R                  US-
  5      -  n[        U5       Vs/ s H
  owU-  U-   PM     nnXHS	'   U$ XC-
  U R                  U5      -  n[        U5       Vs/ s H
  owU-  U-   PM     nnU$ s  snf s  snf )
aT  
``linspace(a, b, n)`` returns a list of `n` evenly spaced
samples from `a` to `b`. The syntax ``linspace(mpi(a,b), n)``
is also valid.

This function is often more convenient than :func:`~mpmath.arange`
for partitioning an interval into subintervals, since
the endpoint is included::

    >>> from mpmath import *
    >>> mp.dps = 15; mp.pretty = False
    >>> linspace(1, 4, 4)
    [mpf('1.0'), mpf('2.0'), mpf('3.0'), mpf('4.0')]

You may also provide the keyword argument ``endpoint=False``::

    >>> linspace(1, 4, 4, endpoint=False)
    [mpf('1.0'), mpf('1.75'), mpf('2.5'), mpf('3.25')]

r¬   r   r   rc   Ú_mpi_z*linspace expected 2 or 3 arguments, got %izn must be greater than 0Úendpointéÿÿÿÿ)	r­   r®   Úintr>   r�   r±   r–   r9   r   )	r'   rm   rN   r�   r±   r†   Ústepr´   rS   s	            r   ÚlinspaceÚStandardBaseContext.linspace   se  € ô* ˆt‹9˜‹>Ø—‘˜˜Q™Ó ˆAØ—‘˜˜Q™Ó ˆAÜ�D˜‘G“‰AÜ�‹Y˜!‹^Ü˜4 ™7 G×,Ñ,Ð,Ð,Ø�Q‘—	‘	ˆAØ�Q‘—	‘	ˆAÜ�D˜‘G“‰AäÐHÜ! $›iñ(ó )ð )àˆq‹5ÜÐ7Ó8Ð8Ø˜VÓ# v¨j×'9Ø�A‹vØŸ™ ›
�|Ð#Ø‘E˜SŸW™W Q¨¡U›^Ñ+ˆDÜ%+¨A¤YÓ/¢Y �4‘˜!”¡YˆAÐ/Øˆb‰Eð ˆð ‘E˜SŸW™W Q›ZÑ'ˆDÜ%+¨A¤YÓ/¢Y �4‘˜!”¡YˆAÐ/Øˆùò 0ùò 0s   ÄE ÅE%c                 óN   • U R                   " U40 UD6U R                  " U40 UD64$ r$   )ÚcosÚsin©r'   ÚzrN   s      r   Úcos_sinÚStandardBaseContext.cos_sinN  s)   € Ø�wŠw�qÑ#˜FÑ# S§W¢W¨QÑ%9°&Ñ%9Ð9Ð9r   c                 óN   • U R                   " U40 UD6U R                  " U40 UD64$ r$   )ÚcospiÚsinpirÂ   s      r   Úcospi_sinpiÚStandardBaseContext.cospi_sinpiQ  s)   € Ø�yŠy˜Ñ%˜fÑ% s§y¢y°Ñ'=°fÑ'=Ð=Ð=r   c                 ó0   • [        SUS-  -  SU-  -   5      $ )Niè  g      Ð?rž   )r»   )r'   Úps     r   Ú_default_hyper_maxprecÚ*StandardBaseContext._default_hyper_maxprecT  s   € Ü�4˜!˜T™'‘> A a¡CÑ'Ó(Ð(r   c                 óÞ  • U R                   n Sn X4-   S-   U l         U R                  nU R                  nSnU" 5        H]  nXh-  nXr-  (       dH  U(       aA  U R                  U5      n	[	        XY5      nU R                  U5      n
X©-
  U R                   :”  a    O	US-  nM_     UW
-
  nX»:w  a  O2X´:  d  U R
                  (       a  OU[        U R                   U5      -  nMË  UX0l         $ ! X0l         f = f©Né
   r   é   r   )r    ÚninfrE   Úmagr”   Ú_fixed_precisionÚmin)r'   ÚtermsÚ
check_stepr    Ú	extraprecÚmax_magr¡   ÚkÚtermÚterm_magÚsum_magÚcancellations               r   Úsum_accuratelyÚ"StandardBaseContext.sum_accuratelya  sç   € Ø�x‰xˆð	ØˆIØØÑ+¨aÑ/�”ØŸ(™(�Ø—H‘H�Ø�Ù!žG�DØ‘I�AØŸN¶Ø#&§7¡7¨4£=˜Ü"% gÓ"8˜Ø"%§'¡'¨!£*˜Ø"Ñ-°·±Ó8Ù!Ø˜‘F’Añ $ð  '¨Ñ0�ØÓ/ØØÓ+¨s×/C×/CØØœS §¡¨<Ó8Ñ8�	ñ' ð( à�Hø�t�Húó   ŽCC$ Ã$C,c                 óÞ  • U R                   n Sn X4-   S-   U l         U R                  nU R                  nUnSnU" 5        H[  n	Xy-  nX–-
  n
X‚-  (       dB  U R                  U
5      n[	        X[5      nU R                  Xv-
  5      nU* U R                   :”  a    O	US-  nM]     UW-
  nXÝ:w  a  O2XÔ:  d  U R
                  (       a  OU[        U R                   U5      -  nMË  UX0l         $ ! X0l         f = frÐ   )r    rÓ   r   rÔ   r”   rÕ   rÖ   )r'   ÚfactorsrØ   r    rÙ   rÚ   r   r¡   rÛ   ÚfactorrÜ   rÝ   rÞ   rß   s                 r   Úmul_accuratelyÚ"StandardBaseContext.mul_accurately}  sô   € Ø�x‰xˆð	ØˆIØØÑ+¨aÑ/�”ØŸ(™(�Ø—g‘g�Ø�Ø�Ù%ži�FØ‘K�AØ!™<�DØŸNØ#&§7¡7¨4£=˜Ü"% gÓ"8˜Ø"%§'¡'¨!©%£.˜ð %˜9 s§x¡xÓ/Ù!Ø˜‘F’Añ (ð  '¨Ñ0�ØÓ/ØØÓ+¨s×/C×/CØØœS §¡¨<Ó8Ñ8�	ñ/ ð0 à�Hø�t�Húrâ   c                 óH   • U R                  U5      U R                  U5      -  $ )aÄ  Converts `x` and `y` to mpmath numbers and evaluates
`x^y = \exp(y \log(x))`::

    >>> from mpmath import *
    >>> mp.dps = 30; mp.pretty = True
    >>> power(2, 0.5)
    1.41421356237309504880168872421

This shows the leading few digits of a large Mersenne prime
(performing the exact calculation ``2**43112609-1`` and
displaying the result in Python would be very slow)::

    >>> power(2, 43112609)-1
    3.16470269330255923143453723949e+12978188
rL   )r'   r@   rS   s      r   ÚpowerÚStandardBaseContext.power�  s   € ð  �{‰{˜1‹~ §¡¨Q£Ñ/Ð/r   c                 ó$   • U R                  U5      $ r$   )Úzeta)r'   r†   s     r   Ú	_zeta_intÚStandardBaseContext._zeta_int¯  s   € Ø�x‰x˜‹{Ðr   c                 ó&   ^ ^^^• S/mUUU U4S jnU$ )a™  
Return a wrapped copy of *f* that raises ``NoConvergence`` when *f*
has been called more than *N* times::

    >>> from mpmath import *
    >>> mp.dps = 15
    >>> f = maxcalls(sin, 10)
    >>> print(sum(f(n) for n in range(10)))
    1.95520948210738
    >>> f(10) # doctest: +IGNORE_EXCEPTION_DETAIL
    Traceback (most recent call last):
      ...
    NoConvergence: maxcalls: function evaluated 10 times

r   c                  óh   >• TS==   S-  ss'   TS   T:”  a  TR                  ST-  5      eT" U 0 UD6$ )Nr   r   z%maxcalls: function evaluated %i times)ÚNoConvergence)rm   rN   ÚNÚcounterr'   Úfs     €€€€r   Úf_maxcalls_wrappedÚ8StandardBaseContext.maxcalls.<locals>.f_maxcalls_wrappedÃ  sC   ø€ Ø�A‹J˜!‰O‹JØ�q‰z˜A‹~Ø×'Ñ'Ð(OÐRSÑ(SÓTÐTÙ�dÐ%˜fÑ%Ð%r   r   )r'   rô   rò   rõ   ró   s   ``` @r   ÚmaxcallsÚStandardBaseContext.maxcalls²  s   û€ ð  �#ˆ÷	&ð 	&ð
 "Ð!r   c                 ód   ^ ^^• 0 mU UU4S jnTR                   Ul         TR                  Ul        U$ )a  
Return a wrapped copy of *f* that caches computed values, i.e.
a memoized copy of *f*. Values are only reused if the cached precision
is equal to or higher than the working precision::

    >>> from mpmath import *
    >>> mp.dps = 15; mp.pretty = True
    >>> f = memoize(maxcalls(sin, 1))
    >>> f(2)
    0.909297426825682
    >>> f(2)
    0.909297426825682
    >>> mp.dps = 25
    >>> f(2) # doctest: +IGNORE_EXCEPTION_DETAIL
    Traceback (most recent call last):
      ...
    NoConvergence: maxcalls: function evaluated 1 times

c                  ó°   >• U(       a  U [        UR                  5       5      4nOU nTR                  nUT	;   a  T	U   u  pEXC:¼  a  U7$ T" U 0 UD6nX64T	U'   U$ r$   )Útupler*   r    )
rm   rN   Úkeyr    ÚcprecÚcvaluer/   r'   rô   Úf_caches
          €€€r   Úf_cachedÚ-StandardBaseContext.memoize.<locals>.f_cachedß  sf   ø€ ÞØœE &§,¡,£.Ó1Ð1‘à�Ø—8‘8ˆDØ�g‹~Ø '¨¡‘�Ø“=Ø"˜7�NÙ�tÐ&˜vÑ&ˆEØ ˜=ˆG�C‰LØˆLr   )r   Ú__doc__)r'   rô   r   rÿ   s   `` @r   ÚmemoizeÚStandardBaseContext.memoizeÊ  s.   ú€ ð( ˆ÷	ð ŸJ™JˆÔØŸ9™9ˆÔØˆr   r   )FF)NF)é   r$   )NN)r   )6r   r   r   r   r   rñ   ÚComplexResultr&   r0   rÕ   Úverboser6   r:   rA   rF   rI   rO   rT   rX   r[   r^   rp   r|   r‚   r‡   rŒ   r©   rµ   r½   rÄ   rÉ   rÍ   ÚstaticmethodÚgcdÚ_gcdÚlist_primesÚisprimeÚbernfracÚmoebiusÚifacÚ_ifacÚeulernumÚ	_eulernumÚ	stirling1Ú
_stirling1Ú	stirling2Ú
_stirling2rà   ræ   ré   rí   r÷   r  r   r   r   r   r!   r!      sB  † ð ×'Ñ'€MØ×'Ñ'€Mò$òð Ðð €Gòòòò
ò
òò-ò-ò-ò-ô#ô8òô(ô"ôH1òfGòR,ò\:ò>ò)ñ ˜Ÿ	™	Ó"€DÙ˜u×0Ñ0Ó1€KÙ˜5Ÿ=™=Ó)€GÙ˜EŸN™NÓ+€HÙ˜5Ÿ=™=Ó)€GÙ˜Ÿ™Ó$€EÙ˜UŸ^™^Ó,€IÙ˜eŸo™oÓ.€JÙ˜eŸo™oÓ.€Jôô8ò@0ò$ò"õ0$r   r!   N)$Úoperatorr   r   Úlibmp.backendr   Úfunctions.functionsr   Úfunctions.rszetar   Úcalculus.quadraturer	   Úcalculus.inverselaplacer
   Úcalculus.calculusr   Úcalculus.optimizationr   Úcalculus.odesr   Úmatrices.matricesr   Úmatrices.calculusr   Úmatrices.linalgr   Úmatrices.eigenr   Úidentificationr   Úvisualizationr   Ú r   Úobjectr   r!   r   r   r   Ú<module>r(     sv   ðß å !å 1Ý %Ý 2Ý EÝ .Ý 6Ý %Ý ,Ý 4Ý 1Ý !Ý 1Ý /å ô	ˆfô 	ôV˜'ØØØØ$ØØØØØ	ØØØØõVr   