
    \h                         S SK Jr  S SKJr  S SKJrJr  S SKJrJ	r	J
r
Jr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJrJr  \" S5      u  rrS rS rS rS rS rS r S r!S r"S r#S r$S r%S r&S r'S r(g)    )Product)Sum)
DerivativeFunction)IntegerRationalFloatoo)Rel)symbols)sin)Integral)Order)
precedence
PRECEDENCEzx,yc                      [        [        [        -   5      [        S   :X  d   e[        [        [        -  S-   5      [        S   :X  d   eg )NAdd   r   xyr        \/var/www/auris/envauris/lib/python3.13/site-packages/sympy/printing/tests/test_precedence.pytest_Addr      s>    a!e
5 1111acAg*U"3333r   c                  N    [        [        [        5      5      [        S   :X  d   eg )NFunc)r   r   r   r   r   r   r   test_Functionr      s    c!fF!3333r   c                  X    [        [        [        [        5      5      [        S   :X  d   eg NAtom)r   r   r   r   r   r   r   r   test_Derivativer"      s!    jA&':f+====r   c                  X    [        [        [        [        5      5      [        S   :X  d   eg r    )r   r   r   r   r   r   r   r   test_Integralr$      s     hq!n%F);;;;r   c                      [        [        [        -  5      [        S   :X  d   e[        [        * [        -  5      [        S   :X  d   eg )NMulr   r   r   r   r   test_Mulr'      s;    ac?j////qbdz%0000r   c                     [        [        S5      5      [        S   :X  d   e[        [        S5      5      [        S   :X  d   e[        [        S5      5      [        S   :X  d   e[        [        S5      5      [        S   :X  d   e[        [        SS5      5      [        S	   :X  d   e[        [        S
S5      5      [        S   :X  d   e[        [	        S5      5      [        S   :X  d   e[        [	        S
5      5      [        S   :X  d   e[        [
        5      [        S   :X  d   e[        [
        * 5      [        S   :X  d   eg )Nr   r!   r   r   
         r&   )r   r   r   r   r	   r
   r   r   r   test_Numberr.   $   s   gaj!Z%7777gaj!Z%7777gbk"j&7777gbk"j&8888hq!n%E)::::hr1o&*U*;;;;eAh:f#5555eBi Ju$5555b>Z////rc?j////r   c                  N    [        [        [        5      5      [        S   :X  d   eg r    )r   r   r   r   r   r   r   
test_Orderr0   1   s    eAh:f#5555r   c                      [        [        [        -  5      [        S   :X  d   e[        [        [        -  * 5      [        S   :X  d   e[        [        [        * -  5      [        S   :X  d   eg )NPowr   r   r   r   r   test_Powr3   5   sZ    adz%0000q!te
5 1111a!e
5 1111r   c            	      t    [        [        [        [        [        [        S-   45      5      [        S   :X  d   eg Nr   r!   )r   r   r   r   r   r   r   r   test_Productr6   ;   s+    ga!QA/0Jv4FFFFr   c                  h    [        [        [        [        -   [        S5      5      [        S   :X  d   eg )N<
Relational)r   r   r   r   r   r   r   r   test_Relationalr:   ?   s'    c!a%C()Z-EEEEr   c            	      t    [        [        [        [        [        [        S-   45      5      [        S   :X  d   eg r5   )r   r   r   r   r   r   r   r   test_Sumr<   C   s+    c!aAE]+,
60BBBBr   c                  <    [        [        5      [        S   :X  d   eg r    )r   r   r   r   r   r   test_Symbolr>   G   s    a=Jv....r   c                     [        [        [        -  5      [        [        [        -  5      :  d   e[        [        ) 5      [        [        [        -  5      :  d   e[        [        [        -   5      [        [        [        -  5      :  d   e[        [        [        -   5      [        [        [        -  5      :  d   e[        [        [        -  5      [        [        [        -  5      :  d   e[        [        [        -  5      [        [        [        -  5      :  d   e[        [        ) 5      [        [        [        -  5      :  d   e[        [        ) 5      [        [        [        -
  5      :  d   e[        [        [        -  5      [        S   :X  d   e[        [        [        -  5      [        S   :X  d   e[        [        ) 5      [        S   :X  d   eg )NAndOrNotr   r   r   r   test_And_OrrC   K   sG   a!ez!a%0000qb>Jq1u----a!ez!a%0000a!ez!a%0000ac?ZA....ac?ZA....qb>JqsO+++qb>Jq1u----a!e
5 1111a!e
4 0000qb>Z....r   c                  x   ^^  " S S[         5      m " S S[         5      mU4S jn U4S jnU " 5         U" 5         g)a?  
Test cases for custom functions with different precedence values,
specifically handling:
1. Functions with precedence < PRECEDENCE["Mul"] (50)
2. Functions with precedence = Func (70)

Key distinction:
1. Lower precedence functions (45) need parentheses: -2*(x F y)
2. Higher precedence functions (70) don't: -2*x F y
c                   *    \ rS rSr\S   S-
  rS rSrg)Btest_custom_function_precedence_comparison.<locals>.LowPrecedenceFg   r&   r+   c                     UR                  U R                  S   5       SUR                  U R                  S   5       3$ Nr   z F r   _printargsselfprinters     r   	_sympystrLtest_custom_function_precedence_comparison.<locals>.LowPrecedenceF._sympystri   8    nnTYYq\233w~~diiPQl7S6TUUr   r   N__name__
__module____qualname____firstlineno__r   r   rP   __static_attributes__r   r   r   LowPrecedenceFrF   g   s    &*
	Vr   rY   c                   $    \ rS rSr\S   rS rSrg)Ctest_custom_function_precedence_comparison.<locals>.HighPrecedenceFl   r   c                     UR                  U R                  S   5       SUR                  U R                  S   5       3$ rI   rJ   rM   s     r   rP   Mtest_custom_function_precedence_comparison.<locals>.HighPrecedenceF._sympystrn   rR   r   r   NrS   r   r   r   HighPrecedenceFr[   l   s    '
	Vr   r_   c                     > ST" [         [        5      -  n [        U 5      S:X  d   eST" [         [        5      -  n[        U5      S:X  d   eg )Nr,   z	2*(x F y)z
-2*(x F y)r   r   str)expr1expr2rY   s     r   test_low_precedenceGtest_custom_function_precedence_comparison.<locals>.test_low_precedenceq   sI    N1a((5z[(((^Aq))5z\)))r   c                     > ST" [         [        5      -  n [        U 5      S:X  d   eST" [         [        5      -  n[        U5      S:X  d   eg )Nr,   z2*x F yra   z-2*x F yrb   )rd   re   r_   s     r   test_high_precedenceHtest_custom_function_precedence_comparison.<locals>.test_high_precedencex   sI    OAq))5zY&&&_Q**5zZ'''r   N)r   )rf   ri   r_   rY   s     @@r   *test_custom_function_precedence_comparisonrk   \   s7    V V
V( V
*( r   N))sympy.concrete.productsr   sympy.concrete.summationsr   sympy.core.functionr   r   sympy.core.numbersr   r   r	   r
   sympy.core.relationalr   sympy.core.symbolr   sympy.functionsr   sympy.integrals.integralsr   sympy.series.orderr   sympy.printing.precedencer   r   r   r   r   r   r"   r$   r'   r.   r0   r3   r6   r:   r<   r>   rC   rk   r   r   r   <module>rv      s|    + ) 4 ; ; % %  . $ <u~14
4><1

062GFC//"$r   