
    gA                         d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZ dddZej                  d	z  Z ee      Zddd
ZdddZdddZ G d de      Z G d de      Zy)    )AddArgumentIndexErrorFunction)Pow)S)default_sort_key)explogTevaluatec          	      \    t        t        t        | |      t        ||      |            S Nr   )r
   r   r	   x1x2r   s      N/var/www/openai/venv/lib/python3.12/site-packages/sympy/codegen/numpy_nodes.py
_logaddexpr      s%    s3rH-s2/IT\]^^       c                *    t        | |      t        z  S r   )r
   _ln2xr   s     r   _lbr      s    q8$T))r   c                &    t        t        | |      S r   )r   _twor   s     r   _exp2r      s    tQ**r   c          	      \    t        t        t        | |      t        ||      |            S r   )r   r   r   r   s      r   _logaddexp2r      s.    s5h/h/(D E Er   c                   4    e Zd ZdZdZd Zd	dZd Zd Zd Z	y)
	logaddexpz Logarithm of the sum of exponentiations of the inputs.

    Helper class for use with e.g. numpy.logaddexp

    See Also
    ========

    https://numpy.org/doc/stable/reference/generated/numpy.logaddexp.html
    r   c                 L    t        j                  | gt        |t               S N)keyr   __new__sortedr   clsargss     r   r&   zlogaddexp.__new__)        IfT7G&HIIr   c                     |dk(  r| j                   \  }}n!|dk(  r| j                   \  }}nt        | |      t        j                  t        j                  t	        ||z
        z   z  S z@
        Returns the first derivative of this function.
           r   )r*   r   r   Oner	   selfargindexwrtothers       r   fdiffzlogaddexp.fdiff,   sY     q=JC]JE3$T844uuaeec%)n,--r   c                     t        ||      S N)r   r1   r   r   kwargss       r   _eval_rewrite_as_logzlogaddexp._eval_rewrite_as_log8   s    "b!!r   c                 L     | j                  t              j                  |i |S r7   rewriter
   evalfr1   r*   r9   s      r   _eval_evalfzlogaddexp._eval_evalf;   #    &t||C &&777r   c                     fd| j                   D        \  }}t        ||      }|t        ||d      k7  r|S t        ||      S )Nc              3   B   K   | ]  } |j                   di   y wN )simplify.0r   r9   s     r   	<genexpr>z+logaddexp._eval_simplify.<locals>.<genexpr>?   s      8i


$V$is   Fr   )r*   r   r!   r1   r*   r9   ab	candidates     `   r   _eval_simplifyzlogaddexp._eval_simplify>   sD    8dii81q!$	
1a%88Q?"r   Nr.   
__name__
__module____qualname____doc__nargsr&   r5   r:   r@   rN   rE   r   r   r!   r!      s(     EJ
."8#r   r!   c                   4    e Zd ZdZdZd Zd	dZd Zd Zd Z	y)

logaddexp2z Logarithm of the sum of exponentiations of the inputs in base-2.

    Helper class for use with e.g. numpy.logaddexp2

    See Also
    ========

    https://numpy.org/doc/stable/reference/generated/numpy.logaddexp2.html
    r   c                 L    t        j                  | gt        |t               S r#   r%   r(   s     r   r&   zlogaddexp2.__new__S   r+   r   c                     |dk(  r| j                   \  }}n!|dk(  r| j                   \  }}nt        | |      t        j                  t        j                  t	        ||z
        z   z  S r-   )r*   r   r   r/   r   r0   s       r   r5   zlogaddexp2.fdiffV   sZ     q=JC]JE3$T844uuaeeeE#I..//r   c                     t        ||      S r7   )r   r8   s       r   r:   zlogaddexp2._eval_rewrite_as_logb   s    2r""r   c                 L     | j                  t              j                  |i |S r7   r<   r?   s      r   r@   zlogaddexp2._eval_evalfe   rA   r   c                     fd| j                   D        \  }}t        ||      }|t        ||d      k7  r|S t        ||      S )Nc              3   ^   K   | ]$  } |j                   di j                          & y wrD   )rF   factorrG   s     r   rI   z,logaddexp2._eval_simplify.<locals>.<genexpr>i   s)     Ay!


$V$++-ys   *-Fr   )r*   r   rW   rJ   s     `   r   rN   zlogaddexp2._eval_simplifyh   sE    AtyyA11%	Aq599a##r   NrO   rP   rE   r   r   rW   rW   G   s(     EJ
0#8$r   rW   N)sympy.core.functionr   r   r   sympy.core.powerr   sympy.core.singletonr   sympy.core.sortingr   &sympy.functions.elementary.exponentialr	   r
   r   r/   r   r   r   r   r   r!   rW   rE   r   r   <module>rd      sr    A A   " / ; $( _ 	uuQw
4y  *  + %) E
'# '#T'$ '$r   