§
    PŠtj¬c  ã                   ó
  — d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d d	l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 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& d dl'm(Z(m)Z)m*Z*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5m6Z6 d dlm7Z7 d dl8m9Z9m:Z: d dl;m<Z< d dl=m>Z>m?Z? d dl@mAZA d dlBmCZCmDZD d d lEmFZFmGZGmHZHmIZI d d!l'mJZJ  ed"¦  «        \  ZKZLZMZN ed#¦  «        \  ZOZPZQZRZSZTZUZVZWZXZYZZZ[d$„ Z\d%„ Z]d&„ Z^d'„ Z_d(„ Z`d)„ Zad*„ Zbd+„ Zcd,„ Zdd-„ Zed.„ ZfeCd/„ ¦   «         Zgd0„ ZheCd1„ ¦   «         ZieCd2„ ¦   «         ZjeCd3„ ¦   «         Zkd4„ Zld5„ Zmd6„ Znd7„ Zod8„ Zpd9„ Zqd:„ Zrd;„ Zsd<„ Ztd=„ Zud>„ Zvd?„ Zwd@„ ZxdA„ ZydB„ ZzdC„ Z{dD„ Z|dE„ Z}dF„ Z~dG„ ZdH„ Z€eCdI„ ¦   «         Z�dJ„ Z‚dK„ ZƒdL„ Z„dM„ Z…dN„ Z†dO„ Z‡dP„ ZˆdQ„ Z‰dR„ ZŠdS„ Z‹dT„ ZŒdU„ Z�dV„ ZŽdW„ Z�dX„ Z�dY„ Z‘dZ„ Z’eCd[„ ¦   «         Z“d\„ Z”eCd]„ ¦   «         Z•d^„ Z–eCd_„ ¦   «         Z—d`„ Z˜da„ Z™db„ ZšdS )cé    )ÚreduceN)Úadd)ÚMatrixSolve)ÚAdd)ÚTuple)ÚUnevaluatedExpr)ÚFunction)ÚMul)ÚPow)ÚEq)ÚS)ÚSymbolÚsymbols)Úsympify)Úexp)Úsqrt)Ú	Piecewise)ÚcosÚsin)ÚMatrix)ÚInverseÚMatAddÚMatMulÚ	Transpose)ÚCRootOf)ÚO©Úcse)Úsignsimp)ÚIdxÚIndexedBase©Ú	count_ops)Úsub_preÚsub_post)Úmeijerg)Úcse_mainÚcse_opts)Úsubsets)ÚXFAILÚraises)ÚMutableDenseMatrixÚMutableSparseMatrixÚImmutableDenseMatrixÚImmutableSparseMatrix)ÚMatrixSymbolzw,x,y,zzx:13c                  ó  — t          j        d¬¦  «        } t          t          j        | dd¦  «        ¦  «        d„ t          dd¦  «        D ¦   «         k    sJ ‚t          j        d¬¦  «        } t          t          j        | dd¦  «        ¦  «        d„ t          dd¦  «        D ¦   «         k    sJ ‚t          j        ¦   «         } t          t          j        | dd¦  «        ¦  «        d„ t          dd¦  «        D ¦   «         k    sJ ‚d S )	NÚy)Úprefixr   é
   c                 ó2   — g | ]}t          d |z  ¦  «        ‘ŒS ©zy%s©r   ©Ú.0Úis     ú[/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/simplify/tests/test_cse.pyú
<listcomp>z)test_numbered_symbols.<locals>.<listcomp>.   ó$   € Ð@Ð@Ð@¨a�˜u q™yÑ)Ô)Ð@Ð@Ð@ó    é   c                 ó2   — g | ]}t          d |z  ¦  «        ‘ŒS r6   r7   r8   s     r;   r<   z)test_numbered_symbols.<locals>.<listcomp>1   s$   € ÐBÐBÐB¨q� ¨¡	Ñ*Ô*ÐBÐBÐBr>   c                 ó2   — g | ]}t          d |z  ¦  «        ‘ŒS )zx%sr7   r8   s     r;   r<   z)test_numbered_symbols.<locals>.<listcomp>4   r=   r>   )r'   Únumbered_symbolsÚlistÚ	itertoolsÚisliceÚrange)Únss    r;   Útest_numbered_symbolsrH   +   s>  € Ý	Ô	"¨#Ð	.Ñ	.Ô	.€BÝ•	Ô Ø
ˆAˆrñô ñ ô Ø@Ð@µ5¸¸B±<´<Ð@Ñ@Ô@òAð Að Að Aå	Ô	"¨#Ð	.Ñ	.Ô	.€BÝ•	Ô Ø
ˆB�ñô ñ ô ØBÐBµE¸"¸b±M´MÐBÑBÔBòCð Cð Cð Cå	Ô	"Ñ	$Ô	$€BÝ•	Ô Ø
ˆAˆrñô ñ ô Ø@Ð@µ5¸¸B±<´<Ð@Ñ@Ô@òAð Að Að Að Að Ar>   c                 ó   — | t           z   S ©N)r2   ©Úexprs    r;   Úopt1rM   9   s   € Ø•!‰8€Or>   c                 ó   — | t           z  S rJ   )ÚzrK   s    r;   Úopt2rP   =   s   € Ø•‰6€Mr>   c                  ó  — t          j        t          t          d fg¦  «        t          t          z   k    sJ ‚t          j        t          d t          fg¦  «        t          k    sJ ‚t          j        t          dg¦  «        t          k    sJ ‚t          j        t          t          t
          fg¦  «        t          t          z   k    sJ ‚t          j        t          t          d ft
          d fg¦  «        t          t          z   t          z  k    sJ ‚d S ©N)NN)r'   Úpreprocess_for_cseÚxrM   r2   rP   rO   © r>   r;   Útest_preprocess_for_cserV   A   sá   € ÝÔ&¥q­D°$¨<¨.Ñ9Ô9½QÅ¹UÒBÐBÐBÐBÝÔ&¥q¨Dµ$¨<¨.Ñ9Ô9½QÒ>Ð>Ð>Ð>ÝÔ&¥q¨<¨.Ñ9Ô9½QÒ>Ð>Ð>Ð>ÝÔ&¥q­Dµ$¨<¨.Ñ9Ô9½QÅ¹UÒBÐBÐBÐBÝÔ&Ý	�T�4ˆL�4 ˜,Ð'ñ)ô )Ý-.µ©UµA©Iò6ð 6ð 6ð 6ð 6ð 6r>   c                  ó  — t          j        t          t          d fg¦  «        t          k    sJ ‚t          j        t          d t          fg¦  «        t          t          z   k    sJ ‚t          j        t          dg¦  «        t          k    sJ ‚t          j        t          t          t
          fg¦  «        t          t          z  k    sJ ‚t          j        t          d t          fd t
          fg¦  «        t          t          z  t          z   k    sJ ‚d S rR   )r'   Úpostprocess_for_cserT   rM   r2   rP   rO   rU   r>   r;   Útest_postprocess_for_cserY   J   sá   € ÝÔ'­­T°4¨L¨>Ñ:Ô:½aÒ?Ð?Ð?Ð?ÝÔ'­¨Tµ4¨L¨>Ñ:Ô:½aÅ!¹eÒCÐCÐCÐCÝÔ'­¨L¨>Ñ:Ô:½aÒ?Ð?Ð?Ð?ÝÔ'­­Tµ4¨L¨>Ñ:Ô:½aÅ¹cÒAÐAÐAÐAåÔ'Ý	ˆT•4ˆL˜4¥˜,Ð'ñ)ô )Ý,-­a©Cµ!©Gò4ð 4ð 4ð 4ð 4ð 4r>   c                  óü  — t          t          t          t          z   d¦  «        t	          t          t          z   ¦  «        ¦  «        } t          | g¦  «        \  }}|t          t          t          z   fgk    sJ ‚|t	          t          ¦  «        t          dz  z   gk    sJ ‚t          dg¦  «        \  }\  }t          |¦  «        dk    r|dk    sJ ‚t          dg¦  «        \  }\  }t          |¦  «        dk    r|dk    sJ ‚d S )Né   é*   r   ç      à?)r   r   rT   r2   r   r   Úx0Úlen©ÚeÚsubstsÚreducedÚsubst42Úred42Ú
