
    sgd                         d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZmZ d dlmZmZ d d	lmZmZ d d
lmZmZmZmZ d dlmZmZmZmZm Z m!Z! d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*y)    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                      ddl m}  ~ y )Nr   	NDimArray)sympy.tensor.arrayr   r   s    X/var/www/html/venv/lib/python3.12/site-packages/sympy/tensor/array/tests/test_arrayop.pytest_import_NDimArrayr      s    ,    c                  8   t        d      \  } }}}ddlm}m}m}m} t               dk(  sJ t        | g      t        | g      k(  sJ t        | g|g      t        | |z  gg      k(  sJ t        | g|g|g      t        | |z  |z  ggg      k(  sJ t        | g|g|g|g      t        | |z  |z  |z  gggg      k(  sJ t        |       | k(  sJ t        | |      | |z  k(  sJ t        | ||      | |z  |z  k(  sJ t        | |||      | |z  |z  |z  k(  sJ t        t        fD ].  } || |g      }	 |g d      }
 |||||g      }t        |	|
|       ||| z  || z  || z  || z  gd|z  | z  d|z  | z  d|z  | z  d|z  | z  gd|z  | z  d|z  | z  d|z  | z  d|z  | z  gg||z  ||z  ||z  ||z  gd|z  |z  d|z  |z  d|z  |z  d|z  |z  gd|z  |z  d|z  |z  d|z  |z  d|z  |z  ggg      k(  sJ t        | |gg d      t        |	|
      k(  sJ t        |	d       |d| z  d|z  g      k(  sJ t        |	dg       |d| z  gd|z  gg      k(  sJ t        dg|	       |d| z  d|z  gg      k(  sJ t        ||	       ||| z  ||z  g      k(  sJ t        ||	|
       ||| z  d|z  | z  d|z  | z  g||z  d|z  |z  d|z  |z  gg      k(  sJ t        |	|
|       ||| z  d|z  | z  d|z  | z  g||z  d|z  |z  d|z  |z  gg      k(  sJ t        |
||	       ||| z  ||z  gd|z  | z  d|z  |z  gd|z  | z  d|z  |z  gg      k(  r/J  t        t        fD ]:  } |ddd	d
      } |ddd	d
      }t        ||      t        dddddd      k(  r:J  y )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      sm   i GAa!!!?a!s+++!qc"eacUGn444!qcA3'5AaCE7)+====!qcA3,!A#a%'}o0FFFFq   A!A#%%%Aq!QqSU***Aq!$!Aa///-/GH a	q!fi q!Ql#Q1%ac1Q3!QqS5IAaCPQESTUVSVWXSXZ[\]Z]^_Z_abcdadefafKgjklmjmnojoqrstqtuvqvxyz{x{|}x}  @A  BC  @C  DE  @E  jF  5G67c1Q3!QqS5IAaCPQESTUVSVWXSXZ[\]Z]^_Z_abcdadefafKgjklmjmnojoqrstqtuvqvxyz{x{|}x}  @A  BC  @C  DE  @E  jF  5G4H *I I 	I I aVY/=A3FFFFQ"i1ac
&;;;;Q$	AaC51Q3%.(AAAAaS!$	AaC1:,(????Q"i1ac
&;;;;Q1%QqS!A#a%1Q4G!A#qQRsSTuVWXYVYZ[V[I\3])^^^^Q1%QqS!A#a%1Q4G!A#qQRsSTuVWXYVYZ[V[I\3])^^^^Q1%QqS!A#J1Q!AQRSTQTUVQVXYZ[X[\]X]P^3_)````!a& 56LM LqAJ|4qAJ|4Q"&>UVabmo?p  sK  'L  L  	L  LLr   c                  4   ddl m} m}m}m}m}m}m}m}m	}m
}	m}
m}m}m}m}m}m}m}m}m}m}m}m}m} t3        t5        d      d      }t7        |d      t3        ddg      k(  sJ t3        | |||||||||	|
|||||||||||||gd      }t7        |d	      t3        | |z   ||z   g||z   ||z   g||z   |	|z   gg      k(  sJ t7        |d
      t3        | |z   ||z   ||z   g      k(  sJ t7        |d      t3        | |z   ||z   ||z   g||z   ||z   ||z   gg      k(  sJ y )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   ?   sH   IIIIIIIeBi#AQ'5"b?:::	1aAq!Q1aAq!Q1aAqRSUVWYe	fBR(EAE1q5>AE1q5>TUXYTY[\_`[`Sa2b,ccccR+ua!eQUAE5J/KKKKR(EAE1q5!a%3H1q5RSVWRWYZ]^Y^J_2`,aaaar   c            	      	   ddl m} m}m}m}m}m} ||dz  z  t        |      z  t        |      z  }t        |      }t        |      }t        |g      }	t        ||      ||dz  z  t        |      z  t        ||dz  z  t        |      z  t        |      z        z  |z  k(  sJ t        ||||g      t        ||z  |z  d|z  |z  |dz  z  |z  ||z  g      k(  sJ t        |	|||g      t        ||z  |z  gd|z  |z  |dz  z  |z  g||z  gg      k(  sJ t        |||g||gg      t        ||z  |z  d|z  |z  |dz  z  |z  g||z  |t        |      z  |z  |z  gg      k(  sJ t        |	||g||gg      t        ||z  |z  gd|z  |z  |dz  z  |z  gg||z  g|t        |      z  |z  |z  ggg      k(  sJ t        ||g||gg||g      t        ddgddggddgddggg      k(  sJ t        ||g||gg||g||gg      t        ddgddggddgddgggddgddggddgddgggg      k(  sJ t        ||      ||dz  z  t        |      z  t        ||dz  z  t        |      z  t        |      z        z  |z  k(  sJ t        |t        |||g            t        ||z  |z  d|z  |z  |dz  z  |z  ||z  g      k(  sJ t        |	t        |||g            t        ||z  |z  gd|z  |z  |dz  z  |z  g||z  gg      k(  sJ t        |t        ||g||gg            t        ||z  |z  d|z  |z  |dz  z  |z  g||z  |t        |      z  |z  |z  gg      k(  sJ t        |	t        ||g||gg            t        ||z  |z  gd|z  |z  |dz  z  |z  gg||z  g|t        |      z  |z  |z  ggg      k(  sJ t        t        ||g||gg      t        ||g            t        ddgddggddgddggg      k(  sJ t        t        ||g||gg      t        ||g||gg            t        ddgddggddgddgggddgddggddgddgggg      k(  sJ t        t        fD ]N  }
t        | |dd      }t        ||       t        ddid      k(  sJ t        || |f      t        dddd      k(  rNJ  t        |||g      }d}t        ||      t!        g d	      k(  sJ y )
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   sR   **adF3q6M#a& EJEJEugA5!$!Q$s1vc!AqD&Q-A:N6O(OPQ(QQQQ51a),uQwu}ac%iPQSTPTnUZFZ\abg\g6h0iiii1q!Qi(EE!GEM?QqSYqRSt^TYEYDZ]bch]h\i2j,kkkk5Aq6Aq6"23uuQwu}aPQcRWiXY[\X\n]bNb>cfklqfqsxy|}~ys  AB  tB  CH  tH  fI  >J  8K  K  K  K11v1v./5E!GEM?QqSQVYWXZ[W[^\aMaLb:cglmrgrfsv{|  AB  }C  wC  DE  wE  FK  wK  vL  fM  :N  4O  O  O  OQFQF+aV4AA?OSTVWRX[\^_Z`Qa>b8ccccQFQF+q!fq!f-=>%Aq6TUWXSYJZ^_ab]cfgijek\lImLMq6TUWXSYJZ^_ab]cfgijek\lImIo Cp p p p q>Qq!tVCF]3qAvc!f}SV/C+DDQFFFFuaAY'(E575=!A#e)AqD.QVBVX]^cXc2d,eeee5!Q#$a1U1a4PUAU@VY^_dYdXe.f(gggguq!fq!f-./5575=!A#e)TUWXTX.Y^J^:_bghmbmotuxyzu{o{|}o}  D  pD  bE  :F  4G  G  G  G51a&1a&)*+ua1USTVWSWX]I]H^6_chincnborwx{|}x~r~  @A  sA  BG  sG  rH  bI  6J  0K  K  K  K1v1v&'1v75Aq6Aq6BRVWYZU[^_ab]cTdAe;ffff1v1v&'AA/?)@AUqRSfWXZ[V\M]abde`fijlmhn_oLpLMq6TUWXSYJZ^_ab]cfgijek\lImLo Fp p p p 56LM o"a1:~>q!$(@!Q(XXXXq1a&)-E!XYFZ\m-nnnno 	q!QiA	A1a %<Y%GGGGr   c            
         t        ddg      } t        ddgddgg      }t        || ||       }t        |dd      t        ddgddgg      k(  sJ t        d      }t        |g d      }t        |dd	d      |d   |d
   z   |d   z   |d   z   |d   z   |d   z   |d   z   |d   z   |d   z   |d   z   |d   z   |d   z   k(  sJ t        |dd	      |d   |d   z   |d   z   |d   z   |d   z   |d   z   k(  sJ t        |dd      t        |d   |d
   z   |d   z   |d   z   |d   |d   z   |d   z   |d   z   |d   |d   z   |d   z   |d   z   g|d   |d   z   |d    z   |d!   z   |d   |d   z   |d   z   |d   z   |d"   |d#   z   |d$   z   |d%   z   g|d&   |d'   z   |d(   z   |d)   z   |d*   |d+   z   |d,   z   |d-   z   |d   |d   z   |d   z   |d   z   gg      k(  sJ t        |dd	      t        |d   |d
   z   |d   z   |d   z   |d   z   |d   z   |d   |d.   z   |d/   z   |d0   z   |d1   z   |d2   z   g|d3   |d4   z   |d5   z   |d6   z   |d7   z   |d8   z   |d   |d   z   |d   z   |d   z   |d   z   |d   z   gg      k(  sJ y )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   s|   	1vB	AQ 	!B	r2r2	&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                  #   t        d      } t        t        fD ]\  } || d d d      t        d      t	              k(  sJ j                         j                  t        d      j                         k(  sJ j                         j                  t	              j                         k(  sJ j                         j                  t              j                         k(  sJ j                         j                  t              j                         k(  sJ j                         j                  j	                         j                         k(  sJ j                         j                  j                         j                         k(  sJ j                         j                  j                         j                         k(  sJ t        t        fd       t        t        fd       t        t        fd       d}t        |      D cg c]  }t        j                  dd	       }}t        t!        |       D cg c]  }t        j                          }} |||      }t#        t        |            }t        j$                  |       t        t        ||      t'        |            |k(  sJ t        ||      j(                  t+         t-        |      |            k(  sJ |j/                  d
d	dd      }t        |d      j(                  dk(  sJ t        |g d      j(                  dk(  sJ t        |t-        g d            j(                  dk(  sJ  || g d      t        t        fd       t        t        fd       t        t        fd       t        t1        t        j3                                            || d   | d   g| d   | d   gg| d   | d   g| d   | d   gg| d   | d   g| d   | d   ggg| d
   | d   g| d   | d    gg| d!   | d"   g| d#   | d$   gg| d%   | d&   g| d'   | d(   ggg| d)   | d*   g| d+   | d,   gg| d-   | d.   g| d/   | d0   gg| d1   | d2   g| d3   | d4   gggg| d5   | d6   g| d7   | d8   gg| d9   | d:   g| d;   | d<   gg| d=   | d>   g| d?   | d@   ggg| d   | dA   g| dB   | dC   gg| dD   | dE   g| dF   | dG   gg| dH   | dI   g| dJ   | dK   ggg| dL   | dM   g| dN   | dO   gg| dP   | dQ   g| dR   | dS   gg| dT   | dU   g| dV   | dW   ggggg| d   | dX   g| dY   | dZ   gg| d[   | d\   g| d]   | d^   gg| d_   | d`   g| da   | db   ggg| d	   | dc   g| dd   | de   gg| df   | dg   g| dh   | di   gg| dj   | dk   g| dl   | dm   ggg| dn   | do   g| dp   | dq   gg| dr   | ds   g| dt   | du   gg| dv   | dw   g| dx   | dy   gggg| dz   | d{   g| d|   | d}   gg| d~   | d   g| d   | d   gg| d   | d   g| d   | d   ggg| d   | d   g| d   | d   gg| d   | d   g| d   | d   gg| d   | d   g| d   | d   ggg| d   | d   g| d   | d   gg| d   | d   g| d   | d   gg| d   | d   g| d   | d   gggggg      k(  sJ t        d       || d   | d   g| d5   | dz   gg| d
   | d	   g| d   | d   gg| d)   | dn   g| dL   | d   ggg| d   | d[   g| d9   | d~   gg| d!   | df   g| dD   | d   gg| d-   | dr   g| dP   | d   ggg| d   | d_   g| d=   | d   gg| d%   | dj   g| dH   | d   gg| d1   | dv   g| dT   | d   gggg| d   | dX   g| d6   | d{   gg| d   | dc   g| dA   | d   gg| d*   | do   g| dM   | d   ggg| d   | d\   g| d:   | d   gg| d"   | dg   g| dE   | d   gg| d.   | ds   g| dQ   | d   ggg| d   | d`   g| d>   | d   gg| d&   | dk   g| dI   | d   gg| d2   | dw   g| dU   | d   ggggg| d   | dY   g| d7   | d|   gg| d   | dd   g| dB   | d   gg| d+   | dp   g| dN   | d   ggg| d   | d]   g| d;   | d   gg| d#   | dh   g| dF   | d   gg| d/   | dt   g| dR   | d   ggg| d   | da   g| d?   | d   gg| d'   | dl   g| dJ   | d   gg| d3   | dx   g| dV   | d   gggg| d   | dZ   g| d8   | d}   gg| d    | de   g| dC   | d   gg| d,   | dq   g| dO   | d   ggg| d   | d^   g| d<   | d   gg| d$   | di   g| dG   | d   gg| d0   | du   g| dS   | d   ggg| d   | db   g| d@   | d   gg| d(   | dm   g| dK   | d   gg| d4   | dy   g| dW   | d   gggggg      k(  sJ t        d       || d   | d   g| d
   | d	   g| d)   | dn   gg| d5   | dz   g| d   | d   g| dL   | d   ggg| d   | dY   g| d   | dd   g| d+   | dp   gg| d7   | d|   g| dB   | d   g| dN   | d   gggg| d   | d[   g| d!   | df   g| d-   | dr   gg| d9   | d~   g| dD   | d   g| dP   | d   ggg| d   | d]   g| d#   | dh   g| d/   | dt   gg| d;   | d   g| dF   | d   g| dR   | d   gggg| d   | d_   g| d%   | dj   g| d1   | dv   gg| d=   | d   g| dH   | d   g| dT   | d   ggg| d   | da   g| d'   | dl   g| d3   | dx   gg| d?   | d   g| dJ   | d   g| dV   | d   ggggg| d   | dX   g| d   | dc   g| d*   | do   gg| d6   | d{   g| dA   | d   g| dM   | d   ggg| d   | dZ   g| d    | de   g| d,   | dq   gg| d8   | d}   g| dC   | d   g| dO   | d   gggg| d   | d\   g| d"   | dg   g| d.   | ds   gg| d:   | d   g| dE   | d   g| dQ   | d   ggg| d   | d^   g| d$   | di   g| d0   | du   gg| d<   | d   g| dG   | d   g| dS   | d   gggg| d   | d`   g| d&   | dk   g| d2   | dw   gg| d>   | d   g| dI   | d   g| dU   | d   ggg| d   | db   g| d(   | dm   g| d4   | dy   gg| d@   | d   g| dK   | d   g| dW   | d   gggggg      k(  sJ j5                  d
dnd5d5      }	|	 || d   | d   g| d5   | dz   gg| d
   | d	   g| d   | d   gg| d)   | dn   g| dL   | d   gg| d   | d[   g| d9   | d~   gg| d!   | df   g| dD   | d   gg| d-   | dr   g| dP   | d   gg| d   | d_   g| d=   | d   gg| d%   | dj   g| dH   | d   gg| d1   | dv   g| dT   | d   ggg	| d   | dY   g| d7   | d|   gg| d   | dd   g| dB   | d   gg| d+   | dp   g| dN   | d   gg| d   | d]   g| d;   | d   gg| d#   | dh   g| dF   | d   gg| d/   | dt   g| dR   | d   gg| d   | da   g| d?   | d   gg| d'   | dl   g| dJ   | d   gg| d3   | dx   g| dV   | d   ggg	| d   | dX   g| d6   | d{   gg| d   | dc   g| dA   | d   gg| d*   | do   g| dM   | d   gg| d   | d\   g| d:   | d   gg| d"   | dg   g| dE   | d   gg| d.   | ds   g| dQ   | d   gg| d   | d`   g| d>   | d   gg| d&   | dk   g| dI   | d   gg| d2   | dw   g| dU   | d   ggg	| d   | dZ   g| d8   | d}   gg| d    | de   g| dC   | d   gg| d,   | dq   g| dO   | d   gg| d   | d^   g| d<   | d   gg| d$   | di   g| dG   | d   gg| d0   | du   g| dS   | d   gg| d   | db   g| d@   | d   gg| d(   | dm   g| dK   | d   gg| d4   | dy   g| dW   | d   ggg	g      k(  sJ t        |	d       || d   | d
   | d)   | d   | d!   | d-   | d   | d%   | d1   g	| d   | d   | d+   | d   | d#   | d/   | d   | d'   | d3   g	| d   | d   | d*   | d   | d"   | d.   | d   | d&   | d2   g	| d   | d    | d,   | d   | d$   | d0   | d   | d(   | d4   g	g| d5   | d   | dL   | d9   | dD   | dP   | d=   | dH   | dT   g	| d7   | dB   | dN   | d;   | dF   | dR   | d?   | dJ   | dV   g	| d6   | dA   | dM   | d:   | dE   | dQ   | d>   | dI   | dU   g	| d8   | dC   | dO   | d<   | dG   | dS   | d@   | dK   | dW   g	gg| d   | d	   | dn   | d[   | df   | dr   | d_   | dj   | dv   g	| dY   | dd   | dp   | d]   | dh   | dt   | da   | dl   | dx   g	| dX   | dc   | do   | d\   | dg   | ds   | d`   | dk   | dw   g	| dZ   | de   | dq   | d^   | di   | du   | db   | dm   | dy   g	g| dz   | d   | d   | d~   | d   | d   | d   | d   | d   g	| d|   | d   | d   | d   | d   | d   | d   | d   | d   g	| d{   | d   | d   | d   | d   | d   | d   | d   | d   g	| d}   | d   | d   | d   | d   | d   | d   | d   | d   g	ggg      k(  r]J  t        t6        fD ]e  }
 |
dd5dd      }t        |d      |k(  sJ t        |d       |
dd5dd      k(  sJ  |
dd5dd      }|j	                          |
dd5dd      k(  reJ  y c c}w c c}w )Nrb      rP   )r%   r   c                      t         d      S )N)r   r   m1s   r   <lambda>z(test_array_permutedims.<locals>.<lambda>   s    ;r4#8 r   c                      t         d      S )N)r   r   r   r   s   r   r   z(test_array_permutedims.<locals>.<lambda>       ;r6#: r   c                      t         d      S )N)r%   r'   r   r   r   s   r   r   z(test_array_permutedims.<locals>.<lambda>   s    ;r9#= r   r%   ra   r)   ro   )r'   r(   r%   r   )r   ro   ra   r)   rc   c                      t         d      S )N)r%   r%   r   r   s   r   r   z(test_array_permutedims.<locals>.<lambda>   r   r   c                  $     j                         S N)r
   r   s   r   r   z(test_array_permutedims.<locals>.<lambda>   s    2<<> r   c                  $     j                         S r   )r   r   s   r   r   z(test_array_permutedims.<locals>.<lambda>   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     sN1   		B-/GH ]K	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:!$::*/u0E*FGQGGue$E$K t;r40*T2BCrIII2t$**e4EK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{]K@ 56LM RqN,AB1i(A---1i(Oa<PRg,hhhhqNN;{{}a0@. QQQQR[ ;Gs   AG/AG4c            	      R   t        t        d            j                  ddddd      t        d      } t        d      }t	        | |      }t        j                  t        d      t        d      t        d      t        d      t        d            D ]  \  }}}}}||||||f   |||||f   k(  rJ  t        d      }t	        | |      }t        j                  t        d      t        d      t        d      t        d      t        d            D ]  \  }}}}}||||||f   |||||f   k(  rJ  t        t        fd       t        t        fd       t        t        fd	       t        t        fd
       t        t        fd       t        t        fd       y )Nrk   r'   abcdeebdac)index_order_newindex_order_oldcabedc                  D    t         t        d      t        d            S )Naacder  r  r  r   r  r4   s   r   r   z/test_permutedims_with_indices.<locals>.<lambda><      {1d7m]abi]jk r   c                  D    t         t        d      t        d            S )Nr  abccer  r  r  s   r   r   z/test_permutedims_with_indices.<locals>.<lambda>=  r  r   c                  D    t         t        d      t        d            S )Nr  abcer  r  r  s   r   r   z/test_permutedims_with_indices.<locals>.<lambda>>  s    {1d7m]abh]ij r   c                  D    t         t        d      t        d            S )Nr   r  r  r  s   r   r   z/test_permutedims_with_indices.<locals>.<lambda>?  s    {1d6l\`ag\hi r   c                  6    t         g dt        d            S )Nr'   r%   r   r(   r)   r  )r  r  r  s   r   r   z/test_permutedims_with_indices.<locals>.<lambda>@      {1otT[}] r   c                  6    t         g dt        d            S )Nr#  r  )r  r  r  s   r   r   z/test_permutedims_with_indices.<locals>.<lambda>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  s{   eBi  Aq!Q/Aw-Kw-K;TE"**58U1XuQxqSXYZS[\ 81aAQ1a]#qAq!Q'77778w-K;TE"**58U1XuQxqSXYZS[\ 81aAQ1a]#qAq!Q'77778
