+
    ic                        ^ RI Ht ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
 ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^ RI H!t! ^ RI"H#t#H$t$ ^ RI%H&t& ^ RI'H(t(H)t)H*t*H+t+ ^ RI,H-t- ^ RI.H/t/ ^ RI0H1t1 ^ RI2H3t3 ^ RI4H5t5H6t6 ^ RIH7t7 ^ RI8H9t9H:t: ^ RI;H<t< ^ RI=H>t>H?t? ^ RI@HAtA ^ RIBHCtCHDtD ^ R IEHFtFHGtGHHtHHItI ^ R!I'HJtJ ]! R"4      w  tKtLtMtN]! R#4      w  tOtPtQtRtStTtUtVtWtXtYtZt[R$ t\R% t]R& t^R' t_R( t`R) taR* tbR+ tcR, tdR- teR. tf]CR/ 4       tgR0 th]CR1 4       ti]CR2 4       tj]CR3 4       tkR4 tlR5 tmR6 tnR7 toR8 tpR9 tqR: trR; tsR< ttR= tuR> tvR? twR@ txRA tyRB tzRC t{RD t|RE t}RF t~RG tRH t]CRI 4       tRJ tRK tRL tRM tRN tRO tRP tRQ tRR tRS tRT tRU tRV tRW tRX tRY tRZ t]CR[ 4       tR\ t]CR] 4       tR^ t]CR_ 4       tR` tRa tRb tR# )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                     \         P                  ! R R7      p \        \        P                  ! V ^ ^
4      4      \        ^ ^
4       Uu. uF  p\        RV,          4      NK  	  up8X  g   Q h\         P                  ! R R7      p \        \        P                  ! V ^
^4      4      \        ^
^4       Uu. uF  p\        RV,          4      NK  	  up8X  g   Q h\         P                  ! 4       p \        \        P                  ! V ^ ^
4      4      \        ^ ^
4       Uu. uF  p\        RV,          4      NK  	  up8X  g   Q hR# u upi u upi u upi )y)prefixzy%szx%sN)r'   numbered_symbolslist	itertoolsisliceranger   )nsis     [/var/www/html/photoedit/myenv/lib/python3.14/site-packages/sympy/simplify/tests/test_cse.pytest_numbered_symbolsr<   +   s/   		"	"#	.B	  
Ar 38B<@<auqy)<@A A A		"	"#	.B	  
B 49"bMBMq	*MBC C C		"	"	$B	  
Ar 38B<@<auqy)<@A A A A C As   D</EEc                     V \         ,           # N)r2   exprs   &r;   opt1rA   9   s    !8O    c                     V \         ,          # r>   )zr?   s   &r;   opt2rE   =   s    6MrB   c                  *   \         P                  ! \        \        R 3.4      \        \        ,           8X  g   Q h\         P                  ! \        R \        3.4      \        8X  g   Q h\         P                  ! \        R.4      \        8X  g   Q h\         P                  ! \        \        \
        3.4      \        \        ,           8X  g   Q h\         P                  ! \        \        R 3\
        R 3.4      \        \        ,           \        ,          8X  g   Q hR # N)NN)r'   preprocess_for_csexrA   r2   rE   rD    rB   r;   test_preprocess_for_cserK   A   s    &&qD$<.9QUBBB&&qD$<.9Q>>>&&q<.9Q>>>&&qD$<.9QUBBB&&	T4L4,')-.UAI6 6 6rB   c                  *   \         P                  ! \        \        R 3.4      \        8X  g   Q h\         P                  ! \        R \        3.4      \        \        ,           8X  g   Q h\         P                  ! \        R.4      \        8X  g   Q h\         P                  ! \        \        \
        3.4      \        \        ,          8X  g   Q h\         P                  ! \        R \        3R \
        3.4      \        \        ,          \        ,           8X  g   Q hR # rG   )r'   postprocess_for_cserI   rA   r2   rE   rD   rJ   rB   r;   test_postprocess_for_cserN   J   s    ''T4L>:a???''T4L>:a!eCCC''L>:a???''T4L>:acAAA''	T4L4,'),-aC!G4 4 4rB   c                     \        \        \        \        ,           ^4      \	        \        \        ,           4      4      p \        V .4      w  rV\        \        \        ,           3.8X  g   Q hV\	        \        4      \        ^,          ,           .8X  g   Q h\        ^*.4      w  pw  p\        V4      ^ 8X  d   V^*8X  g   Q h\        R.4      w  pw  p\        V4      ^ 8X  d   VR8X  g   Q hR#    g      ?N)r   r   rI   r2   r   r   x0lenesubstsreducedsubst42red42
