o
    GZhS4                     @   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   sD  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:d;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dcdddedfdgdhdidjdkdldmdn} | D ]}t |t| | ksJ qt dottdp ttdp  ksJ tdqtdr\}}}t dst|||ft|t| sJ t dtt|t|dp sJ t dutttdv ksJ t dwttt	ftdp t	dp  ks J d S )xNz- 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.718281828u   Cos(1/2 * π)u	   Cos(π/2)z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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Rational(2,19))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Rational[2,19]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   Zdummy_eqr   r   )deZd1Zd2Zd3 r   S/var/www/auris/lib/python3.10/site-packages/sympy/parsing/tests/test_mathematica.pytest_mathematica   s   	
 !"#$%&'()*+,-./01234A$* ,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
ksAJ  dddgksKJ  dddddggksXJ  dddg dgkseJ  ddksmJ  ddksuJ  dg dksJ  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d0gks
J  d1g d+ksJ  d2g d3ks J  d4g d5ks+J  d6d6ks4J  d7g d8ks?J  d9g d8ksJJ  d:g d;ksUJ  d<g d=ks`J  d>g d?kskJ  d@g dAksvJ  dBg dCksJ  dDg dEksJ  dFg dGksJ  dHg dIksJ  dJg dKksJ  dLg dMksJ  dNg dMksJ  dOddd/g dPgksJ  dQddg d)d0gksJ  dRddd/g dSgksJ  dTddg d d0gksJ  dUdg dd/g dSgksJ  dVddg d)g dPdWgks"J  dXddg d)g dPgks3J  dYddg d g dSgksDJ  dZdd[g d\gksRJ  d]dd[g d\g d)gkscJ  d^ddg d\d/gksrJ  d_dg d`d0gksJ  daddg dbdWgksJ  dcddg dbgksJ  ddddd/g degksJ  dfg dgksJ  dhdidg djgksJ  dkdididggksJ  dlg dmksJ  dng doksJ  dpdd/d0ggksJ  dqdrdd/drd0dWg dsggksJ  dtdg dugksJ  dvdrdd/d0ggks#J  dwdrdg dxgks1J  dydrdd/g dzggksAJ  d{ddrd/d0dWgggksQJ  d|drdg dg d}g d~gkseJ  ddg dg d}g d~gksxJ  ddig 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d0gdWgksJ  ddd/gksJ  ddd/gd0gksJ  ddd/gd0gdWg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s<J  ddd/g ddgksKJ  ddd/g ddWgksZJ  dg dkseJ  dddd/g degkstJ  dg dksJ  dg d`ksJ  dddd/d0dWdg dg dgksJ  ddidg d5d0ddWdg 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dd0dgggksJ  ddddd/dgggd0gksJ  ddd[gks"J  dddgks-J  dddgks8J  ddd[gksCJ  dddgksNJ  dddgksYJ  dddd[ggksfJ  ddddd[gdggksvJ  dÃdddd[gddgggksJ  dŃdddd[gdd[gggksJ  dƃddd[ggdgksJ  dǃdddd[gddgggddgksJ  dȃddddd[g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)Z_from_tokens_to_fullformlistZ_from_mathematica_to_tokensexprparserr   r   <lambda>Z       z3test_parser_mathematica_tokenizer.<locals>.<lambda>r   Z42z.2z+x-1z- 3-3u   αz+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&   r,   cza + b* c* d + 2 * e)r&   r,   r/   r   )r&   2r   za / b)Powerr,   r#   r   r&   r   r   z3 4)r&   r*   r+   za[b] cr,   r/   z(x) (y)z3 (a))r&   r*   r(   z(a) b)r&   r(   r,   z4.2z4 2)r&   r+   r0   z4  2z3 . 4)Dotr*   r+   z4. 2)r&   4.r0   zx.y)r3   r   r   z4.y)r&   r4   r   z4 .y)r3   r+   r   zx.4)r&   r   z.4zx0.3)r&   Zx0z.3zx. 4)r3   r   r+   za (* +b *) + c)r'   r(   r/   z a (* + b *) + (**)c (* +d *) + e)r'   r(   r/   r   z,a + (*
    + b
    *) c + (* d
    *) e
    za*b/c)r1   r/   r#   za/b*cza+b-c)r&   r#   r/   za-b+cz
