
    shd                         S SK r S SKrS SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJrJrJr  S SKJrJr  S S	KJrJr  S S
KJrJrJrJr  S SKJrJrJrJrJ r J!r!  S r"S r#S r$S r%S r&S r'S r(S r)S r*g)    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                      SSK Jn   A g )Nr   	NDimArray)sympy.tensor.arrayr   r   s    y/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/sympy/tensor/array/tests/test_arrayop.pytest_import_NDimArrayr      s    ,    c                     [        S5      u  pp#SSKJnJnJnJn  [        5       S:X  d   e[        U /5      [        U /5      :X  d   e[        U /U/5      [        X-  //5      :X  d   e[        U /U/U/5      [        X-  U-  ///5      :X  d   e[        U /U/U/U/5      [        X-  U-  U-  ////5      :X  d   e[        U 5      U :X  d   e[        X5      X-  :X  d   e[        XU5      X-  U-  :X  d   e[        XX#5      X-  U-  U-  :X  d   e[        [        4 GH  nU" X/5      n	U" / SQ5      n
U" XEXg/5      n[        XU5      U" X@-  XP-  X`-  Xp-  /SU-  U -  SU-  U -  SU-  U -  SU-  U -  /SU-  U -  SU-  U -  SU-  U -  SU-  U -  //XA-  XQ-  Xa-  Xq-  /SU-  U-  SU-  U-  SU-  U-  SU-  U-  /SU-  U-  SU-  U-  SU-  U-  SU-  U-  ///5      :X  d   e[        X// SQ5      [        X5      :X  d   e[        U	S5      U" SU -  SU-  /5      :X  d   e[        U	S/5      U" SU -  /SU-  //5      :X  d   e[        S/U	5      U" SU -  SU-  //5      :X  d   e[        XI5      U" X@-  XA-  /5      :X  d   e[        XIU
5      U" X@-  SU-  U -  SU-  U -  /XA-  SU-  U-  SU-  U-  //5      :X  d   e[        XU5      U" X@-  SU-  U -  SU-  U -  /XA-  SU-  U-  SU-  U-  //5      :X  d   e[        XU	5      U" X@-  XA-  /SU-  U -  SU-  U-  /SU-  U -  SU-  U-  //5      :X  a  GM   e   [        [        4 H;  nU" SSS	.S
5      nU" SSS	.S
5      n[        XE5      [        SSSSS.S5      :X  a  M;   e   g )Nzx y z tr   )abcd   r%         r'   r(      )r%   r(   )          )i i i[ i[ )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_tensorproductr8      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qAJ|4qAJ|4Q"&>UVabmo?p  sK  'L  L  	L  L Nr   c                     SSK Jn JnJnJnJnJnJnJnJ	nJ
n	Jn
JnJnJnJnJnJnJnJnJnJnJnJnJn  [3        [5        S5      S5      n[7        US5      [3        SS/5      :X  d   e[3        XX#XEXgXXXXUUUUUUUU/S5      n[7        US	5      [3        X-   X-   /UU-   UU-   /UU-   U	U-   //5      :X  d   e[7        US
5      [3        X-   UU-   UU-   /5      :X  d   e[7        US5      [3        X-   XG-   X-   /X-   UU-   UU-   //5      :X  d   eg )Nr   )r!   r"   r#   r$   efghijklmnopqrsr2   uvwr/      )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@   rA   rB   rC   rD   rE   rF   rG   rH   r2   rI   rJ   rK   r/   r   ranger   )r!   r"   r#   r$   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   r2   rI   rJ   rK   r/   r5   C1s                             r   test_tensorcontractionrS   ?   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            	      l	   SSK Jn JnJnJnJnJn  X4S-  -  [        U5      -  [        U5      -  n[        U5      n[        U5      n[        U/5      n	[        Xr5      X4S-  -  [        U5      -  [        X4S-  -  [        U5      -  [        U5      -  5      -  U-  :X  d   e[        XsXE/5      [        Xc-  U-  SU-  U-  US-  -  U-  Xh-  /5      :X  d   e[        XXE/5      [        Xc-  U-  /SU-  U-  US-  -  U-  /Xh-  //5      :X  d   e[        XsU/XR//5      [        Xc-  U-  SU-  U-  US-  -  U-  /Xh-  U[        U5      -  U-  U-  //5      :X  d   e[        XU/XR//5      [        Xc-  U-  /SU-  U-  US-  -  U-  //Xh-  /U[        U5      -  U-  U-  ///5      :X  d   e[        X4/XR//X4/5      [        SS/SS//SS/SS///5      :X  d   e[        X4/XR//X4/XR//5      [        SS/SS//SS/SS///SS/SS//SS/SS////5      :X  d   e[        Xr5      X4S-  -  [        U5      -  [        X4S-  -  [        U5      -  [        U5      -  5      -  U-  :X  d   e[        U[        X4U/5      5      [        Xc-  U-  SU-  U-  US-  -  U-  Xh-  /5      :X  d   e[        U	[        X4U/5      5      [        Xc-  U-  /SU-  U-  US-  -  U-  /Xh-  //5      :X  d   e[        U[        X4/XR//5      5      [        Xc-  U-  SU-  U-  US-  -  U-  /Xh-  U[        U5      -  U-  U-  //5      :X  d   e[        U	[        X4/XR//5      5      [        Xc-  U-  /SU-  U-  US-  -  U-  //Xh-  /U[        U5      -  U-  U-  ///5      :X  d   e[        [        X4/XR//5      [        X4/5      5      [        SS/SS//SS/SS///5      :X  d   e[        [        X4/XR//5      [        X4/XR//5      5      [        SS/SS//SS/SS///SS/SS//SS/SS////5      :X  d   e[        [        4 HN  n
[        XS.S5      n[        X5      [        SS0S5      :X  d   e[        XU45      [        SSS.S5      :X  a  MN   e   [        X4U/5      nSn[        X5      [!        / S	Q5      :X  d   eg )
Nr   )r>   r?   r2   r/   r0   r1   r'   r%   r   r%   '   N  )r   i)r'   rW   rX   )r   r   r   )r.   r>   r?   r2   r/   r0   r1   r   r   r   r   r   r   r   r   r   r   )r>   r?   r2   r/   r0   r1   bexprsexprcexprr!   r7   r"   UEs                 r   test_derivative_by_arrayr^   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"a:~>q$(@!Q(XXXXqa&)-E!XYFZ\m-nnnn N 	qQiA	A1 %<Y%GGGGr   c            
         [        SS/5      n [        SS/SS//5      n[        XX5      n[        USS5      [        SS/SS//5      :X  d   e[        S5      n[        U/ SQ5      n[        USS	S5      US   US
   -   US   -   US   -   US   -   US   -   US   -   US   -   US   -   US   -   US   -   US   -   :X  d   e[        USS	5      US   US   -   US   -   US   -   US   -   US   -   :X  d   e[        USS5      [        US   US
   -   US   -   US   -   US   US   -   US   -   US   -   US   US   -   US   -   US   -   /US   US   -   US    -   US!   -   US   US   -   US   -   US   -   US"   US#   -   US$   -   US%   -   /US&   US'   -   US(   -   US)   -   US*   US+   -   US,   -   US-   -   US   US   -   US   -   US   -   //5      :X  d   e[        USS	5      [        US   US
   -   US   -   US   -   US   -   US   -   US   US.   -   US/   -   US0   -   US1   -   US2   -   /US3   US4   -   US5   -   US6   -   US7   -   US8   -   US   US   -   US   -   US   -   US   -   US   -   //5      :X  d   eg )9Nr   r%   rM   )r)      a0:144r'   r'   r(   r(   r'   r'   rU   rP   l   o   |            r-      r(       #   )r   r%   r)   ra   p   s   r)         t   w   r,   rN   x   {                                          m   }         !   n   ~      rL   r'   "   )r   r   r   r   )uaFaposas       r   )test_issue_emerged_while_discussing_10972r   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                  :$  ^^ [        S5      n [        [        4 GHz  nU" U S S S5      m[        TS5      [	        T5      :X  d   eTR                  5       R                  [        TS5      R                  5       :X  d   eTR                  5       R                  [	        T5      R                  5       :X  d   eTR                  5       R                  [        T5      R                  5       :X  d   eTR                  5       R                  [        T5      R                  5       :X  d   eTR                  5       R                  TR	                  5       R                  5       :X  d   eTR                  5       R                  TR                  5       R                  5       :X  d   eTR                  5       R                  TR                  5       R                  5       :X  d   e[        [        U4S j5        [        [        U4S j5        [        [        U4S j5        Sn[        U5       Vs/ s H  n[        R                  " SS	5      PM     nn[        [!        U6 5       Vs/ s H  n[        R                  " 5       PM     nnU" XT5      n[#        [        U5      5      n[        R$                  " U5        [        [        Xg5      ['        U5      5      U:X  d   e[        Xg5      R(                  [+        [-        U5      " U5      5      :X  d   eUR/                  S
S	SS5      n[        US5      R(                  S:X  d   e[        U/ SQ5      R(                  S:X  d   e[        U[-        / SQ5      5      R(                  S:X  d   eU" U / SQ5      m[        [        U4S j5        [        [        U4S j5        [        [        U4S j5        [        T[1        [        TR3                  5       5      5      5      U" U S   U S   /U S   U S   //U S   U S   /U S   U S   //U S   U S   /U S   U S   ///U S
   U S   /U S   U S    //U S!   U S"   /U S#   U S$   //U S%   U S&   /U S'   U S(   ///U S)   U S*   /U S+   U S,   //U S-   U S.   /U S/   U S0   //U S1   U S2   /U S3   U S4   ////U S5   U S6   /U S7   U S8   //U S9   U S:   /U S;   U S<   //U S=   U S>   /U S?   U S@   ///U S   U SA   /U SB   U SC   //U SD   U SE   /U SF   U SG   //U SH   U SI   /U SJ   U SK   ///U SL   U SM   /U SN   U SO   //U SP   U SQ   /U SR   U SS   //U ST   U SU   /U SV   U SW   /////U S   U SX   /U SY   U SZ   //U S[   U S\   /U S]   U S^   //U S_   U S`   /U Sa   U Sb   ///U S	   U Sc   /U Sd   U Se   //U Sf   U Sg   /U Sh   U Si   //U Sj   U Sk   /U Sl   U Sm   ///U Sn   U So   /U Sp   U Sq   //U Sr   U Ss   /U St   U Su   //U Sv   U Sw   /U Sx   U Sy   ////U Sz   U S{   /U S|   U S}   //U S~   U S   /U S   U S   //U S   U S   /U S   U S   ///U S   U S   /U S   U S   //U S   U S   /U S   U S   //U S   U S   /U S   U S   ///U S   U S   /U S   U S   //U S   U S   /U S   U S   //U S   U S   /U S   U S   //////5      :X  d   e[        TS5      U" U S   U S   /U S5   U Sz   //U S
   U S	   /U S   U S   //U S)   U Sn   /U SL   U S   ///U S   U S[   /U S9   U S~   //U S!   U Sf   /U SD   U S   //U S-   U Sr   /U SP   U S   ///U S   U S_   /U S=   U S   //U S%   U Sj   /U SH   U S   //U S1   U Sv   /U ST   U S   ////U S   U SX   /U S6   U S{   //U S   U Sc   /U SA   U S   //U S*   U So   /U SM   U S   ///U S   U S\   /U S:   U S   //U S"   U Sg   /U SE   U S   //U S.   U Ss   /U SQ   U S   ///U S   U S`   /U S>   U S   //U S&   U Sk   /U SI   U S   //U S2   U Sw   /U SU   U S   /////U S   U SY   /U S7   U S|   //U S   U Sd   /U SB   U S   //U S+   U Sp   /U SN   U S   ///U S   U S]   /U S;   U S   //U S#   U Sh   /U SF   U S   //U S/   U St   /U SR   U S   ///U S   U Sa   /U S?   U S   //U S'   U Sl   /U SJ   U S   //U S3   U Sx   /U SV   U S   ////U S   U SZ   /U S8   U S}   //U S    U Se   /U SC   U S   //U S,   U Sq   /U SO   U S   ///U S   U S^   /U S<   U S   //U S$   U Si   /U SG   U S   //U S0   U Su   /U SS   U S   ///U S   U Sb   /U S@   U S   //U S(   U Sm   /U SK   U S   //U S4   U Sy   /U SW   U S   //////5      :X  d   e[        TS5      U" U S   U S   /U S
   U S	   /U S)   U Sn   //U S5   U Sz   /U S   U S   /U SL   U S   ///U S   U SY   /U S   U Sd   /U S+   U Sp   //U S7   U S|   /U SB   U S   /U SN   U S   ////U S   U S[   /U S!   U Sf   /U S-   U Sr   //U S9   U S~   /U SD   U S   /U SP   U S   ///U S   U S]   /U S#   U Sh   /U S/   U St   //U S;   U S   /U SF   U S   /U SR   U S   ////U S   U S_   /U S%   U Sj   /U S1   U Sv   //U S=   U S   /U SH   U S   /U ST   U S   ///U S   U Sa   /U S'   U Sl   /U S3   U Sx   //U S?   U S   /U SJ   U S   /U SV   U S   /////U S   U SX   /U S   U Sc   /U S*   U So   //U S6   U S{   /U SA   U S   /U SM   U S   ///U S   U SZ   /U S    U Se   /U S,   U Sq   //U S8   U S}   /U SC   U S   /U SO   U S   ////U S   U S\   /U S"   U Sg   /U S.   U Ss   //U S:   U S   /U SE   U S   /U SQ   U S   ///U S   U S^   /U S$   U Si   /U S0   U Su   //U S<   U S   /U SG   U S   /U SS   U S   ////U S   U S`   /U S&   U Sk   /U S2   U Sw   //U S>   U S   /U SI   U S   /U SU   U S   ///U S   U Sb   /U S(   U Sm   /U S4   U Sy   //U S@   U S   /U SK   U S   /U SW   U S   //////5      :X  d   eTR5                  S