subst_halfred_halfs          r;   test_cse_singler\   T   s    CAqM4A;'A1#hOFr1q5k]"""tBx"a%'((((RD	GXew<1",,!3%jJz?aHO33OrB   c                  <   \        \        \        \        ,           ^4      \	        \        \        ,           4      4      p \        V 4      w  rV\        \        \        ,           3.8X  g   Q hV\	        \        4      \        ^,          ,           .8X  g   Q h\        \        ^..4      4      w  r\        V^ ,          \        4      '       g   Q h\        ^*4      w  pw  p\        V4      ^ 8X  d   V^*8X  g   Q h\        R4      w  pw  p\        V4      ^ 8X  d   VR8X  g   Q hR# rP   )
r   r   rI   r2   r   r   rR   r   
isinstancerS   rT   s          r;   test_cse_single2r_   a   s    CAqM4A;'A!fOFr1q5k]"""tBx"a%'((((&1#-(OFgaj&))))BGXew<1",,!#hJz?aHO33OrB   c                  &   \        \        \        4      p \        V .4      w  rV. 8X  g   Q hV\        \        ,           .8X  g   Q h\	        R\        ^3R. \        4      \	        R\        ^3R. \        4      ,           p\        V4      . V.38X  g   Q hR# )   N)ra   rQ   )   )ra      )r   rI   r2   r   r&   )rU   rV   rW   eqs       r;   test_cse_not_possiblere   p   s    Aq	A1#hOFR<<q1ug
&1a&$A
.
&1a&$A
./Br7rB4j   rB   c                  n   \        \        \        \        ,          \        ,           ^4      \        \        \        ,          \        ,           4      4      p \        V .4      w  rV\        \        \        ,          \        ,           3.8X  g   Q hV\        \        4      \        ^,          ,           .8X  g   Q hR# rQ   N)r   r   wrI   r2   r   r   rR   )rU   rV   rW   s      r;   test_nested_substitutionri   |   so    C!aOT!A#']+A1#hOFr1Q37m_$$$tBx"a%'((((rB   c                  J   \         \        ,
          \        \        ,
          ,          \        \         \        ,
          \        \        ,
          ,          4      ,           p \	        V .\
        P                  \
        P                  3.R 7      w  rV\        \         \        ,
          \        \        ,
          ,          3.8X  g   Q hV\        ) \        \        ) 4      ,           .8X  g   Q h\         \        ,
          ) \        \        ,
          ,          \        \         \        ,
          ) \        \        ,
          ,          4      ,           p \	        V .\
        P                  \
        P                  3.R 7      w  rV\        \         \        ,
          \        \        ,
          ,          3.8X  g   Q hV\        \        \        4      ,           .8X  g   Q hR^\         ,          ,           pV\         ,          V) ^,          ,          ^V,          \         ,          ,
          p \	        V \
        P                  \
        P                  3.R 7      . ^ .38X  g   Q h\	        \        \         ,           \        ,           \        ,           \        \        ,
          \        ,
          ,          \        \         ,           ^,          ,          4      \        \        \         ,           3\        \        \        ,           3.\        \        ,
          \        \        ,           ,          \        ^,          ,          .38X  g   Q hR# )optimizationsN)rI   r2   rD   r   r   r(   r$   r%   rR   rh   x1)rU   rV   rW   ns       r;   test_subtraction_optrp      s   	
QQ#q1uq1uo..A	
X--x/@/@ABDOFrAEAE?+,,,,sS"X~&&&&
a%!a%3QxQ/00A	
X--x/@/@ABDOFrAEAE?+,,,,rCG|n$$$
QqSA	!aR!Gac!eAq("2"2H4E4E!F GH	aS	  QQQ+a!eaZ78q1u+AE{	#q2vR&8Q&>%?@A A ArB   c                  	   \         \        ,           \        ,          p \         \        ,           \        ,          p\	        W.4      w  r#V\
        \         \        ,           3.8X  g   Q hV\
        \        ,          \
        \        ,          .8X  g   Q h\        \         ,          \        ,          \        ,           \        \        ,          .p\	        V4      w  r#\	        \        V4      4      w  rVW%8X  g   Q hV\        \         \
        ,          ,           \
        .8X  g   Q h\        \         ,          \        ,          \        \         ,          \        ,          \        ,           \        \        ,          .p\	        V4      w  r#\	        \        V4      4      w  rVW%8X  g   Q hV\        \        \        ,           \
        .8X  g   Q h\         \        ,
          \        \        ,
          ,          \         \        ,
          \        \        ,
          .p\	        V4      w  r#\	        \        V4      4      w  rVV\
        \        ) 3\        \         \
        ,           3\        \
        \        ,           3.8X  g   Q hV\
        \        ) 3\        \
        \        ,           3\        \         \
        ,           3.8X  g   Q hV\        \        ,          \        \        .8X  g   Q h\        \        ,          \        ,           \         ,           \        ,           \        ,           \        \         ,          \        ,          .p\	        V4      \
        \        \        ,          3.\        \         ,           \
        ,           \        ,           \        ,           \         \
        ,          .38X  g   Q h\	        \         \        ,           \         \        ,           \        ,           .4      \
        \         \        ,           3.\
        \        \
        ,           .38X  g   Q h\	        \         \        ,           \         \        ,           .4      . \         \        ,           \         \        ,           .38X  g   Q h\	        \         \        ,          \        \         \        ,          ,           \         \        ,          \        ,          ^,           .4      \
        \         \        ,          3.\
        \        \
        ,           ^\
        \        ,          ,           .38X  g   Q hR# rc   N)	rI   r2   rD   rh   r   rR   reversedrn   x2)e1e2rV   rW   lrsubsts_s          r;   test_multiple_expressionsrz      s   
a%B
a%B2(mOFr1q5k]"""r!tRTl"""	
1QAaCA!fOFXa[!JGq1R4xn$$$	
1Q!A	1Q3A!fOFXa[!JGr262&&&&
a%!a%!a%Q'A!fOFXa[!JGrA2hQVr26l;;;;QBx"b1fAF|<<<<r"ub"o%%%	
1q1q1	ac!e$Aq6AaCykAEBJNQ$6"#=>>>>Aq1uqy!"QU}r1r6l&CCCCAq1u~2Aq1u~"6666!Q1Wac!eai()qs)r1r61r!t8,-. . .rB   c                     \        R RR7      w  rpW,          V,          W,          .p\        V4      . V38X  g   Q hW,          V,          W,          .p\        V4      \        W,          3.\        V,          \        .38X  g   Q hR# A B CFcommutativeN)r   r   rR   ABCrw   s       r;   test_non_commutative_cser      sq    g51GA!	
QAq6b!W	
QAq6ACykBqD":....rB   c                  (   \        R RR7      w  rpW,          V,          W,          .p\        V4      . V38X  g   Q hW,          V,          W,          .p\        V4      . V38X  g   Q hW,          W,          V,          .p\        V4      . V38X  g   Q hR# r|   r   r   r   s       r;   test_bypass_non_commutativesr      s    g51GA!	
QAq6b!W	
QAq6b!W	
ac!eAq6b!WrB   c                      \        R RR7      w  rp\        RRR7      pW,           WV,           ,          .p\        V4      W1V,           3.W0V,          .38X  g   Q hR# )r}   Fr~   rR   Nr   )r   r   r   rR   rw   s        r;   test_non_commutative_orderr      sT    g51GA!	5	)B	
a1gAq6aCykB":....rB   c                      \        \        \        ^,          ,          \        \        ,          ,           .4      \        \        \        ,          3.\        \        ,          \        ,           .38X  g   Q h\        \        \        ,           ^\        ,          \        ,           .4      \        \        \        ,           3.\        \        \        ,           .38X  g   Q h\        \        ^\        ,          ,           \        ,           \
        ,           \        \        ,           ^,           34      \        \        \        ,           3.\        \        ,           \        ,           \
        ,           \        ^,           .38X  g   Q h\        \        \        ,           \        ,           \
        ,           \        \        ,
          ,          \        \        ,           ,          4      \        \        \        ,           3.\        \        ,           \
        ,           \        \        ,
          ,          \        ,          .38X  g   Q h\        R4      w  rr#rErgW5^,          ,          V,          V,          ^V ,          V,          V,          V,          W,          V,          V^,          ,          3p\        V4      \        WW,          3\        W,          3.W5,          V,          \        ,          ^\        ,          \        ,          W,          V,          \        ,          .38X  g   Q hR# )rQ   za, b, c, d, f, g, j, mN)r   rI   r2   rR   rh   rD   r   rn   )	abcdfgjmexprss	            r;   test_issue_10228r      s   !Q$1~R1I;A"<<<<AqsQw r1q5k]RRL$AAAAAaC!aQ+,
a!eQ
QQ/11 1 1 1QQQ'!a%01
a!ea!a!e,R/062 2 2 2$%=>A!a!tVAXaZ1QqACE!Q$J/Eu:
acRIQr1R47ACE"H =   rB   c                      \        \        \        ^,          ,          \        \        ,          ,           4      \        \        \        ,          3.\        \        ,          \        ,           .38X  g   Q hR# rg   )r   rI   r2   rR   rJ   rB   r;   test_powersr      s>    qAv!|2qs)r!tbyk ::::rB   c                      \        \        \        \        ,
          ,          \        \        \        ,
          ,          ,           R R7      . \        \        ,
          \        \        ,
          ,          .38X  g   Q hR# )basicrk   N)r   rh   rI   r2   rD   rJ   rB   r;   test_issue_4498r      sG    q!a%y1a!e9$G<	q1uq1uo     rB   c                  @   \        \        ^,          \        ^,          ,           \        ^,          ,           \        ^,          ,           RR7      \        \        ^,          3.\        \        ^,          \        ,           \        ,           ^,           ,          .38X  g   Q hR# )rb   r   rk   N)r   rI   rR   rJ   rB   r;   test_issue_4020r      sd    q!tad{QT!AqD(@!Q$ZL2q!tax"}q01234 4 4rB   c                      \        \        \        \        ,          4      \        \        ,          ,          4      \        \        \        ,          3.\        \        4      \        ,          .38X  g   Q hR # r>   )r   r   rI   rR   rJ   rB   r;   test_issue_4203r      s>    s1a4yA~RAJ<#b'"*">>>>rB   c                      \        \        \        ) ^,           ,          \        \        ^,
          ,          ,           ^ 4      p \        V RR7      . R.38X  g   Q hR# )ra   r   rk   TN)r   rI   r   )rU   s    r;   test_issue_6263r      s@    
1qb1f:1q5	!1%Aq(R$L888rB   c                  P   \        R 4      p \        RRR7      p\        W^,          ,          W^,          V^,          ,
          ,          ,           4      R,          R,          pVP                  p\        V4      \        V Uu0 uF  qDP                  kK  	  up4      8X  g   Q hR# u upi )r   rR   T)realNrm   )r   r   free_symbolsrS   name)r   rI   cse_exprfreer:   s        r;   test_issue_25043r      sz    A4 A1T6A!tad{O+,R04H  Dt9T2TVVT233332s    B#
c            
         ^ RI Hp  \        R4      p\        R4      p\        V ! V! \        \
        4      \        \
        3R4      V ! V! \        \
        4      \        \
        3R4      ,           4      w  pw  pV. 8X  g   Q hW@! V! \        \
        4      \        \
        3R4      V ! V! \        \
        4      \        \
        3R4      ,           8X  g   Q h\        V ! V! \        \
        4      \        \
        3^ \        \
        ,           34      V ! V! \        \
        4      \        \
        3^ \        \
        ,           34      ,           4      w  pw  pV\        \        \
        ,           3.8X  g   Q hW@! V! \        \
        4      \        \
        3^ \        34      V ! V! \        \
        4      \        \
        3^ \        34      ,           8X  g   Q hR# )r   )Subsr   r   Nr   ra   )sympy.core.functionr   r	   r   rI   r2   rR   )r   r   r   name_valr@   s        r;   test_dont_cse_tuplesr     sa   (AAQq!Wq!ff%
qAwA
'	()Hgt r>>D1a1a&&11Q7QFF+, - - - Qq!Wq!fq!a%j)
qAwAAE

+	,-Hgt QU}$$$4!Q!Q!R1Qq!Wq!fq"g&' ' ' 'rB   c            	      z	   \        ^\        ^,          ,          \        ^,          ,           4      \        \        ^,          3.\        ^\        ,          ,           .38X  g   Q h\        \        ^,          ^^\        ^,          ,          ,           \        ^,          ,          ,           4      \        \        ^,          3\        ^\        ,          3.\        \        \        ^,           ,          ,           .38X  g   Q h\        ^\        ^,          ,          ^^\        ^,          ,          ,           \        ^,          ,          ,           4      \        \        ^,          3\        ^\        ,          3.\        \        ^,           ,          \        ,           .38X  g   Q h\        \	        ^\        ^,          ,          4      \        ^\        ^,          ,          4      ,           4      \        \        R,          3.\        \        4      \	        \        4      ,           .38X  g   Q h\        \	        \        ^,          4      \        \        ^,          4      ,           4      \        \        ^,          3.\        \        4      \	        \        4      ,           .38X  g   Q h\        \        ^\        ^,          ,           ,          \        \        ^,          ,          \        ,          ,           4      \        \        ^,          3.\        \        ^,           ,          \        \        \        ,          ,          ,           .38X  g   Q h\        \        \        ^,          4      \        ^,          \	        ^\        ^,          ,          4      ,          ,           4      \        \        ^,          3.\        \	        ^\        ,          4      ,          \        \        4      ,           .38X  g   Q h\        ^^\        ^,          ,          ,           \        ^,          ,          4      \        \        R,          3.\        \        ^,           ,          .38X  g   Q h\        \        ^\        ,          ,          \        R\        ,          ,          ,           4      \        \        ^\        ,          ,          3.\        ^\        ,          ,           .38X  g   Q hR# )ra   N)	r   rI   rR   rn   r   r   r2   rD   r   rJ   rB   r;   test_pow_invpowr     s   qAv1}q!t*QrT	{#$ $ $q!tq1QT6z1a4''(q!t*r1R4j	!BR!V$4#567 7 7qAvQq!tVQT))*q!t*r1R4j	!BQK"$4#567 7 7s1QT6{S1a4[()q2w-3r7SW,-./ / /s1a4y3q!t9$%q!t*B#b')*+, , ,q!ad(|a1fQh&'q!t*26
Q1X-./0 0 0s1a4y1a4AadF++,q!t*3qt9s2w./01 1 1AadF
AqD !q2w-2rAv;-() ) )q1Q3x!bd)#$q1Q3x.	B2I;'( ( (rB   c                     \         ^,           \        \         ^,           \        ^,           ,          4      ,           \        \        ^,           4      ,           p \	        V \        \         \        ^,           4      \        ^,
          \        ^,           \         ^,           ,          .\        P                  R7      \        \        ^,           3\        \        ^,           3\         \        3\        \         ^,           3.\        \        \        \        ,          4      ,           \        \        4      ,           \        ^,
          \        \        ,          ..8X  g   Q hR# )ra   postprocessN)rI   r   r2   r   r   r   rD   r'   cse_separaterR   rt   rn   rd   s    r;   test_postprocessr   ,  s    
a%#q1uq1uo&
&QU
3BBq!a%L!a%!a%!a%9))+q1u+AE{QGb!a%[	9	c"R%j3r7	"AE2b51	33 3 3rB   c                  &
   ^ RI Hp Hp \        R4      p\        R4      p\	        W \
        P                  ,           ^V ,          V^V ,          V,
          ^,           \        \        4      ^,          RV ,          ^,           ,          V! ^V ,          V,
          \        \        4      4      ,          V! V^,
          \        \        4      4      ,          V! V4      ,          V! ^V ,          V,
          ^,           4      ,          \        \        4      \        \        4      ^,          RV ,          ^,           ,          ,          V! V\        \        4      4      ,          V! ^V ,          V,
          \        \        4      4      ,          V! V4      ,          V! ^V ,          V,
          ^,           4      ,          \        \        4      \        \        4      ^,          RV ,          ^,           ,          ,          V! V^,
          \        \        4      4      ,          V! ^V ,          V,
          ^,           \        \        4      4      ,          V! V4      ,          V! ^V ,          V,
          ^,           4      ,          \        \        4      ^,          RV ,          ^,           ,          V! V\        \        4      4      ,          V! ^V ,          V,
          ^,           \        \        4      4      ,          V! V4      ,          V! ^V ,          V,
          ^,           4      ,          ^^ \
        P                  \        ^,          V) ^,           RV ,          V,           RV ,          3!  p\        V4      p\        ^V ,          3\        V) \        ,           3\        \        ^,           3\        V^,
          3\        \        \        4      3\        V! \        \        4      3\         \        ^,          ^\        ,
          ,          V! V4      ,          V! \        4      ,          3\"        \         V! \        \        4      ,          3\$        V! V\        4      3\&        \         V! \        \        4      ,          3.
