o
    *ήc)3                     @   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   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/d0d1d2d3d4d5d6d7d8d9d:d9d;d<d=d>d?d@i dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdl	} | D ]}t |t| | ksJ qt dmttdn ttdn  ksJ tdotdp\}}}t dqt|||ft|t| sJ t drt|t|dn sJ t dstttdt ks
J t duttt	ftdn t	dn  ksJ d S )vNz- 6xz-6*xzSin[x]^2z	sin(x)**2z2(x-1)z2*(x-1)z3y+8z3*y+8zArcSin[2x+9(4-x)^2]/xzasin(2*x+9*(4-x)**2)/xzx+yz355/113z2.718281828zSin[12]zsin(12)zExp[Log[4]]zexp(log(4))z
(x+1)(x+3)z(x+1)*(x+3)zCos[ArcCos[3.6]]zcos(acos(3.6))zCos[x]==Sin[y]zEq(cos(x), sin(y))z
2*Sin[x+y]z
2*sin(x+y)zSin[x]+Cos[y]zsin(x)+cos(y)zSin[Cos[x]]zsin(cos(x))z2*Sqrt[x+y]z2*sqrt(x+y)z+Sqrt[2]zsqrt(2)z-Sqrt[2]z-sqrt(2)z
-1/Sqrt[2]z
-1/sqrt(2)z-(1/Sqrt[3])z-(1/sqrt(3))z1/(2*Sqrt[5])z1/(2*sqrt(5))zMod[5,3]zMod(5,3)z	-Mod[5,3]z	-Mod(5,3)z(x+1)yz(x+1)*yzx(y+1)zx*(y+1)zSin[x]Cos[y]zsin(x)*cos(y)zSin[x]^2Cos[y]^2zsin(x)**2*cos(y)**2zCos[x]^2(1 - Cos[y]^2)zcos(x)**2*(1-cos(y)**2)x yzx*yzx  yz2 xz2*xzx 8zx*8z2 8z2*8z4.xz4.*xz4. 3z4.*3z4. 3.z4.*3.z1 2 3z1*2*3z( -  2 *  Sqrt[  2 3 *   ( 1   +  5 ) ]  z-2*sqrt(2*3*(1+5))zLog[2,4]zlog(4,2)zLog[Log[2,4],4]zlog(4,log(4,2))zExp[Sqrt[2]^2Log[2, 8]]zexp(sqrt(2)**2*log(8,2))zArcSin[Cos[0]]zasin(cos(0))zLog2[16]z	log(16,2)zMax[1,-2,3,-4]zMax(1,-2,3,-4)zMin[1,-2,3]zMin(1,-2,3)zExp[I Pi/2]zexp(I*pi/2)zArcTan[x,y]z
atan2(y,x)zPochhammer[x,y]zrf(x,y)zExpIntegralEi[x]zEi(x)zSinIntegral[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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
   r   r   r   r   r   dummy_eqr   r   )ded1d2d3 r   K/tmp/pip-target-vg8gfxp4/lib/python/sympy/parsing/tests/test_mathematica.pytest_mathematica   s   	
 !"#$%&'()*+,-./01234?$* ,r   c                
      s  t  fdd  ddksJ  ddksJ  ddks!J  ddks)J  ddks1J  dd	ks9J  d