SnS5S55      n	X" U S   U S   /U S5   U Sz   //U S
   U S	   /U S   U S   //U S)   U Sn   /U SL   U S   //U S   U S[   /U S9   U S~   //U S!   U Sf   /U SD   U S   //U S-   U Sr   /U SP   U S   //U S   U S_   /U S=   U S   //U S%   U Sj   /U SH   U S   //U S1   U Sv   /U ST   U S   ///	U S   U SY   /U S7   U S|   //U S   U Sd   /U SB   U S   //U S+   U Sp   /U SN   U S   //U S   U S]   /U S;   U S   //U S#   U Sh   /U SF   U S   //U S/   U St   /U SR   U S   //U S   U Sa   /U S?   U S   //U S'   U Sl   /U SJ   U S   //U S3   U Sx   /U SV   U S   ///	U S   U SX   /U S6   U S{   //U S   U Sc   /U SA   U S   //U S*   U So   /U SM   U S   //U S   U S\   /U S:   U S   //U S"   U Sg   /U SE   U S   //U S.   U Ss   /U SQ   U S   //U S   U S`   /U S>   U S   //U S&   U Sk   /U SI   U S   //U S2   U Sw   /U SU   U S   ///	U S   U SZ   /U S8   U S}   //U S    U Se   /U SC   U S   //U S,   U Sq   /U SO   U S   //U S   U S^   /U S<   U S   //U S$   U Si   /U SG   U S   //U S0   U Su   /U SS   U S   //U S   U Sb   /U S@   U S   //U S(   U Sm   /U SK   U S   //U S4   U Sy   /U SW   U S   ///	/5      :X  d   e[        U	S5      U" U S   U S
   U S)   U S   U S!   U S-   U S   U S%   U S1   /	U S   U S   U S+   U S   U S#   U S/   U S   U S'   U S3   /	U S   U S   U S*   U S   U S"   U S.   U S   U S&   U S2   /	U S   U S    U S,   U S   U S$   U S0   U S   U S(   U S4   /	/U S5   U S   U SL   U S9   U SD   U SP   U S=   U SH   U ST   /	U S7   U SB   U SN   U S;   U SF   U SR   U S?   U SJ   U SV   /	U S6   U SA   U SM   U S:   U SE   U SQ   U S>   U SI   U SU   /	U S8   U SC   U SO   U S<   U SG   U SS   U S@   U SK   U SW   /	//U S   U S	   U Sn   U S[   U Sf   U Sr   U S_   U Sj   U Sv   /	U SY   U Sd   U Sp   U S]   U Sh   U St   U Sa   U Sl   U Sx   /	U SX   U Sc   U So   U S\   U Sg   U Ss   U S`   U Sk   U Sw   /	U SZ   U Se   U Sq   U S^   U Si   U Su   U Sb   U Sm   U Sy   /	/U Sz   U S   U S   U S~   U S   U S   U S   U S   U S   /	U S|   U S   U S   U S   U S   U S   U S   U S   U S   /	U S{   U S   U S   U S   U S   U S   U S   U S   U S   /	U S}   U S   U S   U S   U S   U S   U S   U S   U S   /	///5      :X  a  GM{   e   [        [6        4 Hi  n