W \
        P                  ,           \        V\        \        \"        ,          \        \"        ,          \$        ,          \        \        ,          \&        ,          \$        \&        ,          ^^ \
        P                  \        ^,          \        ) \        ) \        ) 3.3pWe8X  g   Q hR# )r   )r   r   r   GNr   )	sympy.abcr   r   r	   r   r   Halfr   rD   r   rR   rn   rt   x3x4x5x6x7x8x9)r   r   r   r   tr   anss          r;   test_issue_4499r   4  sT   AA	
J!Q!a!d1gai2a4!8-DQqs	H
7F .a!eT!W%.&&'d.++,QqS1Wq[>.:QabdQh''!T!W5a!aQ7 	1	!a!n	%&*1gtAwqyBqD1H.E&EaAQG '1Q37Q;Q('))*1'../!a!n'=	abdQh!T!W-a!a!Q/ 	1	!a!n	%&'AFFAaC!aA
1		A 	AA
acR!bMBQ<"a!er47m
aBi21B/!4QrU:;b"Qr2Y,=O
a2h"b2rl+	- ZQBrE2b58RU2Xr"u
Q!bS2#s
, 	-	.C 8O8rB   c                     \        \        ^,          ^\        ^,          ,          ,
          ^,
          ^4      p \        V 4      . V .38X  g   Q h\        \	        \        ) \
        ,
          \        ,          \        ,
          \
        ,
          4      4      \        ) \        \
        ,           ,          \        ,
          \
        ,
          8X  g   Q hR# )   N)r   rI   r   r%   r$   r2   rD   )rs    r;   test_issue_6169r   L  s{    1qAv!1%Aq6b1#Y GaR!VQJNQ./0QBAJNQ4FFFFrB   c                  h   ^p \        RV 3R7      p\        RV 3R7      p\        RV ^,
          4      pW^,           ,          W,          ,
          W#^,           ,          W#,          ,
          ,          p^W#^,           ,          W#,          ,
          ,          p\        WE.4      w  rg\        V4      ^ 8  g   Q hR# )rb   r2   )shaperI   r:   N)r!   r    r   rS   )len_yr2   rI   r:   expr1expr2replacementsreduced_exprss           r;   test_cse_Indexedr   T  s    ECx(ACx(ACqAsVAD[1qS6!$;'Eq1vad{OE"%un"5L|q   rB   c                  >   \        R ^^4      p \        V 4      . V .38X  g   Q h\        RRR7      p\        RW4      p\        V4      . V.38X  g   Q h\        V ^ ,          V ^ ,          ,          4      . V ^ ,          V ^ ,          ,          .38X  g   Q h\        V R,          V R,          ,          V R,          V R,          ,          V R,          ,          ,           4      \        V R,          V R,          ,          3.\        V R,          ,          \        ,           .38X  g   Q hR# )	r   ro   T)integerr   N)r   r   r   )r   rQ   )r0   r   r   rR   )r   ro   r   s      r;   test_cse_MatrixSymbolr   `  s    S!QAq6b1#YT"AS!Aq6b1#Yqtad{QqT!A$YK0000qvaf}qvaf}QsV3342qwqw:O9PSUVWX\V]S]`bSbRc8ddddrB   c                     \        R ^^4      p \        R^^4      pV P                  V ,          P                  V ,          V,          pV P                  V ,          V ,          V,          p\        W#.4      w  rE\	        V4      ^ 8  g   Q h\        W#,           V.4      w  rEV'       g   Q h\        V ^,          W ^,          ,           .4      w  rEV'       g   Q hR# )r   r2   N)r0   TIr   rS   )r   r2   r   r   r   r   s         r;   test_cse_MatrixExprr   m  s    S!QAS!QASSUIIMAESSUaK!OE"%un"5L|q   "%u}e&<"=L<"%q!tQAX&6"7L<rB   c                     \        \        ) \        \        ,          ,           \	        \        ^ 4      3\        ) \        \        ,          ,
          R34      p \        V 4      p\        \        \        ,          3.\        \        \        ,
          \	        \        ^ 4      3\        ) \        ,
          R34      .3pW8X  g   Q hR# )r   TN)r   rD   rI   r2   r   r   rR   )r   r   
