§
    JŠtjq>  ã                   ó  — d dl mZmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z   G d„ de!¦  «        Z" G d„ de"eee
eeeeeeeeee¦  «        Z#dS )é    )ÚgtÚlté   )Úxrange)ÚSpecialFunctions)ÚRSCache)ÚQuadratureMethods)Ú LaplaceTransformInversionMethods)ÚCalculusMethods)ÚOptimizationMethods)Ú
ODEMethods)ÚMatrixMethods)ÚMatrixCalculusMethods)ÚLinearAlgebraMethods)ÚEigen)ÚIdentificationMethods)ÚVisualizationMethods)Úlibmpc                   ó   — e Zd ZdS )ÚContextN)Ú__name__Ú
__module__Ú__qualname__© ó    úM/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/mpmath/ctx_base.pyr   r      s   € € € € € Ø€Dr   r   c                   ó  — e Zd Zej        Zej        Zd„ Zd„ ZdZdZ	d„ Z
d„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd"d„Zd#d„Zd„ Zd$d„Zd%d„Zd&d„Zd„ Zd„ Zd„ Zd„ Zd„ Z eej         ¦  «        Z! eej"        ¦  «        Z" eej#        ¦  «        Z# eej$        ¦  «        Z$ eej%        ¦  «        Z% eej&        ¦  «        Z' eej(        ¦  «        Z) eej*        ¦  «        Z+ eej,        ¦  «        Z-d'd„Z.d'd„Z/d„ Z0d„ Z1d „ Z2d!„ Z3dS )(ÚStandardBaseContextc                 ó  — i | _         t          j        | ¦  «         t          j        | ¦  «         t	          j        | ¦  «         t          j        | ¦  «         t          j        | ¦  «         t          j        | ¦  «         d S ©N)Ú_aliasesr   Ú__init__r   r	   r
   r   r   )Úctxs    r   r"   zStandardBaseContext.__init__*   su   € ØˆŒåÔ! #Ñ&Ô&Ð&ÝÔ˜ÑÔÐÝÔ" 3Ñ'Ô'Ð'Ý(Ô1°#Ñ6Ô6Ð6ÝÔ  Ñ%Ô%Ð%ÝÔ˜sÑ#Ô#Ð#Ð#Ð#r   c           	      ó¤   — | j                              ¦   «         D ]5\  }}	 t          | |t          | |¦  «        ¦  «         Œ&# t          $ r Y Œ2w xY wd S r    )r!   ÚitemsÚsetattrÚgetattrÚAttributeError)r#   ÚaliasÚvalues      r   Ú_init_aliasesz!StandardBaseContext._init_aliases4   sq   € ØœL×.Ò.Ñ0Ô0ð 	ð 	‰LˆE�5ðÝ˜˜U¥G¨C°Ñ$7Ô$7Ñ8Ô8Ð8Ð8øÝ!ð ð ð Ø�ðøøøð	ð 	s    A Á 
AÁAFc                 ó&   — t          d|¦  «         d S )NzWarning:)Úprint©r#   Úmsgs     r   ÚwarnzStandardBaseContext.warn@   s   € Ýˆj˜#ÑÔÐÐÐr   c                 ó    — t          |¦  «        ‚r    )Ú
ValueErrorr.   s     r   Ú
bad_domainzStandardBaseContext.bad_domainC   s   € Ý˜‰oŒoÐr   c                 ó4   — t          |d¦  «        r|j        S |S )NÚreal)Úhasattrr5   ©r#   Úxs     r   Ú_rezStandardBaseContext._reF   s    € Ý�1�fÑÔð 	Ø”6ˆMØˆr   c                 ó>   — t          |d¦  «        r|j        S | j        S )NÚimag)r6   r;   Úzeror7   s     r   Ú_imzStandardBaseContext._imK   s"   € Ý�1�fÑÔð 	Ø”6ˆMØŒxˆr   c                 ó   — |S r    r   r7   s     r   Ú
_as_pointszStandardBaseContext._as_pointsP   s   € Øˆr   c                 ó.   — |                       |¦  «         S r    ©Úconvert)r#   r8   Úkwargss      r   ÚfnegzStandardBaseContext.fnegS   s   € Ø—’˜A‘”ˆÐr   c                 óX   — |                       |¦  «        |                       |¦  «        z   S r    rA   ©r#   r8   ÚyrC   s       r   ÚfaddzStandardBaseContext.faddV   ó!   € Ø�{Š{˜1‰~Œ~˜cŸkšk¨!™nœnÑ,Ð,r   c                 óX   — |                       |¦  «        |                       |¦  «        z
  S r    rA   rF   s       r   ÚfsubzStandardBaseContext.fsubY   rI   r   c                 óX   — |                       |¦  «        |                       |¦  «        z  S r    rA   rF   s       r   ÚfmulzStandardBaseContext.fmul\   rI   r   c                 óX   — |                       |¦  «        |                       |¦  «        z  S r    rA   rF   s       r   ÚfdivzStandardBaseContext.fdiv_   rI   r   c                 óò   — |r@|rt          d„ |D ¦   «         | j        ¦  «        S t          d„ |D ¦   «         | j        ¦  «        S |rt          d„ |D ¦   «         | j        ¦  «        S t          || j        ¦  «        S )Nc              3   ó:   K  — | ]}t          |¦  «        d z  V — ŒdS ©é   N©Úabs©Ú.0r8   s     r   ú	<genexpr>z+StandardBaseContext.fsum.<locals>.<genexpr>e   s,   è è € Ð4Ð4¨!�C ™FœF A™IÐ4Ð4Ð4Ð4Ð4Ð4r   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r    rT   rV   s     r   rX   z+StandardBaseContext.fsum.<locals>.<genexpr>f   s(   è è € Ð-Ð- 1�˜A™œÐ-Ð-Ð-Ð-Ð-Ð-r   c              3   ó    K  — | ]	}|d z  V — Œ
