a
    khS4                     @   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   sp  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>>} | D ]}t |t| | ksJ qt d?ttd@ ttd@  ksJ tdAtdB\}}}t dCt|||ft|t| sJ t dDt|t|d@ s(J t dEtttdF ksDJ t dGttt	ftd@ t	d@  kslJ d S )HNz-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Rational(2,19))>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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ed1Zd2Zd3 r   R/var/www/auris/lib/python3.9/site-packages/sympy/parsing/tests/test_mathematica.pytest_mathematica   s    A$,"r   c                
      s  t  fdd  ddks"J  ddks2J  ddksBJ  ddksRJ  ddksbJ  dd	ksrJ  d
d
ksJ  dddgksJ  dddddggksJ  dddg dgksJ  ddksJ  ddksJ  dg dksJ  dg dksJ  dg dks*J  dg dks@J  dg dksVJ  dddg d gksrJ  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sJ  d.ddd/gd0gks*J  d1g d+ks@J  d2g d3ksVJ  d4g d5kslJ  d6d6ks~J  d7g d8ksJ  d9g d8ksJ  d:g d;ksJ  d<g d=ksJ  d>g d?ksJ  d@g dAksJ  dBg dCksJ  dDg dEks.J  dFg dGksDJ  dHg dIksZJ  dJg dKkspJ  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sJ  dUdg dd/g dSgks6J  dVddg d)g dPdWgksZJ  dXddg d)g dPgks|J  dYddg d g dSgksJ  dZdd[g d\gksJ  d]dd[g d\g d)gksJ  d^ddg d\d/gksJ  d_dg d`d0gksJ  daddg dbdWgks4J  dcddg dbgksPJ  ddddd/g degksnJ  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s J  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sxJ  dydrdd/g dzggksJ  d{ddrd/d0dWgggksJ  d|drdg dg d}g d~gksJ  ddg dg d}g d~gksJ  ddig dg d}g d~gks,J  dg dksBJ  dg dksXJ  dg dksnJ  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sJ  ddd/gd0gdWgks2J  dg dksHJ  dg dks^J  dg dkstJ  ddg dgksJ  ddd/g ddgksJ  ddd/g ddWgksJ  dg dksJ  dddd/g degksJ  dg dk	sJ  dg d`k	s*J  dddd/d0dWdg dg dgk	sTJ  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
sDJ  ddd[gk
sZJ  dddgk
spJ  dddgk
sJ  ddd[gk
sJ  dddgk
sJ  dddgk
sJ  dddd[ggk
sJ  ddddd[gdggksJ  dÃdddd[gddgggks&J  dŃdddd[gdd[gggksJJ  dƃddd[ggdgkshJ  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sJ  dσddgks&J  dуddgks<J  d҃ddgksRJ 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      | 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/   r2   r   )r)   2r   za / b)Powerr/   r&   r   r)   r   r   z3 4)r)   r-   r.   za[b] cr/   r2   z(x) (y)z3 (a))r)   r-   r+   z(a) b)r)   r+   r/   z4.2z4 2)r)   r.   r3   z4  2z3 . 4)Dotr-   r.   z4. 2)r)   4.r3   zx.y)r6   r   r   z4.y)r)   r7   r   z4 .y)r6   r.   r   zx.4)r)   r   z.4zx0.3)r)   Zx0z.3zx. 4)r6   r   r.   za (* +b *) + c)r*   r+   r2   z a (* + b *) + (**)c (* +d *) + e)r*   r+   r2   r   z,a + (*
    + b
    *) c + (* d
    *) e
    za*b/c)r4   r2   r&   za/b*cza+b-c)r)   r&   r2   za-b+cz
-a + b -c za/b/c*dr   za/b/cza-b-cz1/ar,   )r4   r+   r&   z1/a/bz-1/a*bz(a + b) + c)r*   r+   r/   z a + (b + c) + d )r*   r/   r2   za * (b + c)z	a b (c d))r)   r2   r   z{a, b, 2, c})Listr+   r/   r3   r2   z{a, {b, c}}r8   )r8   r/   r2   z{{a}}za[b, c])r+   r/   r2   z	a[[b, c]])Partr+   r/   r2   za[b[c]]za[[b, c[[d, {e,f}]]]]r9   )r8   r   fza[b[[c,d]]])r9   r/   r2   r   z	a[[b[c]]]za[[b[[c]]]])r9   r/   r2   za[[b[c[[d]]]]])r9   r2   r   za[b[[c[d]]]]zx[[a+1, b+2, c+3]])r*   r/   r3   )r*   r2   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/   r2   r   r   za +b + c+ d+e)r*   r+   r/   r2   r   r   za^b)r4   r+   r/   za^b^cr4   )r4   r/   r2   za^b^c^d)r4   r2   r   za/.b)
ReplaceAllr+   r/   z
a/.b/.c/.dr;   za//bza//b//cz
a//b//c//dza;b)CompoundExpressionr+   r/   za;)r<   r+   Nullza;b;)r<   r+   r/   r=   za[b;c])r<   r/   r2   z
a[b,c;d,e])r<   r2   r   r   z	a[b,c;,d])r<   r2   r=   za
b
za

b
 (c 
d)  
r<   z
a; b
c)r<   r+   r/   r2   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

}
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&r3   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   rF   r   r   r$      r%   c                      s    dS )Nz"abcr   r   rF   r   r   r$      r%   c                      s    dS )Nz	"abc\"defr   r   rF   r   r   r$      r%   c                      s    dS )Nz(,r   r   rF   r   r   r$      r%   c                      s    dS )Nz()r   r   rF   r   r   r$      r%   c                      s    dS )Nza (* br   r   rF   r   r   r$      r%   )r	   r   SyntaxErrorr   r   )rG   r#   r   !test_parser_mathematica_tokenizerW   s   "
"$"""&  (&&""*4,$ $$*0"rI   c            	         sz  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szJ |d
ddg dg dggksJ |dg ddgksJ  |||ttksJ  |||tttksJ  |||t|tt|ttksJ | |t	tt ks6J | |tt t ksPJ | |t	ttt  tt  ksvJ 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]]]]zRational[Rational[x, y], z]r(   r5   r*   r   r)   r   )r*   r   r   )r4   r   r   Rational)rL   r   r   )
r	   r   r   rJ   r   r   r   r   r   r   )	Zconvert_chain3r(   r)   r*   r4   Z
full_form1Z
full_form2Z
full_form3Z
full_form4r   rK   r   test_parser_mathematica_exp_alt   s$    &*rM   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   rI   rM   r   r   r   r   <module>   s    O *