+
    hi                     t   ^ RI 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Ht ^ R	IHt ^ R
IHt ^ RIHt ^ RIHtHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t) ^ RI*H+t+ ]R 4       t,],P[                  ]4      R R l4       t.],P[                  ]4      R R l4       t.],P[                  ]4      R R l4       t.],P[                  ]4      R R l4       t.],P[                  ]4      R R l4       t.],P[                  ]4      R R l4       t.],P[                  ]4      R R l4       t.],P[                  ]4      R R l4       t.],P[                  ]4      R R  l4       t.],P[                  ] 4      R! R" l4       t.],P[                  ]4      R# R$ l4       t.],P[                  ]	4      R% R& l4       t.],P[                  ]#4      R' R( l4       t.],P[                  ]4      R) R* l4       t.],P[                  ]4      R+ R, l4       t.],P[                  ]4      R- R. l4       t.],P[                  ])4      R/ R0 l4       t.R1 t/R# )2    N)reducesingledispatch)Expr)S)HadamardProduct)Inverse)
MatrixExprMatrixSymbol)Identity	OneMatrix)	Transpose)
_af_invert)ElementwiseApplyFunction)
_ArrayExpr	ZeroArrayArraySymbolArrayTensorProductArrayAddPermuteDimsArrayDiagonalArrayElementwiseApplyFuncget_rank	get_shapeArrayContraction_array_tensor_product_array_contraction_array_diagonal
_array_add_permute_dimsReshape)convert_matrix_to_arrayc                0    \        R\        V 4       24      h)z0
Derivatives (gradients) for array expressions.
znot implemented for type )NotImplementedErrortypeexprxs   &&V/usr/lib/python3/dist-packages/sympy/tensor/array/expressions/arrayexpr_derivatives.pyarray_deriver)      s    
  9$t*F
GG    c                0    V ^8  d   QhR\         R\        /#    r&   r'   )r   r   )formats   "r(   __annotate__r/      s      D Z r*   c                 (    \        VP                  !  # Nr   shaper%   s   &&r(   _r4      s    aggr*   c                0    V ^8  d   QhR\         R\        /# r,   )r   r   )r.   s   "r(   r/   r/   #   s     ( ( (4 (r*   c                    V P                   p. p\        V P                   4       EFd  w  rE\        WQ4      pV^ 8X  d   K  VRV pW$^,           R p\        \        P
                  \        \        V4      R4      p	\        \        P
                  \        \        V4      R4      p
\        . VOVNVO5!  p\        \        V4      4      pV\        V	4      ,           pV\        \        V4      4      ,           pV\        V
4      ,           p\        \        W4      4      \        \        V4      4      ,           \        \        W4      4      ,           \        \        W4      4      ,           p\        V\        V4      4      pVP                  V4       EKg  	  \        V4      ^8X  d
   V^ ,          # \        V4      ^ 8X  d   \        P                   # \#        V!  # )r   N )args	enumerater)   r   operatoraddmapr   r   lenlistranger   r   appendr   Zeror   )r&   r'   r8   addend_listiargdarg	args_prev	args_succ
