K ioddlmZmZmZmZmZmZmZmZm Z m Z m Z m Z m Z mZmZddlmZmZmZmZmZmZmZddlmZmZddlmZddlmZddlm Z ddl!m"Z"m#Z#ddl$m%Z%m&Z&dd lm'Z'dd lm(Z(dd l)Z)ed \Z*Z+Z,d Z-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:dZ;dZdZ?d Z@d!ZAd"ZBd#ZCd$ZDd%ZEd&ZFd'ZGd(ZHd)ZId*ZJd+ZKd,ZLd-ZMd.ZNd/ZOd0ZPd1ZQy )2)pisymbolsRationalInteger GoldenRatio EulerGammaCatalanLambdaDummyEqNeLeLtGtGe) PiecewisesincosAbsexpceilingsqrt)raiseswarns_deprecated_sympy) GLSLPrinter) StrPrinter)implemented_function) IndexedBaseIdx)Matrix MatrixSymbol)Tuple glsl_codeNzx,y,zc>tttdk(sJy)Nabs(x))r$rxd/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/printing/tests/test_glsl.pytest_printmethodr+s SV  (( (r)ctttzddk(sJtttztzddk(sJttttzzddk(sJttttzzddk(sJtttttdzzzzddk(sJtt tz dd d k(sJtt tz dd k(sJy) NF) use_operatorsz mul(x, y)zadd(pow(x, y), z)zmul(x, add(y, z))?zmul(x, add(y, pow(z, sqrt(y))))zzero())r-zerozsub(zero(), add(x, y))zsub(0.0, add(x, y))r$r'yzr(r)r*test_print_without_operatorsr3s QqS /; >> > QT!VE 26I II I Q!WU 37J JJ J Q!WU 37J JJ J Q!QV) _U ;?` `` ` aRTX >BZ ZZ Z aRT /3H HH Hr)ctttdk(sJttdzdk(sJtttdk(sJy)Nzsqrt(x)r.)r$rr'r(r)r*test_glsl_code_sqrtr5sG T!W  ** * QV  )) ) T!W  ** *r)cjtdttdtz}ttdzdk(sJtttdzzdk(sJtd|tdztttzz zz tdztzz dk(sJttd zd k(sJy) Ngz pow(x, 3.0)zpow(x, pow(y, 3.0))g @z.pow(3.5*2*x, -x + pow(y, x))/(pow(x, 2.0) + y)gz1.0/x)rr r'r$r1)r7s r*test_glsl_code_Powr;#sS&AaC.1A QT?m ++ + QAY #8 88 8 Q!SA1H--q!tax8 98 99 9 QW  (( (r)cttttdk(sJtt ttdk(sJtt ttdk(sJtt ttdk(sJttttdk(sJttttdk(sJy)Nzx == yzx != yzx <= yzx < yzx > yzx >= y) r$r r'r1r rrrrr(r)r*test_glsl_code_Relationalr=,s R1X ( ** * R1X ( ** * R1X ( ** * R1X ' )) ) R1X ' )) ) R1X ( ** *r)c^ttddk(sJttdk(sJy)Nr:zfloat E = 2.71828183; Ezfloat pi = 3.14159265; pi)r$rrr(r)r*test_glsl_code_constants_mathhr?5s- SV  : :: : R=8 88 8r)ctdtzdk(sJtdtzdk(sJtdtzdk(sJy)Nr8z-float GoldenRatio = 1.61803399; 2*GoldenRatioz&float Catalan = 0.915965594; 2*Catalanz,float EulerGamma = 0.577215665; 2*EulerGamma)r$rr rr(r)r*test_glsl_code_constants_otherrA<sJ Q{] #'W WW W QwY #L LL L Qz\ "&U UU Ur)cttdddk(sJttdddk(sJttdddk(sJttd ddk(sJy) Nr9z3.0/7.0 2iz-3.0/7.0)r$rr(r)r*test_glsl_code_RationalrHBsg Xa^ $ 11 1 Xb!_ % ,, , Xa_ % 33 3 Xb"% &) 33 3r)chttddk(sJttddk(sJy)NC67z-1)r$rr(r)r*test_glsl_code_IntegerrMIs0 WR[ !T )) ) WR[ !T )) )r)c^tttttzdk(sJy)Nzpow(sin(x), cos(x)))r$rr'rr(r)r*test_glsl_code_functionsrONs# SVs1v% &*? ?? ?r)c td}tdt|d|z}t||dk(sJtdt|d|ztz }t||dk(sJt d}t dtdd }tdt||d |zzd|zz}t||||| d k(sJy)Nr'r7r8z2*xz(float Catalan = 0.915965594; 2*x/CatalanAinTintegerr: assign_toz@for (int i=0; i 0) { A[1][0] = x + 2; } else { A[1][0] = y; } A[2][0] = sin(z);)r8r)r:r)rrzF((x > 0) ? ( 2*A[2][0] ) : ( A[2][0] )) + sin(A[1][0]) + A[0][0]qM)r9r)rzrrzzM[0][0] = sin(q[1]); M[0][1] = 0; M[0][2] = cos(q[2]); M[1][0] = q[1] + q[2]; M[1][1] = q[3]; M[1][2] = 5; M[2][0] = 2*q[4]/q[1]; M[2][1] = sqrt(q[0]) + 4; M[2][2] = 0;) r r'r1rrr2r!r$rr)matrQrarrrvs r*test_Matrix_printingrZs~ !A#y!a%14y93q6B CCS!QA SA &   VQqT!A$K( )) ) a$iQ'!D'4 9C$L H1T7 RD T? !! ! S!QAS!QAQsVaQsV- 3!C&!D'1% 1T71S6 4#  r)czt}tgd}||dk(sJ||jdk(sJy)Nr:r8r9rzrrCzfloat[7](1, 2, 3, 4, 5, 6, 7))r$r transposeglrQs r*test_Matrices_1x7rs> BA a53 33 3 akkm  ? ?? ?r)cHt}tgd}||ddk(sJy)Nrint) array_typezint[7](1, 2, 3, 4, 5, 6, 7))r$r rs r* test_Matrices_1x7_array_type_intrs' BA aE "&C CC Cr)cFt}td}||dddk(sJy)Na b cAbcTypeF)rr|zAbcType[3](a, b, c))r$rrs r*test_Tuple_array_type_customrs) BA aI% 8.syy9r))rrrcrs@@r*-test_cannot_assign_to_cause_mismatched_lengthrs D I :9:r)ct}tdddtdddztdddz}tddd}|||tjdk(sJy)NrQrzrrCXrVa/ X[0][0] = A[0][0]*B[0][0] + A[0][1]*B[1][0] + A[0][2]*B[2][0] + A[0][3]*B[3][0] + C[0][0]; X[0][1] = A[0][0]*B[0][1] + A[0][1]*B[1][1] + A[0][2]*B[2][1] + A[0][3]*B[3][1] + C[0][1]; X[0][2] = A[0][0]*B[0][2] + A[0][1]*B[1][2] + A[0][2]*B[2][2] + A[0][3]*B[3][2] + C[0][2]; X[0][3] = A[0][0]*B[0][3] + A[0][1]*B[1][3] + A[0][2]*B[2][3] + A[0][3]*B[3][3] + C[0][3]; X[1][0] = A[1][0]*B[0][0] + A[1][1]*B[1][0] + A[1][2]*B[2][0] + A[1][3]*B[3][0] + C[1][0]; X[1][1] = A[1][0]*B[0][1] + A[1][1]*B[1][1] + A[1][2]*B[2][1] + A[1][3]*B[3][1] + C[1][1]; X[1][2] = A[1][0]*B[0][2] + A[1][1]*B[1][2] + A[1][2]*B[2][2] + A[1][3]*B[3][2] + C[1][2]; X[1][3] = A[1][0]*B[0][3] + A[1][1]*B[1][3] + A[1][2]*B[2][3] + A[1][3]*B[3][3] + C[1][3]; X[2][0] = A[2][0]*B[0][0] + A[2][1]*B[1][0] + A[2][2]*B[2][0] + A[2][3]*B[3][0] + C[2][0]; X[2][1] = A[2][0]*B[0][1] + A[2][1]*B[1][1] + A[2][2]*B[2][1] + A[2][3]*B[3][1] + C[2][1]; X[2][2] = A[2][0]*B[0][2] + A[2][1]*B[1][2] + A[2][2]*B[2][2] + A[2][3]*B[3][2] + C[2][2]; X[2][3] = A[2][0]*B[0][3] + A[2][1]*B[1][3] + A[2][2]*B[2][3] + A[2][3]*B[3][3] + C[2][3]; X[3][0] = A[3][0]*B[0][0] + A[3][1]*B[1][0] + A[3][2]*B[2][0] + A[3][3]*B[3][0] + C[3][0]; X[3][1] = A[3][0]*B[0][1] + A[3][1]*B[1][1] + A[3][2]*B[2][1] + A[3][3]*B[3][1] + C[3][1]; X[3][2] = A[3][0]*B[0][2] + A[3][1]*B[1][2] + A[3][2]*B[2][2] + A[3][3]*B[3][2] + C[3][2]; X[3][3] = A[3][0]*B[0][3] + A[3][1]*B[1][3] + A[3][2]*B[2][3] + A[3][3]*B[3][3] + C[3][3];)r$r!rrrs r*test_matrix_4x4_assignrsi B Aa <Aa#8 8<Aa;P PDS1%I di (HOO=f-  r)c t}tddD]}tt|}||j||k(sJ||d||k(sJ|dkDsS|dkr4||d|ddj d t|Dd k(rJ||d |d dj d t|Dd k(rJy)Nr: T mat_transposerzvec(z, c32K|]}t|ywr`str.0res r* z test_1xN_vecs..s:Ta3q6:T)float[z](c32K|]}t|ywr`rrs r*rz test_1xN_vecs..s>X!s1v>Xr)r$ranger rjoin)rrRrQs r* test_1xN_vecsrs B 1R[Z 58 !++- BqE)))!$'2a5000 q5Av!uq:T5QR8:T1T UUUU!u1TYY>XuUVx>X5X YYYYZr)cLd}tddD]U}tddD]B}tt|Dcgc]!}t|Dcgc] }|||zz c}#c}}}t|}t|d}|dtj |zdzz }|d|zd zz }|d |zd zz }|d z }|d z }|dk(r |dk(r|dk(rJ|dkr<|dkr7|dkDr2|dkDr-|j d|zsJ|j d|zrJ|dk(r|dkr|j drJ|dk(r|dkr|j dr.J|dk(r4|j d|z|zsJ|j d|z|zrgJ|dk(r4|j d|z|zsJ|j d|z|zrJ|j d||zzsJ|j d||zzsJt|d}t|dd} |j d|d|dsJ| j d|d|dsJ|d|zd zz }|d| zd zz }|dz }|dz }EXd} | r.t dd} | j|| jyycc}wcc}}w)Nzdef test_misc_mats(): r:rTrz mat = z z gl = '''z''' z glTransposed = '''z''' z assert glsl_code(mat) == gl z= assert glsl_code(mat,mat_transpose=True) == glTransposed 0rzzmat%srz float[%s]( mat_nested)rrrz][]z glNested = '''z glNestedTransposed = '''z6 assert glsl_code(mat,mat_nested=True) == glNested zT assert glsl_code(mat,mat_nested=True,mat_transpose=True) == glNestedTransposed Fztest_glsl_generated_matrices.pyw) rr r$r_print startswithopenwriteclose) generatedAssertionsrRrpr1r'rQr glTransposedglNestedglNestedTransposedgenerateAssertionsgens r* test_MxN_matsrs1 1QZ#~q" ~AU1XF%(3QQqS3FGA1B$QT:L jl.A.A!.D!DV!K K  !22!5j!@ @  !<\!I,!V V  !D D  !a a Av!q&Sy yaAFqsqs}}Wq[111#..w{;;;aAF}}U+++aAF}}U+++a}}\1_Q%6777#..|Qq/@AAAa}}\1_Q%6777#..|Qq/@AAA}}\QqS%9:::#..|qs/CDDD$Q$7%.qtt%T"**a+BCCC)44!5LMMM#%}d?}t||k(sJt|d|k(sJd@}dA}t|d|k(sJt|dd|k(sJtgdgdgd"gd1gdBg}dC}dD}t||k(sJt|d|k(sJdE}dF}t|d|k(sJt|dd|k(sJtgd gdgd%gd4gdGg}dH}dI}t||k(sJt|d|k(sJdJ}dK}t|d|k(sJt|dd|k(sJtgd gdgd(gd7gdLg}dM}dN}t||k(sJt|d|k(sJdO}dP}t|d|k(sJt|dd|k(sJy)QNrrTrr:z vec2(0, 1))rr:r8z vec3(0, 1, 2))rr:r8r9zvec4(0, 1, 2, 3))rr:r8r9rzzfloat[5](0, 1, 2, 3, 4)r8r9zmat2(0, 1, 2, 3)zmat2(0, 2, 1, 3))r9rzrzmat3x2(0, 1, 2, 3, 4, 5)zmat2x3(0, 3, 1, 4, 2, 5))rzrrrCzmat4x2(0, 1, 2, 3, 4, 5, 6, 7)zmat2x4(0, 4, 1, 5, 2, 6, 3, 7))rrrCrrEzBfloat[10]( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ) /* a 2x5 matrix */zKfloat[10]( 0, 5, 1, 6, 2, 7, 3, 8, 4, 9 ) /* a 5x2 matrix */zCfloat[2][5]( float[](0, 1, 2, 3, 4), float[](5, 6, 7, 8, 9) )zgfloat[5][2]( float[](0, 5), float[](1, 6), float[](2, 7), float[](3, 8), float[](4, 9) )r)rrrzrzmat2x3(0, 1, 2, 3, 4, 5)zmat3x2(0, 2, 4, 1, 3, 5))rrCrzmat3(0, 1, 2, 3, 4, 5, 6, 7, 8)zmat3(0, 3, 6, 1, 4, 7, 2, 5, 8))rrEr z0mat4x3(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)z.mat3x4(0, 4, 8, 1, 5, 9, 2, 6, 10, 3, 7, 11))rr zafloat[15]( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ) /* a 3x5 matrix */z_float[15]( 0, 5, 10, 1, 6, 11, 2, 7, 12, 3, 8, 13, 4, 9, 14 ) /* a 5x3 matrix */zmfloat[3][5]( float[]( 0, 1, 2, 3, 4), float[]( 5, 6, 7, 8, 9), float[](10, 11, 12, 13, 14) )z{float[5][3]( float[](0, 5, 10), float[](1, 6, 11), float[](2, 7, 12), float[](3, 8, 13), float[](4, 9, 14) )rrCzmat2x4(0, 1, 2, 3, 4, 5, 6, 7)zmat4x2(0, 2, 4, 6, 1, 3, 5, 7))rErrz2mat3x4(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)z-mat4x3(0, 3, 6, 9, 1, 4, 7, 10, 2, 5, 8, 11))rrrzDmat4( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)zR   St , << < 1a& C B#L S>R   St , << < ) C B&L S>R   St , << < , C B)L S>R   St , << < /" #C &B0L S>R   St , << <  C B#L S>R   St , << < AA C B)L S>R   St , << <    C (B1L S>R   St , << <   C .B7L S>R   St , << <  C BL S>R   St , << <H SD )X 55 5 SDt <@R RR R  C B&L S>R   St , << < AAA C (B1L S>R   St , << <    C /B8L S>R   St , << <  C @BGL S>R   St , << <  C  B L S>R   St , << <H  SD )X 55 5 SDt <@R RR R   C B)L S>R   St , << < AAAA  C .B7L S>R   St , << <    C BBFL S>R   St , << <   C TBUL S>R   St , << <   C  B L S>R   St , << <H  SD )X 55 5 SDt <@R RR R   C 'B0L S>R   St , << < AAAAA  C BL S>R   St , << <H SD )X 55 5 SDt <@R RR R   C BL S>R   St , << <H SD )X 55 5 SDt <@R RR R   C BL S>R   St , << <H SD )X 55 5 SDt <@R RR R   C BL S>R   St , << <H SD )X 55 5 SDt <@R RR Rr))R sympy.corerrrrrrr r r r r rrrrsympy.functionsrrrrrrrsympy.testing.pytestrrsympy.printing.glslrsympy.printing.strrsympy.utilities.lambdifyr sympy.tensorrrsympy.matricesr r!r"r$rr'r1r2r+r3r5r;r=r?rArHrMrOrXrZr\rfrhrnrxr}rrrrrrrrrrrrrrrrrrrr(r)r*rsHHHHHHHH?+)9)/) ' 1a)I+ )+9V 4* @  ) 502 C ". .8:-)`) V@ D R    ; . Z*^ASr)