ddgksCJ  dddddggksPJ  dddg dgks]J  ddkseJ  ddksmJ  dg dkswJ  dg dksJ  dg dksJ  dg dksJ  dg dksJ  dddg dgksJ  d g d!ksJ  d"ddg d#gksJ  d$ddg d%g d&gksJ  d'ddg d(gksJ  d)g d*ksJ  d+g d,ksJ  d-ddd.gd/gksJ  d0g d*ksJ  d1g d2ksJ  d3g d4ks#J  d5d5ks,J  d6g d7ks7J  d8g d7ksBJ  d9g d:ksMJ  d;g d<ksXJ  d=g d>kscJ  d?g d@ksnJ  dAg dBksyJ  dCg dDksJ  dEg dFksJ  dGg dHksJ  dIg dJksJ  dKg dLksJ  dMg dLksJ  dNddd.g dOgksJ  dPddg d(d/gksJ  dQddd.g dRgksJ  dSddg dd/gksJ  dTdg dd.g dRgksJ  dUddg d(g dOdVgksJ  dWddg d(g dOgks+J  dXddg dg dRgks<J  dYddZg d[gksJJ  d\ddZg d[g d(gks[J  d]ddg d[d.gksjJ  d^dg d_d/gksxJ  d`ddg dadVgksJ  dbddg dagksJ  dcddd.g ddgksJ  deg dfksJ  dgdhdg digksJ  djdhdhdggksJ  dkg dlksJ  dmg dnksJ  dodd.d/ggksJ  dpdqdd.dqd/dVg drggks J  dsdg dtgksJ  dudqdd.d/ggksJ  dvdqdg dwgks)J  dxdqdd.g dyggks9J  dzddqd.d/dVgggksIJ  d{dqdg dg d|g d}gks]J  d~dg dg d|g d}gkspJ  ddhg dg d|g d}gksJ  dg dksJ  dg dksJ  dg dksJ  dddg dgksJ  ddddd.g dggksJ  dg dksJ  dddg dd/gdVgksJ  ddd.gksJ  ddd.gd/gksJ  ddd.gd/gdVgksJ  dg dksJ  dg dksJ  dg dks'J  ddg dgks4J  ddd.g ddgksCJ  ddd.g ddVgksRJ  dg dks]J  dddd.g ddgkslJ  dg dkswJ  dg d_ksJ  dddd.d/dVdg dg dgksJ  ddhdg d4d/ddVdg dgg dggksJ  ddddggksJ  dddddgggksJ  ddddggksJ  ddddggksJ  ddddd.dgggdd/dgggksJ  ddddd.dgggd/gksJ  dddZgksJ  dddgks%J  dddgks0J  dddZgks;J  dddgksFJ  dddgksQJ  ddddZggks^J  dddddZgdggksnJ  dddddZgddgggksJ  dăddddZgddZgggksJ  dŃdddZggdgksJ  dƃddddZgddgggddgksJ  dǃdddddZgdgdddgdgggksJ  dȃddgksJ  d˃ddgksJ  d̓dddddgdggksJ  d΃ddgks J  dЃddgksJ  dуddgksJ tt fdd tt fdd tt fdd tt fdd tt fdd tt fdd tt fdd d S )Nc                          | S N)_from_tokens_to_fullformlist_from_mathematica_to_tokensexprparserr   r   <lambda>X       z3test_parser_mathematica_tokenizer.<locals>.<lambda>r   42z.2z+x-1z- 3-3z+Sin[x]Sinz-Sin[x]Timeszx(a+1))Plusa1z(x)z(+x)z-a)r-   r*   r/   z(-x))r-   r*   r   z(x + y))r.   r   r   z3 + 4)r.   34za - 3)r.   r/   r+   za - br.   r/   )r-   r*   bz7 * 8)r-   78za + b*c)r-   r3   cza + b* c* d + 2 * e)r-   r3   r6   r   )r-   2r   za / b)Powerr3   r*   r   r-   r   r   z3 4)r-   r1   r2   za[b] cr3   r6   z(x) (y)z3 (a))r-   r1   r/   z(a) b)r-   r/   r3   z4.2z4 2)r-   r2   r7   z4  2z3 . 4)Dotr1   r2   z4. 2)r-   4.r7   zx.y)r:   r   r   z4.y)r-   r;   r   z4 .y)r:   r2   r   zx.4)r-   r   z.4zx0.3)r-   x0z.3zx. 4)r:   r   r2   za (* +b *) + c)r.   r/   r6   z a (* + b *) + (**)c (* +d *) + e)r.   r/   r6   r   z,a + (*
    + b
    *) c + (* d
    *) e
    za*b/c)r8   r6   r*   za/b*cza+b-c)r-   r*   r6   za-b+cz
