U
    	Ç-en3  ã                   @   s€   d dl mZmZmZ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mZmZmZ d dlmZ dd„ Zdd	„ Zd
d„ ZdS )é    )ÚsinÚFunctionÚsymbolsÚDummyÚLambdaÚcos)Úparse_mathematicaÚMathematicaParser)Úsympify)ÚnÚwÚxÚyÚz)Úraisesc               >   C   sn  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!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=œ=} | D ]}t |ƒt| | ƒks„t‚q„t d>ƒttƒd? ttƒd?  ksÆt‚td@tdA\}}}t dBƒ t	|||ft|ƒt|ƒ ƒ¡st‚t dCƒ t	|t|d? ƒƒ¡s&t‚t dDƒt	ttdE ƒksBt‚t dFƒt	tt
ftd? t
d?  ƒksjt‚d S )GNz-6*xz	sin(x)**2z2*(x-1)z3*y+8zasin(2*x+9*(4-x)**2)/xúx+yú355/113ú2.718281828u	   Cos(Ï€/2)zsin(12)zexp(log(4))z(x+1)*(x+3)zcos(acos(3.6))zEq(cos(x), sin(y))z
2*sin(x+y)zsin(x)+cos(y)zsin(cos(x))z2*sqrt(x+y)zsqrt(2)z-sqrt(2)z
-1/sqrt(2)z-(1/sqrt(3))z1/(2*sqrt(5))zMod(5,3)z	-Mod(5,3)z(x+1)*yzx*(y+1)zsin(x)*cos(y)zsin(x)**2*cos(y)**2zcos(x)**2*(1-cos(y)**2)zx*yz2*xzx*8z2*8z4.*xz4.*3z4.*3.z1*2*3z-2*sqrt(2*3*(1+5))zlog(4,2)zlog(4,log(4,2))zexp(sqrt(2)**2*log(8,2))zasin(cos(0))z	log(16,2)zMax(1,-2,3,-4)zMin(1,-2,3)zexp(I*pi/2)z
atan2(y,x)zrf(x,y)zEi(x)zSi(x)zCi(x)z	airyai(x)zairyaiprime(5)z	airybi(x)zairybiprime(7)z li(4)z
primepi(7)zprime(5)z
isprime(5))=z- 6xzSin[x]^2z2(x-1)z3y+8zArcSin[2x+9(4-x)^2]/xr   r   r   u   Cos(1/2 * Ï€)zSin[12]zExp[Log[4]]z
(x+1)(x+3)zCos[ArcCos[3.6]]zCos[x]==Sin[y]z
2*Sin[x+y]zSin[x]+Cos[y]zSin[Cos[x]]z2*Sqrt[x+y]z+Sqrt[2]z-Sqrt[2]z
-1/Sqrt[2]z-(1/Sqrt[3])z1/(2*Sqrt[5])zMod[5,3]z	-Mod[5,3]z(x+1)yzx(y+1)zSin[x]Cos[y]zSin[x]^2Cos[y]^2zCos[x]^2(1 - Cos[y]^2)úx yzx  yz2 xzx 8z2 8z4.xz4. 3z4. 3.z1 2 3z( -  2 *  Sqrt[  2 3 *   ( 1   +  5 ) ]  zLog[2,4]zLog[Log[2,4],4]zExp[Sqrt[2]^2Log[2, 8]]zArcSin[Cos[0]]zLog2[16]zMax[1,-2,3,-4]zMin[1,-2,3]zExp[I Pi/2]zArcTan[x,y]zPochhammer[x,y]zExpIntegralEi[x]zSinIntegral[x]zCosIntegral[x]z	AiryAi[x]zAiryAiPrime[5]z	AiryBi[x]zAiryBiPrime[7]zLogIntegral[4]z
PrimePi[7]zPrime[5]z	PrimeQ[5]zSin[#]^2 + Cos[#]^2 &[x]é   zd1:4©ÚclszSin[#] + Cos[#3] &z
Sin[#^2] &zFunction[x, x^3]é   zFunction[{x, y}, x^2 + y^2])r   r
   ÚAssertionErrorr   r   r   r   r   Zdummy_eqr   r   )ÚdÚeZd1Zd2Zd3© r   úe/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/parsing/tests/test_mathematica.pyÚtest_mathematica   sŒ    Ã@$,"r   c                      s¦  t ƒ ‰‡fdd„‰ ˆ dƒdks"t‚ˆ dƒdks2t‚ˆ dƒdksBt‚ˆ dƒdksRt‚ˆ dƒdksbt‚ˆ dƒd	ksrt‚ˆ d
ƒd
ks‚t‚ˆ dƒddgks–t‚ˆ dƒddddggks°t‚ˆ dƒdddddggksÌt‚ˆ dƒdksÜt‚ˆ dƒdksìt‚ˆ dƒdddgkst‚ˆ dƒdddgkst‚ˆ dƒdddgks4t‚ˆ dƒdddgksLt‚ˆ dƒddd	gksdt‚ˆ dƒdddddggks‚t‚ˆ dƒdd d!gksšt‚ˆ d"ƒddddd#ggks¸t‚ˆ d$ƒddddd#d%gdd&d'ggksàt‚ˆ d(ƒddd)ddggksþt‚ˆ d*ƒdddgkst‚ˆ d+ƒdddgks.t‚ˆ d,ƒdddgd#gksJt‚ˆ d-ƒdddgksbt‚ˆ d.ƒdddgkszt‚ˆ d/ƒdddgks’t‚ˆ d0ƒd0ks¤t‚ˆ d1ƒddd&gks¼t‚ˆ d2ƒddd&gksÔt‚ˆ d3ƒd4ddgksìt‚ˆ d5ƒdd6d&gkst‚ˆ d7ƒd4ddgkst‚ˆ d8ƒdd6dgks4t‚ˆ d9ƒd4ddgksLt‚ˆ d:ƒddd;gksdt‚ˆ d<ƒdd=d>gks|t‚ˆ d?ƒd4ddgks”t‚ˆ d@ƒddd#gks¬t‚ˆ dAƒddd#d'gksÆt‚ˆ dBƒddd#d'gksàt‚ˆ dCƒdddd)d#dggks t‚ˆ dDƒddd)ddgd#gks t‚ˆ dEƒdddddd#ggks@t‚ˆ dFƒdddddgd#gks`t‚ˆ dGƒddddgdddd#ggks†t‚ˆ dHƒddd)ddgd)d#dgd%gks®t‚ˆ dIƒddd)ddgd)d#dggksÔt‚ˆ dJƒdddddgddd#ggksút‚ˆ dKƒddd)ddggkst‚ˆ dLƒddd)ddgd)ddggks>t‚ˆ dMƒddd)ddgdgks^t‚ˆ dNƒddddgd#gks|t‚ˆ dOƒddddd#gd%gksœt‚ˆ dPƒddddd#ggksºt‚ˆ dQƒddddd#d%ggksÚt‚ˆ dRƒdSddd&d#gksöt‚ˆ dTƒdSddSdd#ggkst‚ˆ dUƒdSdSdggks.t‚ˆ dVƒddd#gksFt‚ˆ dWƒdXddd#gks`t‚ˆ dYƒddd#ggkszt‚ˆ dZƒdXdddXd#d%dSd'd[gggks¢t‚ˆ d\ƒddXdd#d%ggksÀt‚ˆ d]ƒdXddd#ggksÜt‚ˆ d^ƒdXddXdd#ggksút‚ˆ d_ƒdXdddXd#d%gggkst‚ˆ d`ƒddXdd#d%gggks<t‚ˆ daƒdXddddgddd&gdd#dggksjt‚ˆ dbƒddddgddd&gdd#dggks–t‚ˆ dcƒdSdddgddd&gdd#dggksÂt‚ˆ ddƒdddd#d%d'gksàt‚ˆ deƒdddd#d%d'gksþt‚ˆ dfƒd)ddgkst‚ˆ dgƒd)dd)dd#ggks4t‚ˆ dhƒd)dd)dd)d#d%gggksXt‚ˆ diƒdjddgkspt‚ˆ dkƒdjdjdjddgd#gd%gks”t‚ˆ dlƒddgksªt‚ˆ dmƒddgd#gksÄt‚ˆ dnƒddgd#gd%gksât‚ˆ doƒdpddgksút‚ˆ dqƒdpddrgk	st‚ˆ dsƒdpdddrgk	s,t‚ˆ dtƒddpdd#ggk	sHt‚ˆ duƒdddpd#d%gd'gk	sht‚ˆ dvƒdddpd#drgd%gk	sˆt‚ˆ dwƒdpddgk	s t‚ˆ dxƒdpdddd#d%ggk	sÀt‚ˆ dyƒdpddd#gk	sÚt‚ˆ dzƒdddgk	sòt‚ˆ d{ƒdpddd#d%d'dd[d|gdd}d~ggk
s t‚ˆ dƒdSdpdddgd#dd%d'dd[d|ggdd}d~gggk
sZt‚ˆ d€ƒddd‚ggk
stt‚ˆ dƒƒd„ddd‚gggk
s’t‚ˆ d…ƒddd†ggk
s¬t‚ˆ d‡ƒdddˆggk
sÆt‚ˆ d‰ƒdd„ddd‚gggdd#d‚gggk
sòt‚ˆ dŠƒdd„ddd‚gggd#gkst‚ˆ d‹ƒdŒdgks,t‚ˆ dƒdŒdgksBt‚ˆ dŽƒdŒdgksXt‚ˆ dƒd‘dgksnt‚ˆ d’ƒd‘dgks„t‚ˆ d“ƒd”dgksšt‚ˆ d•ƒd”dŒdggks´t‚ˆ d–ƒd”ddŒdgdggksÔt‚ˆ d—ƒd”ddŒdgdŒd&gggksøt‚ˆ d˜ƒd”ddŒdgdŒdgggkst‚ˆ d™ƒd”dŒdggdgks:t‚ˆ dšƒd”ddŒdgdŒd&gggddgksdt‚ˆ d›ƒd”dd)dŒdgd&gd)dŒd&gdgggks”t‚ˆ dœƒddžgksªt‚ˆ dŸƒdd gksÀt‚ˆ d¡ƒddd)ddžgdggksât‚ˆ d¢ƒdd£gksøt‚ˆ d¤ƒddgkst‚ˆ d¥ƒdd¦gks$t‚tt‡ fd§d„ƒ tt‡ fd¨d„ƒ tt‡ fd©d„ƒ tt‡ fdªd„ƒ tt‡ fd«d„ƒ tt‡ fd¬d„ƒ tt‡ fd­d„ƒ d S )®Nc                    s   ˆ   ˆ  | ¡¡S ©N)Z_from_tokens_to_fullformlistZ_from_mathematica_to_tokens©Úexpr©Úparserr   r   Ú<lambda>Y   ó    z3test_parser_mathematica_tokenizer.<locals>.<lambda>r   Z42z.2z+xz-1z- 3z-3u   Î±z+Sin[x]ÚSinz-Sin[x]ÚTimeszx(a+1)ÚPlusÚaÚ1z(x)z(+x)z-az(-x)z(x + y)r   z3 + 4Ú3Ú4za - 3za - bÚbz7 * 8Ú7Ú8za + b*cÚcza + b* c* d + 2 * er   Ú2r   za / bÚPowerr   z3 4za[b] cz(x) (y)z3 (a)z(a) bz4.2z4 2z4  2z3 . 4ZDotz4. 2z4.zx.yz4.yz4 .yzx.4z.4zx0.3Zx0z.3zx. 4za (* +b *) + cz a (* + b *) + (**)c (* +d *) + ez,a + (*
    + b
    *) c + (* d
    *) e
    za*b/cza/b*cza+b-cza-b+cz
-a + b -c za/b/c*dza/b/cza-b-cz1/az1/a/bz-1/a*bz(a + b) + cz a + (b + c) + d za * (b + c)z	a b (c d)z{a, b, 2, c}ÚListz{a, {b, c}}z{{a}}za[b, c]z	a[[b, c]]ZPartza[b[c]]za[[b, c[[d, {e,f}]]]]Úfza[b[[c,d]]]z	a[[b[c]]]za[[b[[c]]]]za[[b[c[[d]]]]]za[b[[c[d]]]]zx[[a+1, b+2, c+3]]zx[a+1, b+2, c+3]z{a+1, b+2, c+3}z	a*b*c*d*eza +b + c+ d+eza^bza^b^cza^b^c^dza/.bZ
ReplaceAllz
a/.b/.c/.dza//bza//b//cz
a//b//c//dza;bZCompoundExpressionza;ZNullza;b;za[b;c]z
a[b,c;d,e]z	a[b,c;,d]za
b
za

b
 (c 
d)  
z
a; b
cza + 
b
za
b; c; d
 e; (f 
 g); h + 
 iÚgÚhÚiz$
{
a
b; c; d
 e (f 
 g); h + 
 i

}
Zy_ÚPatternZBlankzy_.ÚOptionalZy__ZBlankSequenceZy___ZBlankNullSequencez	a[b_.,c_]zb_. cú#ZSlotz#3z#nr   z##ZSlotSequencez##azx&r   z#&z#+3&z#1 + #2&z# + #&z#&[x]z#1 + #2 & [x, y]z	#1^2#2^3&z"abc"Z_StrÚabcz"a\"b"za"bzx + "abc" ^ 3z"a (* b *) c"za (* b *) cz"a" (* b *) z	"a [ b] "za [ b] c                      s   ˆ dƒS )Nú"r   r   ©Úchainr   r   r$   ô   r%   c                      s   ˆ dƒS )Nz"\"r   r   r=   r   r   r$   õ   r%   c                      s   ˆ dƒS )Nz"abcr   r   r=   r   r   r$   ö   r%   c                      s   ˆ dƒS )Nz	"abc\"defr   r   r=   r   r   r$   ÷   r%   c                      s   ˆ dƒS )Nz(,r   r   r=   r   r   r$   ú   r%   c                      s   ˆ dƒS )Nz()r   r   r=   r   r   r$   û   r%   c                      s   ˆ dƒS )Nza (* br   r   r=   r   r   r$   ü   r%   )r	   r   r   ÚSyntaxErrorr   r   )r>   r#   r   Ú!test_parser_mathematica_tokenizerV   s   (
ü
    &(&&&   (" .,,$$   .:,$ $$*0"r@   c                     sb  t ƒ ‰‡fdd„‰ ‡ ‡fdd„} tdtd\}}}}d}d}d}ˆ |¡d	d