U
" SS5S.S5      n[        US5      U:X  d   e[        US5      U
" SS5S.S5      :X  d   eU
" SS5S.S5      nUR	                  5       U
" SS5S.S5      :X  a  Mi   e   g s  snf s  snf )Nrb      rP   )r%   r   c                     > [        T S5      $ )N)r   r   m1s   r   <lambda>(test_array_permutedims.<locals>.<lambda>   s    ;r4#8r   c                     > [        T S5      $ )N)r   r   r   r   s   r   r   r          ;r6#:r   c                     > [        T S5      $ )N)r%   r'   r   r   r   s   r   r   r      s    ;r9#=r   r%   ra   r)   ro   )r'   r(   r%   r   )r   ro   ra   r)   rc   c                     > [        T S5      $ )N)r%   r%   r   r   s   r   r   r      r   r   c                  $   > T R                  5       $ N)r
   r   s   r   r   r      s    2<<>r   c                  $   > T R                  5       $ r   )r   r   s   r   r   r      s    2::<r   r   H   $   rd   rN   T   0   rs   r|   `   <   rz   L   (   rm   r-   X   4   rf   r   d   @   r~   r,   P   ,   rq   rx   \   8   rv   rk   h   D   rh   r'   J   &   r      V   2   z      b   >      N   *   r   rL   Z   6   r      f   B      
   R   .   v      ^   :      r   j   F   r   I   %   r      U   1   y      a   =      M   )   q   r   Y   5   r      e   A      	   Q   -   u      ]   9      r   i   E   r   r(   K   rO   re   ru   W   3   rt   r}   c   ?   r{   O   +   rn   rj   [   7   rg   r   g   C   r   rp   S   /   rr   ry   _   ;   rw   rl   k   G   ri   )r%   r   r'   r(   r)   ra   )r   r'   r%   r)   r(   ra   )r(   r'   r   r%   )r%   rW   )rW   rX   rW   r   r%   r'   )r%   r   r'   )r%   i )rX   rW   rW   )r%   rX   rV   )rW   r%   )rX   rW   )r   r   r   r   r
   tomatrixTr6   r	   Hr   r   
ValueErrorrQ   randomrandintr   listshuffler   shapetupler   zerosreversedrankreshaper   )r   r3   dimsr>   r  elemsrapermr1   po2r7   r4   r5   r   r   s                @@r   test_array_permutedimsr     s;1   		B-/GH	r"1vv&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qN,AB1i(A---1i(Oa<PRg,hhhhqNN;{{}a0@. QQQQ N[ ;Gs   !!AHAHc            	      B  ^ [        [        S5      5      R                  SSSSS5      m[        S5      n [        S5      n[	        TXS9n[
        R                  " [        S5      [        S5      [        S5      [        S5      [        S5      5       H  u  p4pVnX#XEXg4   TXtXcU4   :X  a  M   e   [        S5      n[	        TXS9n[
        R                  " [        S5      [        S5      [        S5      [        S5      [        S5      5       H  u  p4pVnX#XEXg4   TXSXGU4   :X  a  M   e   [        [        U4S j5        [        [        U4S j5        [        [        U4S	 j5        [        [        U4S
 j5        [        [        U4S j5        [        [        U4S j5        g )Nrk   r'   abcdeebdac)index_order_newindex_order_oldcabedc                  >   > [        T [        S5      [        S5      S9$ )Naacder  r  r  r   r  r4   s   r   r   /test_permutedims_with_indices.<locals>.<lambda><      {1d7m]abi]jkr   c                  >   > [        T [        S5      [        S5      S9$ )Nr  abccer  r  r  s   r   r   r  =  r  r   c                  >   > [        T [        S5      [        S5      S9$ )Nr  abcer  r  r  s   r   r   r  >  s    {1d7m]abh]ijr   c                  >   > [        T [        S5      [        S5      S9$ )Nr"  r  r  r  s   r   r   r  ?  s    {1d6l\`ag\hir   c                  0   > [        T / SQ[        S5      S9$ )Nr'   r%   r   r(   r)   r  )r  r  r  s   r   r   r  @      {1otT[}]r   c                  0   > [        T / SQ[        S5      S9$ )Nr%  r  )r  r  r  s   r   r   r  A  r&  r   )	r   rQ   r  r  r   	itertoolsproductr   r  )	indices_newindices_oldnew_Ar!   r"   r#   r$   r:   r4   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                      SSK Jn   [        [        U 4 Hd  nU" [	        S5      5      R                  SS5      n[        [        U5      5      / SQ:X  d   e[        [        U5      5       H  u  p4X4:X  a  M   e   Mf     g )Nr   )Matrixr|   r)   r   )r   r%   r'   r(   r)   ra   r   ro   r,   r   r   rp   rN   r   r   ru   r-   r   rL   rj   rx   r   r   ry   )	sympy.matrices.denser/  r   r   rQ   r  r  r   	enumerate)r/  r3   r4   r>   rJ   s        r   test_flattenr2  D  si    +-/GP	eBi ((A.GAJ#yyyygaj)DA6M6 *	 Qr   c            	        ^^ SSK Jn   [        [        S5      5      R	                  SS5      m[        [        U4S j5        [        [        U4S j5        [        U " S5      SS/5      [        / SQ5      :X  d   e[        TSS/5      [        / S	Q5      :X  d   e[        S
5      u  pn[        XU/T5      n[        USS/5      [        SSU-  SU-  /SSU-  SU-  /SSU-  SU-  //5      :X  d   e[        USS/5      [        SSU-  SU-  /USU-  SU-  /SU-  SU-  SU-  //5      :X  d   e[        U/ SQ5      [        SSU-  SU-  /5      :X  d   e[        S5      u  pVpxp[        XU// SQXVU/XU
/5      m[        T/ SQ5      [        X-  U-  SU-  U-  U	-  SU-  U-  U
-  /5      :X  d   e[        TSS/SS/5      [        USU-  SU-  /XX-  Xi-  Xz-  /5      :X  d   e[        [        TSS/5      SS/5      [        XX-  Xi-  Xz-  /USU-  SU-  /5      :X  d   e[        [        S 5        [        [        U4S j5        g )Nr   )eyer   r(   c                  "   > [        T S/S/5      $ )Nr   r%   r   exprs   r   r   %test_tensordiagonal.<locals>.<lambda>Q  s    ~dQC!=r   c                      > [        T SS/5      $ )Nr   r6  r7  s   r   r   r9  R  s    ~dQF;r   r%   )r%   r%   r%   )r   r)   r,   zx y zr'   r)   r,   r   ro   ra   r   za b c X Y Zr&   )r   r%   r'   r(   c                  *    [        / SQ/ SQ/SS/5      $ )Nr&   )r)   ra   r   r   r%   r6   r   r   r   r9  h  s    ~y).Dq!fMr   c                  B   > [        T R                  SSS5      SS/5      $ )Nr(   r   r%   r'   )r   r  )expr3s   r   r   r9  i  s    ~emmAq!.Dq!fMr   )
r0  r4  r   rQ   r  r   r  r   r   r   )r4  r/   r0   r1   expr2r!   r"   r#   XYZr8  r>  s              @@r   test_tensordiagonalrC  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(  r  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   r8   rS   r^   r   r  r-  r2  rC  r<  r   r   <module>rM     sn      + 7 ' $ % P P = ? o o 
$LNb&HRl&hRV_&Or   