dS rR   r   rV   s     r   rX   z+StandardBaseContext.fsum.<locals>.<genexpr>h   s&   è è € Ð+Ð+ ˜˜1™Ð+Ð+Ð+Ð+Ð+Ð+r   )Úsumr<   )r#   ÚargsÚabsoluteÚsquareds       r   ÚfsumzStandardBaseContext.fsumb   s�   € Øð 	9Øð @ÝÐ4Ð4¨tÐ4Ñ4Ô4°c´hÑ?Ô?Ð?ÝÐ-Ð-¨Ð-Ñ-Ô-¨s¬xÑ8Ô8Ð8Øð 	7ÝÐ+Ð+ dÐ+Ñ+Ô+¨S¬XÑ6Ô6Ð6Ý�4˜œÑ"Ô"Ð"r   Nc                 óº   ‡— |�t          ||¦  «        }|r(| j        Št          ˆfd„|D ¦   «         | j        ¦  «        S t          d„ |D ¦   «         | j        ¦  «        S )Nc              3   ó:   •K  — | ]\  }}| ‰|¦  «        z  V — Œd S r    r   )rW   r8   rG   Úcfs      €r   rX   z+StandardBaseContext.fdot.<locals>.<genexpr>p   s3   øè è € Ð0Ð0¡E Q q˜˜"˜"˜Q™%œ%™Ð0Ð0Ð0Ð0Ð0Ð0r   c              3   ó&   K  — | ]\  }}||z  V — Œd S r    r   )rW   r8   rG   s      r   rX   z+StandardBaseContext.fdot.<locals>.<genexpr>r   s*   è è € Ð,Ð,¡  1˜˜!™Ð,Ð,Ð,Ð,Ð,Ð,r   )ÚzipÚconjr[   r<   )r#   ÚxsÚysÚ	conjugaterb   s       @r   ÚfdotzStandardBaseContext.fdotk   sl   ø€ Øˆ>Ý�R˜‘”ˆBØð 	8Ø”ˆBÝÐ0Ð0Ð0Ð0¨RÐ0Ñ0Ô0°#´(Ñ;Ô;Ð;åÐ,Ð,¨Ð,Ñ,Ô,¨c¬hÑ7Ô7Ð7r   c                 ó(   — | j         }|D ]}||z  }Œ|S r    )Úone)r#   r\   ÚprodÚargs       r   ÚfprodzStandardBaseContext.fprodt   s(   € ØŒwˆØð 	ð 	ˆCØ�C‰KˆDˆDØˆr   é   c                 ó>   — t           | j        ||fi |¤Ž¦  «         dS )z6
        Equivalent to ``print(nstr(x, n))``.
        N)r-   Únstr)r#   r8   ÚnrC   s       r   ÚnprintzStandardBaseContext.nprintz   s.   € õ 	ˆhˆcŒh�q˜!Ð&Ð&˜vÐ&Ð&Ñ'Ô'Ð'Ð'Ð'r   c                 óX  ‡ ‡— ‰€
