+
    hd                         ^ RI 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HtHt ^ RIHtHt ^ R	IHtHt ^ R
IHtHtHtHt ^ RIHtHtHtHtH t H!t! R t"R t#R t$R t%R t&R t'R t(R t)R t*R# )    N)Permutation)
_af_invert)raises)diff)symbols)adjoint	conjugate	transpose)explog)cossin)ArrayImmutableDenseNDimArrayImmutableSparseNDimArrayMutableSparseNDimArray)tensorproducttensorcontractionderive_by_arraypermutedimsFlattentensordiagonalc                      ^ RI Hp  ? R# )r   	NDimArrayN)sympy.tensor.arrayr   r   s    G/usr/lib/python3/dist-packages/sympy/tensor/array/tests/test_arrayop.pytest_import_NDimArrayr      s    ,    c                  
   \        R 4      w  rr#^ RIHpHpHpHp \        4       ^8X  g   Q h\        V .4      \        V .4      8X  g   Q h\        V .V.4      \        W,          ..4      8X  g   Q h\        V .V.V.4      \        W,          V,          ...4      8X  g   Q h\        V .V.V.V.4      \        W,          V,          V,          ....4      8X  g   Q h\        V 4      V 8X  g   Q h\        W4      W,          8X  g   Q h\        WV4      W,          V,          8X  g   Q h\        WW#4      W,          V,          V,          8X  g   Q h\        \        3 EF_  pV! W.4      p	V! . RO4      p