subst_halfÚred_halfs          r;   Útest_cse_singlerh   T   sÞ   € å�C••A‘�q‰MŒM�4¥¥A¡™;œ;Ñ'Ô'€AÝ˜1˜#‘h”h�O€FˆGØ•r�1�q™5�k�]Ò"Ð"Ð"Ð"Ø•t�B‘x”x¥" a¡%Ñ'Ð(Ò(Ð(Ð(Ð(å˜R˜D™	œ	Ñ€G‰XˆeÝˆw‰<Œ<˜1ÒÐ ¨"¢  Ð,Ý! 3 %™jœjÑ€J‘�Ýˆz‰?Œ?˜aÒÐ H°¢O O OÐ3 O Or>   c                  ór  — t          t          t          t          z   d¦  «        t	          t          t          z   ¦  «        ¦  «        } t          | ¦  «        \  }}|t          t          t          z   fgk    sJ ‚|t	          t          ¦  «        t          dz  z   gk    sJ ‚t          t          dgg¦  «        ¦  «        \  }}t          |d         t          ¦  «        sJ ‚t          d¦  «        \  }\  }t          |¦  «        dk    r|dk    sJ ‚t          d¦  «        \  }\  }t          |¦  «        dk    r|dk    sJ ‚d S )Nr[   é   r   r\   r]   )
r   r   rT   r2   r   r   r^   r   Ú
isinstancer_   r`   s          r;   Útest_cse_single2rl   a   s  € å�C••A‘�q‰MŒM�4¥¥A¡™;œ;Ñ'Ô'€AÝ˜!‘f”f�O€FˆGØ•r�1�q™5�k�]Ò"Ð"Ð"Ð"Ø•t�B‘x”x¥" a¡%Ñ'Ð(Ò(Ð(Ð(Ð(Ý�& 1 # ™-œ-Ñ(Ô(�O€FˆGÝ�g˜a”j¥&Ñ)Ô)Ð)Ð)Ð)å˜B™œÑ€G‰XˆeÝˆw‰<Œ<˜1ÒÐ ¨"¢  Ð,Ý! #™hœhÑ€J‘�Ýˆz‰?Œ?˜aÒÐ H°¢O O OÐ3 O Or>   c                  óJ  — t          t          t          ¦  «        } t          | g¦  «        \  }}|g k    sJ ‚|t          t          z   gk    sJ ‚t	          dt          dfdg t          ¦  «        t	          dt          dfdg t          ¦  «        z   }t          |¦  «        g |gfk    sJ ‚d S )N)rj   r[   é   )é   )rj   é   )r   rT   r2   r   r&   )ra   rb   rc   Úeqs       r;   Útest_cse_not_possiblerr   p   sœ   € å�A�q‰	Œ	€AÝ˜1˜#‘h”h�O€FˆGØ�RŠ<ˆ<ˆ<ˆ<Ø•q�1‘u�gÒÐÐÐå
�&�1˜a˜& $¨­AÑ
.Ô
.Ý
�&�1˜a˜& $¨­AÑ
.Ô
.ñ/€Båˆr‰7Œ7�r˜B˜4�jÒ Ð Ð Ð Ð Ð r>   c                  ól  — t          t          t          t          z  t          z   d¦  «        t          t          t          z  t          z   ¦  «        ¦  «        } t          | g¦  «        \  }}|t          t          t          z  t          z   fgk    sJ ‚|t          t          ¦  «        t          dz  z   gk    sJ ‚d S ©Nr[   )r   r   ÚwrT   r2   r   r   r^   )ra   rb   rc   s      r;   Útest_nested_substitutionrv   |   sˆ   € å�C••!‘•a‘˜‰OŒO�T¥!¥A¡#­¡'™]œ]Ñ+Ô+€AÝ˜1˜#‘h”h�O€FˆGØ•r�1�Q™3¥™7�m�_Ò$Ð$Ð$Ð$Ø•t�B‘x”x¥" a¡%Ñ'Ð(Ò(Ð(Ð(Ð(Ð(Ð(r>   c                  óL  — t           t          z
  t          t          z
  z  t          t           t          z
  t          t          z
  z  ¦  «        z   } t	          | gt
          j        t
          j        fg¬¦  «        \  }}|t          t           t          z
  t          t          z
  z  fgk    sJ ‚|t           t          t           ¦  «        z   gk    sJ ‚t           t          z
   t          t          z
  z  t          t           t          z
   t          t          z
  z  ¦  «        z   } t	          | gt
          j        t
          j        fg¬¦  «        \  }}|t          t           t          z
  t          t          z
  z  fgk    sJ ‚|t          t          t          ¦  «        z   gk    sJ ‚ddt           z  z   }|t           z  | dz  z  d|z  t           z  z
  } t	          | t
          j        t
          j        fg¬¦  «        g dgfk    sJ ‚t	          t          t           z   t          z   t          z   t          t          z
  t          z
  z  t          t           z   dz  z  ¦  «        t          t          t           z   ft          t          t          z   fgt          t          z
  t          t          z   z  t          dz  z  gfk    sJ ‚d S )N©Úoptimizationséÿÿÿÿrj   r[   r   rp   )rT   r2   rO   r   r   r(   r$   r%   r^   ru   Úx1)ra   rb   rc   Úns       r;   Útest_subtraction_optr}   „   s8  € å	
�Q‰••Q‘‰�#�q¥1™u¥q­1¡u™oÑ.Ô.Ñ.€AÝØ	
ˆ�XÔ-­xÔ/@ÐAÐBðDñ Dô D�O€FˆGà•r�A¥™E¥A­¡E™?Ð+Ð,Ò,Ð,Ð,Ð,Ø��s�S¥" ™XœX‘~Ð&Ò&Ð&Ð&Ð&Ý
�a‰%ˆ•!•a‘%Ñ�3¥¥Q¡˜x­­Q©Ñ/Ñ0Ô0Ñ0€AÝØ	
ˆ�XÔ-­xÔ/@ÐAÐBðDñ Dô D�O€FˆGà•r�A¥™E¥A­¡E™?Ð+Ð,Ò,Ð,Ð,Ð,Ø•r�C¥™GœG‘|�nÒ$Ð$Ð$Ð$à
ˆQ�q‰S‰€AØ	�!‰ˆaˆR�!‰G‰�a˜‘c�!‘eÑ€AÝˆq¥(Ô"2µHÔ4EÐ!FÐ GÐHÑHÔHØ	ˆaˆSˆ	òð ð ð å••Q‘�‘�Q‘¥¥Q¡­¡Ñ+­aµ!©e°a©ZÑ7Ñ8Ô8Ý�q•1‰uˆ+��A¥™E�{Ð	#¥q­2¡vµµR±Ñ&8½¸Q¹Ñ&>Ð%?Ð@òAð Að Að Að Að Ar>   c                  óL	  — t           t          z   t          z  } t           t          z   t          z  }t	          | |g¦  «        \  }}|t
          t           t          z   fgk    sJ ‚|t
          t          z  t
          t          z  gk    sJ ‚t          t           z  t          z  t          z   t          t          z  g}t	          |¦  «        \  }}t	          t          |¦  «        ¦  «        \  }}||k    sJ ‚|t          t           t
          z  z   t
          gk    sJ ‚t          t           z  t          z  t          t           z  t          z  t          z   t          t          z  g}t	          |¦  «        \  }}t	          t          |¦  «        ¦  «        \  }}||k    sJ ‚|t          t          t          z   t
          gk    sJ ‚t           t          z
  t          t          z
  z  t           t          z
  t          t          z
  g}t	          |¦  «        \  }}t	          t          |¦  «        ¦  «        \  }}|t
          t           ft          t           t
          z   ft          t
          t          z   fgk    sJ ‚|t
          t           ft          t
          t          z   ft          t           t
          z   fgk    sJ ‚|t          t          z  t          t          gk    sJ ‚t          t          z  t          z   t           z   t          z   t          z   t          t           z  t          z  g}t	          |¦  «        t
          t          t          z  fgt          t           z   t
          z   t          z   t          z   t           t
          z  gfk    sJ ‚t	          t           t          z   t           t          z   t          z   g¦  «        t
          t           t          z   fgt
          t          t
          z   gfk    sJ ‚t	          t           t          z   t           t          z   g¦  «        g t           t          z   t           t          z   gfk    sJ ‚t	          t           t          z  t          t           t          z  z   t           t          z  t          z  dz   g¦  «        t
          t           t          z  fgt
          t          t
          z   dt
          t          z  z   gfk    sJ ‚d S )Nrp   )	rT   r2   rO   ru   r   r^   Úreversedr{   Úx2)Úe1Úe2rb   rc   ÚlÚrsubstsÚ_s          r;   Útest_multiple_expressionsr†   ™   sT  € Ý
�a‰%•‰€BÝ
�a‰%•‰€BÝ˜2˜r˜(‘m”m�O€FˆGØ•r�1�q™5�k�]Ò"Ð"Ð"Ð"Ø•r�!‘t�R¥™T�lÒ"Ð"Ð"Ð"Ý	
�1‰�Q‰•‰•A•a‘CÐ€AÝ˜!‘f”f�O€FˆGÝ•X˜a‘[”[Ñ!Ô!�J€GˆQØ�WÒÐÐÐØ•q�1�R™4‘x¥�nÒ$Ð$Ð$Ð$Ý	
�1‰�Q‰••!‘•A‘�‘	�1�Q™3Ð€AÝ˜!‘f”f�O€FˆGÝ•X˜a‘[”[Ñ!Ô!�J€GˆQØ�WÒÐÐÐØ•r�2¥™6¥2Ð&Ò&Ð&Ð&Ð&Ý
�a‰%•!•a‘%‰�!�a™%¥¥Q¡Ð'€AÝ˜!‘f”f�O€FˆGÝ•X˜a‘[”[Ñ!Ô!�J€GˆQØ•r�A˜2�h¥¥Q­¡V ­rµ2½±6¨lÐ;Ò;Ð;Ð;Ð;Ø��Q˜B�x¥"¥b­1¡f µµA½±F¨|Ð<Ò<Ð<Ð<Ð<Ø•r�"‘u�b¥"�oÒ%Ð%Ð%Ð%Ý	
�1‰�q‰•1‰•q‰�1Ñ	�a¥™c¥!™eÐ$€AÝˆq‰6Œ6��A�a™C�y�k¥A­¡E­B¡Jµ¡NµQÑ$6½½"¹Ð#=Ð>Ò>Ð>Ð>Ð>Ý••A‘•q�1‘u�q‘yÐ!Ñ"Ô"­­Qµ©U¨ }µr½1½r¹6°lÐ&CÒCÐCÐCÐCÝ••A‘•q�1‘uˆ~ÑÔ 2­­A©­qµ1©u ~Ð"6Ò6Ð6Ð6Ð6Ý••!‘•Q��1™‘W�a¥™c¥!™e a™iÐ(Ñ)Ô)Ý�q•‰sˆ)ˆ•r�1�r™6 1¥r­!¡t¡8Ð,Ð-ò.ð .ð .ð .ð .ð .r>   c                  óô   — t          dd¬¦  «        \  } }}| |z  |z  | |z  g}t          |¦  «        g |fk    sJ ‚| |z  |z  | |z  g}t          |¦  «        t          | |z  fgt          |z  t          gfk    sJ ‚d S ©NúA B CF©Úcommutative)r   r   r^   ©ÚAÚBÚCrƒ   s       r;   Útest_non_commutative_cser�   ·   s“   € å�g¨5Ð1Ñ1Ô1�G€A€qˆ!Ø	
ˆ1‰ˆQ‰��!‘ˆ€AÝˆq‰6Œ6�b˜!�WÒÐÐÐØ	
ˆ1‰ˆQ‰��!‘ˆ€AÝˆq‰6Œ6�˜A˜a™C�y�k¥B q¡D­" :Ð.Ò.Ð.Ð.Ð.Ð.Ð.r>   c                  ó  — t          dd¬¦  «        \  } }}| |z  |z  | |z  g}t          |¦  «        g |fk    sJ ‚| |z  |z  | |z  g}t          |¦  «        g |fk    sJ ‚||z  | |z  |z  g}t          |¦  «        g |fk    sJ ‚d S rˆ   ©r   r   rŒ   s       r;   Útest_bypass_non_commutativesr“   Á   s°   € Ý�g¨5Ð1Ñ1Ô1�G€A€qˆ!Ø	
ˆ1‰ˆQ‰��!‘ˆ€AÝˆq‰6Œ6�b˜!�WÒÐÐÐØ	
ˆ1‰ˆQ‰��!‘ˆ€AÝˆq‰6Œ6�b˜!�WÒÐÐÐØ	
ˆ1‰ˆa�‰c�!‰eˆ€AÝˆq‰6Œ6�b˜!�WÒÐÐÐÐÐr>   c                  ó°   — t          dd¬¦  «        \  } }}t          dd¬¦  «        }||z   | ||z   z  g}t          |¦  «        |||z   fg|| |z  gfk    sJ ‚d S )Nr‰   FrŠ   r^   r’   )r�   rŽ   r�   r^   rƒ   s        r;   Útest_non_commutative_orderr•   Ë   su   € å�g¨5Ð1Ñ1Ô1�G€A€qˆ!Ý	� 5Ð	)Ñ	)Ô	)€BØ	
ˆ1‰ˆa��1‘‰gˆ€AÝˆq‰6Œ6˜˜A˜a™C�y�k B¨¨"© :Ð.Ò.Ð.Ð.Ð.Ð.Ð.r>   c                  óü  — t          t          t          dz  z  t          t          z  z   g¦  «        t          t          t          z  fgt          t          z  t          z   gfk    sJ ‚t          t          t          z   dt          z  t          z   g¦  «        t          t          t          z   fgt          t          t          z   gfk    sJ ‚t          t          dt          z  z   t          z   t
          z   t          t          z   dz   f¦  «        t          t          t          z   fgt          t          z   t          z   t
          z   t          dz   gfk    sJ ‚t          t          t          z   t          z   t
          z   t          t          z
  z  t          t          z   z  ¦  «        t          t          t          z   fgt          t          z   t
          z   t          t          z
  z  t          z  gfk    sJ ‚t          d¦  «        \  } }}}}}}}||dz  z  |z  |z  d| z  |z  |z  |z  | |z  |z  |dz  z  f}t          |¦  «        t          ||z  ft          | |z  fg||z  |z  t          z  dt          z  t          z  ||z  |z  t          z  gfk    sJ ‚d S )Nr[   rj   za, b, c, d, f, g, j, mrn   )r   rT   r2   r^   ru   rO   r   r{   )	ÚaÚbÚcÚdÚfÚgÚjÚmÚexprss	            r;   Útest_issue_10228r    Ó   s  € å••!�Q‘$‘��1™‘ˆ~ÑÔ¥R­­1© I ;µµA±½±°Ð"<Ò<Ð<Ð<Ð<Ý••A‘�q�‘s�Q‘wÐÑ Ô ¥r­1­q©5 k ]µR½½R¹°LÐ$AÒAÐAÐAÐAÝ•�A•a‘C‘�!‘�a‘¥¥Q¡¨¡Ð+Ñ,Ô,Ý
�a•!‰eˆˆ��Q™¥™
¥Q™­¨Q©Ð/ð11ò 1ð 1ð 1ð 1å••Q‘�‘�Q‘¥¥Q¡Ñ'­!­a©%Ñ0Ñ1Ô1Ý
�a•!‰eˆˆ��a™¥!™¥a­!¡eÑ,­RÑ/Ð0ð62ò 2ð 2ð 2ð 2å$Ð%=Ñ>Ô>Ñ€A€qˆ!ˆQ��1�a˜Øˆq�!‰t‰V�A‰X�a‰Z˜˜1™˜Q™˜q™ ™ A a¡C¨¡E¨!¨Q©$¡JÐ/€EÝˆu‰:Œ:Ý
ˆa�‰cˆ•R˜˜1™�IÐ  1¡ Q¡¥r¡¨1­R©4µ©7°A°a±C¸±E½"±HÐ =ðò ð ð ð ð ð r>   c                  óÊ   — t          t          t          dz  z  t          t          z  z   ¦  «        t          t          t          z  fgt          t          z  t          z   gfk    sJ ‚d S rt   )r   rT   r2   r^   rU   r>   r;   Útest_powersr¢   á   sJ   € å�q•�A‘‰v��!™‰|ÑÔ¥2¥q­¡s ) ­rµ!©tµb©y¨kÐ :Ò:Ð:Ð:Ð:Ð:Ð:r>   c                  óÎ   — t          t          t          t          z
  z  t          t          t          z
  z  z   d¬¦  «        g t          t          z
  t          t          z
  z  gfk    sJ ‚d S )NÚbasicrx   )r   ru   rT   r2   rO   rU   r>   r;   Útest_issue_4498r¥   æ   s\   € Ý�q•!•a‘%‰y�1�a¥!™e™9Ñ$°GÐ<Ñ<Ô<Ø	�q•1‰u•q�1‘u‰oÐÐò ð  ð  ð  ð  ð  r>   c                  óò   — t          t          dz  t          dz  z   t          dz  z   t          dz  z   d¬¦  «        t          t          dz  fgt          t          dz  t          z   t          z   dz   z  gfk    sJ ‚d S )Nro   rn   rp   r[   r¤   rx   rj   )r   rT   r^   rU   r>   r;   Útest_issue_4020r§   ë   sy   € Ý�q�!‰t•a˜‘d‰{�Q ™TÑ!¥A q¡DÑ(¸Ð@Ñ@Ô@Ý•!�Q‘$ˆZˆL�2�q !™t¥a™x­"™}¨qÑ0Ñ1Ð2Ð3ò4ð 4ð 4ð 4ð 4ð 4r>   c                  óè   — t          t          t          t          z  ¦  «        t          t          z  z  ¦  «        t          t          t          z  fgt          t          ¦  «        t          z  gfk    sJ ‚d S rJ   )r   r   rT   r^   rU   r>   r;   Útest_issue_4203r©   ð   sN   € Ý�s•1•a‘4‰yŒy��A™‰~ÑÔ¥R­­A© J <µ#µb±'´'½"±*°Ð">Ò>Ð>Ð>Ð>Ð>Ð>r>   c                  ó¢   — t          t          t           dz   z  t          t          dz
  z  z   d¦  «        } t          | d¬¦  «        g dgfk    sJ ‚d S )Nrj   r   r¤   rx   T)r   rT   r   )ra   s    r;   Útest_issue_6263r«   ô   sR   € Ý
�1�qˆb�1‰f‰:��1˜q™5™	Ñ! 1Ñ%Ô%€AÝˆq Ð(Ñ(Ô(¨R°$°¨LÒ8Ð8Ð8Ð8Ð8Ð8r>   c                  ó  — t          d¦  «        } t          dd¬¦  «        }t          | |dz  z  | |dz  |dz  z
  z  z   ¦  «        d         d         }|j        }t          |¦  «        t          d„ |D ¦   «         ¦  «        k    sJ ‚d S )	Nr™   r^   T)Úrealr[   rn   rz   c                 ó   — h | ]	}|j         ’Œ
S rU   )Únamer8   s     r;   ú	<setcomp>z#test_issue_25043.<locals>.<setcomp>þ   s   € Ð2Ð2Ð2¨˜QœVÐ2Ð2Ð2r>   )r   r   Úfree_symbolsr_   )r™   rT   Úcse_exprÚfrees       r;   Útest_issue_25043r´   ù   s�   € Ý�‰Œ€AÝ�˜4Ð Ñ Ô €AÝ�1�Q˜‘T‘6˜A˜q !™t a¨¡d™{™OÑ+Ñ,Ô,¨RÔ0°Ô4€HØÔ €DÝˆt‰9Œ9�Ð2Ð2¨TÐ2Ñ2Ô2Ñ3Ô3Ò3Ð3Ð3Ð3Ð3Ð3r>   c            
      ó(  — ddl m}  t          d¦  «        }t          d¦  «        }t           |  |t          t
          ¦  «        t          t
          fd¦  «         |  |t          t
          ¦  «        t          t
          fd¦  «        z   ¦  «        \  }\  }|g k    sJ ‚| |  |t          t
          ¦  «        t          t
          fd¦  «         |  |t          t
          ¦  «        t          t
          fd¦  «        z   k    sJ ‚t           |  |t          t
          ¦  «        t          t
          fdt          t
          z   f¦  «         |  |t          t
          ¦  «        t          t
          fdt          t
          z   f¦  «        z   ¦  «        \  }\  }|t          t          t
          z   fgk    sJ ‚| |  |t          t
          ¦  «        t          t
          fdt          f¦  «         |  |t          t
          ¦  «        t          t
          fdt          f¦  «        z   k    sJ ‚d S )Nr   )ÚSubsr›   rœ   ©r   rj   )Úsympy.core.functionr¶   r	   r   rT   r2   r^   )r¶   r›   rœ   Úname_valrL   s        r;   Útest_dont_cse_tuplesrº     sÞ  € Ø(Ð(Ð(Ð(Ð(Ð(Ý�‰Œ€AÝ�‰Œ€AåØˆˆQˆQ�q•!‰WŒW•q�!�f˜fÑ%Ô%Ø
ˆ$ˆqˆq••A‰wŒw��A˜ Ñ
'Ô
'ñ	(ñ)ô )Ñ€H‰gˆtð �rŠ>ˆ>ˆ>ˆ>Ø�D�D˜˜�1�a™œ¥1¥a &¨&Ñ1Ô1Øˆd�1�1•Q�‘7”7�Q¥˜F FÑ+Ô+ñ,ò -ð -ð -ð -õ ØˆˆQˆQ�q•!‰WŒW•q�!�f˜q¥!¥a¡%˜jÑ)Ô)Ø
ˆ$ˆqˆq••A‰wŒw��A˜ ¥A­¡E 
Ñ
+Ô
+ñ	,ñ-ô -Ñ€H‰gˆtð ��Q¥™U˜�}Ò$Ð$Ð$Ð$Ø�4�4˜˜�!�Q™œ¥!¥Q ¨!­R¨Ñ1Ô1ØˆˆQˆQ�q•!‰WŒW•q�!�f˜q¥"˜gÑ&Ô&ñ'ò 'ð 'ð 'ð 'ð 'ð 'r>   c            	      ó  — t          dt          dz  z  t          dz  z   ¦  «        t          t          dz  fgt          dt          z  z   gfk    sJ ‚t          t          dz  ddt          dz  z  z   t          dz  z  z   ¦  «        t          t          dz  ft          dt          z  fgt          t          t          dz   z  z   gfk    sJ ‚t          dt          dz  z  ddt          dz  z  z   t          dz  z  z   ¦  «        t          t          dz  ft          dt          z  fgt          t          dz   z  t          z   gfk    sJ ‚t          t	          dt          dz  z  ¦  «        t          dt          dz  z  ¦  «        z   ¦  «        t          t          dz  fgt          t          ¦  «        t	          t          ¦  «        z   gfk    sJ ‚t          t	          t          dz  ¦  «        t          t          dz  ¦  «        z   ¦  «        t          t          dz  fgt          t          ¦  «        t	          t          ¦  «        z   gfk    sJ ‚t          t          dt          dz  z   z  t          t          dz  z  t          z  z   ¦  «        t          t          dz  fgt          t          dz   z  t          t          t          z  z  z   gfk    sJ ‚t          t          t          dz  ¦  «        t          dz  t	          dt          dz  z  ¦  «        z  z   ¦  «        t          t          dz  fgt          t	          dt          z  ¦  «        z  t          t          ¦  «        z   gfk    sJ ‚t          ddt          dz  z  z   t          dz  z  ¦  «        t          t          dz  fgt          t          dz   z  gfk    sJ ‚t          t          dt          z  z  t          dt          z  z  z   ¦  «        t          t          dt          z  z  fgt          dt          z  z   gfk    sJ ‚d S )Nrj   r[   éþÿÿÿ)	r   rT   r^   r{   r   r   r2   rO   r   rU   r>   r;   Útest_pow_invpowr½     sq  € Ýˆq•�A‘‰v�˜1™‰}ÑÔÝ�q�!‰tˆ*ˆ�˜Q�r™T™	�{Ð#ò$ð $ð $ð $å�q�!‰t�q˜1�Q ™T™6‘z¥1 a¡4Ñ'Ñ'Ñ(Ô(Ý�q�!‰tˆ*•r˜1�R™4�jÐ	!¥B­­R°!©V©Ñ$4Ð#5Ð6ò7ð 7ð 7ð 7åˆq•�A‘‰v˜˜Q�q !™t™V™¥Q¨¡TÑ)Ñ)Ñ*Ô*Ý�q�!‰tˆ*•r˜1�R™4�jÐ	!¥B­¨Q©¡Kµ"Ñ$4Ð#5Ð6ò7ð 7ð 7ð 7å�s�1•Q˜‘T‘6‰{Œ{�S ¥1 a¡4¡™[œ[Ñ(Ñ)Ô)Ý�q�2‰wˆ-ˆ�3�r™7œ7¥S­¡W¤WÑ,Ð-Ð.ò/ð /ð /ð /å�s•1�a‘4‰yŒy�3�q !™t™9œ9Ñ$Ñ%Ô%Ý�q�!‰tˆ*ˆ��B™œ¥#¥b¡'¤'Ñ)Ð*Ð+ò,ð ,ð ,ð ,å�q�!•a˜‘d‘(‰|�a¥ 1¡™f¥Q™hÑ&Ñ'Ô'Ý�q�!‰tˆ*ˆ��2 ™6™
¥Q­­1©¡XÑ-Ð.Ð/ò0ð 0ð 0ð 0å�s•1�a‘4‰yŒy�1˜a™4¥ A¥a¨¡d¡F¡¤Ñ+Ñ+Ñ,Ô,Ý�q�!‰tˆ*ˆ��3˜q¥™t™9œ9™¥s­2¡w¤wÑ.Ð/Ð0ò1ð 1ð 1ð 1å��A•a˜‘d‘F‘
�A˜q™DÑ Ñ!Ô!Ý�q�2‰wˆ-ˆ�2�r A™v™;˜-Ð(ò)ð )ð )ð )å�q�1•Q‘3‰x�!˜b¥™d™)Ñ#Ñ$Ô$Ý�q�1•Q‘3‰xˆ.Ð	�B ¥2¡™I˜;Ð'ò(ð (ð (ð (ð (ð (r>   c                  ób  — t           dz   t          t           dz   t          dz   z  ¦  «        z   t          t          dz   ¦  «        z   } t	          | t          t           t          dz   ¦  «        t          dz
  t          dz   t           dz   z  gt          j        ¬¦  «        t          t          dz   ft          t          dz   ft           t          ft          t           dz   fgt          t          t          t          z  ¦  «        z   t          t          ¦  «        z   t          dz
  t          t          z  ggk    sJ ‚d S )Nrj   r[   ©Úpostprocess)rT   r   r2   r   r   r   rO   r'   Úcse_separater^   r€   r{   ©rq   s    r;   Útest_postprocessrÃ   ,  sè   € Ý
ˆa‰%•#•q˜1‘u�q 1™u‘oÑ&Ô&Ñ
&­­Q°©U©¬Ñ
3€BÝ�•B•q�!˜a™%‘L”L¥! a¡%­!¨a©%µ!°a±%©Ð9ÝÔ)ð+ñ +ô +å�q�1‰uˆ+��A ™E�{¥Q­ G­bµ!°a±%¨[Ð	9Ý	�c•"•R‘%‰jŒj‰�3�r™7œ7Ñ	"¥A¨¡E­2­b©5Ð1ð	3ò3ð 3ð 3ð 3ð 3ð 3r>   c                  óÖ  — ddl m} m} t          d¦  «        }t          d¦  «        }t	          | | t
          j        z   d| z  |d| z  |z
  dz   t          t          ¦  «        dz  d| z  dz   z   |d| z  |z
  t          t          ¦  «        ¦  «        z   ||dz
  t          t          ¦  «        ¦  «        z   ||¦  «        z   |d| z  |z
  dz   ¦  «        z  t          t          ¦  «        t          t          ¦  «        dz  d| z  dz   z  z   ||t          t          ¦  «        ¦  «        z   |d| z  |z
  t          t          ¦  «        ¦  «        z   ||¦  «        z   |d| z  |z
  dz   ¦  «        z  t          t          ¦  «        t          t          ¦  «        dz  d| z  dz   z  z   ||dz
  t          t          ¦  «        ¦  «        z   |d| z  |z
  dz   t          t          ¦  «        ¦  «        z   ||¦  «        z   |d| z  |z
  dz   ¦  «        z  t          t          ¦  «        dz  d| z  dz   z   ||t          t          ¦  «        ¦  «        z   |d| z  |z
  dz   t          t          ¦  «        ¦  «        z   ||¦  «        z   |d| z  |z
  dz   ¦  «        z  ddt
          j        t          dz  | dz   d| z  |z   d| z  fŽ }t          |¦  «        }t          d| z  ft          | t          z   ft          t          dz   ft          |dz
  ft          t          t          ¦  «        ft           |t          t          ¦  «        ft           t          dz  dt          z
  z   ||¦  «        z   |t          ¦  «        z  ft"          t            |t          t          ¦  «        z  ft$           ||t          ¦  «        ft&          t            |t          t          ¦  «        z  fg
| | t
          j        z   t          |t          t          t"          z  t          t"          z  t$          z  t          t          z  t&          z  t$          t&          z  ddt
          j        t          dz  t           t           t           fgf}||k    sJ ‚d S )Nr   )r—   r˜   rŽ   ÚGr[   rj   r¼   )Ú	sympy.abcr—   r˜   r	   r   r   ÚHalfr   rO   r   r^   r{   r€   Úx3Úx4Úx5Úx6Úx7Úx8Úx9)r—   r˜   rŽ   rÅ   Útr™   Úanss          r;   Útest_issue_4499rÑ   4  sù  € àÐÐÐÐÐÐÐÝ�‰Œ€AÝ�‰Œ€AÝØ	
ˆA•”‰J˜˜!™˜Q  !¡ a¡¨!¡­dµ1©g¬g°a©i¸2¸a¹4À!¹8Ñ-DÀQÀQÀqÈÁsØ	ñH
Ý•‰7Œ7ñFô Fñ .Ø�A�a˜!‘e�T¥!™WœWÑ%Ô%ñ.&Ø&' a¨¡d¤dñ.+Ø+,¨1¨Q¨q©S°1©W°q©[©>¬>ñ.:å�Q‰Œ••a‘”˜‘˜b ™d Q™hÑ'Ñ'¨¨¨!­Tµ!©W¬W©¬Ñ5°a°a¸¸!¹¸a¹Ý�Q‰Œñ7ô 7ñ 	Ø��1‘”ñ	Ø�a˜˜!™˜a™ !™‘n”nñ	%Ý&*­1¡g¤g­tµA©w¬w°q©y¸B¸q¹DÀ1¹HÑ.EÑ&EÀaÀaÈÈAÉÝ�Q‰ŒñGô Gñ 'Ø��1�Q‘3˜‘7˜Q‘;¥¥Q¡¤Ñ(Ô(ñ')Ø)*¨¨1©¬ñ'.Ø./¨a°°!±°a±¸!±©n¬nñ'=å	�a‰Œ�‰�b˜‘d˜Q‘hÑ   !¥T­!¡W¤W¡¤Ñ-¨a¨a°°!±°a±¸!±Ý�Q‰Œñ/ô /ñ 	Ø��1‘”ñ	Ø�a˜˜!™˜a™ !™‘n”nñ	%Ø&'¨­A¬FµA°a±C¸!¸¸a¹ÀÀAÁÈÁØ
ˆ1‰ð	ð	€Aõ 	ˆA‰Œ€Aå
ˆa�‰cˆ•R˜!˜�b™�M¥B­¨Q© <µ"°a¸!±e°½rÅ4ÍÁ7Ä7¸mÝ
ˆaˆa••B‰iŒiˆ�2¥ 1¡¨­B©Ñ/°°°!±´Ñ4°Q°Qµr±U´UÑ:Ð;½bÅ"ÀQÀQÅrÍ2ÁYÄYÁ,Ð=OÝ
ˆaˆa�•2‰hŒhˆ�"�b  ¥2¥r¡¤™lÐ+ð	-ð ˆQ•”‰Z�˜Q¥¥B¥r¡E­2­b©5µ©8µR½±U½2±X½rÅ"¹uØ
ˆQ•”�˜!™�b˜S¥2 #­ sð
,ð 	-ð	.€Cð �!Š8ˆ8ˆ8ˆ8ˆ8ˆ8r>   c                  ód  — t          t          dz  dt          dz  z  z
  dz
  d¦  «        } t          | ¦  «        g | gfk    sJ ‚t          t	          t           t
          z
  t          z  t          z
  t
          z
  ¦  «        ¦  «        t           t          t
          z   z  t          z
  t
          z
  k    sJ ‚d S )Né   rn   ro   r[   rj   )r   rT   r   r%   r$   r2   rO   )Úrs    r;   Útest_issue_6169rÕ   L  s’   € Ý•�1‘�q�˜A™‘v‘ Ñ! 1Ñ%Ô%€AÝˆq‰6Œ6�b˜1˜#�YÒÐÐÐõ •G�a˜R¥!™V¥Q™J­™N­QÑ.Ñ/Ô/Ñ0Ô0µQ°B½½A¹±JÅ±NÅQÑ4FÒFÐFÐFÐFÐFÐFr>   c                  óJ  — d} t          d| f¬¦  «        }t          d| f¬¦  «        }t          d| dz
  ¦  «        }||dz            ||         z
  ||dz            ||         z
  z  }d||dz            ||         z
  z  }t          ||g¦  «        \  }}t          |¦  «        dk    sJ ‚d S )Nro   r2   )ÚshaperT   r:   rj   r   )r!   r    r   r_   )Úlen_yr2   rT   r:   Úexpr1Úexpr2ÚreplacementsÚreduced_exprss           r;   Útest_cse_IndexedrÝ   T  sº   € Ø€EÝ�C ˜xÐ(Ñ(Ô(€AÝ�C ˜xÐ(Ñ(Ô(€AÝˆC��q‘ÑÔ€Aàˆq�‰sŒV�A�a”D‰[˜1˜Q˜q™Sœ6 ! A¤$™;Ñ'€EØˆq��1‘Œv�a˜”d‰{‰O€EÝ"% u¨e nÑ"5Ô"5Ñ€L�-Ýˆ|ÑÔ˜qÒ Ð Ð Ð Ð Ð r>   c                  ó  — t          ddd¦  «        } t          | ¦  «        g | gfk    sJ ‚t          dd¬¦  «        }t          d||¦  «        }t          |¦  «        g |gfk    sJ ‚t          | d         | d         z  ¦  «        g | d         | d         z  gfk    sJ ‚t          | d         | d	         z  | d         | d	         z  | d
         z  z   ¦  «        t          | d         | d	         z  fgt          | d
         z  t          z   gfk    sJ ‚d S )Nr�   rp   r|   T)ÚintegerrŽ   r   )r   r   r·   )r   r[   )r0   r   r   r^   )r�   r|   rŽ   s      r;   Útest_cse_MatrixSymbolrà   `  s  € å�S˜!˜QÑÔ€AÝˆq‰6Œ6�b˜1˜#�YÒÐÐÐå�˜TÐ"Ñ"Ô"€AÝ�S˜!˜QÑÔ€AÝˆq‰6Œ6�b˜1˜#�YÒÐÐÐåˆq�Œt�a˜”d‰{ÑÔ  Q q¤T¨!¨A¬$¡Y KÐ0Ò0Ð0Ð0Ð0åˆq�Œv�a˜”f‰}˜q œv a¨¤f™}¨Q¨s¬VÑ3Ñ3Ñ4Ô4½2¸qÀ¼wÀqÈÄw¹Ð:OÐ9PÕSUÐVWÐX\ÔV]ÑS]Õ`bÑSbÐRcÐ8dÒdÐdÐdÐdÐdÐdr>   c                  ó^  — t          ddd¦  «        } t          ddd¦  «        }| j        | z  j        | z  |z  }| j        | z  | z  |z  }t          ||g¦  «        \  }}t	          |¦  «        dk    sJ ‚t          ||z   |g¦  «        \  }}|sJ ‚t          | dz  | | dz  z   g¦  «        \  }}|sJ ‚d S )Nr�   rp   r2   rj   r   r[   )r0   ÚTÚIr   r_   )r�   r2   rÙ   rÚ   rÛ   rÜ   s         r;   Útest_cse_MatrixExprrä   m  sÖ   € Ý�S˜!˜QÑÔ€AÝ�S˜!˜QÑÔ€AàŒS�‰UŒI˜‰M˜AÑ€EØŒS�‰U�a‰K˜!‰O€EÝ"% u¨e nÑ"5Ô"5Ñ€L�-Ýˆ|ÑÔ˜qÒ Ð Ð Ð å"% u¨u¡}°eÐ&<Ñ"=Ô"=Ñ€L�-ØÐÐˆ<å"% q¨!¡t¨Q°°A±©XÐ&6Ñ"7Ô"7Ñ€L�-ØÐÐˆ<ÐÐr>   c                  óŽ  — t          t           t          t          z  z   t	          t          d¦  «        ft           t          t          z  z
  df¦  «        } t          | ¦  «        }t          t          t          z  fgt          t          t          z
  t	          t          d¦  «        ft           t          z
  df¦  «        gf}||k    sJ ‚d S )Nr   T)r   rO   rT   r2   r   r   r^   )r›   rÐ   Ú
