U
    ZÊ¹jA  ã                   @   s¶   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d	„Zejd
 ZeeƒZddœdd„Zddœdd„Zddœdd„ZG dd„ deƒZG dd„ deƒZdS )é    )ÚAddÚArgumentIndexErrorÚFunction)ÚPow)ÚS)Údefault_sort_key)ÚexpÚlogT©Úevaluatec                C   s"   t tt| |d�t||d�|d�ƒS ©Nr
   )r	   r   r   ©Úx1Úx2r   © r   úX/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/codegen/numpy_nodes.pyÚ
_logaddexp   s    r   é   c                C   s   t | |d�t S r   )r	   Ú_ln2©Úxr   r   r   r   Ú_lb   s    r   c                C   s   t t| |d�S r   )r   Ú_twor   r   r   r   Ú_exp2   s    r   c                C   s"   t tt| |d�t||d�|d�ƒS r   )r   r   r   r   r   r   r   Ú_logaddexp2   s    
 ÿr   c                   @   s>   e Zd ZdZdZdd„ Zddd„Zdd	„ Zd
d„ Zd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                 G   s   t j| ft|td�žŽ S ©N)Úkey©r   Ú__new__Úsortedr   ©ÚclsÚargsr   r   r   r   )   s    zlogaddexp.__new__é   c                 C   sJ   |dkr| j \}}n|dkr(| j \}}n
t| |ƒ‚tjtjt|| ƒ  S ©z@
        Returns the first derivative of this function.
        r$   r   )r#   r   r   ÚOner   ©ÚselfZargindexZwrtÚotherr   r   r   Úfdiff,   s    
zlogaddexp.fdiffc                 K   s
   t ||ƒS ©N)r   ©r(   r   r   Úkwargsr   r   r   Ú_eval_rewrite_as_log8   s    zlogaddexp._eval_rewrite_as_logc                 O   s   |   t¡j||ŽS r+   ©Zrewriter	   Zevalf©r(   r#   r-   r   r   r   Ú_eval_evalf;   s    zlogaddexp._eval_evalfc                    sF   ‡ fdd„| j D ƒ\}}t||ƒ}|t||dd�kr8|S t||ƒS d S )Nc                 3   s   | ]}|j f ˆ ŽV  qd S r+   )Úsimplify©Ú.0r   ©r-   r   r   Ú	<genexpr>?   s     z+logaddexp._eval_simplify.<locals>.<genexpr>Fr
   )r#   r   r   ©r(   r#   r-   ÚaÚbÚ	candidater   r5   r   Ú_eval_simplify>   s
    
zlogaddexp._eval_simplifyN)r$   ©
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Únargsr   r*   r.   r1   r;   r   r   r   r   r      s   	
r   c                   @   s>   e Zd ZdZdZdd„ Zddd„Zdd	„ Zd
d„ Zd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                 G   s   t j| ft|td�žŽ S r   r   r!   r   r   r   r   S   s    zlogaddexp2.__new__r$   c                 C   sJ   |dkr| j \}}n|dkr(| j \}}n
t| |ƒ‚tjtjt|| ƒ  S r%   )r#   r   r   r&   r   r'   r   r   r   r*   V   s    
zlogaddexp2.fdiffc                 K   s
   t ||ƒS r+   )r   r,   r   r   r   r.   b   s    zlogaddexp2._eval_rewrite_as_logc                 O   s   |   t¡j||ŽS r+   r/   r0   r   r   r   r1   e   s    zlogaddexp2._eval_evalfc                    sF   ‡ fdd„| j D ƒ\}}t||ƒ}|t||dd�kr8|S t||ƒS d S )Nc                 3   s   | ]}|j f ˆ Ž ¡ V  qd S r+   )r2   Úfactorr3   r5   r   r   r6   i   s     z,logaddexp2._eval_simplify.<locals>.<genexpr>Fr
   )r#   r   rB   r7   r   r5   r   r;   h   s
    
zlogaddexp2._eval_simplifyN)r$   r<   r   r   r   r   rB   G   s   	
rB   N)Zsympy.core.functionr   r   r   Zsympy.core.powerr   Zsympy.core.singletonr   Zsympy.core.sortingr   Z&sympy.functions.elementary.exponentialr   r	   r   r&   r   r   r   r   r   r   rB   r   r   r   r   Ú<module>   s   
*