V! WEWg.4      p\        WV4      V! W@,          WP,          W`,          Wp,          .^V,          V ,          ^V,          V ,          ^V,          V ,          ^V,          V ,          .^V,          V ,          ^V,          V ,          ^V,          V ,          ^V,          V ,          ..WA,          WQ,          Wa,          Wq,          .^V,          V,          ^V,          V,          ^V,          V,          ^V,          V,          .^V,          V,          ^V,          V,          ^V,          V,          ^V,          V,          ...4      8X  g   Q h\        W.. RO4      \        W4      8X  g   Q h\        V	^4      V! ^V ,          ^V,          .4      8X  g   Q h\        V	^.4      V! ^V ,          .^V,          ..4      8X  g   Q h\        ^.V	4      V! ^V ,          ^V,          ..4      8X  g   Q h\        WI4      V! W@,          WA,          .4      8X  g   Q h\        WIV
4      V! W@,          ^V,          V ,          ^V,          V ,          .WA,          ^V,          V,          ^V,          V,          ..4      8X  g   Q h\        WV4      V! W@,          ^V,          V ,          ^V,          V ,          .WA,          ^V,          V,          ^V,          V,          ..4      8X  g   Q h\        WV	4      V! W@,          WA,          .^V,          V ,          ^V,          V,          .^V,          V ,          ^V,          V,          ..4      8X  d   EK`  Q h	  \        \        3 FA  pV! ^^^^/R4      pV! ^^^^/R4      p\        WE4      \        R^R^R^R^/R	4      8X  d   KA  Q h	  R# )
zx y z t)abcdi i i[ i[ N         )    )r)   r*   r)   r*   )r   	sympy.abcr!   r"   r#   r$   r   r   r   r   r   )xyztr!   r"   r#   r$   	ArrayTypeABCSparseArrayTypes                r   test_tensorproductr5      s%   i GA!!?a!s+++!qc"eacUGn444!qcA3'5ACE7)+====!qcA3,!#a%'}o0FFFFq   !#%%%q!QSU***q$Aa///-/GH	qfi qQl#Q1%ac13QS5IAaCPQESTUVSVWXSXZ[\]Z]^_Z_abcdadefafKgjklmjmnojoqrstqtuvqvxyz{x{|}x}  @A  BC  @C  DE  @E  jF  5G67c13QS5IAaCPQESTUVSVWXSXZ[\]Z]^_Z_abcdadefafKgjklmjmnojoqrstqtuvqvxyz{x{|}x}  @A  BC  @C  DE  @E  jF  5G4H *I I 	I I aVY/=3FFFFQ"i1ac
&;;;;Q$	AaC51Q3%.(AAAAaS!$	AaC1:,(????Q"iac
&;;;;Q1%QS!A#a%1Q4G!#qQRsSTuVWXYVYZ[V[I\3])^^^^Q1%QS!A#a%1Q4G!#qQRsSTuVWXYVYZ[V[I\3])^^^^Q1%QS!#J1Q!AQRSTQTUVQVXYZ[X[\]X]P^3_)````! I& 56LMQq!AJ|4Qq!AJ|4Q"&>GUVX_abdkmo?p  sK  'L  L  	L  L Nr   c                     ^ RI Hp HpHpHpHpHpHpHpH	pH
p	Hp
HpHpHpHpHpHpHpHpHpHpHpHpHp \3        \5        ^4      R4      p\7        VR4      \3        ^^'.4      8X  g   Q h\3        WW#WEWgWWWWVVVVVVVV.R4      p\7        VR4      \3        W,           W,           .VV,           VV,           .VV,           V	V,           ..4      8X  g   Q h\7        VR4      \3        W,           VV,           VV,           .4      8X  g   Q h\7        VR4      \3        W,           WG,           W,           .W,           VV,           VV,           ..4      8X  g   Q hR# )	r   )r!   r"   r#   r$   efghijklmnopqrsr/   uvwr,   N)r'   r(   r(   r&   r'   )r'   r(   r'   r'   )r   r'   )r   r'   r(   r'   r(   )r+   r!   r"   r#   r$   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   r/   rF   rG   rH   r,   r   ranger   )r!   r"   r#   r$   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   r/   rF   rG   rH   r,   r2   C1s                             r   test_tensorcontractionrM   ?   s*   IIIIIIIeBi#AQ'5"b?:::	aA!aA!1aAqRSUVWYe	fBR(EAE15>AE1q5>TUXYTY[\_`[`Sa2b,ccccR+uaeQUAE5J/KKKKR(EAE15!%3H15RSVWRWYZ]^Y^J_2`,aaaar   c            	         ^ RI Hp HpHpHpHpHp W4^,          ,          \        V4      ,          \        V4      ,          p\        V4      p\        V4      p\        V.4      p	\        Wr4      W4^,          ,          \        V4      ,          \        W4^,          ,          \        V4      ,          \        V4      ,          4      ,          V,          8X  g   Q h\        WsWE.4      \        Wc,          V,          ^V,          V,          V^,          ,          V,          Wh,          .4      8X  g   Q h\        WWE.4      \        Wc,          V,          .^V,          V,          V^,          ,          V,          .Wh,          ..4      8X  g   Q h\        WsV.WR..4      \        Wc,          V,          ^V,          V,          V^,          ,          V,          .Wh,          V\        V4      ,          V,          V,          ..4      8X  g   Q h\        WV.WR..4      \        Wc,          V,          .^V,          V,          V^,          ,          V,          ..Wh,          .V\        V4      ,          V,          V,          ...4      8X  g   Q h\        W4.WR..W4.4      \        ^^ .^ ^ ..^ ^.^ ^ ...4      8X  g   Q h\        W4.WR..W4.WR..4      \        ^^ .^ ^ ..^ ^.^ ^ ...^ ^ .^^ ..^ ^ .^ ^....4      8X  g   Q h\        Wr4      W4^,          ,          \        V4      ,          \        W4^,          ,          \        V4      ,          \        V4      ,          4      ,          V,          8X  g   Q h\        V\        W4V.4      4      \        Wc,          V,          ^V,          V,          V^,          ,          V,          Wh,          .4      8X  g   Q h\        V	\        W4V.4      4      \        Wc,          V,          .^V,          V,          V^,          ,          V,          .Wh,          ..4      8X  g   Q h\        V\        W4.WR..4      4      \        Wc,          V,          ^V,          V,          V^,          ,          V,          .Wh,          V\        V4      ,          V,          V,          ..4      8X  g   Q h\        V	\        W4.WR..4      4      \        Wc,          V,          .^V,          V,          V^,          ,          V,          ..Wh,          .V\        V4      ,          V,          V,          ...4      8X  g   Q h\        \        W4.WR..4      \        W4.4      4      \        ^^ .^ ^ ..^ ^.^ ^ ...4      8X  g   Q h\        \        W4.WR..4      \        W4.WR..4      4      \        ^^ .^ ^ ..^ ^.^ ^ ...^ ^ .^^ ..^ ^ .^ ^....4      8X  g   Q h\        \        3 FS  p
\        ^ V ^V/R4      p\        W4      \        ^ ^/R4      8X  g   Q h\        WV34      \        ^ ^R^/R4      8X  d   KS  Q h	  \        W4V.4      p^p\        W4      \!        . RO4      8X  g   Q hR# )r   )r;   r<   r/   r,   r-   r.   iN'   N  )r'   rP   rQ   )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.   bexprsexprcexprr!   r4   r"   UEs                 r   test_derivative_by_arrayrW   J   s   **dF3q6M#a& EJEJEugA5$Q$s1vc!qD&Q-A:N6O(OPQ(QQQQ5a),uwu}ac%iPQSTPTnUZFZ\a\g6h0iiii1!i(EEGEM?QqSYqRSt^TYEYDZ]b]h\i2j,kkkk5q6A6"23uuwu}aPQcRWiXY[\X\n]bNb>cfkfqsxy|}~ys  AB  tB  CH  tH  fI  >J  8K  K  K  K11vv./5EGEM?QqSQVYWXZ[W[^\aMaLb:cglgrfsv{|  AB  }C  wC  DE  wE  FK  wK  vL  fM  :N  4O  O  O  OQFQF+aV4AA?OSTVWRX[\^_Z`Qa>b8ccccQFQF+qfqf-=>%Aq6TUWXSYJZ^_ab]cfgijek\lImLMq6TUWXSYJZ^_ab]cfgijek\lImIo Cp p p p >Q!tVCF]3qAvc!f}SV/C+DDQFFFFuaAY'(E575=!A#e)AqD.QVBVX]Xc2d,eeee5!#$1U1a4PUAU@VY^YdXe.f(gggguqfqf-./5575=!A#e)TUWXTX.Y^J^:_bgbmotuxyzu{o{|}o}  D  pD  bE  :F  4G  G  G  G51&1&)*+u1USTVWSWX]I]H^6_chcnborwx{|}x~r~  @A  sA  BG  sG  rH  bI  6J  0K  K  K  Kvv&'v75Aq6Aq6BRVWYZU[^_ab]cTdAe;ffffvv&'/?)@AUqRSfWXZ[V\M]abde`fijlmhn_oLpLMq6TUWXSYJZ^_ab]cfgijek\lImLo Fp p p p 56LM"Aa1:~>q$(@!Q(XXXXqa&)-Eq!YXYFZ\m-nnnn N 	qQiA	A1 %<Y%GGGGr   c            
      r	   \        R^ .4      p \        ^ ^.R^ ..4      p\        WW4      p\        VRR4      \        ^ ^ .^ ^..4      8X  g   Q h\        R4      p\        V. RO4      p\        VRRR4      V^ ,          V^l,          ,           V^o,          ,           V^|,          ,           V^,          ,           V^,          ,           V^,          ,           V^,          ,           V^,          ,           V^,          ,           V^ ,          ,           V^#,          ,           8X  g   Q h\        VR	R4      V^ ,          V^o,          ,           V^,          ,           V^,          ,           V^,          ,           V^ ,          ,           8X  g   Q h\        VRR4      \        V^ ,          V^l,          ,           V^o,          ,           V^,          ,           V^p,          V^s,          ,           V^,          ,           V^,          ,           V^,          V^t,          ,           V^w,          ,           V^,          ,           .V^,          V^x,          ,           V^{,          ,           V^,          ,           V^|,          V^,          ,           V^,          ,           V^,          ,           V^,          V^,          ,           V^,          ,           V^,          ,           .V^,          V^,          ,           V^,          ,           V^,          ,           V^,          V^,          ,           V^,          ,           V^,          ,           V^,          V^,          ,           V^ ,          ,           V^#,          ,           ..4      8X  g   Q h\        VRR4      \        V^ ,          V^l,          ,           V^|,          ,           V^,          ,           V^,          ,           V^ ,          ,           V^,          V^m,          ,           V^},          ,           V^,          ,           V^,          ,           V^!,          ,           .V^n,          V^~,          ,           V^,          ,           V^,          ,           V^,          ,           V^",          ,           V^o,          V^,          ,           V^,          ,           V^,          ,           V^,          ,           V^#,          ,           ..4      8X  g   Q hR# )
r&   a0:144NrI   )      r'   r'   r(   r(   r'   r'   )r   r&   rJ   )r   r&   r[   r\   )r   r   r   r   )uaFaposas       r   )test_issue_emerged_while_discussing_10972rb   s   sx   	1vB	AQ 	!B	rr	&BR0EAq6Aq6:J4KKKK		B	r%	&BR8BqEBsGObQTg<UXZ[^X_<_bdehbi<ilnorls<svxy|v}<}  AC  DF  AG  =G  JL  MO  JP  =P  SU  VW  SX  =X  []  ^`  [a  =a  df  gi  dj  =j  j  j  jRv6"Q%"S'/BsG:SVXY\V]:]`bce`f:fiklnio:ooooR0EBqEBsGObQTg<UXZ[\X]<]_abe_fikloip_psuvwsx_x{}~  |A  `A=?Vbg=MPRSVPW=WZ\]^Z_=_<acefhcilnorlscsvxy|v}c}  AC  DF  AG  dG=?Wr#w=NQSTVQW=WZ\]_Z`=`bdehbilnorlsbsvxy{v|b|  @B  CE  @F  cFcG=?Wr#w=NQSTVQW=WZ\]_Z`=`bdehbilnorlsbsvxy{v|b|  @B  CE  @F  cF=?Wr#w=NQSTVQW=WZ\]_Z`=`=b;c 5d d d d
 R0EBqEBsGObQTg<UXZ[^X_<_bdegbh<hkmnpkq<qsuvwsx{}  B  |C  tC  FH  IL  FM  tM  PR  SV  PW  tW  Z\  ]_  Z`  t`  ce  fh  ci  ti  <j<>sGbg<MPRSVPW<WZ\]_Z`<`cefgch<hkmnpkq<qsuvysz}  AD  ~E  tE  HJ  KN  HO  tO  RT  UW  RX  tX  []  ^_  [`  t`  ce  fh  ci  ti  <j;k 5l l l lr   c                  :  aa \        R 4      p \        \        3 EF  pV! V R,          R4      o\        SR4      \	        S4      8X  g   Q hSP                  4       P                  \        SR4      P                  4       8X  g   Q hSP                  4       P                  \	        S4      P                  4       8X  g   Q hSP                  4       P                  \        S4      P                  4       8X  g   Q hSP                  4       P                  \        S4      P                  4       8X  g   Q hSP                  4       P                  SP	                  4       P                  4       8X  g   Q hSP                  4       P                  SP                  4       P                  4       8X  g   Q hSP                  4       P                  SP                  4       P                  4       8X  g   Q h\        \        V3R l4       \        \        V3R l4       \        \        V3R l4       ^p\        V4       Uu. uF  p\        P                  ! ^^4      NK  	  pp\        \!        V!  4       Uu. uF  p\        P                  ! 4       NK  	  ppV! WT4      p\#        \        V4      4      p\        P$                  ! V4       \        \        Wg4      \'        V4      4      V8X  g   Q h\        Wg4      P(                  \+        \-        V4      ! V4      4      8X  g   Q hVP/                  ^^^^4      p\        VR4      P(                  R8X  g   Q h\        V. RO4      P(                  R8X  g   Q h\        V\-        . RO4      4      P(                  R8X  g   Q hV! V . RO4      o\        \        V3R l4       \        \        V3R l4       \        \        V3R l4       \        S\1        \        SP3                  4       4      4      4      V! V ^ ,          V ^H,          .V ^$,          V ^l,          ..V ^,          V ^T,          .V ^0,          V ^x,          ..V ^,          V ^`,          .V ^<,          V ^,          ...V ^,          V ^L,          .V ^(,          V ^p,          ..V ^,          V ^X,          .V ^4,          V ^|,          ..V ^,          V ^d,          .V ^@,          V ^,          ...V ^,          V ^P,          .V ^,,          V ^t,          ..V ^,          V ^\,          .V ^8,          V ^,          ..V ^ ,          V ^h,          .V ^D,          V ^,          ....V ^,          V ^J,          .V ^&,          V ^n,          ..V ^,          V ^V,          .V ^2,          V ^z,          ..V ^,          V ^b,          .V ^>,          V ^,          ...V ^,          V ^N,          .V ^*,          V ^r,          ..V ^,          V ^Z,          .V ^6,          V ^~,          ..V ^,          V ^f,          .V ^B,          V ^,          ...V ^
,          V ^R,          .V ^.,          V ^v,          ..V ^,          V ^^,          .V ^:,          V ^,          ..V ^",          V ^j,          .V ^F,          V ^,          .....V ^,          V ^I,          .V ^%,          V ^m,          ..V ^,          V ^U,          .V ^1,          V ^y,          ..V ^,          V ^a,          .V ^=,          V ^,          ...V ^,          V ^M,          .V ^),          V ^q,          ..V ^,          V ^Y,          .V ^5,          V ^},          ..V ^,          V ^e,          .V ^A,          V ^,          ...V ^	,          V ^Q,          .V ^-,          V ^u,          ..V ^,          V ^],          .V ^9,          V ^,          ..V ^!,          V ^i,          .V ^E,          V ^,          ....V ^,          V ^K,          .V ^',          V ^o,          ..V ^,          V ^W,          .V ^3,          V ^{,          ..V ^,          V ^c,          .V ^?,          V ^,          ...V ^,          V ^O,          .V ^+,          V ^s,          ..V ^,          V ^[,          .V ^7,          V ^,          ..V ^,          V ^g,          .V ^C,          V ^,          ...V ^,          V ^S,          .V ^/,          V ^w,          ..V ^,          V ^_,          .V ^;,          V ^,          ..V ^#,          V ^k,          .V ^G,          V ^,          ......4      8X  g   Q h\        SR4      V! V ^ ,          V ^,          .V ^,          V ^,          ..V ^,          V ^,          .V ^,          V ^,          ..V ^,          V ^	,          .V ^
,          V ^,          ...V ^,          V ^,          .V ^,          V ^,          ..V ^,          V ^,          .V ^,          V ^,          ..V ^,          V ^,          .V ^,          V ^,          ...V ^,          V ^,          .V ^,          V ^,          ..V ^,          V ^,          .V ^,          V ^,          ..V ^ ,          V ^!,          .V ^",          V ^#,          ....V ^H,          V ^I,          .V ^J,          V ^K,          ..V ^L,          V ^M,          .V ^N,          V ^O,          ..V ^P,          V ^Q,          .V ^R,          V ^S,          ...V ^T,          V ^U,          .V ^V,          V ^W,          ..V ^X,          V ^Y,          .V ^Z,          V ^[,          ..V ^\,          V ^],          .V ^^,          V ^_,          ...V ^`,          V ^a,          .V ^b,          V ^c,          ..V ^d,          V ^e,          .V ^f,          V ^g,          ..V ^h,          V ^i,          .V ^j,          V ^k,          .....V ^$,          V ^%,          .V ^&,          V ^',          ..V ^(,          V ^),          .V ^*,          V ^+,          ..V ^,,          V ^-,          .V ^.,          V ^/,          ...V ^0,          V ^1,          .V ^2,          V ^3,          ..V ^4,          V ^5,          .V ^6,          V ^7,          ..V ^8,          V ^9,          .V ^:,          V ^;,          ...V ^<,          V ^=,          .V ^>,          V ^?,          ..V ^@,          V ^A,          .V ^B,          V ^C,          ..V ^D,          V ^E,          .V ^F,          V ^G,          ....V ^l,          V ^m,          .V ^n,          V ^o,          ..V ^p,          V ^q,          .V ^r,          V ^s,          ..V ^t,          V ^u,          .V ^v,          V ^w,          ...V ^x,          V ^y,          .V ^z,          V ^{,          ..V ^|,          V ^},          .V ^~,          V ^,          ..V ^,          V ^,          .V ^,          V ^,          ...V ^,          V ^,          .V ^,          V ^,          ..V ^,          V ^,          .V ^,          V ^,          ..V ^,          V ^,          .V ^,          V ^,          ......4      8X  g   Q h\        SR4      V! V ^ ,          V ^,          .V ^,          V ^,          .V ^,          V ^	,          ..V ^,          V ^,          .V ^,          V ^,          .V ^
,          V ^,          ...V ^$,          V ^%,          .V ^(,          V ^),          .V ^,,          V ^-,          ..V ^&,          V ^',          .V ^*,          V ^+,          .V ^.,          V ^/,          ....V ^,          V ^,          .V ^,          V ^,          .V ^,          V ^,          ..V ^,          V ^,          .V ^,          V ^,          .V ^,          V ^,          ...V ^0,          V ^1,          .V ^4,          V ^5,          .V ^8,          V ^9,          ..V ^2,          V ^3,          .V ^6,          V ^7,          .V ^:,          V ^;,          ....V ^,          V ^,          .V ^,          V ^,          .V ^ ,          V ^!,          ..V ^,          V ^,          .V ^,          V ^,          .V ^",          V ^#,          ...V ^<,          V ^=,          .V ^@,          V ^A,          .V ^D,          V ^E,          ..V ^>,          V ^?,          .V ^B,          V ^C,          .V ^F,          V ^G,          .....V ^H,          V ^I,          .V ^L,          V ^M,          .V ^P,          V ^Q,          ..V ^J,          V ^K,          .V ^N,          V ^O,          .V ^R,          V ^S,          ...V ^l,          V ^m,          .V ^p,          V ^q,          .V ^t,          V ^u,          ..V ^n,          V ^o,          .V ^r,          V ^s,          .V ^v,          V ^w,          ....V ^T,          V ^U,          .V ^X,          V ^Y,          .V ^\,          V ^],          ..V ^V,          V ^W,          .V ^Z,          V ^[,          .V ^^,          V ^_,          ...V ^x,          V ^y,          .V ^|,          V ^},          .V ^,          V ^,          ..V ^z,          V ^{,          .V ^~,          V ^,          .V ^,          V ^,          ....V ^`,          V ^a,          .V ^d,          V ^e,          .V ^h,          V ^i,          ..V ^b,          V ^c,          .V ^f,          V ^g,          .V ^j,          V ^k,          ...V ^,          V ^,          .V ^,          V ^,          .V ^,          V ^,          ..V ^,          V ^,          .V ^,          V ^,          .V ^,          V ^,          ......4      8X  g   Q hSP5                  ^^	^^4      p	W! V ^ ,          V ^,          .V ^,          V ^,          ..V ^,          V ^,          .V ^,          V ^,          ..V ^,          V ^	,          .V ^
,          V ^,          ..V ^,          V ^,          .V ^,          V ^,          ..V ^,          V ^,          .V ^,          V ^,          ..V ^,          V ^,          .V ^,          V ^,          ..V ^,          V ^,          .V ^,          V ^,          ..V ^,          V ^,          .V ^,          V ^,          ..V ^ ,          V ^!,          .V ^",          V ^#,          ...	V ^$,          V ^%,          .V ^&,          V ^',          ..V ^(,          V ^),          .V ^*,          V ^+,          ..V ^,,          V ^-,          .V ^.,          V ^/,          ..V ^0,          V ^1,          .V ^2,          V ^3,          ..V ^4,          V ^5,          .V ^6,          V ^7,          ..V ^8,          V ^9,          .V ^:,          V ^;,          ..V ^<,          V ^=,          .V ^>,          V ^?,          ..V ^@,          V ^A,          .V ^B,          V ^C,          ..V ^D,          V ^E,          .V ^F,          V ^G,          ...	V ^H,          V ^I,          .V ^J,          V ^K,          ..V ^L,          V ^M,          .V ^N,          V ^O,          ..V ^P,          V ^Q,          .V ^R,          V ^S,          ..V ^T,          V ^U,          .V ^V,          V ^W,          ..V ^X,          V ^Y,          .V ^Z,          V ^[,          ..V ^\,          V ^],          .V ^^,          V ^_,          ..V ^`,          V ^a,          .V ^b,          V ^c,          ..V ^d,          V ^e,          .V ^f,          V ^g,          ..V ^h,          V ^i,          .V ^j,          V ^k,          ...	V ^l,          V ^m,          .V ^n,          V ^o,          ..V ^p,          V ^q,          .V ^r,          V ^s,          ..V ^t,          V ^u,          .V ^v,          V ^w,          ..V ^x,          V ^y,          .V ^z,          V ^{,          ..V ^|,          V ^},          .V ^~,          V ^,          ..V ^,          V ^,          .V ^,          V ^,          ..V ^,          V ^,          .V ^,          V ^,          ..V ^,          V ^,          .V ^,          V ^,          ..V ^,          V ^,          .V ^,          V ^,          ...	.4      8X  g   Q h\        V	R4      V! V ^ ,          V ^,          V ^,          V ^,          V ^,          V ^,          V ^,          V ^,          V ^ ,          .	V ^$,          V ^(,          V ^,,          V ^0,          V ^4,          V ^8,          V ^<,          V ^@,          V ^D,          .	V ^H,          V ^L,          V ^P,          V ^T,          V ^X,          V ^\,          V ^`,          V ^d,          V ^h,          .	V ^l,          V ^p,          V ^t,          V ^x,          V ^|,          V ^,          V ^,          V ^,          V ^,          .	.V ^,          V ^,          V ^
,          V ^,          V ^,          V ^,          V ^,          V ^,          V ^",          .	V ^&,          V ^*,          V ^.,          V ^2,          V ^6,          V ^:,          V ^>,          V ^B,          V ^F,          .	V ^J,          V ^N,          V ^R,          V ^V,          V ^Z,          V ^^,          V ^b,          V ^f,          V ^j,          .	V ^n,          V ^r,          V ^v,          V ^z,          V ^~,          V ^,          V ^,          V ^,          V ^,          .	..V ^,          V ^,          V ^	,          V ^,          V ^,          V ^,          V ^,          V ^,          V ^!,          .	V ^%,          V ^),          V ^-,          V ^1,          V ^5,          V ^9,          V ^=,          V ^A,          V ^E,          .	V ^I,          V ^M,          V ^Q,          V ^U,          V ^Y,          V ^],          V ^a,          V ^e,          V ^i,          .	V ^m,          V ^q,          V ^u,          V ^y,          V ^},          V ^,          V ^,          V ^,          V ^,          .	.V ^,          V ^,          V ^,          V ^,          V ^,          V ^,          V ^,          V ^,          V ^#,          .	V ^',          V ^+,          V ^/,          V ^3,          V ^7,          V ^;,          V ^?,          V ^C,          V ^G,          .	V ^K,          V ^O,          V ^S,          V ^W,          V ^[,          V ^_,          V ^c,          V ^g,          V ^k,          .	V ^o,          V ^s,          V ^w,          V ^{,          V ^,          V ^,          V ^,          V ^,          V ^,          .	...4      8X  d   EK  Q h	  \        \6        3 Fp  p
V
! ^^R^/R4      p\        VR4      V8X  g   Q h\        VR4      V
! ^^R
^/R4      8X  g   Q hV
! ^^R	^/R4      pVP	                  4       V
! R^^^/R4      8X  d   Kp  Q h	  R# u upi u upi )rY   :N   Nc                     < \        S R4      # )r   r   r   m1s   r   <lambda>(test_array_permutedims.<locals>.<lambda>   s    ;r4#8r   c                     < \        S R4      # )r   )r   r   rg   rh   s   r   rj   rk          ;r6#:r   c                     < \        S R4      # )r&   )r&   r'   r   rg   rh   s   r   rj   rk      s    ;r9#=r   c                     < \        S R4      # )r&   )r&   r&   rg   r`   s   r   rj   rk      rm   r   c                  $   < S P                  4       # N)r
   rp   s   r   rj   rk      s    2<<>r   c                  $   < S P                  4       # rr   )r   rp   s   r   rj   rk      s    2::<r   rP   rQ   i NrJ   )r&   r   )r'   r(   r&   r   )rd      r\   r[   r]   )r&   r   r'   r(   r[   r\   )r   r'   r&   r[   r(   r\   )r(   r'   r   r&   )rP   rQ   rP   r   r&   r'   )r&   r   r'   )rQ   rP   rP   rO   )rQ   rP   )r   r   r   r   r
   tomatrixTr3   r	   Hr   r   
ValueErrorrK   randomrandintr   listshuffler   shapetupler   zerosreversedrankreshaper   )ra   r0   dimsr;   r~   elemsrapermr.   po2r4   r1   r2   ri   r`   s                @@r   test_array_permutedimsr      sI1   		B-/GH	r"vv&2v&)B-777{{}+b&"9"B"B"DDDD{{})B-"8"8"::::{{})B-"8"8"::::{{}'"+"6"6"8888{{}",,."9"9";;;;{{}",,."9"9";;;;{{}"**,"7"7"9999z89z:;z=> .3Dk:k!$k:*/u0E*FG*FQ*FGu$E$K t;r0*T2BCrIII2$**eK4Ee4L.MMMMOOAa!$1l+11\AAA1l+11\AAA1k,78>>,NNNr-.z:;z12z/02xbggi(89:iQ%B2b62c7"34227G"R&RTUXRYIZ6[_abd_e_abd_e_giklnioqstwqxhy^{ |Q%B2b62c7"3428:28@BDR&"S'AR7TR&"S'"RVRW$568 Q%R&rFBsG,.13BB0@2b62c7BS/TXZ[]X^XZ[^X_XacefhcikmnqkrbsWuvw Q%B2b62c7"3428:28@BDR&"S'AR7TWYZ\W]_abd_eVfiklnioqstwqxhyUz|Q%R&rFBsG,.13BB0@2b62c7BS/TXZ[]X^XZ[^X_XacefhcikmnqkrbsWuv R&"R&!BrFBsG#45B9;B9ACEb62c7BS8UR&"S'"RVRW$5689:  Q%R&rFBsG,.13BB0@2b62c7BS/TXZ[]X^XZ[]X^X`bdegbhjlmpjqarWtu Q%B2b62c7"3428:28@BDR&"S'AR7TR&"S'"RVRW$568 Q%R&rFBsG,.13BB0@2b62c7BS/TXZ[]X^XZ[^X_XacefhcikmnqkrbsWuvw Q%B2b62c7"3428:28@BDR&"S'AR7TWYZ\W]_abd_eVfiklnioqstwqxhyUz|Q%R&rFBsG,.13BB0@2b62c7BS/TXZ[]X^XZ[^X_XacefhcikmnqkrbsWuv R&"R&!BrFBsG#45B9;B9ACEb62c7BS8UR&"S'"RVRW$5689:! ;!?< !< !	< !<F 212iQ%A"Q%A0BqE2a5>BqE2a5>2RVXYZV[]_`a]bUcfhikflfhikflfn Uo pR&"R&!BrFBrF#34227G"R&JLR&JR 7SVXY[V\^`ac^dUehjkmhnprsupvgwTxzR&"R&!BrF$&rF$, -0222/?"R&"R&AQ.RVXY[V\^`ac^dUehjkmhnhjkmhnhp Uqr	s R&"R&!BrFBrF#34227G"R&JLR&JR 7SVXY[V\^`ac^dUehjkmhnprsupvgwTxzR&"R&!BrF$&rF$, -0222/?"R&"R&AQ.RVXY[V\^`ac^dUehjkmhnhjkmhnhp Uqr R&"R&!BrFBrF#343C7IBsGLNsGLU 7VS'2c7#bgr#w%78:;< CER&"R&AQTVWYTZTVWYTZT\ A]BDR&"R&AQTVWYTZ\^_a\bSc@dBDR&"R&AQTVWYTZTVWYTZT\ A]@^
 CER&"R&AQTVWYTZ\^_a\bSc@dBDR&"R&AQTVWYTZTVWYTZT\ A]BDR&"R&AQTVWYTZ\^_a\bSc@d@f CER&"R&AQTVWYTZTVWYTZT\ A]BDR&"R&AQTVWYTZ\^_a\bSc@dBDR&"R&AQTVWYTZTVWYTZT\ A]@^?_ FHWbQTgDVY[\_Y`bdehbiXjCkEGWbQTgDVY[\_Y`Y[\_Y`Yb DcEGWbQTgDVY[\_Y`bdehbiXjCkCm FHWbQTgDVY[\_Y`Y[\_Y`Yb DcEGWbQTgDVY[\_Y`bdehbiXjCkEGWbQTgDVY[\_Y`Y[\_Y`Yb DcCd
 FHWbQTgDVY[\_Y`bdehbiXjCkEGWbQTgDVY[\_Y`Y[\_Y`Yb DcEGWbQTgDVY[\_Y`bdehbiXjCkCman>o(p)7q )q )	q )qV 212iQ%A"Q%A"Q%A@BqE2a5>TVWXTY[]^_[`Sadfgidjdfgidjdl Cm nR&"R&!BrFBrF#3bfbf5EF"R&JLR&JRTVWYTZ\^_a\bScfhikflnpqsnteuIw xy R&"R&!BrF$&rF$,.0fbf-=?BDR&"R&AQTVWYTZ\^_a\bScfhikflfhikflfn Aop R&"R&!BrFBrF#3bfbf5EF"R&JLR&JRTVWYTZ\^_a\bScfhikflnpqsnteuIw xy
 R&"R&!BrF$&rF$,.0fbf-=?BDR&"R&AQTVWYTZ\^_a\bScfhikflfhikflfn Aop R&"R&!BrFBrF#3bfbf5EF"R&JLR&JRTVWYTZ\^_a\bScfhikflnpqsnteuIw xyz R&"R&!BrF$&rF$,.0fbf-=?BDR&"R&AQTVWYTZ\^_a\bScfhikflfhikflfn Aop S'2c7#bgr#w%7"S'2c79KLPRSVPWPRSVPWPY[]^a[bdfgjdkZlPRSVPWY[\_Y`OaOc de R&"R&!BrF$&rF$,.0fbf-=?BDR&"R&AQTVWYTZ\^_a\bScfhikflfhikflfn Aop S'2c7#bgr#w%7"S'2c79KLPRSVPWPRSVPWPY[]^a[bdfgjdkZlPRSVPWY[\_Y`OaOc de R&"R&!BsG$&sG$-/1#w3.@BEGVRPRVDTWYZ]W^`bcf`gVhkmnqkrkmnqkrkt Duv S'2c7#bgr#w%7"S'2c79KLPRSVPWPRSVPWPY[]^a[bdfgjdkZlPRSVPWY[\_Y`OaOc defg 7h  h  	h  hD jjAq!$iBqE2a5>BqE2a5>"BbeRPQU^VXYZV[]_`a]bUcDdhjklhmoqrsotguxz{}x~  AC  DF  AG  xH  gI  MO  PR  MS  UW  XZ  U[  L\  _a  bd  _e  gi  jl  gm  ^n  Ko  su  vx  sy  {}  ~@  {A  rB  EG  HJ  EK  MO  PR  MS  DT  qU  Y[  \^  Y_  ac  df  ag  Xh  km  np  kq  su  vx  sy  jz  W{  A  BD  E  GI  JL  GM  ~N  QS  TV  QW  Y[  \^  Y_  P`  }a  eg  hj  ek  mo  pr  ms  dt  wy  z|  w}  A  BD  E  vF  cG  KM  NP  KQ  SU  VX  SY  JZ  ]_  `b  ]c  eg  hj  ek  \l  Im  "n  su  vx  sy  {}  ~@  {A  rB  EG  HJ  EK  MO  PR  MS  DT  qU  Y[  \^  Y_  ac  df  ag  Xh  km  np  kq  su  vx  sy  jz  W{  A  BD  E  GI  JL  GM  ~N  QS  TV  QW  Y[  \^  Y_  P`  }a  eg  hj  ek  mo  pr  ms  dt  wy  z|  w}  A  BD  E  vF  cG  KM  NP  KQ  SU  VX  SY  JZ  ]_  `b  ]c  eg  hj  ek  \l  Im  qs  tv  qw  y{  |~  y  p@	  C	E	  F	H	  C	I	  K	M	  N	P	  K	Q	  B	R	  oS	  W	Y	  Z	\	  W	]	  _	a	  b	d	  _	e	  V	f	  i	k	  l	n	  i	o	  q	s	  t	v	  q	w	  h	x	  U	y	  }		  @
B
  }	C
  E
G
  H
J
  E
K
  |	L
  O
Q
  R
T
  O
U
  W
Y
  Z
\
  W
]
  N
^
  {	_
  c
e
  f
h
  c
i
  k
m
  n
p
  k
q
  b
r
  u
w
  x
z
  u
{
  }

  @B  }
C  t
D  a
E  pF  KM  NP  KQ  SU  VX  SY  JZ  ]_  `b  ]c  eg  hj  ek  \l  Im  qs  tv  qw  y{  |~  y  p@  CE  FH  CI  KM  NP  KQ  BR  oS  WY  Z\  W]  _a  bd  _e  Vf  ik  ln  io  qs  tv  qw  hx  Uy  }  @B  }C  EG  HJ  EK  |L  OQ  RT  OU  WY  Z\  W]  N^  {_  ce  fh  ci  km  np  kq  br  uw  xz  u{  }  @B  }C  tD  aE  IK  LN  IO  QS  TV  QW  HX  []  ^`  [a  ce  fh  ci  Zj  Gk  oq  rt  ou  wy  z|  w}  n~  AC  DF  AG  IK  LN  IO  @P  mQ  UW  X[  U\  ^`  ad  ^e  Tf  ik  lo  ip  rt  ux  ry  hz  S{  A  BE  F  HJ  KN  HO  ~P  SU  VY  SZ  \^  _b  \c  Rd  }e  Hf  km  nq  kr  tv  wz  t{  j|  A  BE  F  HJ  KN  HO  ~P  iQ  UW  X[  U\  ^`  ad  ^e  Tf  ik  lo  ip  rt  ux  ry  hz  S{  A  BE  F  HJ  KN  HO  ~P  SU  VY  SZ  \^  _b  \c  Rd  }e  ik  lo  ip  rt  ux  ry  hz  }  @C  }D  FH  IL  FM  |N  gO  SU  VY  SZ  \^  _b  \c  Rd  gi  jm  gn  pr  sv  pw  fx  Qy  }  @C  }D  FH  IL  FM  |N  QS  TW  QX  Z\  ]`  Za  Pb  {c  gi  jm  gn  pr  sv  pw  fx  {}  ~A  {B  DF  GJ  DK  zL  eM  QS  TW  QX  Z\  ]`  Za  Pb  eg  hk  el  np  qt  nu  dv  Ow  {}  ~A  {B  DF  GJ  DK  zL  OQ  RU  OV  XZ  [^  X_  N`  ya  hb  !c  d  d  	d  d3-r!ubeRPQUTVWYTZ\^_a\bdfgidjlnoqlrtvwytz|~  @B  }C  ?D  GI  JL  GM  OQ  RT  OU  WY  Z\  W]  _a  bd  _e  gi  jl  gm  oq  rt  ou  wy  z|  w}  A  BD  E  GI  JL  GM  FN  QS  TV  QW  Y[  \^  Y_  ac  df  ag  ik  ln  io  qs  tv  qw  y{  |~  y  AC  DF  AG  IK  LO  IP  RT  UX  RY  PZ  ]_  `c  ]d  fh  il  fm  oq  ru  ov  xz  {~  x  AC  DG  AH  JL  MP  JQ  SU  VY  SZ  \^  _b  \c  eg  hk  el  \m  >n  rt  uv  rw  y{  |}  y~  @B  CE  @F  HJ  KM  HN  PR  SU  PV  XZ  []  X^  `b  ce  `f  hj  km  hn  pr  su  pv  qw  z|  }  z@  BD  EG  BH  JL  MO  JP  RT  UW  RX  Z\  ]_  Z`  bd  eg  bh  jl  mo  jp  rt  uw  rx  z|  }  z@  yA  DF  GI  DJ  LN  OQ  LR  TV  WY  TZ  \^  _a  \b  df  gi  dj  ln  oq  lr  tv  wy  tz  |~  B	  |C	  E	G	  H	K	  E	L	  CM	  P	R	  S	V	  P	W	  Y	[	  \	_	  Y	`	  b	d	  e	h	  b	i	  k	m	  n	q	  k	r	  t	v	  w	z	  t	{	  }		  @
C
  }	D
  F
H
  I
L
  F
M
  O
Q
  R
U
  O
V
  X
Z
  [
^
  X
_
  O	`
  pa
  =b
  g
i
  j
k
  g
l
  n
p
  q
r
  n
s
  u
w
  x
y
  u
z
  |
~
  
A  |
B  DF  GI  DJ  LN  OQ  LR  TV  WY  TZ  \^  _a  \b  df  gi  dj  f
k  np  qs  nt  vx  y{  v|  ~@  AC  ~D  FH  IK  FL  NP  QS  NT  VX  Y[  V\  ^`  ac  ^d  fh  ik  fl  np  qs  nt  mu  xz  {}  x~  @B  CE  @F  HJ  KM  HN  PR  SU  PV  XZ  []  X^  `b  ce  `f  hj  km  hn  pr  sv  pw  y{  |  y@  wA  DF  GJ  DK  MO  PS  MT  VX  Y\  V]  _a  be  _f  hj  kn  ho  qs  tw  qx  z|  }@  zA  CE  FI  CJ  LN  OR  LS  CT  e
U  Y[  \]  Y^  `b  cd  `e  gi  jl  gm  oq  rt  ou  wy  z|  w}  A  BD  E  GI  JL  GM  OQ  RT  OU  WY  Z\  W]  X^  ac  df  ag  ik  ln  io  qs  tv  qw  y{  |~  y  AC  DF  AG  IK  LN  IO  QS  TV  QW  Y[  \^  Y_  ac  df  ag  `h  km  np  kq  su  vx  sy  {}  ~@  {A  CE  FH  CI  KM  NP  KQ  SU  VX  SY  []  ^`  [a  ce  fi  cj  ln  or  ls  jt  wy  z}  w~  @B  CF  @G  IK  LO  IP  RT  UX  RY  []  ^a  [b  df  gj  dk  mo  ps  mt  vx  y|  v}  A  BE  F  vG  WH  d
I  <J  2K  K  	K  K{ I@ 56LMQq%N,AB1i(A---1i(OQ9a<PRg,hhhhQq%NN;{{}1a0@. QQQQ N[ ;Gs   - Au0#Au5c            	      t  a \        \        ^ 4      4      P                  ^^^^^4      o\        R4      p \        R4      p\	        SWR7      p\
        P                  ! \        ^4      \        ^4      \        ^4      \        ^4      \        ^4      4       F#  w  r4rVpW#WEWg3,          SWtWcV3,          8X  d   K#  Q h	  \        R4      p\	        SWR7      p\
        P                  ! \        ^4      \        ^4      \        ^4      \        ^4      \        ^4      4       F#  w  r4rVpW#WEWg3,          SWSWGV3,          8X  d   K#  Q h	  \        \        V3R l4       \        \        V3R l4       \        \        V3R l4       \        \        V3R l4       \        \        V3R	 l4       \        \        V3R
 l4       R# )    abcdeebdac)index_order_newindex_order_oldcabedc                  D   < \        S \        R 4      \        R4      R7      # )aacder   r   r   r   r|   r1   s   r   rj   /test_permutedims_with_indices.<locals>.<lambda><      {1d7m]abi]jkr   c                  D   < \        S \        R 4      \        R4      R7      # )r   abccer   r   r   s   r   rj   r   =  r   r   c                  D   < \        S \        R 4      \        R4      R7      # )r   abcer   r   r   s   r   rj   r   >  s    {1d7m]abh]ijr   c                  D   < \        S \        R 4      \        R 4      R7      # )r   r   r   r   s   r   rj   r   ?  s    {1d6l\`ag\hir   c                  6   < \        S . RO\        R4      R7      # )r'   r   )r   r'   r&   r   r(   r[   r   r   s   r   rj   r   @      {1otT[}]r   c                  6   < \        S . RO\        R4      R7      # )r'   r   )r   r   r   r   s   r   rj   r   A  r   r   N)	r   rK   r   r|   r   	itertoolsproductr   ry   )	indices_newindices_oldnew_Ar!   r"   r#   r$   r7   r1   s	           @r   test_permutedims_with_indicesr   1  sS   eBi  Aq!Q/Aw-Kw-K;TE"**58U1XuQxqSXYZS[\aAa]#qqQ'7777 ]w-K;TE"**58U1XuQxqSXYZS[\aAa]#qqQ'7777 ]
:kl
:kl
:jk
:ij
:]^
:]^r   c                      ^ RI Hp  \        \        V 3 Ff  pV! \	        ^4      4      P                  ^^4      p\        \        V4      4      . RO8X  g   Q h\        \        V4      4       F  w  r4W48X  d   K  Q h	  Kh  	  R# )r   )MatrixN)r   r&   r'   r(   r[   r\   rd   rt      	   
                                          )	sympy.matrices.denser   r   r   rK   r   r|   r   	enumerate)r   r0   r1   r;   rG   s        r   test_flattenr   D  si    +-/GP	eBi ((A.GAJ#yyyygaj)DA6M6 *	 Qr   c            	        aa ^ RI Hp  \        \        ^	4      4      P	                  ^^4      o\        \        V3R l4       \        \        V3R l4       \        V ! ^4      ^ ^.4      \        . R	O4      8X  g   Q h\        S^ ^.4      \        . R
O4      8X  g   Q h\        R4      w  rp\        WV.S4      p\        V^^.4      \        ^ ^V,          ^V,          .^ ^V,          ^V,          .^ ^V,          ^V,          ..4      8X  g   Q h\        V^ ^.4      \        ^ ^V,          ^V,          .V^V,          ^V,          .^V,          ^V,          ^V,          ..4      8X  g   Q h\        V. RO4      \        ^ ^V,          ^V,          .4      8X  g   Q h\        R4      w  rVrxr\        WV.. ROWVV.WV
.4      o\        S. RO4      \        W,          V,          ^V,          V,          V	,          ^V,          V,          V
,          .4      8X  g   Q h\        S^ ^.^^.4      \        V^V,          ^V,          .WX,          Wi,          Wz,          .4      8X  g   Q h\        \        S^^.4      ^ ^.4      \        WX,          Wi,          Wz,          .V^V,          ^V,          .4      8X  g   Q h\        \        R 4       \        \        V3R l4       R# )r   )eyec                  "   < \        S ^ .^.4      # rf   r   exprs   r   rj   %test_tensordiagonal.<locals>.<lambda>Q  s    ~dQC!=r   c                      < \        S ^ ^ .4      # rf   r   r   s   r   rj   r   R  s    ~dQF;r   zx y zza b c X Y Zc                  *    \        . RO. RO.^ ^.4      # )r&   r%   )r[   r\   rd   r    r   r   rj   r   h  s    ~y).Dq!fMr   c                  B   < \        S P                  ^^^	4      ^^.4      # )r(   )r   r   )expr3s   r   rj   r   i  s    ~emmAq!.Dq!fMr   N)r&   r&   r&   )r   r[   r   ru   r%   )r   r&   r'   r(   )
r   r   r   rK   r   r   ry   r   r   r   )r   r,   r-   r.   expr2r!   r"   r#   XYZr   r   s              @@r   test_tensordiagonalr   N  s   (q?""1a(D
:=>
:;<#a&1a&)U9-====$A'5+;;;;gGA!1)T*E%!Q(EAqsAaC=1ac1Q3-RSUVWXUXZ[\]Z]Q^2_,````%!Q(EAqsAaC=1ac1Q3-RSTURUWXYZWZ\]^_\_Q`2a,bbbb%+ua1ac]/CCCC }-A!1)Yq	A!9EE%.%Q!Aa1Qq8Q2RRRR%!Q!Q0M1ac1Q3-RSRUWXWZ\]\_Q`4aaaa .A7!Q@MSTSVXYX[]^]`RadeghijgjlmnolocpDqqqq
:MN
:MNr   )+r   rz   sympy.combinatoricsr    sympy.combinatorics.permutationsr   sympy.testing.pytestr   sympy.core.functionr   sympy.core.symbolr   $sympy.functions.elementary.complexesr   r	   r
   &sympy.functions.elementary.exponentialr   r   (sympy.functions.elementary.trigonometricr   r   r   r   r   r   r   sympy.tensor.array.arrayopr   r   r   r   r   r   r   r5   rM   rW   rb   r   r   r   r   r   r   r   <module>r      sn      + 7 ' $ % P P = ? o o 
$LNb&HRl&hRV_&Or   