actual_anss      r;   Útest_Piecewiserç   }  s˜   € Ý•A�2��!™‘8�R¥ 1™XœXÐ&­!¨­aµ©c©°4Ð(8Ñ9Ô9€AÝ
ˆa‰&Œ&€CÝ��!™�9�+Ý	•B�‘F�B�q !™HœHÐ%­¨­R©° Ñ	7Ô	7Ð8ð:€Jà�*ÒÐÐÐÐÐr>   c                  ón  — t          t          ¦  «                             t          dd¦  «        t          t          t          dz  z   ¦  «        z   dz
  } t          | ¦  «        g t          t          dz  t          z   ¦  «        t          z   t          dz  dz  z   t          t          dz  ¦  «        z   gfk    sJ ‚d S )Nr   rp   rj   r[   )r   rT   Úseriesr   r2   r   r   rÂ   s    r;   Útest_ignore_order_termsrê   …  s‰   € Ý	�Q‰Œ�Š•q˜˜1Ñ	Ô	¥¥A¥a¨¡d¡F¡¤Ñ	+¨aÑ	/€BÝˆr‰7Œ7�r�C¥ 1¡¥q¡™MœM­AÑ-µ°1±°Q±Ñ6½½1¸a¹4¹¼Ñ@ÐAÐBÒBÐBÐBÐBÐBÐBr>   c                  óô   ‡— t           t          z   } t          t          z   }t	          | ¦  «        | z   t	          |¦  «        |z   t           t          z   g}t          |¦  «        \  Š}ˆfd„|D ¦   «         |k    sJ ‚d S )Nc                 óT   •— g | ]$}|                      t          ‰¦  «        ¦  «        ‘Œ%S rU   ©Úsubsr   ©r9   ra   rb   s     €r;   r<   z&test_name_conflict.<locals>.<listcomp>�  ó-   ø€ Ð6Ð6Ð6¨ˆA�FŠF•8˜FÑ#Ô#Ñ$Ô$Ð6Ð6Ð6r>   )r^   r2   r€   rÈ   r   r   ©Úz1Úz2rƒ   rc   rb   s       @r;   Útest_name_conflictrô   Š  ss   ø€ Ý	�a‰€BÝ	�b‰€BÝ	ˆR‰Œ�2‰•s˜2‘w”w ‘|¥R­"¡WÐ-€AÝ˜!‘f”f�O€FˆGØ6Ð6Ð6Ð6¨gÐ6Ñ6Ô6¸!Ò;Ð;Ð;Ð;Ð;Ð;r>   c                  ó  ‡— t           t          z   } t          t          z   }t	          | ¦  «        | z   t	          |¦  «        |z   t           t          z   g}t          |t          d¦  «        ¦  «        \  Š}ˆfd„|D ¦   «         |k    sJ ‚d S )Nzx:10c                 óT   •— g | ]$}|                      t          ‰¦  «        ¦  «        ‘Œ%S rU   rí   rï   s     €r;   r<   z3test_name_conflict_cust_symbols.<locals>.<listcomp>—  rð   r>   )r^   r2   r€   rÈ   r   r   r   rñ   s       @r;   Útest_name_conflict_cust_symbolsr÷   ’  s}   ø€ Ý	�a‰€BÝ	�b‰€BÝ	ˆR‰Œ�2‰•s˜2‘w”w ‘|¥R­"¡WÐ-€AÝ˜!�W V™_œ_Ñ-Ô-�O€FˆGØ6Ð6Ð6Ð6¨gÐ6Ñ6Ô6¸!Ò;Ð;Ð;Ð;Ð;Ð;r>   c                  óv  — t          t          t          z   ¦  «        t          z   t          z   t          t          t          z   ¦  «        z   t	          t          t          z   ¦  «        z   } t          t          t
          g}t          t          ¦  «        5  t          | |¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)r   )	r   rT   r2   ru   r   rO   r+   Ú
