o
    *ήc!                     @   s  d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	m
Z
mZ d dlmZmZ d dlmZ d dlmZmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ d dl%m&Z& d dl'm(Z( ed\Z)Z*Z+ed\Z,Z-Z.dd Z/dd Z0dd Z1dd Z2dS )    )Sum)Basic)
DerivativeFunction	count_ops)IRationalpi)EqRel)S)Symbolsymbols)exp)cossin)Integral)	And
EquivalentITEImpliesNandNorNotOrXor)MatrixSymbol)Tuplezx,y,zza,b,cc                  C   s  dd } | t dksJ | t tjusJ | t t dksJ | t t tjus*J | t tt   dt  dks:J | t t t idksFJ | t t tdt  itjusWJ | t tk dksaJ | tt tdkslJ | tt tdkswJ | tt dksJ | tt tdksJ | t	t tdksJ | t
t tdksJ | tt tdksJ | tt tdksJ | tt ttdksJ | tdt tdksJ d S )Nc                 S      t | ddS NFvisualr   val r%   F/tmp/pip-target-vg8gfxp4/lib/python/sympy/core/tests/test_count_ops.pycount      z(test_count_ops_non_visual.<locals>.countr            T)xr   ZeroyOner   r   r   r   r   r   r   r   r   zr'   r%   r%   r&   test_count_ops_non_visual   s&    "r2   c               
      s  t d \
} }}}}}}}}}	t d\}
}}t d\}}}}}}t d \	}}}}}}}}}dd   dtju s=J  tdtju sHJ  d|ksPJ  d	|ksXJ  td
d |
ksdJ  td
d|
ksoJ  td |
ksyJ  t d |
| ksJ  td |ksJ  dt |ksJ  dd
t  || ksJ  ttju sJ  t |ksJ  d	t d ||
 | ksJ  td	dt ||
 | ksJ  dt |
ksJ  dtt  |
| ksJ  dt ||
 ksJ  d	t ||
 ksJ  tt |
ksJ  t t ||
 ks%J  td
 |ks0J  td
  || ks>J  d	td
  || | ksOJ  ttd  | |
 ks^J  ttj	d  | |
 ksnJ  ttdd | |
 ks~J  tt | ksJ  tt |ksJ  tt |ksJ  dtt  |
| | ksJ  dtt  |
| | ksJ  dtt  | | ksJ  dt t d
|  ksJ  dt t t
 d|  ksJ  dtt  d
t t  td
  d|  d
|  d
|  ksJ  d
t
 t t d d|  | ks&J  d
t
 td  t d d|  | | ks?J  d
t
 td  t tt d|  | | | ks\J  d
t
 td  t ttd
  d|  | d
|  | ks}J  d
t
 td  t ttd
  ttt d|  | d
|  | | | ksJ  ttt|ksJ  tttd
t dt   ||
 | d
|   ksJ  tttdtd fd
t dt   |	|
 | d|   ksJ  t tju sJ  td tti| | ksJ  td ttt d g| | |  ks#J  td tttttd i|| d
|   ks>J  i tju sHJ  td ttt d g||  | ks^J  g tju shJ  t dksrJ  tt tttt | d
|  ksJ  tttt | | ksJ  fddd D |||||||gksJ  ttt|ksJ  ttt|ksJ  tttttt
t|| ksJ  ttt|| ksJ  ttt|| ksJ  ttt|ksJ  ttt|ksJ  ttt|ksJ  tttt
|ks(J  ttttttttt g| | | | ksDJ  ttt|| ksSJ  ttt td
| | kseJ d S )Nz3Add Mul Pow sin cos exp And Derivative Integral SumzDIV SUB NEGzLT LE GT GE EQ NEz1Not Or And Xor Implies Equivalent ITE Basic Tuplec                 S   r   )NTr    r"   r#   r%   r%   r&   r'   2   r(   z$test_count_ops_visual.<locals>.count   r*      r)      r+   r   c                    s   g | ]
} t tt|qS r%   )r   r,   r.   ).0opr1   r%   r&   
<listcomp>r   s    z)test_count_ops_visual.<locals>.<listcomp>z< <= > >= == <> !=)r   upperr   r-   r   r	   r   r,   r.   r/   r0   r   r   r   r   r   r   r   splitr   r   ar   r   r   r   r   r   r   r
   )ADDMULPOWSINCOSEXPANDDGMDIVSUBNEGLTLEGTGEEQNENOTORXORIMPLIES
EQUIVALENT_ITEBASICTUPLEr%   r1   r&   test_count_ops_visual*   s    ""  """B*2:B

8B",6,, 
( 
(rY   c                  C   s   dd } t ddd}| |d dksJ | d|d  |d  dks$J t d	d
d
}t dd
d
}| || dks:J tddd}tddd}t d|| || }| |d dksZJ d S )Nc                 S   r   r   r"   r#   r%   r%   r&   r'      r(   ztest_issue_9324.<locals>.countrG   
   )r   r   r   r*   )   r3   Pr6   Qr)   mT)integern)r   r)   )r   r   )r'   rG   r\   r]   r^   r`   r%   r%   r&   test_issue_9324   s    ra   c                  C   sP   t d} t d}td\}}| tjdd|ksJ |tjdd|ks&J d S )NfgzFUNC_F, FUNC_GTr    )r   r   r,   r   )rb   rc   FUNC_FFUNC_Gr%   r%   r&   test_issue_21532   s
   rf   N)3sympy.concrete.summationsr   sympy.core.basicr   sympy.core.functionr   r   r   sympy.core.numbersr   r   r	   sympy.core.relationalr
   r   sympy.core.singletonr   sympy.core.symbolr   r   &sympy.functions.elementary.exponentialr   (sympy.functions.elementary.trigonometricr   r   sympy.integrals.integralsr   sympy.logic.boolalgr   r   r   r   r   r   r   r   r   "sympy.matrices.expressions.matexprr   sympy.core.containersr   r,   r.   r0   r=   bcr2   rY   ra   rf   r%   r%   r%   r&   <module>   s&    ,\