§
    ¬³Ùgø,  ã                   óŠ  — d dl mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZ d dlmZmZmZmZmZmZmZmZmZ d dlmZ d dlm Z  d dl!m"Z" d dl#m$Z$m%Z% d dl&m'Z'm(Z(m)Z) d dl*m+Z+  ed	¦  «        \  Z,Z-Z.d
„ Z/d„ Z0d„ Z1d„ Z2d„ Z3d„ Z4d„ Z5d„ Z6d„ Z7d„ Z8d„ Z9d„ Z:d„ Z;d„ Z<d„ Z=d„ Z>d„ Z?d„ Z@d„ ZAd„ ZBd„ ZCd„ ZDd „ ZEd!„ ZFd"„ ZGd#S )$é    )ÚSÚpiÚooÚsymbolsÚRationalÚIntegerÚGoldenRatioÚ
EulerGammaÚCatalanÚLambdaÚDummyÚEqÚNeÚLeÚLtÚGtÚGeÚMod)	Ú	PiecewiseÚsinÚcosÚAbsÚexpÚceilingÚsqrtÚsignÚfloor)ÚITE)Úraises)Úimplemented_function)ÚIndexedBaseÚIdx)ÚMatrixSymbolÚSparseMatrixÚMatrix©Ú	rust_codezx,y,zc                  óŽ   — t          t          d¦  «        ¦  «        dk    sJ ‚t          t          d¦  «        ¦  «        dk    sJ ‚d S )Né*   Ú42iÈÿÿÿz-56)r'   r   © ó    úT/granary/edev/quantum/lib/python3.11/site-packages/sympy/printing/tests/test_rust.pyÚtest_Integerr.      sF   € Ý•W˜R‘[”[Ñ!Ô! TÒ)Ð)Ð)Ð)Ý•W˜S‘\”\Ñ"Ô" eÒ+Ð+Ð+Ð+Ð+Ð+r,   c                  ó"  — t          t          t          t          ¦  «        ¦  «        dk    sJ ‚t          t	          t          t          ¦  «        ¦  «        dk    sJ ‚t          t          t          t          ¦  «        ¦  «        dk    sJ ‚t          t          t          t          ¦  «        ¦  «        dk    sJ ‚t          t          t          t          ¦  «        ¦  «        dk    sJ ‚t          t          t          t          ¦  «        ¦  «        dk    sJ ‚d S )Nzx == yzx != yzx <= yzx < yzx > yzx >= y)	r'   r   ÚxÚyr   r   r   r   r   r+   r,   r-   Útest_Relationalr2      sÎ   € Ý•R��1‘X”XÑÔ (Ò*Ð*Ð*Ð*Ý•R��1‘X”XÑÔ (Ò*Ð*Ð*Ð*Ý•R��1‘X”XÑÔ (Ò*Ð*Ð*Ð*Ý•R��1‘X”XÑÔ 'Ò)Ð)Ð)Ð)Ý•R��1‘X”XÑÔ 'Ò)Ð)Ð)Ð)Ý•R��1‘X”XÑÔ (Ò*Ð*Ð*Ð*Ð*Ð*r,   c                  óÊ  — t          t          dd¦  «        ¦  «        dk    sJ ‚t          t          dd¦  «        ¦  «        dk    sJ ‚t          t          dd¦  «        ¦  «        dk    sJ ‚t          t          d	d¦  «        ¦  «        dk    sJ ‚t          t          t          dd¦  «        z   ¦  «        d
k    sJ ‚t          t          dd¦  «        t          z  ¦  «        dk    sJ ‚d S )Né   é   z	3_f64/7.0é   é	   Ú2iùÿÿÿz
-3_f64/7.0éýÿÿÿzx + 3_f64/7.0z(3_f64/7.0)*x)r'   r   r0   r+   r,   r-   Útest_Rationalr:      sÚ   € Ý•X˜a ‘^”^Ñ$Ô$¨Ò3Ð3Ð3Ð3Ý•X˜b !‘_”_Ñ%Ô%¨Ò,Ð,Ð,Ð,Ý•X˜a ‘_”_Ñ%Ô%¨Ò5Ð5Ð5Ð5Ý•X˜b "Ñ%Ô%Ñ&Ô&¨+Ò5Ð5Ð5Ð5Ý•Q� ! Q™œÑ'Ñ(Ô(¨OÒ;Ð;Ð;Ð;Ý•X˜a ‘^”^¥AÑ%Ñ&Ô&¨/Ò9Ð9Ð9Ð9Ð9Ð9r,   c                  óL  — t          t          t          z   ¦  «        dk    sJ ‚t          t          t          z
  ¦  «        dk    sJ ‚t          t          t          z  ¦  «        dk    sJ ‚t          t          t          z  ¦  «        dk    sJ ‚t          t           ¦  «        dk    sJ ‚d S )Nzx + yzx - yzx*yzx/yz-x)r'   r0   r1   r+   r,   r-   Útest_basic_opsr<   (   s•   € Ý•Q�‘UÑÔ˜wÒ&Ð&Ð&Ð&Ý•Q�‘UÑÔ˜wÒ&Ð&Ð&Ð&Ý•Q�‘UÑÔ˜uÒ$Ð$Ð$Ð$Ý•Q�‘UÑÔ˜uÒ$Ð$Ð$Ð$Ý•a�R‰=Œ=˜DÒ Ð Ð Ð Ð Ð r,   c                  óÊ   —  G d„ dt           ¦  «        } t           | t          ¦  «        ¦  «        dk    sJ ‚t          ddd¦  «        }t          |d         ¦  «        dk    sJ ‚d S )	Nc                   ó   — e Zd Zd„ ZdS )útest_printmethod.<locals>.fabsc                 óH   — d|                      | j        d         ¦  «        z  S )Nz	%s.fabs()r   )Ú_printÚargs)ÚselfÚprinters     r-   Ú