shape_prev
shape_succaddendtot1tot2tot3tot4perms   &&               r(   r4   r4   "   sv   99DKDII&C#19!H	1J	HLL#i*CRH
HLL#i*CRH
&D	D4D)D9Q< c*o%c)C.))c*o%E$%&E$K !#'d(9#:;E$%&' vz$'786"# '$ ;11~	[	Q	vv;''r*   c                0    V ^8  d   QhR\         R\        /# r,   )r   r   )r.   s   "r(   r/   r/   A   s     . .K .J .r*   c           	         W8X  d   \        \        P                  ! R  V P                   4       4      \	        \        V P                  4      4       Uu. uF  p^V,          NK  	  up\	        \        V P                  4      4       Uu. uF  p^V,          ^,           NK  	  up,           4      # \        VP                  V P                  ,           !  # u upi u upi )c              3   8   "   T F  p\        V4      x  K  	  R # 5ir1   )r   ).0rC   s   & r(   	<genexpr>_.<locals>.<genexpr>D   s     'HZZs   )r   r   fromiterr3   r?   r=   r   )r&   r'   rC   s   && r(   r4   r4   @   s    y'''HTZZ'HHDJJ010QQqSS01E#djj/DZ4[DZqQqSUUDZ4[[
 	
 qww+-- 24[s   C
Cc                0    V ^8  d   QhR\         R\        /# r,   )r
   r   )r.   s   "r(   r/   r/   K   s     . .L .Z .r*   c                     V P                   w  r#W8X  d+   \        \        \        V4      \        V4      4      . RO4      # \	        VP                   V P                   ,           !  # )r   )r   r-         )r3   r   r   r   r   )r&   r'   mns   &&  r(   r4   r4   J   sN    ::DAy!(1+x{;
 	
 qww+--r*   c                0    V ^8  d   QhR\         R\        /# r,   )r   r   )r.   s   "r(   r/   r/   V   s     . .H . .r*   c                 J    \        VP                  V P                  ,           !  # r1   r2   r%   s   &&r(   r4   r4   U       qww+--r*   c                0    V ^8  d   QhR\         R\        /# r,   )r   r   )r.   s   "r(   r/   r/   [   s     . .I .* .r*   c                 J    \        VP                  V P                  ,           !  # r1   r2   r%   s   &&r(   r4   r4   Z   r_   r*   c                0    V ^8  d   QhR\         R\        /# r,   )r   r   )r.   s   "r(   r/   r/   `   s     + +I +$ +r*   c                 J    \        V P                  V4      p\        V. RO4      # )r   )r   rY   rZ   r-   )r)   rD   r   )r&   r'   fds   && r(   r4   r4   _   s!     