actual_anss      r;   test_Piecewiser   }  s    A2!8R1X&!ac4(89A
a&C!9+	BFBq!H%R	78:JrB   c                     \        \        4      P                  \        ^ ^4      \        \        \        ^,          ,           4      ,           ^,
          p \        V 4      . \        \        ^,          \        ,           4      \        ,           \        ^,          ^,          ,           \        \        ^,          4      ,           .38X  g   Q hR# )r   N)r   rI   seriesr   r2   r   r   r   s    r;   test_ignore_order_termsr     ss    	Qq1	AadF	+a	/Br7rC1qMA-1Q61a4@ABBBBrB   c                  6   \         \        ,           p \        \        ,           p\	        V 4      V ,           \	        V4      V,           \         \        ,           .p\        V4      w  r4V Uu. uF  qUP                  \        V4      4      NK  	  upV8X  g   Q hR # u upi r>   )rR   r2   rt   r   r   r   subsrs   z1z2rw   rV   rW   rU   s         r;   test_name_conflictr     sk    	aB	bB	R2s2w|R"W-A!fOF.56gFF8F#$g6!;;;6s   ("Bc                  J   \         \        ,           p \        \        ,           p\	        V 4      V ,           \	        V4      V,           \         \        ,           .p\        V\        R 4      4      w  r4V Uu. uF  qUP                  \        V4      4      NK  	  upV8X  g   Q hR# u upi )zx:10N)	rR   r2   rt   r   r   r   r   r   rs   r   s         r;   test_name_conflict_cust_symbolsr     sr    	aB	bB	R2s2w|R"W-A!WV_-OF.56gFF8F#$g6!;;;6s   2"B c                     \        \        \        ,           4      \        ,           \        ,           \        \        \        ,           4      ,           \	        \        \        ,           4      ,           p \        \        \
        .p\        \        4      ;_uu_ 4        \        WR 7       RRR4       R#   + '       g   i     R# ; i))r   N)	r   rI   r2   rh   r   rD   r+   
ValueErrorr   )rw   syms     r;   test_symbols_exhausted_errorr     s^    AaC
1S1Xc!A#h&Aa)C	
		A 
			s   B..B?	c                     \        R 4      p \        R4      pV P                  RV4      p / pRVR&   RVR&   V P                  V4      p\        V 4      w  rEV F.  pV^,          P                  V4      W&^ ,          P                  &   K0  	  V^ ,          P                  V4      pW78X  g   Q h\        R4      p\        V4      w  rEV^ ,          V8X  g   Q h\	        V4      ^8  g   Q hR# )	ziPiecewise((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))C391ggv?C390gɥ:?C392a  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))N)r   r   r   r   rS   )	C393r   sub	ss_answersubstitutionsnew_eqnpair
