
    EdK                         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dS )    )AddArgumentIndexErrorFunction)Pow)S)default_sort_key)explogTevaluatec          	      |    t          t          t          | |          t          ||          |                    S Nr   )r
   r   r	   x1x2r   s      9lib/python3.11/site-packages/sympy/codegen/numpy_nodes.py
_logaddexpr      s:    s3rH---s2/I/I/IT\]]]^^^       c                4    t          | |          t          z  S r   )r
   _ln2xr   s     r   _lbr      s    q8$$$T))r   c                0    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      sL    s5h///h///(D D D E E Er   c                   6    e Zd ZdZdZd Zd
dZd Zd Zd Z	d	S )	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                 N    t          j        | gt          |t                    R  S N)keyr   __new__sortedr   clsargss     r   r&   zlogaddexp.__new__)   )    IfT7G&H&H&HII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   r   Oner	   selfargindexwrtothers       r   fdiffzlogaddexp.fdiff,   sd     q= 	5JC] 	5JE33$T8444uaec%)nn,--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     |                      t                    j        |i |S r7   rewriter
   evalfr1   r*   r9   s      r   _eval_evalfzlogaddexp._eval_evalf;   &    &t||C  &7777r   c                     t          fd| j                  \  }}t          ||          }|t          ||d          k    r|S t          ||          S )Nc                      | j         di S N )simplifyr   r9   s    r   <lambda>z*logaddexp._eval_simplify.<locals>.<lambda>?   s    ZQZ11&11 r   Fr   )mapr*   r   r!   r1   r*   r9   ab	candidates     `   r   _eval_simplifyzlogaddexp._eval_simplify>   sa    111149==1q!$$	
1a%8888 	#Q??"r   Nr,   
__name__
__module____qualname____doc__nargsr&   r5   r:   r@   rN   rE   r   r   r!   r!      sx          EJ J J
. 
. 
. 
." " "8 8 8# # # # #r   r!   c                   6    e Zd ZdZdZd Zd
dZd Zd Zd Z	d	S )
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                 N    t          j        | gt          |t                    R  S r#   r%   r(   s     r   r&   zlogaddexp2.__new__S   r+   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   sf     q= 	5JC] 	5JE33$T8444uaeeE#I...//r   c                 "    t          ||          S r7   )r   r8   s       r   r:   zlogaddexp2._eval_rewrite_as_logb   s    2r"""r   c                 L     |                      t                    j        |i |S r7   r<   r?   s      r   r@   zlogaddexp2._eval_evalfe   rA   r   c                     t          fd| j                  \  }}t          ||          }|t          ||d          k    r|S t          ||          S )Nc                 B     | j         di                                 S rD   )rF   factorrG   s    r   rH   z+logaddexp2._eval_simplify.<locals>.<lambda>i   s%    ZQZ11&1188:: r   Fr   )rI   r*   r   rW   rJ   s     `   r   rN   zlogaddexp2._eval_simplifyh   sc    ::::DIFF11%%	Aq59999 	$a###r   NrO   rP   rE   r   r   rW   rW   G   sx          EJ J J
0 
0 
0 
0# # #8 8 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      sl   A A A A A A A A A A             " " " " " " / / / / / / ; ; ; ; ; ; ; ; $( _ _ _ _ _ 	uQw
s4yy  * * * * *  + + + + + %) E E E E E
'# '# '# '# '# '# '# '#T'$ '$ '$ '$ '$ '$ '$ '$ '$ '$r   