_rust_codez)test_printmethod.<locals>.fabs._rust_code2   s   € Ø §¢°´	¸!´Ñ!=Ô!=Ñ=Ð=r,   N)Ú__name__Ú
__module__Ú__qualname__rE   r+   r,   r-   Úfabsr?   1   s#   € € € € € ð	>ð 	>ð 	>ð 	>ð 	>r,   rI   zx.fabs()Úaé   r4   )r   r   za[0])r   r'   r0   r#   )rI   rJ   s     r-   Útest_printmethodrL   0   sƒ   € ð>ð >ð >ð >ð >�sñ >ô >ð >õ �T�T�!‘W”WÑÔ Ò+Ð+Ð+Ð+Ý�S˜!˜QÑÔ€AÝ�Q�s”VÑÔ Ò&Ð&Ð&Ð&Ð&Ð&r,   c                  ó¸  — t          t          t          ¦  «        t          t          ¦  «        z  ¦  «        dk    sJ ‚t          t	          t          ¦  «        ¦  «        dk    sJ ‚t          t          t          ¦  «        ¦  «        dk    sJ ‚t          t          t          ¦  «        ¦  «        dk    sJ ‚t          t          t          d¦  «        ¦  «        dk    sJ ‚d S )Nzx.sin().powf(x.cos())zx.abs()úx.ceil()z	x.floor()r4   zx - 3*((1_f64/3.0)*x).floor())r'   r   r0   r   Úabsr   r   r   r+   r,   r-   Útest_FunctionsrP   9   s´   € Ý•S�‘V”V�s¥1™vœvÑ%Ñ&Ô&Ð*AÒAÐAÐAÐAÝ•S�‘V”VÑÔ 	Ò)Ð)Ð)Ð)Ý•W�Q‘Z”ZÑ Ô  JÒ.Ð.Ð.Ð.Ý•U�1‘X”XÑÔ +Ò-Ð-Ð-Ð-õ •S�˜A‘Y”YÑÔÐ#BÒBÐBÐBÐBÐBÐBr,   c                  óª  — t          dt          z  ¦  «        dk    sJ ‚t          t          dz  ¦  «        t          t          dz  ¦  «        cxk    rdk    sn J ‚t          t          t          ¦  «        ¦  «        dk    sJ ‚t          t          t          j        z  ¦  «        t          t          dz  ¦  «        cxk    rdk    sn J ‚t          dt          t          ¦  «        z  ¦  «        dk    sJ ‚t          t          t          j         z  ¦  «        t          t          dz  ¦  «        cxk    rdk    sn J ‚t          dt
          z  ¦  «        d	k    sJ ‚t          t
          dz  ¦  «        t          t
          dz  ¦  «        cxk    rd	k    sn J ‚t          t
          dz  ¦  «        d
k    sJ ‚t          t          t          dd¦  «        z  ¦  «        dk    sJ ‚t          dt          z  ¦  «        dk    sJ ‚t          t          t          ¦  «        ¦  «        dk    sJ ‚t          t          dz  ¦  «        dk    sJ ‚t          t          t          dz  z  ¦  «        dk    sJ ‚t          t          t          dd¦  «        z  ¦  «        dk    sJ ‚t          dt          t          dt          z  ¦  «        ¦  «        } t          d | t          ¦  «        dz  t          t          t          z  z
  z  z  t          dz  t          z   z  ¦  «        dk    sJ ‚d„ ddfd„ ddfg}t          t          dz  d|i¬¦  «        dk    sJ ‚t          t          dz  d|i¬¦  «        dk    sJ ‚d S )NrK   z	x.recip()éÿÿÿÿg      ð¿zx.sqrt()g      à?zx.sqrt().recip()g      à¿z