-a + b -c za/b/c*dr   za/b/cza-b-cz1/ar)   )r1   r(   r#   z1/a/bz-1/a*bz(a + b) + c)r'   r(   r,   z a + (b + c) + d )r'   r,   r/   za * (b + c)z	a b (c d))r&   r/   r   z{a, b, 2, c})Listr(   r,   r0   r/   z{a, {b, c}}r5   )r5   r,   r/   z{{a}}za[b, c])r(   r,   r/   z	a[[b, c]])Partr(   r,   r/   za[b[c]]za[[b, c[[d, {e,f}]]]]r6   )r5   r   fza[b[[c,d]]])r6   r,   r/   r   z	a[[b[c]]]za[[b[[c]]]])r6   r,   r/   za[[b[c[[d]]]]])r6   r/   r   za[b[[c[d]]]]zx[[a+1, b+2, c+3]])r'   r,   r0   )r'   r/   r*   zx[a+1, b+2, c+3]z{a+1, b+2, c+3}z	a*b*c*d*e)r&   r(   r,   r/   r   r   za +b + c+ d+e)r'   r(   r,   r/   r   r   za^b)r1   r(   r,   za^b^cr1   )r1   r,   r/   za^b^c^d)r1   r/   r   za/.b)
ReplaceAllr(   r,   z
a/.b/.c/.dr8   za//bza//b//cz
a//b//c//dza;b)CompoundExpressionr(   r,   za;)r9   r(   Nullza;b;)r9   r(   r,   r:   za[b;c])r9   r,   r/   z
a[b,c;d,e])r9   r/   r   r   z	a[b,c;,d])r9   r/   r:   za
b
za

b
 (c 
d)  
r9   z
a; b
c)r9   r(   r,   r/   za + 
b
za
b; c; d
 e; (f 
 g); h + 
 i)r&   r7   g)r'   hiz$
{
a
b; c; d
 e (f 
 g); h + 
 i

}
Zy_Patternr   ZBlankzy_.OptionalZy__ZBlankSequenceZy___ZBlankNullSequencez	a[b_.,c_]zb_. c#ZSlotz#3r*   z#nr   z##ZSlotSequencez##azx&r   z#&z#+3&z#1 + #2&r0   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                          dS )N"r   r   chainr   r   r!          c                      rB   )Nz"\"r   r   rD   r   r   r!      rF   c                      rB   )Nz"abcr   r   rD   r   r   r!      rF   c                      rB   )Nz	"abc\"defr   r   rD   r   r   r!      rF   c                      rB   )Nz(,r   r   rD   r   r   r!      rF   c                      rB   )Nz()r   r   rD   r   r   r!      rF   c                      rB   )Nza (* br   r   rD   r   r   r!      rF   )r	   r   SyntaxErrorr   r   )rE   r    r   !test_parser_mathematica_tokenizerW   s   
"$"""&  (&&""*4,$ $$*0"rH   c            	         sr  t  fdd  fdd} tdtd\}}}}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sPJ |dg ddgks^J  |||ttkskJ  |||tttksyJ  |||t|tt|ttksJ | |t	tt ksJ | |tt t ksJ | |t	ttt  tt  ksJ d S )Nc                    r   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!     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]]]]zRational[Rational[x, y], z]r%   r2   r'   r   r&   r   )r'   r   r   )r1   r   r   Rational)rK   r   r   )
r	   r   r   rI   r   r   r   r   r   r   )	Zconvert_chain3r%   r&   r'   r1   Z
full_form1Z
full_form2Z
full_form3Z
full_form4r   rJ   r   test_parser_mathematica_exp_alt   s$   &((rL   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   rH   rL   r   r   r   r   <module>   s     O *