ddggks\t‚ˆ |¡dd
ddgdgkszt‚ˆ |¡d	d
ddddgdddgggks¤t‚ˆ |ƒ||ttƒƒks¾t‚ˆ |ƒ||ttƒtƒksÚt‚ˆ |ƒ||t|ttƒ|tt	ƒƒƒkst‚| |ƒt
tt ƒkst‚| |ƒtt t ks8t‚| |ƒt
ttt  tt	  ƒks^t‚d S )Nc                    s   ˆ   ˆ  | ¡¡S r   )Z#_from_fullformlist_to_fullformsympyÚ_from_fullform_to_fullformlistr    r"   r   r   r$     r%   z1test_parser_mathematica_exp_alt.<locals>.<lambda>c                    s   ˆ  ˆ | ƒ¡S r   )Z_from_fullformsympy_to_sympyr    ©Zconvert_chain2r#   r   r   r$     r%   zSin Times Plus Powerr   zSin[Times[x, y]]zPlus[Times[x, y], z]z'Sin[Times[x, Plus[y, z], Power[w, n]]]]r&   r'   r   r   r(   r   r2   r   r   )r	   r   r   rA   r   r   r   r   r   r   r   )Zconvert_chain3r&   r'   r(   r2   Z
full_form1Z
full_form2Z
full_form3r   rB   r   Útest_parser_mathematica_exp_altÿ   s     **rC   N)Zsympyr   r   r   r   r   r   Zsympy.parsing.mathematicar   r	   Zsympy.core.sympifyr
   Z	sympy.abcr   r   r   r   r   Zsympy.testing.pytestr   r   r@   rC   r   r   r   r   Ú<module>   s    N *