ValueErrorr   )rƒ   Úsyms     r;   Útest_symbols_exhausted_errorrû   š  sÇ   € Ý�A�a‰C‰Œ•‰
•1‰•S��1™‘X”XÑ�c¥!¥A¡#™hœhÑ&€AÝ�a•ˆ)€CÝ	•
Ñ	Ô	ð ð ÝˆA�sÐÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÂB.Â.B2Â5B2c                  óþ  — t          d¦  «        } t          d¦  «        }|                      d|¦  «        } i }d|d<   d|d<   |                      |¦  «        }t          | ¦  «        \  }}|D ]+}|d                              |¦  «        ||d	         j        <   Œ,|d	                              |¦  «        }||k    sJ ‚t          d
¦  «        }t          |¦  «        \  }}|d	         |k    sJ ‚t	          |¦  «        dk     sJ ‚d S )NziPiecewise((C391 - 1.65, C390 < 0.5), (Piecewise((C391 - 1.65,         C391 > 2.35), (C392, True)), True))zGPiecewise((2.05*C390**(-1.03), C390 < 0.5), (2.5*C390**(-0.625), True))ÚC391g¹²gv­‚æ?ÚC390g‘þÉ¥:ð?ÚC392rj   r   a  Piecewise((Symbol('ON'), Equality(Symbol('mode'), Symbol('ON'))),         (Piecewise((Piecewise((Symbol('OFF'), StrictLessThan(Symbol('x'),         Symbol('threshold'))), (Symbol('ON'), true)), Equality(Symbol('mode'),         Symbol('AUTO'))), (Symbol('OFF'), true)), true)))r   rî   r   r¯   r_   )	ÚC393rý   ÚsubÚ	ss_answerÚsubstitutionsÚnew_eqnÚpairÚ
cse_answerrL   s	            r;   Útest_issue_7840r  ¡  s)  € åð	-ñô €Dõ ØQñô €Dð �9Š9�V˜DÑ!Ô!€Dà
€CØ€Cˆ�KØ€Cˆ�KØ—	’	˜#‘”€Iå ™IœIÑ€M�'Øð .ð .ˆØ  œGŸLšL¨Ñ-Ô-ˆˆD�ŒGŒLÑÐØ˜”—’ Ñ%Ô%€Jà˜
Ò"Ð"Ð"Ð"õ ð	:ñô €Dõ ! ™YœYÑ€M�7à�1Œ:˜ÒÐÐÐåˆ}ÑÔ Ò!Ð!Ð!Ð!Ð!Ð!r>   c            	      ól  — t           t          t          t          fD ]˜}  | ddt          t
          z   dddg¦  «        }t          t          t
          z   |g¦  «        }t          t          t
          z   fgt           | t          dgddgg¦  «        gf}||k    sJ ‚t          |d         d         | ¦  «        sJ ‚Œ™d S )Nr[   r   rj   rz   )	r,   r-   r.   r/   rT   r2   r   r^   rk   )Úclsrž   ÚresrÐ   s       r;   Útest_issue_8891r  Æ  sº   € Ý"Õ$7Ý Õ"7ð9ð +ð +ˆàˆC��1•q�1‘u˜a  AÐ&Ñ'Ô'ˆÝ•1•q‘5˜!�*‰oŒoˆÝ•Q�‘U�ˆ}�r 3 3­¨Q¨°!°Q°Ð'8Ñ#9Ô#9Ð:Ð;ˆØ�cŠzˆzˆzˆzÝ˜#˜aœ& œ* cÑ*Ô*Ð*Ð*Ð*Ð*ð+ð +r>   c                  ó  ‡‡‡— t          d¦  «        \  } }}}}}| |z  |z  |z  |z  | |z  |dz  z  |z  ||z  |dz  z  |z  g}t          |¦  «        \  }}t          d„ |D ¦   «         ¦  «        rJ ‚ddlmŠ ddlmŠ t          d¦  «        Šˆˆfd„t          d	¦  «        D ¦   «         }	t          |	d