PI.recip()zPI.sqrt().recip()r4   zx.cbrt()é   zx.exp2()zx.exp()z	x.powi(3)zx.powf(y.powi(3))zx.powf(2_f64/3.0)Úgg      @z.(3.5*2*x).powf(-x + y.powf(x))/(x.powi(2) + y)c                 ó   — |j         S ©N©Ú
is_integer©Úbaser   s     r-   ú<lambda>ztest_Pow.<locals>.<lambda>Z   s   €  c¤n€ r,   Údpowic                 ó   — |j          S rV   rW   rY   s     r-   r[   ztest_Pow.<locals>.<lambda>[   s   € ¨#¬.Ð&8€ r,   ÚpowÚPow©Úuser_functionsz
x.dpowi(3)gš™™™™™	@z
x.pow(3.2))r'   r0   r   r   ÚHalfr   r   r   r1   r    r   )rT   Ú_cond_cfuncs     r-   Útest_Powrd   C   s6  € Ý�Q•q‘S‰>Œ>˜[Ò(Ð(Ð(Ð(Ý•Q˜‘UÑÔ�y­¨D©Ñ1Ô1Ð@Ð@Ò@Ð@°[Ò@Ð@Ð@Ð@Ð@Ð@Ý•T�!‘W”WÑÔ Ò+Ð+Ð+Ð+Ý•Q�œ‘YÑÔ¥9­Q°©VÑ#4Ô#4ÐBÐBÒBÐB¸
ÒBÐBÐBÐBÐBÐBå�Q•t�A‘w”w‘YÑÔÐ#5Ò5Ð5Ð5Ð5Ý•Q�œ˜‘ZÑ Ô ¥I­a°©gÑ$6Ô$6ÐLÐLÒLÐLÐ:LÒLÐLÐLÐLÐLÐLå�Q•r‘T‰?Œ?˜lÒ*Ð*Ð*Ð*Ý•R˜‘VÑÔ¥	­"¨d©(Ñ 3Ô 3ÐCÐCÒCÐC°|ÒCÐCÐCÐCÐCÐCÝ•R˜‘XÑÔÐ"5Ò5Ð5Ð5Ð5å•Q�  A™œÑ&Ñ'Ô'¨:Ò5Ð5Ð5Ð5Ý�Q�‘T‰?Œ?˜jÒ(Ð(Ð(Ð(Ý•S�‘V”VÑÔ 	Ò)Ð)Ð)Ð)Ý•Q˜‘T‰?Œ?˜kÒ)Ð)Ð)Ð)Ý•Q�˜A™‘YÑÔÐ#6Ò6Ð6Ð6Ð6Ý•Q�  A™œÑ&Ñ'Ô'Ð+>Ò>Ð>Ð>Ð>å˜S¥&­¨A­a©C¡.¤.Ñ1Ô1€AÝ�Q˜˜�!™œ˜S™¥A­­1©¡HÑ-Ñ-­q°!©tµa©xÑ8Ñ9Ô9Ø8ò9ð 9ð 9ð 9à4Ð4°g¸qÐAØ8Ð8¸%ÀÐCðE€Kå•Q˜‘T¨5°+Ð*>Ð?Ñ?Ô?À<ÒOÐOÐOÐOÝ•Q˜‘V¨U°KÐ,@ÐAÑAÔAÀ\ÒQÐQÐQÐQÐQÐQr,   c                  óà  — t          t          ¦  «        dk    sJ ‚t          t          ¦  «        dk    sJ ‚t          t          j        ¦  «        dk    sJ ‚t          t           ¦  «        dk    sJ ‚t          t          j        ¦  «        dk    sJ ‚t          t          j        ¦  «        dk    sJ ‚t          t          d¦  «        ¦  «        dk    sJ ‚t          t          j        ¦  «        dk    sJ ‚d S )NÚPIÚINFINITYÚNEG_INFINITYÚNANrK   ÚE)	r'   r   r   r   ÚInfinityÚNegativeInfinityÚNaNr   ÚExp1r+   r,   r-   Útest_constantsro   `   sÛ   € Ý•R‰=Œ=˜DÒ Ð Ð Ð Ý•R‰=Œ=˜JÒ&Ð&Ð&Ð&Ý•Q”ZÑ Ô  JÒ.Ð.Ð.Ð.Ý•b�S‰>Œ>˜^Ò+Ð+Ð+Ð+Ý•QÔ'Ñ(Ô(¨NÒ:Ð:Ð:Ð:Ý•Q”UÑÔ˜uÒ$Ð$Ð$Ð$Ý•S˜‘V”VÑÔ Ò#Ð#Ð#Ð#Ý•Q”VÑÔ Ò#Ð#Ð#Ð#Ð#Ð#r,   c                  ó2  — t          dt          z  ¦  «        dt          j        d¦  «        z  k    sJ ‚t          dt          z  ¦  «        dt          j        d¦  «        z  k    sJ ‚t          dt          z  ¦  «        dt	          j        d¦  «        z  k    sJ ‚d S )NrS   z*const GoldenRatio: f64 = %s;
2*GoldenRatioé   z"const Catalan: f64 = %s;
2*Catalanz(const EulerGamma: f64 = %s;
2*EulerGamma)r'   r	   Úevalfr   r
   r+   r,   r-   Útest_constants_otherrs   k   s§   € Ý�Q•{‘]Ñ#Ô#Ð'TÕWbÔWhÐikÑWlÔWlÑ'lÒlÐlÐlÐlÝØ�g‰Iñô Ø?Å'Ä-ÐPRÑBSÔBSÑSòTð Tð Tð Tå�Q•z‘\Ñ"Ô"Ð&QÕT^ÔTdÐegÑThÔThÑ&hÒhÐhÐhÐhÐhÐhr,   c                  óä  — t          d¦  «        dk    sJ ‚t          t          j        ¦  «        dk    sJ ‚t          d¦  «        dk    sJ ‚t          t          j        ¦  «        dk    sJ ‚t          t          t
          z  ¦  «        dk    sJ ‚t          t          t
          z  ¦  «        dk    sJ ‚t          t           ¦  «        dk    sJ ‚t          t          t
          z  t          z  ¦  «        dk    sJ ‚t          t          t
          z  t          z  ¦  «        d	k    sJ ‚t          t          t
          z  t          z  ¦  «        d
k    sJ ‚t          t          t
          z  t          z  ¦  «        dk    sJ ‚d S )NTÚtrueFÚfalsezx && yzx || yz!xzx && y && zzx || y || zzz || x && yzz && (x || y))r'   r   ru   rv   r0   r1   Úzr+   r,   r-   Útest_booleanrx   r   sE  € Ý�T‰?Œ?˜fÒ$Ð$Ð$Ð$Ý•Q”VÑÔ Ò&Ð&Ð&Ð&Ý�UÑÔ˜wÒ&Ð&Ð&Ð&Ý•Q”WÑÔ Ò(Ð(Ð(Ð(Ý•Q�‘UÑÔ˜xÒ'Ð'Ð'Ð'Ý•Q�‘UÑÔ˜xÒ'Ð'Ð'Ð'Ý•a�R‰=Œ=˜DÒ Ð Ð Ð Ý•Q�‘U�Q‘YÑÔ =Ò0Ð0Ð0Ð0Ý•Q�‘U�Q‘YÑÔ =Ò0Ð0Ð0Ð0Ý•a�!‘e�q‘[Ñ!Ô! ]Ò2Ð2Ð2Ð2Ý•a�!‘e�q‘[Ñ!Ô! _Ò4Ð4Ð4Ð4Ð4Ð4r,   c                  ó$  ‡ — t          t          t          dk     ft          dz   df¦  «        Š t          ‰ ¦  «        dk    sJ ‚t          ‰ d¬¦  «        dk    sJ ‚t          ‰ dd¬¦  «        d	k    sJ ‚t          t          t          dk     ft          dz   t          d