:kl
:kl
:jk
:ij
:]^
:]^r   c                      ddl m}  t        t        | fD ]a  } |t	        d            j                  dd      }t        t        |            g dk(  sJ t        t        |            D ]  \  }}||k(  rJ  c y )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_flattenr0  D  sv    +-/GP 	eBi ((A.GAJ#yyyygaj) 	DAq6M6		r   c            	         ddl m}  t        t        d            j	                  dd      t        t        fd       t        t        fd       t         | d      ddg      t        g d      k(  sJ t        ddg      t        g d	      k(  sJ t        d
      \  }}}t        |||g      }t        |ddg      t        dd|z  d|z  gdd|z  d|z  gdd|z  d|z  gg      k(  sJ t        |ddg      t        dd|z  d|z  g|d|z  d|z  gd|z  d|z  d|z  gg      k(  sJ t        |g d      t        dd|z  d|z  g      k(  sJ t        d      \  }}}}}	}
t        |||gg d|||g||	|
g      t        g d      t        ||z  |z  d|z  |z  |	z  d|z  |z  |
z  g      k(  sJ t        ddgddg      t        |d|z  d|z  g||z  ||	z  ||
z  g      k(  sJ t        t        ddg      ddg      t        ||z  ||	z  ||
z  g|d|z  d|z  g      k(  sJ t        t        d        t        t        fd       y )Nr   )eyer   r(   c                  "    t         dgdg      S )Nr   r%   r   exprs   r   r   z%test_tensordiagonal.<locals>.<lambda>Q  s    ~dQC!= r   c                       t         ddg      S )Nr   r4  r5  s   r   r   z%test_tensordiagonal.<locals>.<lambda>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                  *    t        g dg dgddg      S )Nr&   )r)   ra   r   r   r%   r4   r   r   r   z%test_tensordiagonal.<locals>.<lambda>h  s    ~y).Dq!fM r   c                  B    t         j                  ddd      ddg      S )Nr(   r   r%   r'   )r   r
  )expr3s   r   r   z%test_tensordiagonal.<locals>.<lambda>i  s    ~emmAq!.Dq!fM r   )
r.  r2  r   rQ   r
  r   r   r   r   r   )r2  r/   r0   r1   expr2r!   r"   r#   XYZr6  r;  s              @@r   test_tensordiagonalr@  N  s   (q?""1a(D
:=>
:;<#a&1a&)U9-====$A'5+;;;;gGAq!1a)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 }-Aq!Q11a)YAq	Aq!9EE%.%1Q!Aa1Qq8Q2RRRR%!Q!Q0M1ac1Q3-RSTURUWXYZWZ\]^_\_Q`4aaaa .A7!Q@MSTUVSVXYZ[X[]^_`]`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+  r0  r@  r9  r   r   <module>rJ     sn      + 7 ' $ % P P = ? o o 
$LNb&HRl&hRV_&Or   