¦  «        D ]Š}t          |¦  «        }t          |¦  «        \  }}t          d„ |D ¦   «         ¦  «        rJ ‚t          |¦  «        D ]4}
t          t          |¦  «        ¦  «        D ]} ||         j        |
Ž ||<   ŒŒ5||k    sJ ‚Œ‹ˆˆfd„t          d	¦  «        D ¦   «         }	t          |	d
¦  «        D ]–}t          |¦  «        }t          |¦  «        \  }}t          d„ |D ¦   «         ¦  «        rJ ‚t          |¦  «        D ]4}
t          t          |¦  «        ¦  «        D ]} ||         j        |
Ž ||<   ŒŒ5|ˆfd„|D ¦   «         k    sJ ‚Œ—d S )Nza b f k l ir[   c              3   ó8   K  — | ]}|j         D ]}|j        V — ŒŒd S rJ   ©ÚargsÚis_Mul©r9   r—   r:   s      r;   ú	<genexpr>z#test_issue_11230.<locals>.<genexpr>Õ  s3   è è € Ð7Ð7 °´Ð7Ð7¨1�1”8Ð7Ð7Ð7Ð7Ð7Ð7Ð7r>   r   )Úchoice)Ú
expand_mulza:mc                 óV   •— g | ]%}t          ˆˆfd „t          d¦  «        D ¦   «         Ž ‘Œ&S )c                 ó&   •— g | ]} ‰‰¦  «        ‘ŒS rU   rU   ©r9   r:   r  Úss     €€r;   r<   z/test_issue_11230.<locals>.<listcomp>.<listcomp>Ü  s!   ø€ Ð,Ð,Ð,˜a���q‘	”	Ð,Ð,Ð,r>   ro   )r
   rF   r  s     €€r;   r<   z$test_issue_11230.<locals>.<listcomp>Ü  s<   ø€ Ð	@Ð	@Ð	@°!�#Ð,Ð,Ð,Ð,Ð,¥5¨¡8¤8Ð,Ñ,Ô,Ð