k     ft          dz   df¦  «        Š t          ‰ d¬¦  «        dk    sJ ‚t          ‰ dd¬¦  «        dk    sJ ‚t          ‰ d¬¦  «        dk    sJ ‚dt          t          t          dk     ft          dz   t          d
k     ft          dz   df¦  «        z  Š t          ‰ d¬¦  «        dk    sJ ‚dt          t          t          dk     ft          dz   t          d
k     ft          dz   df¦  «        z  dz
  Š t          ‰ d¬¦  «        dk    sJ ‚t          t          t          dk     ft          dz  t          dk    ft          t          ¦  «        t          dk    f¦  «        Š t	          t
          ˆ fd„¦  «         d S )NrK   rS   Tz'if (x < 1) {
    x
} else {
    x + 2
}Úr©Ú	assign_toz,r = if (x < 1) {
    x
} else {
    x + 2
};)r|   Úinlinez$r = if (x < 1) { x } else { x + 2 };é   )r}   z9if (x < 1) { x } else if (x < 5) { x + 1 } else { x + 2 }z>r = if (x < 1) { x } else if (x < 5) { x + 1 } else { x + 2 };zJr = if (x < 1) {
    x
} else if (x < 5) {
    x + 1
} else {
    x + 2
};z;2*if (x < 1) { x } else if (x < 5) { x + 1 } else { x + 2 }r)   z@2*if (x < 1) { x } else if (x < 5) { x + 1 } else { x + 2 } - 42r   c                  ó"   •— t          ‰ ¦  «        S rV   r&   ©Úexprs   €r-   r[   z test_Piecewise.<locals>.<lambda>¥   s   ø€ �y¨™œ€ r,   )r   r0   r'   r   r   Ú
ValueErrorr€   s   @r-   Útest_Piecewiserƒ   €   s^  ø€ Ý•a�˜Qš�Z¥! a¡%¨ Ñ/Ô/€DÝ�T‰?Œ?ðòð ð ð õ �T SÐ)Ñ)Ô)ð	òð ð ð õ �T S°Ð6Ñ6Ô6Ø.ò0ð 0ð 0ð 0å•a�˜Qš�Z¥! a¡%­¨Qª µ!°a±%¸°Ñ?Ô?€DÝ�T $Ð'Ñ'Ô'ØCòEð Eð Eð Eå�T S°Ð6Ñ6Ô6ØHòJð Jð Jð Jå�T SÐ)Ñ)Ô)ð	òð ð ð ð �Y��1˜qš5�z¥A¨¡E­1¨qª5 >µA¸±E¸4°=ÑAÔAÑA€DÝ�T $Ð'Ñ'Ô'ØEòGð Gð Gð Gà�Y��1˜qš5�z¥A¨¡E­1¨qª5 >µA¸±E¸4°=ÑAÔAÑAÀBÑF€DÝ�T $Ð'Ñ'Ô'ØJòLð Lð Lð Lõ •a�˜Qš�Z¥! Q¡$­¨Aª µµQ±´½¸Qº°Ñ@Ô@€DÝ
�:Ð.Ð.Ð.Ð.Ñ/Ô/Ð/Ð/Ð/r,   c                  ó˜   — t           t          z   t          t          ¦  «        z   t          z   } t	          | t          g¬¦  «        dk    sJ ‚d S )N©Údereferencezx + y + (*z) + (*z).sin())r0   r1   r   rw   r'   r€   s    r-   Útest_dereference_printingr‡   ¨   sA   € Ý�q‰5•3•q‘6”6‰>�AÑ€DÝ�T­ sÐ+Ñ+Ô+Ð/JÒJÐJÐJÐJÐJÐJr,   c                  ó˜  — t          t          ¦  «        t          z  } t          | ¦  «        dk    sJ ‚t          | d¬¦  «        dk    sJ ‚t          t          t          z   ¦  «        dz   } t          | ¦  «        dk    sJ ‚t          | d¬¦  «        dk    sJ ‚t          t	          t          ¦  «        ¦  «        } t          | ¦  «        dk    sJ ‚d S )	Nzy*x.signum()rz   r{   zr = y*x.signum();r)   z(x + y).signum() + 42zr = (x + y).signum() + 42;zx.cos().signum())r   r0   r1   r'   r   r€   s    r-   Ú	test_signr‰   ­   sÁ   € Ý•‰7Œ7•Q‰;€DÝ�T‰?Œ?˜nÒ,Ð,Ð,Ð,Ý�T SÐ)Ñ)Ô)Ð-@Ò@Ð@Ð@Ð@å••A‘‰;Œ;˜Ñ€DÝ�T‰?Œ?Ð5Ò5Ð5Ð5Ð5Ý�T SÐ)Ñ)Ô)Ð-IÒIÐIÐIÐIå••A‘”‰<Œ<€DÝ�T‰?Œ?Ð0Ò0Ð0Ð0Ð0Ð0Ð0r,   c                  óL  — t          d¦  «        \  } }t          |¦  «        }t          |¦  «        dk    sJ ‚t          ||g¬¦  «        dk    sJ ‚t          |d¬¦  «        dk    sJ ‚t          t          ¦  «        5  t          |d¬	¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nzx ifz	if_.sin()r…   z(*if_).sin()Ú_unreserved)Úreserved_word_suffixzif_unreserved.sin()T)Úerror_on_reserved)r   r   r'   r   r‚   )r0   r1   r�   s      r-   Útest_reserved_wordsrŽ   º   s÷   € å�6‰?Œ?�D€A€qåˆq‰6Œ6€DÝ�T‰?Œ?˜kÒ)Ð)Ð)Ð)Ý�T¨ sÐ+Ñ+Ô+¨~Ò=Ð=Ð=Ð=Ý�T°Ð>Ñ>Ô>ÐBWÒWÐWÐWÐWå	•
Ñ	Ô	ð 0ð 0Ý�$¨$Ð/Ñ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð 0ð 0s   Á:BÂBÂ Bc                  óx   — t          t          dk     t          t          ¦  «        } t	          | ¦  «        dk    sJ ‚d S )NrK   z#if (x < 1) {
    y
} else {
    z
})r   r0   r1   rw   r'   r€   s    r-   Útest_ITEr�   Ç   sC   € Ý�q�1Šu•a�ÑÔ€DÝ�T‰?Œ?ðòð ð ð ð ð r,   c                  ó–  — t          dd¬¦  «        \  } }}t          d| ¦  «        t          d|¦  «        t          d|¦  «        }}}t          d¦  «        |         }t          |¦  «        dk    sJ ‚t          d	¦  «        ||f         }t          |¦  «        d
k    sJ ‚t          d¦  «        |||f         }t          |¦  «        dk    sJ ‚d S )Nzn m oT©ÚintegerÚiÚjÚkr0   zx[j]ÚAz
A[m*i + j]ÚBzB[m*o*i + o*j + k])r   r"   r!   r'   )	ÚnÚmÚor”   r•   r–   r0   r—   r˜   s	            r-   Útest_Indexedrœ   Ñ   sË   € Ý�g tÐ,Ñ,Ô,�G€A€qˆ!Ý�#�q‰kŒk�3˜s A™;œ;­¨C°©¬ˆ!€q€Aå�CÑÔ˜Ô€AÝ�Q‰<Œ<˜6Ò!Ð!Ð!Ð!å�CÑÔ˜˜A˜Ô€AÝ�Q‰<Œ<˜<Ò'Ð'Ð'Ð'å�CÑÔ˜˜A˜q˜Ô!€AÝ�Q‰<Œ<Ð/Ò/Ð/Ð/Ð/Ð/Ð/r,   c                  óÜ   — t          ddt          ¬¦  «        \  } }t          d¦  «        }t          d¦  «        }t          | |¦  «        } t	          ||          ||          ¬¦  «        dk    sJ ‚d S )Nzi mT)r“   Úclsr0   r1   r{   z"for i in 0..m {
    y[i] = x[i];
})r   r   r!   r"   r'   )r”   rš   r0   r1   s       r-   Útest_dummy_loopsrŸ   ß   s|   € Ý�5 $­EÐ2Ñ2Ô2�D€A€qÝ�CÑÔ€AÝ�CÑÔ€AÝˆAˆq‰	Œ	€Aå�Q�q”T Q q¤TÐ*Ñ*Ô*ð	òð ð ð ð ð r,   c                  óÂ  — t          dd¬¦  «        \  } }t          d¦  «        }t          d¦  «        }t          d¦  «        }t          d¦  «        }t          d| ¦  «        }t          d	|¦  «        }t          |||f         ||         z  ||         ¬
¦  «        dk    sJ ‚t          |||f         ||         z  ||         z   ||         z   ||         ¬
¦  «        dk    sJ ‚d S )Nzm nTr’   r—   r0   r1   rw   r”   r•   r{   zrfor i in 0..m {
    y[i] = 0;
}
for i in 0..m {
    for j in 0..n {
        y[i] = A[n*i + j]*x[j] + y[i];
    }
}z|for i in 0..m {
    y[i] = x[i] + z[i];
}
for i in 0..m {
    for j in 0..n {
        y[i] = A[n*i + j]*x[j] + y[i];
    }
}©r   r!   r"   r'   )rš   r™   r—   r0   r1   rw   r”   r•   s           r-   Ú
test_loopsr¢   ë   sþ   € Ý�5 $Ð'Ñ'Ô'�D€A€qÝ�CÑÔ€AÝ�CÑÔ€AÝ�CÑÔ€AÝ�CÑÔ€AÝˆC�‰Œ€AÝˆC�‰Œ€Aå�Q�q˜!�t”W˜Q˜qœT‘\¨Q¨q¬TÐ2Ñ2Ô2ð	òð ð ð õ �Q�q˜!�t”W˜Q˜qœT‘\ A a¤DÑ(¨1¨Q¬4Ñ/¸1¸Q¼4Ð@Ñ@Ô@ð	òð ð ð ð ð r,   c                  óÚ  — t          dd¬¦  «        \  } }}}t          d¦  «        }t          d¦  «        }t          d¦  «        }t          d|¦  «        }t          d| ¦  «        }t          d	|¦  «        }	t          d
|¦  «        }
t          |||	|
f         ||||	|
f         z  ||         ¬¦  «        d|| z  |z  |z  ||z  |z  z   |	|z  z   |
z   ›d||z  |z  |	|z  z   |
z   ›d�dz   k    sJ ‚d S )Nzn m o pTr’   rJ   Úbr1   r”   r•   r–   Úlr{   z‘for i in 0..m {
    y[i] = 0;
}
for i in 0..m {
    for j in 0..n {
        for k in 0..o {
            for l in 0..p {
                y[i] = a[z]*b[ú
] + y[i];
ú            }
        }
    }
}r¡   )r™   rš   r›   ÚprJ   r¤   r1   r”   r•   r–   r¥   s              r-   Ú test_loops_multiple_contractionsr©   	  s0  € Ý˜¨DÐ1Ñ1Ô1�J€A€qˆ!ˆQÝ�CÑÔ€AÝ�CÑÔ€AÝ�CÑÔ€AÝˆC�‰Œ€AÝˆC�‰Œ€AÝˆC�‰Œ€AÝˆC�‰Œ€Aå�Q�q˜!˜Q�w”Z  ! Q¨¨1 *¤Ñ-¸¸1¼Ð>Ñ>Ô>Ð>ð ;<¸A¹#¸a¹%À¹'ÀAÀaÁCÈÁE¹/ÈAÈaÉCÑ:OÐRSÑ:SÐ:SÐ:SÐUVÐWXÑUXÐYZÑUZÐ]^Ð_`Ñ]`ÑU`ÐcdÑUdÐUdÐUdð	fð	ñ	òð ð ð ð ð r,   c            	      óR  — t          dd¬¦  «        \  } }}}t          d¦  «        }t          d¦  «        }t          d¦  «        }t          d¦  «        }t          d| ¦  «        }t          d	|¦  «        }	t          d
|¦  «        }
t          d|¦  «        }t          |||	|
|f         |||	|
|f         z   ||	|
|f         z  ||         ¬¦  «        }|d||z  |z  |z  |	|z  |z  z   |
|z  z   |z   ›d||z  |z  |z  |	|z  |z  z   |
|z  z   |z   ›d|	|z  |z  |
|z  z   |z   ›d�dz   k    sJ ‚d S )Nzm n o pTr’   rJ   r¤   Úcr1   r”   r•   r–   r¥   r{   z’for i in 0..m {
    y[i] = 0;
}
for i in 0..m {
    for j in 0..n {
        for k in 0..o {
            for l in 0..p {
                y[i] = (a[z] + b[z])*c[r¦   r§   r¡   )rš   r™   r›   r¨   rJ   r¤   r«   r1   r”   r•   r–   r¥   Úcodes                r-   Útest_loops_addfactorr­   "  s¸  € Ý˜¨DÐ1Ñ1Ô1�J€A€qˆ!ˆQÝ�CÑÔ€AÝ�CÑÔ€AÝ�CÑÔ€AÝ�CÑÔ€AÝˆC�‰Œ€AÝˆC�‰Œ€AÝˆC�‰Œ€AÝˆC�‰Œ€Aå�a˜˜1˜a ˜
”m a¨¨1¨a°¨
¤mÑ3°Q°q¸!¸Q°w´ZÑ?È1ÈQÌ4ÐPÑPÔP€DØˆ4ð EFÀaÁCÈÁEÈ!ÁGÈaÐPQÉcÐRSÉeÁOÐVWÐXYÑVYÑDYÐ\]ÑD]ÐD]ÐD]Ð_`ÐabÑ_bÐcdÑ_dÐefÑ_fÐijÐklÑilÐmnÑinÑ_nÐqrÐstÑqtÑ_tÐwxÑ_xÐ_xÐ_xÐz{Ð|}Ñz}Ð~Ñzð  CDð  EFñ  CFñ  {Fð  IJñ  {Jð  {Jð  {Jð	Kð	ñ	òð ð ð ð ð r,   c                  ó2   — t          t          d„ ¦  «         d S )Nc                  óH   — t          t          t          ¦  «        d¬¦  «        S )NÚgarbage)Úmethod)r'   r   r0   r+   r,   r-   r[   ztest_settings.<locals>.<lambda>>  s   € �i­­A©¬°yÐAÑAÔA€ r,   )r   Ú	TypeErrorr+   r,   r-   Útest_settingsr³   =  s   € Ý
�9ÐAÐAÑBÔBÐBÐBÐBr,   c            	      ób  — t          d¦  «        } t          dt          | d| z  ¦  «        ¦  «        }t           || ¦  «        ¦  «        dk    sJ ‚t          dt          | d| z  t          z  ¦  «        ¦  «        }t           || ¦  «        ¦  «        dt	          j        d¦  «        z  k    sJ ‚t          d¦  «        }t          dt          d	d
¬¦  «        ¦  «        }t          dt          | | d| z   z  d| z   z  ¦  «        ¦  «        }t           |||         ¦  «        ||         ¬¦  «        dk    sJ ‚d S )Nr0   rT   rS   z2*xz$const Catalan: f64 = %s;
2*x/Catalanrq   r—   r”   r™   Tr’   rK   r{   z8for i in 0..n {
    A[i] = (A[i] + 1)*(A[i] + 2)*A[i];
})r   r    r   r'   r   rr   r!   r"   )r0   rT   r—   r”   s       r-   Útest_inline_functionrµ   A  s;  € Ý�‰Œ€AÝ˜S¥&¨¨A¨a©C¡.¤.Ñ1Ô1€AÝ�Q�Q�q‘T”T‰?Œ?˜eÒ#Ð#Ð#Ð#å˜S¥&¨¨A¨a©Cµ©KÑ"8Ô"8Ñ9Ô9€AÝ�Q�Q�q‘T”T‰?Œ?Ø/µ'´-ÀÑ2CÔ2CÑCòEð Eð Eð Eõ 	�CÑÔ€AÝˆC•˜ dÐ+Ñ+Ô+Ñ,Ô,€AÝ˜S¥&¨¨A¨q°1©u©I°q¸1±uÑ,=Ñ">Ô">Ñ?Ô?€AÝ�Q�Q�q˜”t‘W”W¨¨!¬Ð-Ñ-Ô-ð	òð ð ð ð ð r,   c                  ó@  — t          dd¬¦  «        } t          dd¬¦  «        }dd„ dd	fd
„ dd	fgdœ}t          t          | ¦  «        |¬¦  «        dk    sJ ‚t          t          | ¦  «        |¬¦  «        dk    sJ ‚t          t          |¦  «        |¬¦  «        dk    sJ ‚d S )Nr0   Fr’   r™   TÚceilc                 ó   — | j          S rV   rW   ©r0   s    r-   r[   z%test_user_functions.<locals>.<lambda>X  s   € ˜qœ|Ð+€ r,   rI   é   c                 ó   — | j         S rV   rW   r¹   s    r-   r[   z%test_user_functions.<locals>.<lambda>X  s   € ÀAÄL€ r,   rO   )r   r   r`   rN   zfabs(x)zabs(n))r   r'   r   r   )r0   r™   Úcustom_functionss      r-   Útest_user_functionsr½   S  sÌ   € Ý�˜UÐ#Ñ#Ô#€AÝ�˜TÐ"Ñ"Ô"€AàØ+Ð+¨V°QÐ7Ð:PÐ:PÐRWÐYZÐ9[Ð\ðð Ðõ •W˜Q‘Z”ZÐ0@ÐAÑAÔAÀZÒOÐOÐOÐOÝ•S˜‘V”VÐ,<Ð=Ñ=Ô=ÀÒJÐJÐJÐJÝ•S˜‘V”VÐ,<Ð=Ñ=Ô=ÀÒIÐIÐIÐIÐIÐIr,   c                  óæ   — t          t          g d¢¦  «        ¦  «        dk    sJ ‚t          t          ¦  «        5  t          t          g d¢g¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N©rK   rS   r4   z	[1, 2, 3])r'   r%   r   r‚   r+   r,   r-   Útest_matrixrÀ   _  sµ   € Ý•V˜I˜I˜IÑ&Ô&Ñ'Ô'¨;Ò6Ð6Ð6Ð6Ý	•
Ñ	Ô	ð 'ð 'Ý•&˜)˜)˜)˜Ñ%Ô%Ñ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð 'ð 's   ¹ A&Á&A*Á-A*c                  óž   — t          t          ¦  «        5  t          t          g d¢g¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr¿   )r   ÚNotImplementedErrorr'   r$   r+   r,   r-   Útest_sparse_matrixrÃ   e  s‘   € å	Õ#Ñ	$Ô	$ð -ð -Ý•, 	 	 	˜{Ñ+Ô+Ñ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -s   • AÁAÁ	AN)HÚ
sympy.corer   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   Úsympy.functionsr   r   r   r   r   r   r   r   r   Úsympy.logicr   Úsympy.testing.pytestr   Úsympy.utilities.lambdifyr    Úsympy.tensorr!   r"   Úsympy.matricesr#   r$   r%   Úsympy.printing.rustr'   r0   r1   rw   r.   r2   r:   r<   rL   rP   rd   ro   rs   rx   rƒ   r‡   r‰   rŽ   r�   rœ   rŸ   r¢   r©   r­   r³   rµ   r½   rÀ   rÃ   r+   r,   r-   ú<module>rÌ      sb  ðð5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð*ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *à Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =à )Ð )Ð )Ð )Ð )Ð )à
ˆ'�'Ñ
Ô
�€€1€að,ð ,ð ,ð
+ð +ð +ð:ð :ð :ð!ð !ð !ð'ð 'ð 'ðCð Cð CðRð Rð Rð:$ð $ð $ðið ið ið5ð 5ð 5ð%0ð %0ð %0ðPKð Kð Kð

1ð 
1ð 
1ð
0ð 
0ð 
0ðð ð ð0ð 0ð 0ð	ð 	ð 	ðð ð ð<ð ð ð2ð ð ð6Cð Cð Cðð ð ð$	Jð 	Jð 	Jð'ð 'ð 'ð-ð -ð -ð -ð -r,   