cse_answerr@   s	            r;   test_issue_7840r     s    	-D QD 99VD!D
CCKCK		#IIM GLL-GLL %J""" 	:D !YM1:}!!!rB   c            	      f   \         \        \        \        3 F  p V ! ^^\        \
        ,           ^ ^ ^ .4      p\        \        \
        ,           V.4      p\        \        \
        ,           3.\        V ! \        ^ .^ ^ ..4      .3pW#8X  g   Q h\        V^,          R,          V 4      '       d   K  Q h	  R# )rQ   Nrm   )	r,   r-   r.   r/   rI   r2   r   rR   r^   )clsr   resr   s       r;   test_issue_8891r     s    "$7 "791q1uaA&'1q5!*oQU}r3Q!Q'8#9:;zz#a&*c****9rB   c                     \        R 4      w  rr#rEW,          V,          V,          V,          W,          V^,          ,          V,          W%,          V^,          ,          V,          .p\        V4      w  rx\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   Q h^ RIHp	 ^ RIHp
 \        R4      p\        ^4       Uu. uF*  p\        \        ^4       Uu. uF
  qY! V4      NK  	  up!  NK,  	  pp\        V^4       F  p\        V4      p\        V4      w  rx\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   Q h\        V4       F6  p\        \        V4      4       F  pW,          P                  ! V!  W&   K  	  K8  	  Wh8X  d   K  Q h	  \        ^4       Uu. uF1  p\        \        ^4       Uu. uF  qY! VR,          4      NK  	  up!  NK3  	  pp\        V^4       F  p\        V4      p\        V4      w  rx\        ;QJ d    R	 V 4       F  '       g   K   RM	  RM! R	 V 4       4      '       d   Q h\        V4       F6  p\        \        V4      4       F  pW,          P                  ! V!  W&   K  	  K8  	  Yh Uu. uF
  qZ! V4      NK  	  up8X  d   K  Q h	  R