-Ð	@Ð	@Ð	@r>   é   rp   c              3   ó8   K  — | ]}|j         D ]}|j        V — ŒŒd S rJ   r  r  s      r;   r  z#test_issue_11230.<locals>.<genexpr>à  ó3   è è € Ð;Ð; A°A´FÐ;Ð;¨q�q”xÐ;Ð;Ð;Ð;Ð;Ð;Ð;r>   c                 óV   •— g | ]%}t          ˆˆfd „t          d¦  «        D ¦   «         Ž ‘Œ&S )c                 ó6   •— g | ]} ‰‰d d…         ¦  «        ‘ŒS )Nr  rU   r  s     €€r;   r<   z/test_issue_11230.<locals>.<listcomp>.<listcomp>æ  s)   ø€ Ð0Ð0Ð0 !���q˜˜!˜”u‘”Ð0Ð0Ð0r>   ro   )r   rF   r  s     €€r;   r<   z$test_issue_11230.<locals>.<listcomp>æ  s<   ø€ Ð	DÐ	DÐ	D°a�#Ð0Ð0Ð0Ð0Ð0¥u¨Q¡x¤xÐ0Ñ0Ô0Ð
1Ð	DÐ	DÐ	Dr>   c              3   ó8   K  — | ]}|j         D ]}|j        V — ŒŒd S rJ   )r  Úis_Addr  s      r;   r  z#test_issue_11230.<locals>.<genexpr>ê  r  r>   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS rU   rU   )r9   r:   r  s     €r;   r<   z$test_issue_11230.<locals>.<listcomp>ò  s!   ø€ Ð.Ð.Ð. q�Z�Z ‘]”]Ð.Ð.Ð.r>   )r   r   ÚanyÚsympy.core.randomr  r¸   r  rF   r)   rC   r   r_   rî   )r—   r˜   r›   Úkrƒ   r:   ÚpÚRr�   ÚexÚrir  r  r  s              @@@r;   Útest_issue_11230r(  Ð  s†  øøø€ å˜}Ñ-Ô-Ñ€A€qˆ!ˆQ��1Ø	
ˆ1‰ˆQ‰ˆq‰�‰�A�a‘C˜˜1™‘H˜Q‘J  !¡ A q¡D¡¨¡
Ð+€AÝˆq‰6Œ6�D€A€qÝÐ7Ð7 QÐ7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7ð )Ð(Ð(Ð(Ð(Ð(Ø.Ð.Ð.Ð.Ð.Ð.Ý�‰Œ€Aà	@Ð	@Ð	@Ð	@Ð	@µu¸Q±x´xÐ	@Ñ	@Ô	@€BÝ�R˜‰^Œ^ð ð ˆÝ�‰GŒGˆÝ�1‰vŒv‰ˆˆ1ÝÐ;Ð;¨Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ý˜1‘+”+ð 	&ð 	&ˆBÝ�3˜q™6œ6‘]”]ð &ð &�Ø �q˜”t”y "�~��!‘�ð&à�AŠvˆvˆvˆvˆvà	DÐ	DÐ	DÐ	DÐ	D½5À¹8¼8Ð	DÑ	DÔ	D€BÝ�R˜‰^Œ^ð /ð /ˆÝ�‰GŒGˆÝ�1‰vŒv‰ˆˆ1ÝÐ;Ð;¨Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ý˜1‘+”+ð 	&ð 	&ˆBÝ�3˜q™6œ6‘]”]ð &ð &�Ø �q˜”t”y "�~��!‘�ð&ð Ð.Ð.Ð.Ð.¨AÐ.Ñ.Ô.Ò.Ð.Ð.Ð.Ð.ð/ð /r>   c                  ód  — d„ } t           dz  t          dz  z  t           dz  t          z  z   t           dz  z   }t          |¦  «        t          t           dz  ft          t           t          z  fgt           dz  t          t          z  t          z  z   t          t          z  z   gfk    sJ ‚ | |¦  «         t           dz  t          dz   dz  z  t           t          dz   z  z   }t          |¦  «        t          t          dz   fgt           dz  t          dz  z  t           t          z  z   gfk    sJ ‚ | |¦  «         d S )Nc                 óÌ   — t          | ¦  «        \  }}|                      ¦   «         t          |¦  «        t          d„ |D ¦   «         ¦  «        z   t          |¦  «        z   k    sJ ‚d S )Nc              3   óJ   K  — | ]}|d                                ¦   «         V — ŒdS )rj   Nr"   r8   s     r;   r  z2test_issue_11577.<locals>.check.<locals>.<genexpr>ú  s0   è è € Ð5Ð5¨a˜˜1œŸšÑ)Ô)Ð5Ð5Ð5Ð5Ð5Ð5r>   )r   r#   r_   Úsum)rq   rÔ   r™   s      r;   Úcheckztest_issue_11577.<locals>.check÷  sm   € Ý�2‰wŒw‰ˆˆ1Ø�|Š|‰~Œ~Ý�‰FŒF•SÐ5Ð5°1Ð5Ñ5Ô5Ñ5Ô5Ñ5Ý�a‰LŒLñòð ð ð ð ð r>   ro   r[   rn   rj   )rT   r2   r   r^   r{   )r-  rq   s     r;   Útest_issue_11577r.  õ  s  € ðð ð õ 
ˆA‰�a�‰d‰•Q˜‘T�!‘VÑ	�a ™dÑ	"€BÝˆr‰7Œ7Ý
�a�‰dˆ•b�!�A™#�YÐ¥! Q¡$­­B©­q©¡.µ2µb±5Ñ"8Ð!9ð;ò ;ð ;ð ;ð ;ð 
€Eˆ"�I„I€Iå	
ˆA‰�q�1‰u�q‰j‰�1�a !™e™9Ñ	$€BÝˆr‰7Œ7Ý
�a�!‰eˆˆ�˜1™�R ™U™
¥Q¥r¡TÑ)Ð*ð,ò ,ð ,ð ,ð ,ð 
€Eˆ"�I„I€I€I€Ir>   c                  ó\   — t           dz   t           dz   g} t          | ¦  «        g | fk    sJ ‚d S )Nrp   rn   )rT   r   rÂ   s    r;   Útest_hollow_rejectionr0    s4   € Ý
ˆa‰%•�Q‘ˆ€BÝˆr‰7Œ7�r˜2�hÒÐÐÐÐÐr>   c                  ó  — t          t          ¦  «        dt          z  dt          t          dz   ¦  «        z  z   z  t          t          ¦  «        dt          z  dt          t          dz   ¦  «        z  z   z  g} t	          | ¦  «        \  }}t          d„ |D ¦   «         ¦  «        s
J d¦   «         ‚t	          | t          f¬¦  «        \  }}t          d„ |D ¦   «         ¦  «        r
J d¦   «         ‚t          d	„ |D ¦   «         ¦  «        s
J d
¦   «         ‚d S )Nrp   rj   ro   c              3   ó8   K  — | ]\  }}t           |j        v V — Œd S rJ   ©r2   r±   ©r9   r…   r  s      r;   r  z"test_cse_ignore.<locals>.<genexpr>  s.   è è € Ð:Ð:©¨¨C�q�CÔ$Ð$Ð:Ð:Ð:Ð:Ð:Ð:r>   z&cse failed to identify any term with y©Úignorec              3   ó8   K  — | ]\  }}t           |j        v V — Œd S rJ   r3  r4  s      r;   r  z"test_cse_ignore.<locals>.<genexpr>  s.   è è € Ð>Ð>©V¨Q°•1˜Ô(Ð(Ð>Ð>Ð>Ð>Ð>Ð>r>   z,Sub-expressions containing y must be ignoredc              3   óX   K  — | ]%\  }}|t          t          d z   ¦  «        z
  dk    V — Œ&dS )rj   r   N)r   rT   r4  s      r;   r  z"test_cse_ignore.<locals>.<genexpr>  s:   è è € Ð;Ð;©&¨!¨Sˆs•T�!˜a™%‘[”[Ñ  AÒ%Ð;Ð;Ð;Ð;Ð;Ð;r>   z4cse failed to identify sqrt(x + 1) as sub-expression)r   r2   r   rT   r   r!  )rŸ   Úsubst1Úred1Úsubst2Úred2s        r;   Útest_cse_ignorer=    s  € Ý•‰VŒV�Q•q‘S˜1�T¥! A¡#™YœY™;Ñ&Ñ'­­Q©¬°µ1±°q½½aÀ¹c¹¼±{Ñ1BÑ)CÐD€EÝ�u‘:”:�L€FˆDÝÐ:Ð:°6Ð:Ñ:Ô:Ñ:Ô:ÐdÐdÐ<dÑdÔdÐ:å�u¥a TÐ*Ñ*Ô*�L€FˆDÝÐ>Ð>°vÐ>Ñ>Ô>Ñ>Ô>ÐnÐnÐ@nÑnÔnÐ>ÝÐ;Ð;°FÐ;Ñ;Ô;Ñ;Ô;ÐsÐsÐ=sÑsÔsÐ;ÐsÐsr>   c                  óJ  ‡— t           t          t          ¦  «        z  t          t           ¦  «        z  t          t          ¦  «        t          t          ¦  «        z  t          t           ¦  «        z  g} t          | t          f¬¦  «        \  Š}ˆfd„|D ¦   «         }|| k    sJ ‚d S )Nr5  c                 óT   •— g | ]$}|                      t          ‰¦  «        ¦  «        ‘Œ%S rU   rí   rï   s     €r;   r<   z/test_cse_ignore_issue_15002.<locals>.<listcomp>   s-   ø€ Ð	4Ð	4Ð	4 qˆ!�&Š&•˜&Ñ!Ô!Ñ
"Ô
"Ð	4Ð	4Ð	4r>   )ru   r   rT   rO   r2   r   )rƒ   rc   Úrlrb   s      @r;   Útest_cse_ignore_issue_15002rA    sˆ   ø€ å	�#�a‰&Œ&‰••a�R‘”ÑÝ�A‰Œ�s•1‰vŒv‰•c�1˜"‘g”gÑð	€Aõ ˜!¥Q DÐ)Ñ)Ô)�O€FˆGØ	4Ð	4Ð	4Ð	4¨GÐ	4Ñ	4Ô	4€BØ�Š7ˆ7ˆ7ˆ7ˆ7ˆ7r>   c                  ó  — t          t          dz   ¦  «        } t          d| z
  d| z
  z  g¦  «        \  \  \  }}\  }|| k    r|d|z
  d|z
  z  k    sJ ‚d S ||  k    r|d|z   d|z   z  k    sJ ‚d S d| › d|  › d|› �}J |¦   «         ‚)Nrj   rz   zExpected common subexpression z or z, instead got )r   rT   r   )Úxp1r^   ÚueÚredÚmsgs        r;   Útest_cse_unevaluatedrG  $  sÅ   € Ý
�!˜a™%Ñ
 Ô
 €Cå˜b 3™h¨1¨s©7Ñ3Ð4Ñ5Ô5Ñ�J�X€bˆ"‘�Ø	ˆS‚y€yØ�r˜B‘w 1 r¡6Ñ*Ò*Ð*Ð*Ð*Ð*Ð*Ø	�ˆtŠˆØ�r˜B‘w 1 r¡6Ñ*Ò*Ð*Ð*Ð*Ð*Ð*àP¨sÐPÐP¸¸ÐPÐPÈBÐPÐPˆØ�cÑÔˆur>   c                  óÐ  ‡‡— d\  } Št          d‰z  ¦  «        Šˆˆfd„t          | ¦  «        D ¦   «         }|d         |d         z                        ¦   «         dk    sJ ‚t          |¦  «        \  }}t	          |¦  «        dk    s
J d¦   «         ‚t          |¦  «        D ]H\  }}|                     t          |¦  «        ¦  «        ||         z
                       ¦   «         dk    sJ ‚ŒId S )N)rp   r?   zx:%dc           	      óp   •‡— g | ]1Št          t          ˆˆfd „t          ‰¦  «        D ¦   «         ¦  «        ‘Œ2S )c                 ó2   •— g | ]}‰|         d ‰|z   z  z  ‘ŒS )rz   rU   )r9   r�   r:   rT   s     €€r;   r<   z4test_cse__performance.<locals>.<listcomp>.<listcomp>5  s*   ø€ Ð=Ð=Ð=¨!�Q�q”T˜2  1¡™+Ñ%Ð=Ð=Ð=r>   )r   r   rF   )r9   r:   ÚntermsrT   s    @€€r;   r<   z)test_cse__performance.<locals>.<listcomp>4  sR   øø€ ð ð ð àõ 	�sÐ=Ð=Ð=Ð=Ð=­u°V©}¬}Ð=Ñ=Ô=Ñ>Ô>ðð ð r>   r   rj   z!exprs[0] == -exprs[2], i.e. a CSE)r   rF   Úsimplifyr   r_   Ú	enumeraterî   r   )ÚnexprsrŸ   ÚsubstrE  r:   ra   rK  rT   s         @@r;   Útest_cse__performancerP  1  s  øø€ Ø�N€FˆFÝ�˜‘Ñ Ô €Aðð ð ð ð å�v‘”ðñ ô €Eð �!ŒH�u˜Q”xÑ×)Ò)Ñ+Ô+¨qÒ0Ð0Ð0Ð0Ý�U‘”�J€Eˆ3Ýˆu‰:Œ:˜Š>ˆ>ˆ>Ð>‰>Œ>ˆ>Ý˜#‘”ð Dð D‰ˆˆ1Ø—’•x ‘”Ñ'Ô'¨%°¬(Ñ2×<Ò<Ñ>Ô>À!ÒCÐCÐCÐCÐCðDð Dr>   c                  óH  — t           t          z   dt           z   t          z   t           t          z   t          z   dt           z   t          z   t          z   g} t          | ¦  «        \  }}dt	          |¦  «        t          d„ |D ¦   «         ¦  «        z   t          |¦  «        z   k    sJ ‚d S )Nr[   rp   rÓ   c              3   óD   K  — | ]\  }}|                      ¦   «         V — Œd S rJ   r"   )r9   r#  Úvs      r;   r  z#test_issue_12070.<locals>.<genexpr>B  s.   è è € Ð!BÐ!B±D°A°q !§+¢+¡-¤-Ð!BÐ!BÐ!BÐ!BÐ!BÐ!Br>   )rT   r2   rO   r   r_   r,  r#   )rŸ   rO  rE  s      r;   Útest_issue_12070rT  ?  s’   € Ý•‰U�A�‘E�A‘I�q¥1™u¥q™y¨!­a©%µ!©)µa©-Ð8€EÝ�U‘”�J€Eˆ3Ø•�U‘”�cÐ!BÐ!B¸EÐ!BÑ!BÔ!BÑBÔBÑBÝ˜3‘”ñ ò !ð !ð !ð !ð !ð !r>   c                  óŒ   — t           dt           dz  z  t          dz  z   z  } t          | ¦  «        d         d         }|| k    sJ ‚d S )Néüÿÿÿr[   rj   r   )rT   r2   r   )rq   Úcse_eqs     r;   Útest_issue_13000rX  F  s@   € Ý	