d‰ j         z  Š	 ‰                      |¦  «        }t          |¦  «        }t          |¦  «        ‰k     r‰ j        S ‰                      |¦  «        ret          ‰|‰z  ¦  «        }t          |j        ¦  «        |k     r|j        S t          |j        ¦  «        |k     r‰                      d|j        ¦  «        S na# t          $ rT t          |‰ j        ¦  «        r|                     ˆ ˆfd„¦  «        cY S t          |d¦  «        rˆ ˆfd„|D ¦   «         cY S Y nw xY w|S )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``.
        Néd   r   c                 ó0   •— ‰                      | ‰¦  «        S r    ©Úchop)Úar#   Útols    €€r   ú<lambda>z*StandardBaseContext.chop.<locals>.<lambda>Ÿ   s   ø€ ¨¯ª°!°SÑ)9Ô)9€ r   Ú__iter__c                 ó<   •— g | ]}‰                      |‰¦  «        ‘ŒS r   rw   )rW   ry   r#   rz   s     €€r   ú
<listcomp>z,StandardBaseContext.chop.<locals>.<listcomp>¡   s'   ø€ Ð4Ð4Ð4¨Q˜Ÿš  CÑ(Ô(Ð4Ð4Ð4r   )ÚepsrB   rU   r<   Ú_is_complex_typeÚmaxr;   r5   ÚmpcÚ	TypeErrorÚ
isinstanceÚmatrixÚapplyr6   )r#   r8   rz   ÚabsxÚpart_tols   ` `  r   rx   zStandardBaseContext.chop€   sR  øø€ ð ˆ;Ø�c”g‘+ˆCð	5Ø—’˜A‘”ˆAÝ�q‘6”6ˆDÝ�1‰vŒv˜Š|ˆ|Ø”x�Ø×#Ò# AÑ&Ô&ð .å˜s D¨¡HÑ-Ô-�Ý�q”v‘;”; Ò)Ð)Øœ6�MÝ�q”v‘;”; Ò)Ð)ØŸ7š7 1 a¤fÑ-Ô-Ð-øøÝð 	5ð 	5ð 	5Ý˜!˜SœZÑ(Ô(ð ;Ø—w’wÐ9Ð9Ð9Ð9Ð9Ñ:Ô:Ð:Ð:Ð:Ý�q˜*Ñ%Ô%ð 5Ø4Ð4Ð4Ð4Ð4°!Ð4Ñ4Ô4Ð4Ð4Ð4ð5ð 5ð	5øøøð
 ˆs$   �=C	 ÁAC	 Â2C	 Ã	8D'ÄD'Ä&D'c                 ó&  — |                       |¦  «        }|€#|€!|                      d| j         dz   ¦  «        x}}|€|}n|€|}t          ||z
  ¦  «        }||k    rdS t          |¦  «        }t          |¦  «        }||k     r||z  }n||z  }||k    S )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

        Nr   é   T)rB   ÚldexpÚprecrU   )	r#   ÚsÚtÚrel_epsÚabs_epsÚdiffÚabssÚabstÚerrs	            r   ÚalmosteqzStandardBaseContext.almosteq¤   s­   € ðB �KŠK˜‰NŒNˆØˆ?˜w˜Ø #§	¢	¨!¨c¬h¨Y°q©[Ñ 9Ô 9Ð9ˆG�gØˆ?ØˆGˆGØˆ_ØˆGÝ�1�Q‘3‰xŒxˆØ�7Š?ˆ?Ø�4Ý�1‰vŒvˆÝ�1‰vŒvˆØ�$Š;ˆ;Ø�t‘)ˆCˆCà�t‘)ˆCØ�gŠ~Ðr   c                 óè  — t          |¦  «        dk    st          dt          |¦  «        z  ¦  «        ‚t          |¦  «        dk    st          dt          |¦  «        z  ¦  «        ‚d}d}t          |¦  «        dk    r	|d         }n#t          |¦  «        dk    r|d         }|d         }t          |¦  «        dk    r|d         }|                      |¦  «        |                      |¦  «        |                      |¦  «        }}}||z   |k    s