# u upi u upi u upi u upi u upi )za b f k l ic              3   \   "   T F"  qP                    F  q"P                  x  K  	  K$  	  R # 5ir>   argsis_Mul.0r   r:   s   &  r;   	<genexpr>#test_issue_11230.<locals>.<genexpr>  s     7Q1888Q   *,TF)choice)
expand_mulza:mc              3   \   "   T F"  qP                    F  q"P                  x  K  	  K$  	  R # 5ir>   r   r   s   &  r;   r   r         ;AFFqxxFxr  :N   Nc              3   \   "   T F"  qP                    F  q"P                  x  K  	  K$  	  R # 5ir>   )r   is_Addr   s   &  r;   r   r    r  r  N)r   r   anysympy.core.randomr  r   r  r8   r
   r)   r5   rs   rS   r   r   )r   r   r   krw   r:   pRr   r  r  sexris                 r;   test_issue_11230r    s6   }-A!	
QqAC1HQJAqD
+Aq6DAs7Q7sss7Q77777 ).A7<Qx	@x!#58,8aq	8,
-xB	@R^G1v3;;333;;;;;;1+B3q6]tyy"~ #  vv  <A8	D8a#uQx0x!qux0
18B	DR^G1v3;;333;;;;;;1+B3q6]tyy"~ #  A.AqZ]A....  -	@ 1	D /s6   K*K
:	KKK4	K+K
KKc                      R  p \         ^,          \        ^,          ,          \         ^,          \        ,          ,           \         ^,          ,           p\        V4      \        \         ^,          3\        \         \        ,          3.\         ^,          \        \        ,          \        ,          ,           \        \        ,          ,           .38X  g   Q hV ! V4       \         ^,          \        ^,           ^,          ,          \         \        ^,           ,          ,           p\        V4      \        \        ^,           3.\         ^,          \        ^,          ,          \         \        ,          ,           .38X  g   Q hV ! V4       R# )c                     \        V 4      w  rV P                  4       \        V4      \        R  V 4       4      ,           \        V4      ,           8  g   Q hR# )c              3   N   "   T F  q^,          P                  4       x  K  	  R# 5ira   Nr"   )r   r:   s   & r;   r   2test_issue_11577.<locals>.check.<locals>.<genexpr>  s     51a1))1s   #%N)r   r#   rS   sum)rd   r   r   s   &  r;   checktest_issue_11577.<locals>.check  sH    2w||~FS51555aL 	 rB   N)rI   r2   r   rR   rn   )r  rd   s     r;   test_issue_11577r    s     
AadQT!V	ad	"Br7
adb!A#Y!Q$Bq.2b5"8!9; ; ; ; 
"I	
Aq1uqj1a!e9	$Br7
a!e1RU
QrT)*, , , , 
"IrB   c                  b    \         ^,           \         ^,           .p \        V 4      . V 38X  g   Q hR# rr   )rI   r   r   s    r;   test_hollow_rejectionr    s)    
a%QBr7r2hrB   c                     \        \        4      ^\        ,          ^\        \        ^,           4      ,          ,           ,          \        \        4      ^\        ,          ^\        \        ^,           4      ,          ,           ,          .p \	        V 4      w  r\
        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       g   Q R4       h\	        V \        3R7      w  r4\
        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   Q R4       h\
        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       g   Q R	4       hR
# )rc   c              3   L   "   T F  w  r\         VP                  9   x  K  	  R # 5ir>   r2   r   r   ry   r   s   &  r;   r   "test_cse_ignore.<locals>.<genexpr>  s     :6qC$$$6   "$TFz&cse failed to identify any term with yignorec              3   L   "   T F  w  r\         VP                  9   x  K  	  R # 5ir>   r   r!  s   &  r;   r   r"    s     >vVQ1(((vr#  z,Sub-expressions containing y must be ignoredc              3   f   "   T F'  w  rV\        \        ^,           4      ,
          ^ 8H  x  K)  	  R# 5ir  )r   rI   r!  s   &  r;   r   r"    s$     ;F&!sT!a%[ A%Fs   /1z4cse failed to identify sqrt(x + 1) as sub-expressionN)r   r2   r   rI   r   r
  )r   subst1red1subst2red2s        r;   test_cse_ignorer,    s    VQqS1T!A#Y;&'Q1qac{1B)CDEu:LF3:6:333:6:::d<dd:uaT*LFs>v>sss>v>>>n@nn>3;F;333;F;;;s=ss;rB   c                  f   \         \        \        4      ,          \        \        ) 4      ,          \        \        4      \        \        4      ,          \        \        ) 4      ,          .p \        V \        3R 7      w  rV Uu. uF  q3P                  \        V4      4      NK  	  ppW@8X  g   Q hR# u upi )r$  N)rh   r   rI   rD   r2   r   r   rs   )rw   rV   rW   rU   rls        r;   test_cse_ignore_issue_15002r/    sy    	#a&aRAs1vc1"g	A !QD)OF,3	4Gq&&&!
"GB	47N7 
5s    "B.c                  B   \        \        ^,           4      p \        RV ,
          ^V ,
          ,          .4      w  w  w  rw  pW 8X  d!   VRV,
          ^V,
          ,          8X  g   Q hR# W ) 8X  d!   VRV,           ^V,           ,          8X  g   Q hR# RV  RV )  RV 2pQ V4       h)ra   zExpected common subexpression z or z, instead got Nrm   )r   rI   r   )xp1rR   ueredmsgs        r;   test_cse_unevaluatedr5  $  s    