ˆB�q�!‰t‰G•a˜‘d‰NÑ	€BÝ�‰WŒW�QŒZ˜Œ]€FØ�RŠ<ˆ<ˆ<ˆ<ˆ<ˆ<r>   c                  óÐ   — t          t          dz  dt          z  z   dz
  d¦  «        t          t          dz  dt          z  z   dz
  d¦  «        z   } t          | ¦  «        g | gfk    sJ ‚d S )Nro   é   r[   r   rj   )r   rT   r   rÂ   s    r;   Útest_issue_18203r[  L  sc   € Ý	•�A‘˜�1™‘˜q‘ !Ñ	$Ô	$¥w­q°!©t°b½±d©{¸Q©ÀÑ'BÔ'BÑ	B€BÝˆr‰7Œ7�r˜B˜4�jÒ Ð Ð Ð Ð Ð r>   c                  óÈ   — t          t          t          z   t          t          z   d¬¦  «        } t          | ¦  «        t          t          t          z   fgt          dz  gfk    sJ ‚d S )NF©Úevaluater[   )r
   rT   r2   r   r^   rÂ   s    r;   Útest_unevaluated_mulr_  Q  sP   € Ý	�Q•‰U•A�‘E EÐ	*Ñ	*Ô	*€BÝˆr‰7Œ7��Q¥™U˜�}¥r¨1¡u gÐ.Ò.Ð.Ð.Ð.Ð.Ð.r>   c                  ó  ‡— ddl m}  t          d¦  «        \  }}}}}t          t          z   dz
  dz  t          t          t          z   t          t          z   dt          z  dz   z  t          t          z   dz
  dz  z   dt          z  dz   t          t          z   z  g}t          || ¬¦  «        \  Š}‰s¨J |t          t          t          z   ft          t          dz
  dz  ft          dt          z  dz   f|t          t          z  t          z   f|t          t          z  ft          d f|t          ft          d f|t          ft          d f|t          fg|||||ffk    ¦   «         ‚‰ 	                    ¦   «          d„ ‰D ¦   «         Š|ˆfd„|D ¦   «         k    sJ ‚d S )	Nr   )Úcse_release_variablesz_:5rj   r[   r¿   c                 ó    — g | ]\  }}|®||f‘ŒS rJ   rU   )r9   r  rS  s      r;   r<   z.test_cse_release_variables.<locals>.<listcomp>c  s!   € Ð/Ð/Ð/‘D�A�q  ˆ!ˆQˆ   r>   c                 ó:   •— g | ]}|                      ‰¦  «        ‘ŒS rU   )rî   )r9   r:   rÔ   s     €r;   r<   z.test_cse_release_variables.<locals>.<listcomp>d  s#   ø€ Ð(Ð(Ð( �1—6’6˜!‘9”9Ð(Ð(Ð(r>   )
Úsympy.simplify.cse_mainra  r   rT   r2   r   r^   r{   r€   Úreverse)	ra  Ú_0Ú_1Ú_2Ú_3Ú_4Úeqsra   rÔ   s	           @r;   Útest_cse_release_variablesrl  V  s�  ø€ Ø=Ð=Ð=Ð=Ð=Ð=Ý  ™œÑ€BˆˆB��BÝ•‰E�A‰I˜‰>�1Ý	�A‰••A‘˜�!™˜a™Ñ ¥A­¡E¨A¡I°¡>Ñ1Ø	
�1‰ˆq‰•A�‘EÑð€Cõ ˆsÐ 5Ð6Ñ6Ô6�D€A€qàð Fð FˆaÝ��Q‰€K•"•r˜A‘v ‘kÐ"¥R¨­1©¨q© MØ��B‰•‰Ð�r�2�r™6�l¥R¨ J°µR°Ýˆ€J�•R��2˜t˜* r­1 gð/ð 24°R¸¸RÀÐ0DðFò Fñ Fô Fˆ1ð ‡I‚I�K„K€KØ/Ð/˜AÐ/Ñ/Ô/€AØÐ(Ð(Ð(Ð( aÐ(Ñ(Ô(Ò(Ð(Ð(Ð(Ð(Ð(r>   c                  ón  — d„ }  | t           ¦  «        g t           fk    sJ ‚ | d¦  «        g dfk    sJ ‚t           g}t          t          t          fD ]'} |  ||¦  «        ¦  «        g  ||¦  «        fk    sJ ‚Œ( | t	          |Ž ¦  «        g t	          |Ž fk    sJ ‚t           di} | |¦  «        g |fk    sJ ‚d S )Nc                 ó$   — t          | d¬¦  «        S )NF)rC   r   )rT   s    r;   ú<lambda>ztest_cse_list.<locals>.<lambda>h  s   € •S˜ Ð'Ñ'Ô'€ r>   rT   rj   )rT   rC   ÚtupleÚsetr   )Ú_cseÚitr™   rš   s       r;   Útest_cse_listrt  g  så   € Ø'Ð'€DØˆ4•‰7Œ7�r�1�gÒÐÐÐØˆ4�‰9Œ9˜˜S˜	Ò!Ð!Ð!Ð!Ý
ˆ€BÝ•E�3Ðð *ð *ˆØˆt�A�A�b‘E”E‰{Œ{˜r 1 1 R¡5¤5˜kÒ)Ð)Ð)Ð)Ð)àˆ4•�r�
ÑÔ ¥E¨2 JÐ/Ò/Ð/Ð/Ð/Ý	
ˆAˆ€AØˆ4�‰7Œ7�r˜1�gÒÐÐÐÐÐr>   c                  ón   — t          ddd¦  «        } t          |  | z  | z
  ¦  «        |  | z  | z
  k    sJ ‚d S )Nr�   r[   )r0   r   )r�   s    r;   Útest_issue_18991rv  s  sF   € Ý�S˜!˜QÑÔ€AÝ�Q�B˜‘F˜Q‘JÑÔ A 2¨¡6¨A¡:Ò-Ð-Ð-Ð-Ð-Ð-r>   c                  óZ   — t          ddd¬¦  «        g} t          | ¦  «        g | fk    sJ ‚d S )Nrj   r[   Fr]  )r
   r   )rž   s    r;   Útest_unevaluated_Mulrx  x  s:   € Ý	ˆQ�˜EÐ	"Ñ	"Ô	"Ð#€AÝˆq‰6Œ6�b˜!�WÒÐÐÐÐÐr>   c                  óÒ   — t          t          d¦  «        ¦  «                             dd¦  «        } t          | ¦  «        }t	          |¦  «        }|g t          | ¦  «        gfk    sJ ‚d S ©NúA:4r[   )r.   r   Úreshaper   r   ©r�   rT   r²   s      r;   Ú"test_cse_matrix_expression_inverser~  }  s_   € Ý�W U™^œ^Ñ,Ô,×4Ò4°Q¸Ñ:Ô:€AÝ�‰
