o
    *ήc-                     @   s@  d dl mZ d dlmZ d dlmZmZmZmZ 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 d d	lmZmZ d d
lmZmZ d dlmZ d dlmZ d dlm Z m!Z!m"Z"m#Z# d dl$m%Z% d dl&m'Z' d dl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. dd Z/dd Z0dd Z1dd Z2dd Z3dd Z4dd Z5dd  Z6d!S )"    )Sum)Expr)
DerivativeFunctiondiffSubs)IRationalpi)Eq)S)Symbol)	factorial)imre)explog)Max)	Piecewise)coscotsintan)	NDimArray)raises)abcxyzc                  C   s  t ddttju sJ tttju sJ tttju s!J ttdtks+J td tdtdks8J td tdftdksFJ td tdftdksTJ td tdftdfdksdJ td tdfdksqJ td ttddt ksJ td ttdfdt ksJ td ttdksJ tt	dd  t d} t
t t|   }|t
tksJ |tt
dtd   ksJ |tt
t dksJ t
tt  }|t
tt ksJ |tt
ksJ |tt
t dksJ t|  }|td	t dksJ |tdt d
ksJ tt d }|tdt ks-J t
t t }|tt
t ks?J d S )N      r      c                   S   s   t dt S )Nr!   r   r    r%   r%   A/tmp/pip-target-vg8gfxp4/lib/python/sympy/core/tests/test_diff.py<lambda>   s    ztest_diff.<locals>.<lambda>         x   )r	   r   r   r   Zeror   r
   r   r   
ValueErrorr   r   r   per%   r%   r&   	test_diff   s:     r1   c                  C   s\  t d} t d}t d}| | t|   tt t| t|   tt  }|ddtd   tt tdtd   tt  ksBJ |t td tt ksSJ td d }|tdtd d  kshJ ttd d  }|ttd d dt td d   ksJ dttt  t }|tdttd  dtd  ttd   ksJ d S )Nr"   r#   r*   ir!   r)   )r	   r   r   r   r   expandr   )n3n2n6r0   r%   r%   r&   
test_diff23   s   48".:r7   c                  C   s  t d} tt tt|   }|tt ttd  ksJ |ttks%J |ttdtd  ttd   ks:J tt}|ttksFJ |tttd dttd ttd   dttd  fv shJ ttt t }|t ttt  ks}J |tttksJ ttt}|tttksJ |tttd tt t	tfv sJ t dt tt d }|dt tt dd  ksJ |tdt ksJ d S )Nr(   r)   r2   r!   r#   )
r	   r   r   r   r   r   r   r   r   r   r.   r%   r%   r&   
test_diff3D   s"   *D* r9   c                  C   s   G dd dt } | ttjtu sJ | ttdjtu s!J tttdttttdfks4J ttttttgtdftttttdfttttdfgksYJ | ttdksdJ d S )Nc                   @   s   e Zd Zdd ZdS )z(test_diff_no_eval_derivative.<locals>.Myc                 S   s   t | |S )N)r   __new__)clsr   r%   r%   r&   r:   Z   s   z0test_diff_no_eval_derivative.<locals>.My.__new__N)__name__
__module____qualname__r:   r%   r%   r%   r&   MyY   s    r?   r"   r#   r   )	r   r   r   funcr   r   r   r   r   )r?   r%   r%   r&   test_diff_no_eval_derivativeX   s   &"
rA   c                   C   s   t t ddks
J d S )Ni r   r$   r%   r%   r%   r&   
test_speedg   s   rB   c                  C   sl   t ddd} td}| |t |  |t| d  ksJ | |tt |  |tt| d  ks4J d S )NAF)commutativefr#   )r   r   r   r   )rC   rE   r%   r%   r&   test_deriv_noncommutativel   s   $4rF   c            
      C   s  t d} tddd}tttt|f}t| ttdf}t| tt|f}|tttt ttt t|fks<J ||d ttksJJ ||d tt ksYJ |t| ttt	tt	tkskJ |t| tt|fksxJ ttt|ft
tt|dfdt|dfdksJ tdt t|ftt
dt t| tt	tt	 |   tt	dttdt	 | d@ fdt| tt	tt	 |   tt	dttdt	 | d@ fdt	d|fsJ ttt }t|t|f}t|tsJ td	D ]}||| |t|f ksJ qdt	 t tt tt tt tt }|t|f}	t|	ts>J td
D ]}|	||  |t|f ksZJ qBtttt	 tt	tggttt tt	 tttt	 dgksJ d S )NrE   nT)integerr#   r!   r   )r   Tr(      )r   r   r   r   r   subsr   r   doitr   r   r   dummy_eqr   r   r   
isinstanceranger3   r   r   r    r   )
rE   rG   exprexpr2expr3exprmmul_diffiexprm2dexr%   r%   r&   test_diff_nth_derivatives   sP   .$2(.,, rW   c                   C   s|   t td ttftdtt td tdftdksJ t dtd  ttftdt dtd  tdftdks<J d S )Nr"   r#   r!   r   )r   r   rJ   r   r   r%   r%   r%   r&   test_issue_16160   s   
rX   N)7sympy.concrete.summationsr   sympy.core.exprr   sympy.core.functionr   r   r   r   sympy.core.numbersr   r	   r
   sympy.core.relationalr   sympy.core.singletonr   sympy.core.symbolr   (sympy.functions.combinatorial.factorialsr   $sympy.functions.elementary.complexesr   r   &sympy.functions.elementary.exponentialr   r   (sympy.functions.elementary.miscellaneousr   $sympy.functions.elementary.piecewiser   (sympy.functions.elementary.trigonometricr   r   r   r   sympy.tensor.array.ndim_arrayr   sympy.testing.pytestr   	sympy.abcr   r   r   r   r   r    r1   r7   r9   rA   rB   rF   rW   rX   r%   r%   r%   r&   <module>   s0     !)