-a + b -c za/b/c*dr   za/b/cza-b-cz1/ar0   )r8   r/   r*   z1/a/bz-1/a*bz(a + b) + c)r.   r/   r3   z a + (b + c) + d )r.   r3   r6   za * (b + c)z	a b (c d))r-   r6   r   z{a, b, 2, c})Listr/   r3   r7   r6   z{a, {b, c}}r=   )r=   r3   r6   z{{a}}za[b, c])r/   r3   r6   z	a[[b, c]])Partr/   r3   r6   za[b[c]]za[[b, c[[d, {e,f}]]]]r>   )r=   r   fza[b[[c,d]]])r>   r3   r6   r   z	a[[b[c]]]za[[b[[c]]]])r>   r3   r6   za[[b[c[[d]]]]])r>   r6   r   za[b[[c[d]]]]zx[[a+1, b+2, c+3]])r.   r3   r7   )r.   r6   r1   zx[a+1, b+2, c+3]z{a+1, b+2, c+3}z	a*b*c*d*e)r-   r/   r3   r6   r   r   za +b + c+ d+e)r.   r/   r3   r6   r   r   za^b)r8   r/   r3   za^b^cr8   )r8   r3   r6   za^b^c^d)r8   r6   r   za/.b)
ReplaceAllr/   r3   z
a/.b/.c/.dr@   za//bza//b//cz
a//b//c//dza;b)CompoundExpressionr/   r3   za;)rA   r/   Nullza;b;)rA   r/   r3   rB   za[b;c])rA   r3   r6   z
a[b,c;d,e])rA   r6   r   r   z	a[b,c;,d])rA   r6   rB   za
b
za

b
 (c 
d)  
rA   z
a; b
c)rA   r/   r3   r6   za + 
b
za
b; c; d
 e; (f 
 g); h + 
 i)r-   r?   g)r.   hiz$
{
a
b; c; d
 e (f 
 g); h + 
 i

}
y_Patternr   Blankzy_.Optionaly__BlankSequencey___BlankNullSequencez	a[b_.,c_]zb_. c#Slotz#3r1   z#nr   z##SlotSequencez##azx&r   z#&z#+3&z#1 + #2&r7   z# + #&z#&[x]z#1 + #2 & [x, y]z	#1^2#2^3&z"abc"_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                          dS )N"r   r   chainr   r   r'          c                      rS   )Nz"\"r   r   rU   r   r   r'      rW   c                      rS   )Nz"abcr   r   rU   r   r   r'      rW   c                      rS   )Nz	"abc\"defr   r   rU   r   r   r'      rW   c                      rS   )Nz(,r   r   rU   r   r   r'      rW   c                      rS   )Nz()r   r   rU   r   r   r'      rW   c                      rS   )Nza (* br   r   rU   r   r   r'      rW   )r	   r   SyntaxErrorr   r   )rV   r&   r   !test_parser_mathematica_tokenizerU   s   
"$"""&  (&&""*4,$ $$*0"rY   c                     sR  t  fdd  fdd} tdtd\}}}}d}d}d}|d	g d
gks-J |dg d
dgks;J |d	ddg dg dggksNJ  |||ttks[J  |||tttksiJ  |||t|tt|ttks}J | |t	tt ksJ | |tt t ksJ | |t	ttt  tt  ksJ d S )Nc                    r   r    )#_from_fullformlist_to_fullformsympy_from_fullform_to_fullformlistr#   r%   r   r   r'      r(   z1test_parser_mathematica_exp_alt.<locals>.<lambda>c                    s     | S r    )_from_fullformsympy_to_sympyr#   convert_chain2r&   r   r   r'     s    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,   r9   r.   r   r-   r   )r.   r   r   )r8   r   r   )
r	   r   r   r[   r   r   r   r   r   r   )convert_chain3r,   r-   r.   r8   
full_form1
full_form2
full_form3r   r]   r   test_parser_mathematica_exp_alt   s    &((rc   N)sympyr   r   r   r   r   r   sympy.parsing.mathematicar   r	   sympy.core.sympifyr
   	sympy.abcr   r   r   r   r   sympy.testing.pytestr   r   rY   rc   r   r   r   r   <module>   s     M )