!a%
 Cb3h1s7345JXb	yrBw1r6****	trBw1r6****.se4v^B4PcurB   c                  @   ^^r\        RV,          4      p\        V 4       UUu. uFF  p\        \        \        V4       Uu. uF  qBV,          RW4,           ,          ,          NK!  	  up4      NKH  	  pppV^ ,          V^,          ,           P	                  4       ^ 8X  g   Q h\        V4      w  rg\        V4      ^ 8  g   Q R4       h\        V4       FA  w  r8VP                  \        V4      4      WS,          ,
          P	                  4       ^ 8X  d   KA  Q h	  R# u upi u uppi )rc   zx:%dz!exprs[0] == -exprs[2], i.e. a CSENrm   )
r   r8   r   r   simplifyr   rS   	enumerater   rs   )	nexprsntermsrI   r:   r   r   substr3  rU   s	            r;   test_cse__performancer<  1  s    F A vA 	suV}=}!qT2+%%}=> 
  !HuQx))+q000UJEu:>>>>>#x'%(2<<>!CCC  >s   D %D%DDc                  ^   \         \        ,           ^\         ,           \        ,           \         \        ,           \        ,           ^\         ,           \        ,           \        ,           .p \        V 4      w  r^\	        V4      \        R V 4       4      ,           \        V4      ,           8  g   Q hR# )rQ   c              3   F   "   T F  w  rVP                  4       x  K  	  R # 5ir>   r"   )r   r  vs   &  r;   r   #test_issue_12070.<locals>.<genexpr>B  s     !BEDA!++--Es   !N)rI   r2   rD   r   rS   r  r#   )r   r;  r3  s      r;   test_issue_12070rA  ?  so    UAEAIq1uqy!a%!)a-8EUJEUc!BE!BBB3  ! ! !rB   c                      \         R\         ^,          ,          \        ^,          ,           ,          p \        V 4      ^,          ^ ,          pW8X  g   Q hR# )   N)rI   r2   r   )rd   cse_eqs     r;   test_issue_13000rF  F  s7    	
Bq!tGadN	BWQZ]F<<rB   c                      \        \        ^,          ^\        ,          ,           ^,
          ^ 4      \        \        ^,          ^\        ,          ,           ^,
          ^4      ,           p \        V 4      . V .38X  g   Q hR# )rb   N)r   rI   r   r   s    r;   test_issue_18203rH  L  sR    	A1q!	$wq!tbd{Q'B	BBr7rB4j   rB   c                      \        \        \        ,           \        \        ,           R R7      p \        V 4      \        \        \        ,           3.\        ^,          .38X  g   Q hR# )FevaluateN)r
   rI   r2   r   rR   r   s    r;   test_unevaluated_mulrL  Q  s?    	QUAEE	*Br7QU}r1ug....rB   c                     ^ RI Hp  \        R4      w  rr4p\        \        ,           ^,
          ^,          \        \        \        ,           \        \        ,           ^\        ,          ^,           ,          \        \        ,           ^,
          ^,          ,           ^\        ,          ^,           \        \        ,           ,          .p\        W`R7      w  rxV'       g   Q V\        \        \        ,           3\        \        ^,
          ^,          3\        ^\        ,          ^,           3V\        \        ,          \        ,           3V\        \        ,          3\        R3V\        3\        R3V\        3\        R3V\        3.WW4V338H  4       hVP                  4        V U	U
u. uF  w  rV
f   K  W3NK  	  pp	p
Yh Uu. uF  qP                  V4      NK  	  up8X  g   Q hR# u up
p	i u upi )r   )cse_release_variablesz_:5r   N)sympy.simplify.cse_mainrN  r   rI   r2   r   rR   rn   rt   reverser   )rN  _0_1_2_3_4eqsr   rU   r  r?  r:   s               r;   test_cse_release_variablesrW  V  sc   = BBBEAI>1	AA!a AEAI>1	
1qAEC s6DA FaQK"rAvk"R1qMBr2r6lRJRJR2t*r1g/ 240DF F F1 IIK/ADA!AA/a(a66!9a(((( 	0(s   G)G7G!c                  H   R  p V ! \         4      . \         38X  g   Q hV ! R4      . R38X  g   Q h\         .p\        \        \        3 F   pV ! V! V4      4      . V! V4      38X  d   K   Q h	  V ! \	        V!  4      . \	        V!  38X  g   Q h\         ^/pV ! V4      . V38X  g   Q hR# )c                     \        V R R7      # )F)r5   r   )rI   s   &r;   <lambda>test_cse_list.<locals>.<lambda>h  s    S'rB   rI   N)rI   r5   tuplesetr   )_cseitr   r   s       r;   test_cse_listr`  g  s    'D7r1g9S	!!!
BE3AbE{r1R5k)))   r
E2J////	
AA7r1grB   c                      \        R ^^4      p \        V ) V ,          V ,
          4      V ) V ,          V ,
          8X  g   Q hR# )r   N)r0   r   )r   s    r;   test_issue_18991rb  s  s7    S!QAQBFQJA26A:---rB   c                  L    \        ^^RR7      .p \        V 4      . V 38X  g   Q hR# )ra   FrJ  N)r
   r   )r   s    r;   test_unevaluated_Mulrd  x  s)    	QE	"#Aq6b!WrB   c                      \        \        R 4      4      P                  ^^4      p \        V 4      p\	        V4      pV. \        V 4      .38X  g   Q hR# A:4N)r.   r   reshaper   r   r   rI   r   s      r;   "test_cse_matrix_expression_inverserj  }  sH    WU^,44Q:A
