o
    h                     @   sx   d dl Z d dlmZ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 Zdd Zdd	 Zd
d Zdd Zdd ZdS )    N)

parse_exprstandard_transformationsconvert_xor#implicit_multiplication_applicationimplicit_multiplicationimplicit_applicationfunction_exponentiationsplit_symbolssplit_symbols_custom_token_splittable)raisesc                     s   ddddddddd	d
ddddd} t tf }|ttf | D ] t d}t|   |d}||ks4J qg d}|D ] tt fdd q;ttfdd d S )Nz5*xza*b*cz3*sin(x)z(x+1)*(x+2)z(5*x**2)*sin(x)z2*sin(x)*cos(x)zpi*xzx*piE*xzEulerGamma*yzE*pizpi*(x+2)z(x+2)*pi	pi*sin(x))5xabcz3sin(x)z
(x+1)(x+2)z(5 x**2)sin(x)z2 sin(x) cos(x)zpi xzx pizE xzEulerGamma yzE piz
pi (x + 2)z
(x + 2) piz	pi sin(x)transformations)sin xcos 2*x	sin cos xc                         t  dS Nr   r    casetransformations2r   p/var/www/vscode/kcb/lib/python3.10/site-packages/sympy/parsing/tests/test_implicit_multiplication_application.py<lambda>-       z.test_implicit_multiplication.<locals>.<lambda>c                         t d dS N	sin**2(x)r   r   r   r   r   r   r   /   r   )r   r   r	   r   r   r   SyntaxError	TypeError)casesr   implicitnormalapplicationr   r   r   test_implicit_multiplication   s>   

r*   c                     s   ddddddd} t tf }|tf | D ] t d}t|   |d}||ks/J ||fqg d	}|D ] tt fd
d q6ttfdd d S )N	factorialsin(x)z	tan(y**3)zcos(2*x)cotzsin(cos(tan(x))))r+   r   ztan y**3r   z(cot)zsin cos tan xr   )x yx sin x2xc                      r   r   r   r   r   r   r   r   E   r   z+test_implicit_application.<locals>.<lambda>c                      r    r!   r   r   r#   r   r   r   G   r   )r   r   r   r   r   r$   r%   )r&   r   r'   r(   multiplicationr   r   r   test_implicit_application2   s*   


r2   c                     s   dddd} t tf }|tf | D ] t d}t|   |d}||ks(J qg d}|D ] tt fdd q/td	d
td
idtd	ksNJ d S )Nz	sin(x)**2zexp(z)^yzsin(E^(x))**2)r"   zexp^y(z)zsin**2(E^(x))r   )r.   r/   r0   r   r   r   c                      r   r   r   r   r   r   r   r   [   r   z.test_function_exponentiation.<locals>.<lambda>zx**2x
local_dictr   )r   r   r   r   r   r$   sympySymbol)r&   r   r'   r(   other_implicitr   r   r   test_function_exponentiationJ   s(   

r9   c                  C   s  t tf } d}|D ]}t|| dt|ksJ q	| tf7 } dtji}dddd}| D ]\}}t||| dt|ks=J q,d	d
 }t } | t|tf7 } td| dtdksXJ td| dtdksdJ td| dtdkspJ |D ]}t|| dt|ksJ qrd S )N)alphabetagammadeltaepsilonzetaetathetaiotakappamunuxiomicronpirhosigmatauupsilonphichipsiomegar   er   zI*yzE*E)xeIyeer4   c                 S   s   | dvrt | S dS )N)unsplittablenamesF)r   )symbolr   r   r   	can_split|   s   z(test_symbol_splitting.<locals>.can_splitrU   rV   xyx*y)r   r	   r   r   r6   Eitemsr
   )r   greek_lettersletterr5   r&   r   expectedrX   r   r   r   test_symbol_splittinga   sJ   










r`   c                  C   s  i dddddddddd	d
dddddddddddddddddddddddi d d!d"d"d#d#d$d%ddd&d'd(d)d*d+d,d-d.d/d0dd1d2d3d4d5d6d7d8d9d:} t tf }|tf }| D ]}t||d;}t| | |d;}||ksJ qsd S )<Nr0   z2*xr.   rZ   rY   r   r,   z2sin xz2*sin(x)zx y zzx*y*zzsin(2 * 3x)zsin(2 * 3 * x)zsin(x) (1 + cos(x))zsin(x) * (1 + cos(x))z(x + 2) sin(x)z(x + 2) * sin(x)z(x + 2) sin xz
sin(sin x)zsin(sin(x))zsin x!zsin(factorial(x))zsin x!!zsin(factorial2(x))r+   r/   z
x * sin(x)zxy sin xzx * y * sin(x)z
(x+2)(x+3)z(x + 2) * (x+3)zx**2 + 2xy + y**2zx**2 + 2 * x * y + y**2rH   Nonezln sin xz
ln(sin(x))zsin x**2z	sin(x**2)r:   zSymbol("alpha")x_2zSymbol("x_2")z
sin^2 x**2zsin(x**2)**2z	sin**3(x)z	sin(x)**3z(factorial)ztan 3xztan(3*x)zsin^2(3*E^(x))zsin(3*E**(x))**2zsin**2(E^(3x))zsin(E**(3*x))**2zsin^2 (3x*E^(x))zsin(3*x*E^x)**2zpi sin xr   r   )r   r   r   r   )r&   r   r   r   r'   r(   r   r   r   test_all_implicit_steps   s   	
 !
#
rc   c                  C   sT   t d} ttf }td|d}|dksJ td|d}|| | d d  ks(J d S )Nuzx.is_polynomial(x)r   Tz((exp(x) / (1 + exp(2x))).subs(exp(x), u)      )r6   r7   r   r   r   )rd   r   exprr   r   r   'test_no_methods_implicit_multiplication   s   
rh   )r6   sympy.parsing.sympy_parserr   r   r   r   r   r   r   r	   r
   r   sympy.testing.pytestr   r*   r2   r9   r`   rc   rh   r   r   r   r   <module>   s    0!.,