J d¦   «         ‚||k    r|dk    rg S t          }n|dk     rg S t          }g }d}|}	 |||z  z   }|dz  } |||¦  «        r|                     |¦  «         nnŒ1|S )aa  
        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   rS   z0dt is too small and would cause an infinite loop)Úlenrƒ   Úmpfr   r   Úappend)	r#   r\   ry   ÚdtÚbÚopÚresultÚirŽ   s	            r   ÚarangezStandardBaseContext.arange×   sœ  € õ@ �4‰yŒy˜AŠ~ˆ~ÝÐIÝ! $™iœiñ(ñ )ô )ð )å�4‰yŒy˜AŠ~ˆ~ÝÐIÝ! $™iœiñ(ñ )ô )ð )ð ˆØˆåˆt‰9Œ9˜Š>ˆ>Ø�Q”ˆAˆAÝ�‰YŒY˜!Š^ˆ^Ø�Q”ˆAØ�Q”ˆAÝˆt‰9Œ9˜Š>ˆ>Ø�a”ˆBØ—7’7˜1‘:”:˜sŸwšw q™zœz¨3¯7ª7°2©;¬;ˆbˆ1ˆØ�2‰v˜Š{ˆ{ˆ{ÐN‰{Œ{ˆ{àˆqŠ5ˆ5Ø�AŠvˆvØ�	ÝˆBˆBà�AŠvˆvØ�	ÝˆBàˆØˆØˆð	Ø�B�q‘D‘ˆAØ�‰FˆAØˆr�!�Q‰xŒxð Ø—’˜aÑ Ô Ð Ð àð	ð ˆr   c                 ó$  ‡‡— t          |¦  «        dk    rL|                      |d         ¦  «        Š|                      |d         ¦  «        }t          |d         ¦  «        }nzt          |¦  «        dk    rHt          |d         d¦  «        sJ ‚|d         j        Š|d         j        }t          |d         ¦  «        }nt          dt          |¦  «        z  ¦  «        ‚|dk     rt          d¦  «        ‚d|vs|d         r\|dk    r|                      ‰¦  «        gS |‰z
  |                      |dz
  ¦  «        z  Šˆˆfd	„t          |¦  «        D ¦   «         }||d
<   n7|‰z
  |                      |¦  «        z  Šˆˆfd„t          |¦  «        D ¦   «         }|S )aÄ  
        ``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   rS   Ú_mpi_z*linspace expected 2 or 3 arguments, got %izn must be greater than 0Úendpointc                 ó    •— g | ]
}|‰z  ‰z   ‘ŒS r   r   ©rW   rŸ   ry   Ústeps     €€r   r~   z0StandardBaseContext.linspace.<locals>.<listcomp>G  ó!   ø€ Ð/Ð/Ð/ ��4‘˜!‘Ð/Ð/Ð/r   éÿÿÿÿc                 ó    •— g | ]
}|‰z  ‰z   ‘ŒS r   r   r¥   s     €€r   r~   z0StandardBaseContext.linspace.<locals>.<listcomp>K  r§   r   )	r˜   r™   Úintr6   ry   rœ   rƒ   r2   r   )r#   r\   rC   rœ   rr   rG   ry   r¦   s         @@r   ÚlinspacezStandardBaseContext.linspace   s“  øø€ õ* ˆt‰9Œ9˜Š>ˆ>Ø—’˜˜QœÑ Ô ˆAØ—’˜˜QœÑ Ô ˆAÝ�D˜”G‘”ˆAˆAÝ�‰YŒY˜!Š^ˆ^Ý˜4 œ7 GÑ,Ô,Ð,Ð,Ð,Ø�Q””	ˆAØ�Q””	ˆAÝ�D˜”G‘”ˆAˆAåÐHÝ! $™iœiñ(ñ )ô )ð )àˆqŠ5ˆ5ÝÐ7Ñ8Ô8Ð8Ø˜VÐ#Ð# v¨jÔ'9Ð#Ø�AŠvˆvØŸš ™
œ
�|Ð#Ø˜‘E˜SŸWšW Q¨¡U™^œ^Ñ+ˆDØ/Ð/Ð/Ð/Ð/¥V¨A¡Y¤YÐ/Ñ/Ô/ˆAØˆAˆb‰EˆEà˜‘E˜SŸWšW Q™ZœZÑ'ˆDØ/Ð/Ð/Ð/Ð/¥V¨A¡Y¤YÐ/Ñ/Ô/ˆAØˆr   c                 ó:   —  | j         |fi |¤Ž | j        |fi |¤ŽfS r    )ÚcosÚsin©r#   ÚzrC   s      r   Úcos_sinzStandardBaseContext.cos_sinN  s5   € ØˆsŒw�qÐ#Ð#˜FÐ#Ð# W S¤W¨QÐ%9Ð%9°&Ð%9Ð%9Ð9Ð9r   c                 ó:   —  | j         |fi |¤Ž | j        |fi |¤ŽfS r    )ÚcospiÚsinpir¯   s      r   Úcospi_sinpizStandardBaseContext.cospi_sinpiQ  s5   € ØˆsŒy˜Ð%Ð%˜fÐ%Ð% y s¤y°Ð'=Ð'=°fÐ'=Ð'=Ð=Ð=r   c                 ó8   — t          d|dz  z  d|z  z   ¦  «        S )Niè  g      Ð?rŠ   )rª   )r#   Úps     r   Ú_default_hyper_maxprecz*StandardBaseContext._default_hyper_maxprecT  s!   € Ý�4˜!˜T™'‘> A a¡CÑ'Ñ(Ô(Ð(r   r   c                 ó²  — | j         }	 d}	 ||z   dz   | _         | j        }| j        }d} |¦   «         D ]]}||z  }||z  sL|rJ|                      |¦  «        }	t	          ||	¦  «        }|                      |¦  «        }
|
|	z
  | j         k    r n|dz  }Œ^||