Œ
€AÝ�1‰vŒv€HØ˜�W Q™ZœZ˜LÐ)Ò)Ð)Ð)Ð)Ð)Ð)r>   c                  ó  — t          t          d¦  «        ¦  «                             dd¦  «        } t          t          d¦  «        ¦  «        }t          t	          | ¦  «        |¦  «        }t          |¦  «        }|g |gfk    sJ ‚d S ©Nr{  r[   zb:2)r.   r   r|  r   r   r   ©r�   r˜   rT   r²   s       r;   Ú)test_cse_matrix_expression_matmul_inverser‚  „  su   € Ý�W U™^œ^Ñ,Ô,×4Ò4°Q¸Ñ:Ô:€AÝ�W U™^œ^Ñ,Ô,€AÝ�w�q‰zŒz˜1ÑÔ€AÝ�1‰vŒv€HØ˜˜Q˜C�yÒ Ð Ð Ð Ð Ð r>   c                  óÎ   — t          t          d¦  «        ¦  «                             dd¦  «        } t          t          j        | ¦  «        }t          |¦  «        }|g |gfk    sJ ‚d S rz  ©r.   r   r|  r   r   ÚNegativeOner   r}  s      r;   Útest_cse_matrix_negate_matrixr†  Œ  s^   € Ý�W U™^œ^Ñ,Ô,×4Ò4°Q¸Ñ:Ô:€AÝ�qŒ}˜aÑ Ô €AÝ�1‰vŒv€HØ˜˜Q˜C�yÒ Ð Ð Ð Ð Ð r>   c                  ó0  — t          t          d¦  «        ¦  «                             dd¦  «        } t          t          d¦  «        ¦  «                             dd¦  «        }t          t          j        | |¦  «        }t          |¦  «        }|g |gfk    sJ ‚d S ©Nr{  r[   zB:4r„  ©r�   rŽ   rT   r²   s       r;   Ú+test_cse_matrix_negate_matmul_not_extractedrŠ  “  sƒ   € Ý�W U™^œ^Ñ,Ô,×4Ò4°Q¸Ñ:Ô:€AÝ�W U™^œ^Ñ,Ô,×4Ò4°Q¸Ñ:Ô:€AÝ�qŒ}˜a Ñ#Ô#€AÝ�1‰vŒv€HØ˜˜Q˜C�yÒ Ð Ð Ð Ð Ð r>   c                  ó|  — t          t          d¦  «        ¦  «                             dd¦  «        } t          t          d¦  «        ¦  «                             dd¦  «        }t          t          j        t          | |¦  «        ¦  «        }t          |¦  «        }|g t          t          j        | |¦  «        gfk    sJ ‚d S rˆ  r„  r‰  s       r;   Ú'test_cse_matrix_nested_matmul_collapsedrŒ  ›  s™   € å�W U™^œ^Ñ,Ô,×4Ò4°Q¸Ñ:Ô:€AÝ�W U™^œ^Ñ,Ô,×4Ò4°Q¸Ñ:Ô:€AÝ�qŒ}�f Q¨™lœlÑ+Ô+€AÝ�1‰vŒv€HØ˜�V¥A¤M°1°aÑ8Ô8Ð9Ð:Ò:Ð:Ð:Ð:Ð:Ð:r>   c                  óì   — t          t          d¦  «        ¦  «                             dd¦  «        } t          t          t          | ¦  «        ¦  «        ¦  «        }t	          |¦  «        }|g | gfk    sJ ‚d S rz  )r.   r   r|  r   r   r}  s      r;   Ú0test_cse_matrix_optimize_out_single_argument_mulrŽ  ¤  sh   € Ý�W U™^œ^Ñ,Ô,×4Ò4°Q¸Ñ:Ô:€AÝ�v•f˜Q‘i”iÑ Ô Ñ!Ô!€AÝ�1‰vŒv€HØ˜˜Q˜C�yÒ Ð Ð Ð Ð Ð r>   c            	      óv  — t          t          d¦  «        ¦  «                             dd¦  «        } t          t	          t	          t	          | ¦  «        ¦  «        ¦  «        t	          t	          | ¦  «        ¦  «        t	          | ¦  «        | ¦  «        }t          |¦  «        }|g t	          d| ¦  «        gfk    sJ ‚d S ©Nr{  r[   rn   )r.   r   r|  r   r   r   r}  s      r;   Ú9test_cse_matrix_optimize_out_single_argument_mul_combinedr‘  «  ó“   € å�W U™^œ^Ñ,Ô,×4Ò4°Q¸Ñ:Ô:€AÝ�v•f�V A™YœYÑ'Ô'Ñ(Ô(­&µ¸±´Ñ*;Ô*;½VÀA¹Y¼YÈÑJÔJ€AÝ�1‰vŒv€HØ˜�V A q™\œ\˜NÐ+Ò+Ð+Ð+Ð+Ð+Ð+r>   c            	      ó  — t          t          d¦  «        ¦  «                             dd¦  «        } t          t          t          t          | ¦  «        ¦  «        ¦  «        ¦  «        }t	          |¦  «        }|g | gfk    sJ ‚d S rz  )r.   r   r|  r   r   r}  s      r;   Ú0test_cse_matrix_optimize_out_single_argument_addr”  ³  sp   € Ý�W U™^œ^Ñ,Ô,×4Ò4°Q¸Ñ:Ô:€AÝ�v•f�V A™YœYÑ'Ô'Ñ(Ô(Ñ)Ô)€AÝ�1‰vŒv€HØ˜˜Q˜C�yÒ Ð Ð Ð Ð Ð r>   c            	      óv  — t          t          d¦  «        ¦  «                             dd¦  «        } t          t	          t	          t	          | ¦  «        ¦  «        ¦  «        t	          t	          | ¦  «        ¦  «        t	          | ¦  «        | ¦  «        }t          |¦  «        }|g t          d| ¦  «        gfk    sJ ‚d S r�  )r.   r   r|  r   r   r   r}  s      r;   Ú9test_cse_matrix_optimize_out_single_argument_add_combinedr–  º  r’  r>   c                  óò   — t          t          d¦  «        ¦  «                             dd¦  «        } t          t          d¦  «        ¦  «        }t          | |¦  «        }t	          |¦  «        }|g |gfk    sJ ‚d S r€  )r.   r   r|  r   r   r�  s       r;   Ú'test_cse_matrix_expression_matrix_solver˜  Â  so   € Ý�W U™^œ^Ñ,Ô,×4Ò4°Q¸Ñ:Ô:€AÝ�W U™^œ^Ñ,Ô,€AÝ�A�qÑÔ€AÝ�1‰vŒv€HØ˜˜Q˜C�yÒ Ð Ð Ð Ð Ð r>   c            	      óø  — t          t          d¦  «        ¦  «                             dd¦  «        } t          t          d¦  «        ¦  «        }t          t	          t          t          | ¦  «        | ¦  «        ¦  «        t          | ¦  «        |¦  «        }t          |¦  «        }t          ddd¦  «        }t          t	          t          || ¦  «        ¦  «        ||¦  «        }||t          | ¦  «        fg|gfk    sJ ‚d S )NzX:4r[   zy:2r^   )r.   r   r|  r   r   r   r   r0   )ÚXr2   r˜   r²   r^   Úreduced_expr_expecteds         r;   Ú!test_cse_matrix_matrix_expressionrœ  Ê  sÓ   € Ý�W U™^œ^Ñ,Ô,×4Ò4°Q¸Ñ:Ô:€AÝ�W U™^œ^Ñ,Ô,€AÝ�w•v�i¨™lœl¨AÑ.Ô.Ñ/Ô/µ¸1±´¸qÑAÔA€AÝ�1‰vŒv€HÝ	�d˜A˜qÑ	!Ô	!€BÝ"¥7­6°"°a©=¬=Ñ#9Ô#9¸2¸qÑAÔAÐØ˜"�i¨™lœlÐ+Ð,Ð/DÐ.EÐFÒFÐFÐFÐFÐFÐFr>   c                  óÒ  — d} t          t          d| › �¦  «        ¦  «        }t          t          d| | z  › �¦  «        ¦  «                             | | ¦  «        }t          t          d| | z  › �¦  «        ¦  «                             | | ¦  «        }t          t          d| | z  › �¦  «        ¦  «                             | | ¦  «        }t          t          d| › �¦  «        ¦  «        }t          |t	          |t          |¦  «        t          t          |t	          ||t          |¦  «        ¦  «        ¦  «        ¦  «        t          t	          ||¦  «        t	          t          j        |¦  «        ¦  «        ¦  «        ¦  «        }t          |t	          t          j        |t          |¦  «        t          t          |t	          ||t          |¦  «        ¦  «        ¦  «        ¦  «        ||¦  «        ¦  «        }t          ||g¦  «        }t          d| | ¦  «        }	t          d| | ¦  «        }
|	t          |¦  «        f|
t          t          |t	          |||	¦  «        ¦  «        ¦  «        fg}t          |t	          ||	|
t          t	          ||¦  «        t	          t          j        |¦  «        ¦  «        ¦  «        ¦  «        t          |t	          t          j        ||	|
||¦  «        ¦  «        g}|||fk    sJ ‚d	S )
aÇ  Kalman Filter example from Matthew Rocklin's SciPy 2013 talk.

    Talk titled: "Matrix Expressions and BLAS/LAPACK; SciPy 2013 Presentation"

    Video: https://pyvideo.org/scipy-2013/matrix-expressions-and-blaslapack-scipy-2013-pr.html

    Notes
    =====

    Equations are:

    new_mu = mu + Sigma*H.T * (R + H*Sigma*H.T).I * (H*mu - data)
           = MatAdd(mu, MatMul(Sigma, Transpose(H), Inverse(MatAdd(R, MatMul(H, Sigma, Transpose(H)))), MatAdd(MatMul(H, mu), MatMul(S.NegativeOne, data))))
    new_Sigma = Sigma - Sigma*H.T * (R + H*Sigma*H.T).I * H * Sigma
              = MatAdd(Sigma, MatMul(S.NegativeOne, Sigma, Transpose(H)), Inverse(MatAdd(R, MatMul(H*Sigma*Transpose(H)))), H, Sigma))

    r[   zmu:zSigma:zH:zR:zdata:r^   r{   N)r.   r   r|  r   r   r   r   r   r…  r   r0   )ÚNÚmuÚSigmaÚHr%  ÚdataÚnew_muÚ	new_Sigmar²   r^   r{   Úreplacements_expectedÚreduced_exprs_expecteds                r;   Útest_cse_matrix_kalman_filterr§  Ô  sÌ  € ð$ 	
€AÝ	�g i¨A i iÑ0Ô0Ñ	1Ô	1€BÝ ¥Ð)9°!°a±%Ð)9Ð)9Ñ!:Ô!:Ñ;Ô;×CÒCÀAÀqÑIÔI€EÝ�W \¨!¨a©% \ \Ñ2Ô2Ñ3Ô3×;Ò;¸A¸qÑAÔA€AÝ�W \¨!¨a©% \ \Ñ2Ô2Ñ3Ô3×;Ò;¸A¸qÑAÔA€AÝ¥¨°¨¨Ñ 4Ô 4Ñ5Ô5€DÝ�B�˜u¥i°¡l¤lµG½FÀ1ÅfÈQÐPUÕW`ÐabÑWcÔWcÑFdÔFdÑ<eÔ<eÑ4fÔ4fÕhnÕouÐvwÐy{Ño|Ôo|õ  Eõ  FGô  FSð  UYñ  Zô  Zñ  i[ô  i[ñ  \ô  \ñ  ]ô  ]€FÝ�u�f¥Q¤]°E½9ÀQ¹<¼<ÍÕQWÐXYÕ[aÐbcÐejÕluÐvwÑlxÔlxÑ[yÔ[yÑQzÔQzÑI{ÔI{Ð}~ð  AFñ  Gô  Gñ  Hô  H€IÝ�F˜IÐ&Ñ'Ô'€HÝ	�d˜A˜qÑ	!Ô	!€BÝ	�d˜A˜qÑ	!Ô	!€Bà	�Y�q‰\Œ\ÐØ	�W•V˜A�v a¨°Ñ3Ô3Ñ4Ô4Ñ5Ô5Ð6ðÐõ
 	ˆr•6˜%  R­µ°q¸"±´½vÅaÄmÐUYÑ?ZÔ?ZÑ)[Ô)[Ñ\Ô\Ñ]Ô]Ýˆu•f�Qœ]¨E°2°r¸1¸eÑDÔDÑEÔEðÐð Ð-Ð/EÐFÒFÐFÐFÐFÐFÐFr>   )›Ú	functoolsr   rD   Úoperatorr   Úsympy.codegen.matrix_nodesr   Úsympy.core.addr   Úsympy.core.containersr   Úsympy.core.exprr   r¸   r	   Úsympy.core.mulr
   Úsympy.core.powerr   Úsympy.core.relationalr   Úsympy.core.singletonr   Úsympy.core.symbolr   r   Úsympy.core.sympifyr   Ú&sympy.functions.elementary.exponentialr   Ú(sympy.functions.elementary.miscellaneousr   Ú$sympy.functions.elementary.piecewiser   Ú(sympy.functions.elementary.trigonometricr   r   Úsympy.matrices.denser   Úsympy.matrices.expressionsr   r   r   r   Úsympy.polys.rootoftoolsr   Úsympy.series.orderr   rd  r   Úsympy.simplify.simplifyr   Úsympy.tensor.indexedr    r!   r#   Úsympy.simplify.cse_optsr$   r%   Úsympy.functions.special.hyperr&   Úsympy.simplifyr'   r(   Úsympy.utilities.iterablesr)   Úsympy.testing.pytestr*   r+   Úsympy.matricesr,   r-   r.   r/   r0   ru   rT   r2   rO   r^   r{   r€   rÈ   rÉ   rÊ   rË   rÌ   rÍ   rÎ   Úx10Úx11Úx12rH   rM   rP   rV   rY   rh   rl   rr   rv   r}   r†   r�   r“   r•   r    r¢   r¥   r§   r©   r«   r´   rº   r½   rÃ   rÑ   rÕ   rÝ   rà   rä   rç   rê   rô   r÷   rû   r  r  r(  r.  r0  r=  rA  rG  rP  rT  rX  r[  r_  rl  rt  rv  rx  r~  r‚  r†  rŠ  rŒ  rŽ  r‘  r”  r–  r˜  rœ  r§  rU   r>   r;   ú<module>rÇ     s,  ðØ Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø +Ð +Ð +Ð +Ð +Ð +Ø (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø $Ð $Ð $Ð $Ð $Ð $Ø "Ð "Ð "Ð "Ð "Ð "Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø &Ð &Ð &Ð &Ð &Ð &Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø :Ð :Ð :Ð :Ð :Ð :Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ +Ð +Ð +Ð +Ð +Ð +Ø  Ð  Ð  Ð  Ð  Ð  Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3à )Ð )Ð )Ð )Ð )Ð )Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø -Ð -Ð -Ð -Ð -Ð -Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .ð5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5à 3Ð 3Ð 3Ð 3Ð 3Ð 3ð ˆW�YÑÔ�
€€1€aˆØ8?¸À¹¼Ñ 5€€BˆˆB��B˜˜B  B¨¨S°#ð	Að 	Að 	Aðð ð ðð ð ð6ð 6ð 6ð4ð 4ð 4ð
4ð 
4ð 
4ð4ð 4ð 4ð	!ð 	!ð 	!ð)ð )ð )ðAð Að Að*.ð .ð .ð< ð/ð /ñ „ð/ðð ð ð ð/ð /ñ „ð/ð ðð ñ „ðð ð;ð ;ñ „ð;ð ð  ð  ð
4ð 4ð 4ð
?ð ?ð ?ð9ð 9ð 9ð
4ð 4ð 4ð'ð 'ð 'ð,(ð (ð (ð*3ð 3ð 3ðð ð ð0Gð Gð Gð	!ð 	!ð 	!ðeð eð eðð ð ð ð ð ðCð Cð Cð
<ð <ð <ð<ð <ð <ðð ð ð""ð ""ð ""ðJ+ð +ð +ð"/ð "/ð "/ðJ ðð ñ „ðð*ð ð ð
tð tð tðð ð ð
ð 
ð 
ðDð Dð Dð!ð !ð !ðð ð ð!ð !ð !ð
/ð /ð /ð
)ð )ð )ð"
ð 
ð 
ð.ð .ð .ð
ð ð ð
*ð *ð *ð!ð !ð !ð!ð !ð !ð!ð !ð !ð ð;ð ;ñ „ð;ð!ð !ð !ð ð,ð ,ñ „ð,ð!ð !ð !ð ð,ð ,ñ „ð,ð!ð !ð !ðGð Gð Gð%Gð %Gð %Gð %Gð %Gr>   