§
    JŠtjÑ  ã                   óp   — d dl mZmZ edd„¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdS )é   )ÚdefunÚdefun_wrappedNc                 óp  ‡ ‡‡‡‡	— ‰                       ‰¦  «        Š‰€‰ j        Šn‰                       ‰¦  «        Š‰dk     rt          d¦  «        ‚‰€‰Šn‰                       ‰¦  «        Š‰dk    r‰ j        d‰‰z   z  z   S ‰‰ j        k    }‰‰k    }|rJt	          ‰¦  «        dk    r'|r‰dk    s‰dk    r
‰ j        ‰z  S t          d¦  «        ‚‰dk    r
‰ j        ‰z
  S |                     dd‰ j        z  ¦  «        Š	|r|rˆ ˆ	ˆfd	„}‰                      |¦  «        S ˆˆ ˆ	ˆˆfd
„}‰  	                    |¦  «        S )a  
    Evaluates the q-Pochhammer symbol (or q-rising factorial)

    .. math ::

        (a; q)_n = \prod_{k=0}^{n-1} (1-a q^k)

    where `n = \infty` is permitted if `|q| < 1`. Called with two arguments,
    ``qp(a,q)`` computes `(a;q)_{\infty}`; with a single argument, ``qp(q)``
    computes `(q;q)_{\infty}`. The special case

    .. math ::

        \phi(q) = (q; q)_{\infty} = \prod_{k=1}^{\infty} (1-q^k) =
            \sum_{k=-\infty}^{\infty} (-1)^k q^{(3k^2-k)/2}

    is also known as the Euler function, or (up to a factor `q^{-1/24}`)
    the Dedekind eta function.

    **Examples**

    If `n` is a positive integer, the function amounts to a finite product::

        >>> from mpmath import *
        >>> mp.dps = 25; mp.pretty = True
        >>> qp(2,3,5)
        -725305.0
        >>> fprod(1-2*3**k for k in range(5))
        -725305.0
        >>> qp(2,3,0)
        1.0

    Complex arguments are allowed::

        >>> qp(2-1j, 0.75j)
        (0.4628842231660149089976379 + 4.481821753552703090628793j)

    The regular Pochhammer symbol `(a)_n` is obtained in the
    following limit as `q \to 1`::

        >>> a, n = 4, 7
        >>> limit(lambda q: qp(q**a,q,n) / (1-q)**n, 1)
        604800.0
        >>> rf(a,n)
        604800.0

    The Taylor series of the reciprocal Euler function gives
    the partition function `P(n)`, i.e. the number of ways of writing
    `n` as a sum of positive integers::

        >>> taylor(lambda q: 1/qp(q), 0, 10)
        [1.0, 1.0, 2.0, 3.0, 5.0, 7.0, 11.0, 15.0, 22.0, 30.0, 42.0]

    Special values include::

        >>> qp(0)
        1.0
        >>> findroot(diffun(qp), -0.4)   # location of maximum
        -0.4112484791779547734440257
        >>> qp(_)
        1.228348867038575112586878

    The q-Pochhammer symbol is related to the Jacobi theta functions.
    For example, the following identity holds::

        >>> q = mpf(0.5)    # arbitrary
        >>> qp(q)
        0.2887880950866024212788997
        >>> root(3,-2)*root(q,-24)*jtheta(2,pi/6,root(q,6))
        0.2887880950866024212788997

    Né    zn cannot be negativer   éÿÿÿÿz#q-function only defined for |q| < 1Úmaxtermsé2   c               3   ó®   •K  — d} | V — d}‰}‰dz  }	 d|z  |z  V — d|z  |z  V — |‰d|z  dz   z  z  }|‰d|z  dz   z  z  }|dz  }|‰k    r‰j         ‚ŒC)Nr   é   r   é   )ÚNoConvergence)ÚtÚkÚx1Úx2Úctxr   Úqs       €€€úY/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/mpmath/functions/qfunctions.pyÚtermszqp.<locals>.termsf   s¡   øè è € ØˆAØˆGˆGˆGØˆAØˆBØ�A‘ˆBð,Ø˜A‘g ‘lÐ"Ð"Ð"Ø˜A‘g ‘lÐ"Ð"Ð"Ø�a˜!˜A™#˜a™%‘jÑ �Ø�a˜!˜A™#˜a™%‘jÑ �Ø�Q‘�Ø�x’<�<ØÔ+Ð+ð,ó    c               3   óp   •K  — d} ‰j         }	 d‰|z  z
  V — |‰z  }| dz  } | ‰k    rd S | ‰k    r‰j        ‚Œ*)Nr   r   )Úoner   )r   ÚrÚar   r   Únr   s     €€€€€r   Úfactorszqp.<locals>.factorsv   s`   øè è € ØˆØŒGˆð	(Ø�a˜‘c‘'ˆMˆMˆMØ�‰FˆAØ�‰FˆAØ�AŠvˆvØ�Ø�8Š|ˆ|ØÔ'Ð'ð	(r   )
ÚconvertÚinfÚ
ValueErrorr   ÚabsÚzeroÚgetÚprecÚsum_accuratelyÚmul_accurately)
r   r   r   r   ÚkwargsÚinfiniteÚsamer   r   r   s
   ````     @r   Úqpr)      sž  øøøøø€ ðT 	�Š�A‰Œ€AØ€yØŒGˆˆà�KŠK˜‰NŒNˆØˆ1‚u€uÝÐ/Ñ0Ô0Ð0Ø€yØˆˆà�KŠK˜‰NŒNˆØˆA‚v€vØŒw˜˜A˜a™C™Ñ Ð Ø�S”W’€HØ�ŠF€DØð Ýˆq‰6Œ6�QŠ;ˆ;Øð $˜˜bš˜ A¨¢F FØ”x !‘|Ð#ÝÐBÑCÔCÐCØ�!ŠVˆVØ”7˜Q‘;ÐØ�zŠz˜* b¨¬¡kÑ2Ô2€HØð )�Dð )ð	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð ×!Ò! %Ñ(Ô(Ð(ð
(ð 
(ð 
(ð 
(ð 
(ð 
(ð 
(ð 
(ð 
(ð ×Ò˜gÑ&Ô&Ð&r   c                 óÞ   — t          |¦  «        dk    r+|                      |d|z  ¦  «        ||dz
  |dz
  z  dz  z  z  S  | j        ||dfi |¤Ž | j        ||z  |dfi |¤Žz  d|z
  d|z
  z  z  S )aþ  
    Evaluates the q-gamma function

    .. math ::

        \Gamma_q(z) = \frac{(q; q)_{\infty}}{(q^z; q)_{\infty}} (1-q)^{1-z}.


    **Examples**

    Evaluation for real and complex arguments::

        >>> from mpmath import *
        >>> mp.dps = 25; mp.pretty = True
        >>> qgamma(4,0.75)
        4.046875
        >>> qgamma(6,6)
        121226245.0
        >>> qgamma(3+4j, 0.5j)
        (0.1663082382255199834630088 + 0.01952474576025952984418217j)

    The q-gamma function satisfies a functional equation similar
    to that of the ordinary gamma function::

        >>> q = mpf(0.25)
        >>> z = mpf(2.5)
        >>> qgamma(z+1,q)
        1.428277424823760954685912
        >>> (1-q**z)/(1-q)*qgamma(z,q)
        1.428277424823760954685912

    r   r   g      à?N)r    Úqgammar)   )r   Úzr   r&   s       r   r+   r+   ƒ   sž   € õD ˆ1�v„v�‚z€zØ�zŠz˜!˜A˜a™CÑ Ô   a¨¡c¨A¨a©C¡[°¡_Ñ!5Ñ5Ð5Øˆ3Œ6�!�Q˜Ð'Ð' Ð'Ð'ØˆŒˆq�!‰t�Q˜Ð'Ð' Ð'Ð'ñ(Ø+,¨Q©3°!°A±#©,ñ7ð 7r   c                 óø   — |                       |¦  «        rT|                      |¦  «        dk    r;t          |                      |¦  «        ¦  «        } | j        |||fi |¤Žd|z
  |z  z  S  | j        |dz   |fi |¤ŽS )aó  
    Evaluates the q-factorial,

    .. math ::

        [n]_q! = (1+q)(1+q+q^2)\cdots(1+q+\cdots+q^{n-1})

    or more generally

    .. math ::

        [z]_q! = \frac{(q;q)_z}{(1-q)^z}.

    **Examples**

        >>> from mpmath import *
        >>> mp.dps = 25; mp.pretty = True
        >>> qfac(0,0)
        1.0
        >>> qfac(4,3)
        2080.0
        >>> qfac(5,6)
        121226245.0
        >>> qfac(1+1j, 2+1j)
        (0.4370556551322672478613695 + 0.2609739839216039203708921j)

    r   r   )ÚisintÚ_reÚintr)   r+   )r   r,   r   r&   r   s        r   Úqfacr1   ª   sˆ   € ð: ‡y‚y��|„|ð 4˜Ÿš ™
œ
 Qš˜Ý�—’˜‘
”
‰OŒOˆØˆsŒv�a˜˜AÐ(Ð( Ð(Ð(¨A¨a©C°!©8Ñ3Ð3Øˆ3Œ:�a˜‘c˜1Ð'Ð' Ð'Ð'Ð'r   c                 ód  ‡ ‡‡‡‡‡	‡
— ˆ fd„‰D ¦   «         Šˆ fd„‰D ¦   «         Š‰                       ‰¦  «        Š‰                       ‰¦  «        Št          ‰¦  «        }t          ‰¦  «        }d|z   |z
  Š	|                     dd‰ j        z  ¦  «        Š
ˆˆˆ ˆ	ˆ
ˆˆfd„}‰                      |¦  «        S )a  
    Evaluates the basic hypergeometric series or hypergeometric q-series

    .. math ::

        \,_r\phi_s \left[\begin{matrix}
            a_1 & a_2 & \ldots & a_r \\
            b_1 & b_2 & \ldots & b_s
        \end{matrix} ; q,z \right] =
        \sum_{n=0}^\infty
        \frac{(a_1;q)_n, \ldots, (a_r;q)_n}
             {(b_1;q)_n, \ldots, (b_s;q)_n}
        \left((-1)^n q^{n\choose 2}\right)^{1+s-r}
        \frac{z^n}{(q;q)_n}

    where `(a;q)_n` denotes the q-Pochhammer symbol (see :func:`~mpmath.qp`).

    **Examples**

    Evaluation works for real and complex arguments::

        >>> from mpmath import *
        >>> mp.dps = 25; mp.pretty = True
        >>> qhyper([0.5], [2.25], 0.25, 4)
        -0.1975849091263356009534385
        >>> qhyper([0.5], [2.25], 0.25-0.25j, 4)
        (2.806330244925716649839237 + 3.568997623337943121769938j)
        >>> qhyper([1+j], [2,3+0.5j], 0.25, 3+4j)
        (9.112885171773400017270226 - 1.272756997166375050700388j)

    Comparing with a summation of the defining series, using
    :func:`~mpmath.nsum`::

        >>> b, q, z = 3, 0.25, 0.5
        >>> qhyper([], [b], q, z)
        0.6221136748254495583228324
        >>> nsum(lambda n: z**n / qp(q,q,n)/qp(b,q,n) * q**(n*(n-1)), [0,inf])
        0.6221136748254495583228324

    c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS © ©r   )Ú.0r   r   s     €r   ú
<listcomp>zqhyper.<locals>.<listcomp>ù   ó#   ø€ Ð
'Ð
'Ð
'˜aˆ3�;Š;�q‰>Œ>Ð
'Ð
'Ð
'r   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r4   r5   )r6   Úbr   s     €r   r7   zqhyper.<locals>.<listcomp>ú   r8   r   r   r   r	   c               3   óú   •K  — ‰	j         } | V — d}d}d}	 ‰D ]}d||z  z
  }| |z  } Œ‰D ]}d||z  z
  }|st          ‚| |z  } Œ| ‰z  } |d‰
z  |‰
z  z  z  }|‰z  }| d|z
  z  } |dz  }| |z  V — |‰k    r‰	j        ‚Œg)Nr   r   r   )r   r   r   )r   Úqkr   Úxr   Úpr:   Úa_sÚb_sr   Údr   r   r,   s          €€€€€€€r   r   zqhyper.<locals>.terms  sê   øè è € ØŒGˆØˆˆˆØˆØˆØˆð	(Øð ð �Ø˜˜"™‘H�Ø�Q‘��Øð ð �Ø˜˜"™‘H�Øð %Ý$Ð$Ø�Q‘��Ø�‰FˆAØ�"�q‘˜2 ™7Ñ"Ñ"ˆAØ�!‰GˆBØ�!�b‘&‰MˆAØ�‰FˆAØ�a‘%ˆKˆKˆKØ�8Š|ˆ|ØÔ'Ð'ð!	(r   )r   Úlenr"   r#   r$   )r   r?   r@   r   r,   r&   r   Úsr   rA   r   s   `````    @@r   ÚqhyperrD   Ì   så   øøøøøøø€ ðZ (Ð
'Ð
'Ð
' 3Ð
'Ñ
'Ô
'€CØ
'Ð
'Ð
'Ð
' 3Ð
'Ñ
'Ô
'€CØ�Š�A‰Œ€AØ�Š�A‰Œ€AÝˆC‰Œ€AÝˆC‰Œ€AØ	ˆ!‰ˆA‰€AØ�zŠz˜* b¨¬¡kÑ2Ô2€Hð(ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð. ×Ò˜eÑ$Ô$Ð$r   )NN)Ú	functionsr   r   r)   r+   r1   rD   r4   r   r   ú<module>rF      s¢   ðØ +Ð +Ð +Ð +Ð +Ð +Ð +Ð +àð}'ð }'ð }'ñ „ð}'ð~ ð$7ð $7ñ „ð$7ðL ð(ð (ñ „ð(ðB ðK%ð K%ñ „ðK%ð K%ð K%r   