z
  }||k    rn'||k     s| j        rn|t          | j         |¦  «        z  }Œ¸||| _         S # || _         w xY w©Né
   r   é   r   )rŒ   Úninfr<   Úmagr�   Ú_fixed_precisionÚmin)r#   ÚtermsÚ
check_steprŒ   Ú	extraprecÚmax_magr�   ÚkÚtermÚterm_magÚsum_magÚcancellations               r   Úsum_accuratelyz"StandardBaseContext.sum_accuratelya  s"  € ØŒxˆð	ØˆIð9Ø )Ñ+¨aÑ/�”Øœ(�Ø”H�Ø�Ø!˜E™GœGð ð �DØ˜‘I�AØ 
™Nð "°ð "Ø#&§7¢7¨4¡=¤=˜Ý"% g¨xÑ"8Ô"8˜Ø"%§'¢'¨!¡*¤*˜Ø" XÑ-°´Ò8Ð8Ø!˜EØ˜‘F�A�AØ&¨Ñ0�Ø <Ò/Ð/ØØ )Ò+Ð+¨sÔ/CÐ+ØØ�S ¤¨<Ñ8Ô8Ñ8�	ð'9ð( àˆCŒHˆHø�tˆCŒHˆOˆOˆOˆOs   ‰B<C Ã	Cc                 ó¾  — | j         }	 d}	 ||z   dz   | _         | j        }| j        }|}d} |¦   «         D ]a}	||	z  }|	|z
  }
||z  sK|                      |
¦  «        }t	          ||¦  «        }|                      ||z
  ¦  «        }| | j         k    r n|dz  }Œb||z
  }||k    rn'||k     s| j        rn|t          | j         |¦  «        z  }Œ¾||| _         S # || _         w xY wrº   )rŒ   r½   rk   r¾   r�   r¿   rÀ   )r#   ÚfactorsrÂ   rŒ   rÃ   rÄ   rk   r�   rÅ   ÚfactorrÆ   rÇ   rÈ   rÉ   s                 r   Úmul_accuratelyz"StandardBaseContext.mul_accurately}  s,  € ØŒxˆð	ØˆIð9Ø )Ñ+¨aÑ/�”Øœ(�Ø”g�Ø�Ø�Ø%˜g™iœið ð �FØ˜‘K�AØ! C™<�DØ 