A1vHWQZL))))rB   c                      \        \        R 4      4      P                  ^^4      p \        \        R4      4      p\        \	        V 4      V4      p\        V4      pV. V.38X  g   Q hR# rg  zb:2N)r.   r   rh  r   r   r   r   r   rI   r   s       r;   )test_cse_matrix_expression_matmul_inversern    sX    WU^,44Q:AWU^,Awqz1A1vHQCy   rB   c                      \        \        R 4      4      P                  ^^4      p \        \        P
                  V 4      p\        V4      pV. V.38X  g   Q hR# rf  r.   r   rh  r   r   NegativeOner   ri  s      r;   test_cse_matrix_negate_matrixrr    sJ    WU^,44Q:Aq}}a A1vHQCy   rB   c                      \        \        R 4      4      P                  ^^4      p \        \        R4      4      P                  ^^4      p\        \        P
                  W4      p\        V4      pV. V.38X  g   Q hR# rg  zB:4Nrp  r   r   rI   r   s       r;   +test_cse_matrix_negate_matmul_not_extractedrv    se    WU^,44Q:AWU^,44Q:Aq}}a#A1vHQCy   rB   c                  :   \        \        R 4      4      P                  ^^4      p \        \        R4      4      P                  ^^4      p\        \        P
                  \        W4      4      p\        V4      pV. \        \        P
                  W4      .38X  g   Q hR# rt  rp  ru  s       r;   'test_cse_matrix_nested_matmul_collapsedrx    sv    WU^,44Q:AWU^,44Q:Aq}}fQl+A1vHVAMM189::::rB   c                      \        \        R 4      4      P                  ^^4      p \        \        \        V 4      4      4      p\	        V4      pV. V .38X  g   Q hR# rf  )r.   r   rh  r   r   ri  s      r;   0test_cse_matrix_optimize_out_single_argument_mulrz    sM    WU^,44Q:AvfQi !A1vHQCy   rB   c            	         \        \        R 4      4      P                  ^^4      p \        \	        \	        \	        V 4      4      4      \	        \	        V 4      4      \	        V 4      V 4      p\        V4      pV. \	        ^V 4      .38X  g   Q hR# rf  )r.   r   rh  r   r   r   ri  s      r;   9test_cse_matrix_optimize_out_single_argument_mul_combinedr|    l    WU^,44Q:AvfVAY'(&*;VAYJA1vHVAq\N++++rB   c            	          \        \        R 4      4      P                  ^^4      p \        \        \        \        V 4      4      4      4      p\	        V4      pV. V .38X  g   Q hR# rf  )r.   r   rh  r   r   ri  s      r;   0test_cse_matrix_optimize_out_single_argument_addr    sR    WU^,44Q:AvfVAY'()A1vHQCy   rB   c            	         \        \        R 4      4      P                  ^^4      p \        \	        \	        \	        V 4      4      4      \	        \	        V 4      4      \	        V 4      V 4      p\        V4      pV. \        ^V 4      .38X  g   Q hR# rf  )r.   r   rh  r   r   r   ri  s      r;   9test_cse_matrix_optimize_out_single_argument_add_combinedr    r}  rB   c                      \        \        R 4      4      P                  ^^4      p \        \        R4      4      p\        W4      p\	        V4      pV. V.38X  g   Q hR# rl  )r.   r   rh  r   r   rm  s       r;   'test_cse_matrix_expression_matrix_solver    sR    WU^,44Q:AWU^,AAA1vHQCy   rB   c            	      t   \        \        R 4      4      P                  ^^4      p \        \        R4      4      p\        \	        \        \        V 4      V 4      4      \        V 4      V4      p\        V4      p\        R^^4      p\        \	        \        W@4      4      WA4      pW4\        V 4      3.V.38X  g   Q hR# )zX:4zy:2rR   N)r.   r   rh  r   r   r   r   r0   )Xr2   r   r   rR   reduced_expr_expecteds         r;   !test_cse_matrix_matrix_expressionr    s    WU^,44Q:AWU^,AwvilA./1qAA1vH	dAq	!B"76"=#92Ail+,/D.EFFFFrB   c                    ^p \        \        RV  24      4      p\        \        RW ,           24      4      P                  W 4      p\        \        RW ,           24      4      P                  W 4      p\        \        RW ,           24      4      P                  W 4      p\        \        RV  24      4      p\        V\	        V\        V4      \        \        V\	        W2\        V4      4      4      4      \        \	        W14      \	        \        P                  V4      4      4      4      p\        V\	        \        P                  V\        V4      \        \        V\	        W2\        V4      4      4      4      W24      4      p\        Wg.4      p\        RW 4      p	\        RW 4      p
V	\        V4      3V
\        \        V\	        W2V	4      4      4      3.p\        V\	        W)V
\        \	        W14      \	        \        P                  V4      4      4      4      \        V\	        \        P                  W)WV4      4      .pWV38X  g   Q hR# )	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))

zmu:zSigma:zH:zR:zdata:rR   rn   N)r.   r   rh  r   r   r   r   r   rq  r   r0   )NmuSigmaHr  datanew_mu	new_Sigmar   rR   rn   replacements_expectedreduced_exprs_expecteds                r;   test_cse_matrix_kalman_filterr    s   $ 	
A	gA3i0	1B 6!%)9!:;CCAIEWr!%\23;;AAAWr!%\23;;AAA%s 45DBuilGF1fQW`abWcFd<e4fhnouvwo|  E  FG  FS  FS  UY  Z  i[  \  ]FufQ]]E9Q<QWXY[abcluvwlx[yQzI{}~  G  HIF&'H	dA	!B	dA	!B	Yq\	WVAva3456
 	r6%RqvammUY?Z)[\]ufQ]]EreDE /EFFFFrB   )	functoolsr   r6   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   rO  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   rh   rI   r2   rD   rR   rn   rt   r   r   r   r   r   r   r   x10x11x12r<   rA   rE   rK   rN   r\   r_   re   ri   rp   rz   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,  r/  r5  r<  rA  rF  rH  rL  rW  r`  rb  rd  rj  rn  rr  rv  rx  rz  r|  r  r  r  r  r  rJ   rB   r;   <module>r     sh      2  ' + (    $ " / & 6 9 : ? ' I I +   ' , 3 ) 5 1 - - .5 5 3 Y
1a8? 5BBBBBS#	A64
44	!)A*.< / / / /   ; ; 
4
?9
4',(*30G	!e C
<<""J+"/J  *
t
D!!
/
)"
.

*!!! ; ;! , ,! , ,!G%GrB   