dhh	"B\**r*   c                0    V ^8  d   QhR\         R\        /# r,   )r   r   )r.   s   "r(   r/   r/   h   s      G  r*   c                     V P                   p\        W!4      p\        V ) W04      p\        VRR4      p\	        V. RO4      pV# )rY   )rY      )      )rY   r-   r   rZ   )Ir)   r   r   r   )r&   r'   matdexprtpmppps   &&     r(   r4   r4   g   sB    
&&C E	ue	2B	B	/B	r<	(BIr*   c                0    V ^8  d   QhR\         R\        /# r,   )r   r   )r.   s   "r(   r/   r/   r   s      $  r*   c                     \        V 4      ^8X  g   Q h\        V4      ^8X  g   Q hV P                  4       p\        V P                  V4      p\	        \        W P                  4      V4      p\        VRR4      pV# )r-   )r   rg   )rY   rh   )r   _get_function_fdiffr)   r&   r   r   r   )r&   r'   fdiffrl   rm   tds   &&    r(   r4   r4   q   sw    D>QA;!$$&EA&E	 		2
B 

FF
B Ir*   c                0    V ^8  d   QhR\         R\        /# r,   )r   r   )r.   s   "r(   r/   r/      s     . .% .$ .r*   c                 (   V P                  4       pV P                  p\        W14      p\        V\	        W#4      4      p\        V4      p\        V 4      p\        V4       Uu. uF  qV,           Wg,           V,           3NK  	  p	p\        V.V	O5!  # u upi r1   )rr   r&   r)   r   r   r   r?   r   )
r&   r'   rs   subexprdsubexprrm   bcrC   diag_indicess
   &&        r(   r4   r4      s    $$&EiiGG'H	!%1
B 	AA05a91UAEAI&L92--- :s     Bc                0    V ^8  d   QhR\         R\        /# r,   )r	   r   )r.   s   "r(   r/   r/      s      J 4 r*   c                 .    \        V 4      p\        W!4      # r1   )r!   r)   )r&   r'   cgs   && r(   r4   r4      s    	 	&Br*   c                0    V ^8  d   QhR\         R\        /# r,   )r   r   )r.   s   "r(   r/   r/      s        O    r*   c                     \        4       hr1   )r#   r%   s   &&r(   r4   r4      s    

r*   c                0    V ^8  d   QhR\         R\        /# r,   )r   r   )r.   s   "r(   r/   r/      s     < < < <r*   c                   a \        V P                  V4      p\        \        V4      4      oV P                  pV Uu. uF5  p\
        ;QJ d    . V3R  lV 4       F  NK  	  5M! V3R  lV 4       4      NK7  	  pp\        V.VO5!  # u upi )c              3   4   <"   T F  qS,           x  K  	  R # 5ir1   r7   )rS   jrank_xs   & r(   rT   rU      s     $;AZZs   )r)   r&   r=   r   contraction_indicestupler   )r&   r'   rd   r   rC   new_contraction_indicesr   s   &&    @r(   r4   r4      st    	dii	#B1F22EXYEXuu$;$;uu$;$;;EXYb;#:;; Zs   B+Bc                0    V ^8  d   QhR\         R\        /# r,   )r   r   )r.   s   "r(   r/   r/      s     4 4M 4d 4r*   c           	          \        V P                  V4      p\        \        V4      4      pV P                   UUu. uF  qD Uu. uF  qUV,           NK  	  upNK  	  ppp\        V.VO5!  # u upi u uppi r1   )r)   r&   r=   r   diagonal_indicesr   )r&   r'   rx   r   rC   r   r{   s   &&     r(   r4   r4      sg    DIIq)H1F595J5JK5J+AZZ+5JLK83l33 ,Ks   A/A*A/*A/c                0    V ^8  d   QhR\         R\        /# r,   )r   r   )r.   s   "r(   r/   r/      s     D DH D Dr*   c           	      d    \        V P                   Uu. uF  p\        W!4      NK  	  up!  # u upi r1   )r   r8   r)   )r&   r'   rD   s   && r(   r4   r4      s(    		B	S,	BCCBs   -c                0    V ^8  d   QhR\         R\        /# r,   )r   r   )r.   s   "r(   r/   r/      s     # #K #D #r*   c                     \        V P                  V4      p^ ^.V P                  P                   Uu. uF  q3^,           NK  	  up,           p\	        W$4      # u upi )r   )r)   r&   permutation
array_formr   )r&   r'   derC   rO   s   &&   r(   r4   r4      sR    	dii	#Bq6D$4$4$?$?@$?qUU$?@@D"" As   Ac                0    V ^8  d   QhR\         R\        /# r,   )r    r   )r.   s   "r(   r/   r/      s     2 2G 2 2r*   c                 z    \        V P                  V4      p\        V\        V4      V P                  ,           4      # r1   )r)   r&   r    r   r3   )r&   r'   r   s   && r(   r4   r4      s,    	dii	#B2y|djj011r*   c                 f    ^ RI Hp \        V 4      p\        W14      pV! V4      P	                  4       # )r   )convert_array_to_matrix)3sympy.tensor.array.expressions.from_array_to_matrixr   r!   r)   doit)r&   r'   r   cedces   &&   r(   matrix_deriver      s-    [	 	&B
r
C"3',,..r*   )0r:   	functoolsr   r   sympy.core.exprr   sympy.core.singletonr   #sympy.matrices.expressions.hadamardr   "sympy.matrices.expressions.inverser   "sympy.matrices.expressions.matexprr	   r
   "sympy.matrices.expressions.specialr   r   $sympy.matrices.expressions.transposer    sympy.combinatorics.permutationsr   $sympy.matrices.expressions.applyfuncr   0sympy.tensor.array.expressions.array_expressionsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    3sympy.tensor.array.expressions.from_matrix_to_arrayr!   r)   registerr4   r   r7   r*   r(   <module>r      su    ,   " ? 6 I B : 7 I9 9 9 9 9
 X H H t  )*( +(: {#. $. |$. %. x . !. y!. ". y!+ "+ w   /0 1 01. 2. z" #
 '  (  '(< )< }%4 &4 x D !D {## $# w2  2
/r*   