™Nð "Ø#&§7¢7¨4¡=¤=˜Ý"% g¨xÑ"8Ô"8˜Ø"%§'¢'¨!¨C©%¡.¤.˜ð %˜9 s¤xÒ/Ð/Ø!˜EØ˜‘F�A�AØ&¨Ñ0�Ø <Ò/Ð/ØØ )Ò+Ð+¨sÔ/CÐ+ØØ�S ¤¨<Ñ8Ô8Ñ8�	ð/9ð0 àˆCŒHˆHø�tˆCŒHˆOˆOˆOˆOs   ‰CC Ã	Cc                 óX   — |                       |¦  «        |                       |¦  «        z  S )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
        rA   )r#   r8   rG   s      r   ÚpowerzStandardBaseContext.power�  s#   € ð  �{Š{˜1‰~Œ~ §¢¨Q¡¤Ñ/Ð/r   c                 ó,   — |                       |¦  «        S r    )Úzeta)r#   rr   s     r   Ú	_zeta_intzStandardBaseContext._zeta_int¯  s   € Ø�xŠx˜‰{Œ{Ðr   c                 ó$   ‡ ‡‡‡— dgŠˆˆˆ ˆfd„}|S )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                  ó|   •— ‰dxx         dz  cc<   ‰d         ‰k    r‰                      d‰z  ¦  «        ‚ ‰| i |¤ŽS )Nr   r   z%maxcalls: function evaluated %i times)ÚNoConvergence)r\   rC   ÚNÚcounterr#   Úfs     €€€€r   Úf_maxcalls_wrappedz8StandardBaseContext.maxcalls.<locals>.f_maxcalls_wrappedÃ  sU   ø€ Ø�AˆJˆJŒJ˜!‰OˆJˆJ‰JØ�qŒz˜AŠ~ˆ~Ø×'Ò'Ð(OÐRSÑ(SÑTÔTÐTØ�1�dÐ%˜fÐ%Ð%Ð%r   r   )r#   rÙ   r×   rÚ   rØ   s   ``` @r   ÚmaxcallszStandardBaseContext.maxcalls²  s?   øøøø€ ð  �#ˆð	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð
 "Ð!r   c                 óN   ‡ ‡‡— i Šˆ ˆˆfd„}‰j         |_         ‰j        |_        |S )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                  ó´   •— |r$| t          |                     ¦   «         ¦  «        f}n| }‰j        }|‰	v r‰	|         \  }}||k    r|
 S  ‰| i |¤Ž}||f‰	|<   |S r    )Útupler%   rŒ   )
r\   rC   ÚkeyrŒ   ÚcprecÚcvaluer*   r#   rÙ   Úf_caches
          €€€r   Úf_cachedz-StandardBaseContext.memoize.<locals>.f_cachedß  s   ø€ Øð Ø�E &§,¢,¡.¤.Ñ1Ô1Ð1��à�Ø”8ˆDØ�gˆ~ˆ~Ø '¨¤‘��vØ˜D’=�=Ø"˜7�NØ�A�tÐ&˜vÐ&Ð&ˆEØ  %˜=ˆG�C‰LØˆLr   )r   Ú__doc__)r#   rÙ   rã   râ   s   `` @r   ÚmemoizezStandardBaseContext.memoizeÊ  sJ   øøø€ ð( ˆð	ð 	ð 	ð 	ð 	ð 	ð 	ð œJˆÔØœ9ˆÔØˆr   )FF)NF)ro   r    )NN)r   )4r   r   r   r   rÖ   ÚComplexResultr"   r+   r¿   Úverboser0   r3   r9   r=   r?   rD   rH   rK   rM   rO   r_   ri   rn   rs   rx   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      s¯  € € € € € ð Ô'€MØÔ'€Mð$ð $ð $ðð ð ð Ðð €Gðð ð ðð ð ðð ð ð
ð ð ð
ð ð ðð ð ð-ð -ð -ð-ð -ð -ð-ð -ð -ð-ð -ð -ð#ð #ð #ð #ð8ð 8ð 8ð 8ðð ð ð(ð (ð (ð (ð"ð "ð "ð "ðH1ð 1ð 1ð 1ðfGð Gð GðR,ð ,ð ,ð\:ð :ð :ð>ð >ð >ð)ð )ð )ð ˆ<˜œ	Ñ"Ô"€DØ�,˜uÔ0Ñ1Ô1€KØˆl˜5œ=Ñ)Ô)€GØˆ|˜EœNÑ+Ô+€HØˆl˜5œ=Ñ)Ô)€GØˆL˜œÑ$Ô$€EØ�˜Uœ^Ñ,Ô,€IØ�˜eœoÑ.Ô.€JØ�˜eœoÑ.Ô.€Jðð ð ð ð8ð ð ð ð@0ð 0ð 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     sº  ðØ Ð Ð Ð Ð Ð Ð Ð à !Ð !Ð !Ð !Ð !Ð !à 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø %Ð %Ð %Ð %Ð %Ð %Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø EÐ EÐ EÐ EÐ EÐ EØ .Ð .Ð .Ð .Ð .Ð .Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø %Ð %Ð %Ð %Ð %Ð %Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø !Ð !Ð !Ð !Ð !Ð !Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø /Ð /Ð /Ð /Ð /Ð /à Ð Ð Ð Ð Ð ð	ð 	ð 	ð 	ð 	ˆfñ 	ô 	ð 	ðVð Vð Vð Vð V˜'ØØØØ$ØØØØØ	ØØØØñVô Vð Vð Vð Vr   