
    sgw>                        d 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 ddlmZmZ dd	lmZ dd
lmZmZ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! 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- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5  ed      \  Z6Z7Z8 ed      \  Z9Z: e#de8e8      Z; e#de8d      Z< e#de8d      Z= e#de8e8      Z> e#d e8e8      Z? e#d!e8e8      Z@ e#d"e8e8      ZA e#d#e8d      ZB e#d$e8d      ZC e#d%e8d      ZD e#d&e8d      ZEd' ZFd6d(ZGd) ZHd* ZId+ ZJd, ZKd- ZLd. ZMd/ ZNd0 ZOd1 ZPd2 ZQd3 ZRd4 ZSy5)7za
Some examples have been taken from:

http://www.math.uwaterloo.ca/~hwolkowi//matrixcookbook.pdf
    )KroneckerProduct)Permutation)Sum)Rational)S)symbols)explog)sqrt)cossintan)KroneckerDelta)Determinant)
DiagMatrix)HadamardPowerHadamardProducthadamard_product)Inverse)MatrixSymbol)	OneMatrix)Trace)MatAdd)MatMul)Identity
ZeroMatrix)ArrayDerivative)hadamard_power)ArrayAddArrayTensorProductPermuteDimszi j kzm nXx   yABCDabcdc                 .    t        | |dt        dz
  f      S )Nr   r$   )r   k)ijs     d/var/www/html/venv/lib/python3.12/site-packages/sympy/matrices/expressions/tests/test_derivatives.py<lambda>r3   0   s    nQAqs84     c                      y N)xreplacer/   as_explicitdiffreshapeshapetomatrix)exprr#   diffexprdims       r2   &_check_derivative_with_explicit_matrixr@   3   s    
r4   c            	         t         j                  t              t        t        t              k(  sJ t         t
        t        z   z  t        z  j                  t              t        t        d      k(  sJ t        j                  t              t        t        d      k(  sJ t        j                  t        z  j                  t              t        dd      k(  sJ t        t        j                  z  j                  t              t        t        t              k(  sJ t        t        z   j                  t              t        t        d      k(  sJ t        t        d      j                  t              t        t        d      k(  sJ t        t        t              j                  t              j                  t        t        j                  t              t!        t        t                          sJ t#        t        t              j                  t              t        t        d      k(  sJ t#        t        t%        t        d      z  t        t              j                  t              t#        t        t              k(  sJ t        t        z  j                  t              t        k(  sJ t'        t              t         z  t        z  t        z  j                  t              t)        t              t         z  t        z  t        z  k(  sJ t        j                  t&              j                  t              t        t        d      k(  sJ t+        t        dz  t
        z        j                  t              dt        z  t+        t
              z  k(  sJ t-        d      } d| z  t        z  }|j                  t              d| z  t/        t              z  k(  sJ y )Nr$      mu)r&   r9   r0   r   r/   r"   r'   r,   r#   Tr%   r   dummy_eqr   	applyfuncr
   r   r   r   r   r   r   r   r   )rC   r=   s     r2    test_matrix_derivative_by_scalarrG   B   s   66!9
1a((((q1uIaKa Jq!$444466!9
1a((((CCE<<?jA....accE<<?jA....E<<?jA....!Q$$Q':a+;;;;!Q$$Q'00C(-1*=>@ @ @Aq!&&q)Z1-====Ai1o-q!499!<@PQRTU@VVVVaC::a=AF1HQJqLq!SVAXaZ\111;;s  #z!Q'7777Aa=a AaCaL000	BbDFD99Q<1R4++++r4   c                      t        t        j                  t        t        d            j                  t              t        t        d      k(  sJ y )Nr$   )r   r#   rD   r   r/   r9    r4   r2   test_one_matrixrJ   X   s2    !##yA',,Q/9Q?BBBr4   c            	         t        t              } t        t        | |        t	        d      dd            }t
        j                  t
              |k(  sJ t
        j                  j                  t
              t        t        | |        t	        d      ddd            k(  sJ dt
        z  j                  t
              t        t        d| z  |        t	        d      dd            k(  sJ t        t
        t
              j                  t
              t        ||      k(  sJ t
        t        z   j                  t
              |k(  sJ y )N   r$   rB   )r   r/   r!   r    r   r&   r9   rD   r   r   r'   )IAdAs     r2   (test_matrix_derivative_non_matrix_resultrO   \   s    A
(A.Aq!0D
EC66!93388A;+&8A&>AqRSUV@WXXXXaC::a=K(:1Q3(BNKPQNSTVWDXYYYY!Q<Q8C#5555E<<?c!!!r4   c                  d    t         j                  t              t        t         t              k(  sJ y r6   )r"   r9   r&   r   rI   r4   r2   $test_matrix_derivative_trivial_casesrQ   g   s!     66!91----r4   c                     t         j                  t        t              z  t        z  } | j                  t              t        t              j                   t         z  t        j                  z  t        t              j                  z  k(  sJ t        t        t                    } t        t        t        t              z  t        z        } | j                  t              t        dz  t        z  t        z  t        dz  z  j                   k(  sJ t        t        t        t        z               } | j                  t              t        t        t        z         j                  dz   k(  sJ y )NrB   )
r*   rD   r   r"   r+   r9   r   r   r&   r'   r=   s    r2   #test_matrix_derivative_with_inverserU   m   s     33wqz>!D99Q<GAJLL=?133.wqz||;;;; wqz"D
 71:a D99Q<QWQYq[R0333333 Q D99Q<WQU^..11111r4   c                     t         j                  t               t        t              k(  sJ t         t        df   j                  t         t
        df         j                         t        t
        t              k(  sJ t         j                  j                  t               t        t              k(  sJ t         j                  t        z  } | j                  t               t        k(  sJ | d   j                  t         t
        df         j                         t        t
        df   k(  sJ t        j                  t         z  } | j                  t               t        k(  sJ t        j                  t        z  t        z  } | j                  t              t        t        j                  z  k(  sJ t        j                  t        j                  z  t        z  } | j                  t              t        t        j                  z  k(  sJ t        j                  t        z  t        z  } | j                  t              t        t        j                  z  k(  sJ t        j                  t        j                  z  t        z  } | j                  t              t        t        j                  z  k(  sJ t        j                  t        j                  z  t        z  t        z  } | j                  t              t        t        z  t        j                  z  t        t        z  t        j                  z  z   k(  sJ t        t         z  t        z   j                  t        z  t        t         z  t         z   z  } | j                  t               t        j                  t        z  t        t         z  t         z   z  t        j                  t        j                  z  t        t         z  t        z   z  z   k(  sJ t         j                  t        z  t         z  } | j                  t               t        t         z  t        j                  t         z  z   k(  sJ t        j                  t        j                  z  t        z  t        z  t        z  } | j                  t              t        j                  t        z  t        z  t        j                  z  t        t        z  t        z  t        j                  z  z   k(  sJ t        t        z  t        z   j                  t        z  t        t        z  t        z   z  } | j                  t              t        t        t        z  t        z   z  t        j                  z  t        j                  t        t        z  t        z   z  t        j                  z  z   k(  sJ t#        | d   j                  t        t
        t$        f         j                               dk(  sJ t         t         j                  z  t         z  } t        t              }| j                  t               t'        |t         j                  t         z        dt         z  t         j                  z  z   k(  sJ y )Nr   r   r   zb[n, 0]*Sum((c[_i_1, 0] + Sum(X[_i_1, _i_3]*b[_i_3, 0], (_i_3, 0, k - 1)))*D[_i_1, m], (_i_1, 0, k - 1)) + Sum((c[_i_2, 0] + Sum(X[_i_2, _i_4]*b[_i_4, 0], (_i_4, 0, k - 1)))*D[m, _i_2]*b[n, 0], (_i_2, 0, k - 1))rB   )r#   r9   r   r/   r0   mdoitKDeltarD   r*   r"   r+   r,   r'   r(   r)   r-   strnr   r=   rM   s     r2   *test_matrix_derivative_vectors_and_scalarsr^      s   66!9###QT7<<!Q$ %%'6!Q<7773388A;(1+%%% 33q5D99Q<1:??1QT7#((*a1g55533q5D99Q<1 33q57D99Q<1QSS5    33qss719D99Q<1QSS5    33q57D99Q<1QSS5   33qss719D99Q<1QSS5    33qss719Q;D99Q<1Q3qss7QqSW,,,, aC!G;;q=!A#'"D99Q<133q5!A#'?QSSWacAg->>>>> 33q57D99Q<1Q3Q;&&& 33qss719Q;q=D99Q<133q57133;1Qqss2222 aC!G;;q=!A#'"D99Q<1acAg;qss?QSS!A#']133->>>>>tDzqAw',,./ 	^^ ^ ^ QSS57DA99Q<+Aqss1u5!ACC????r4   c                  #   t        t              t        z  } t        t              }| j	                  t              t        t        |t              t        t        t        t              |z  |       t        d      dd                  k(  sJ | t        t        f   j	                  t        t        t        f         j                         t        t        t              t        t        t              z  t        t              z  t        t        t              t        t        t        f   z  z   k(  sJ t        t              } | j	                  t              t        t              k(  sJ | j!                  t"              j	                  t        t        t        f         j                         t        t        t              k(  sJ t        t        t        z        } | j	                  t              t        j$                  k(  sJ | j!                  t"              j	                  t        t        t        f         j                         t        t        t        f   k(  sJ t        t        t        z  t&        z        } | j	                  t              t        j$                  t&        j$                  z  k(  sJ | j!                  t"              j	                  t        t        t        f         j                         j)                  t        j$                  t&        j$                  z  t        t        f         sJ t        t        t        j$                  z  t&        z        } | j	                  t              t&        t        z  k(  sJ t        t        j$                  t        z        } | j	                  t              t        k(  sJ t        t        t        j$                  z        } | j	                  t              t        k(  sJ t        t        dz        } | j	                  t              dt        j$                  z  k(  sJ t        t        dz  t&        z        } | j	                  t              t        t&        z  t&        t        z  z   j$                  k(  sJ t        t+        t        t        t&                    } | j	                  t              t        t&        z  t&        t        z  z   j$                  k(  sJ t        t        j$                  t&        z  t        z        } | j	                  t              t&        t        z  t&        j$                  t        z  z   k(  sJ t        t&        t        z  t        j$                  z        } | j	                  t              t&        t        z  t&        j$                  t        z  z   k(  sJ t        t        t        j$                  z  t&        z        } | j	                  t              t&        t        z  t&        j$                  t        z  z   k(  sJ t        t        t&        z  t        j$                  z        } | j	                  t              t        t&        j$                  z  t        t&        z  z   k(  sJ t        t&        t        j$                  z  t        z        } | j	                  t              t        t&        j$                  z  t        t&        z  z   k(  sJ t        t        j$                  t        z  t&        z        } | j	                  t              t        t&        j$                  z  t        t&        z  z   k(  sJ t        t        t        z  t&        z  t        z        } | j	                  t              t        j$                  t        j$                  z  t&        j$                  z  t&        j$                  t        j$                  z  t        j$                  z  z   k(  sJ t        t        j$                  t        z        } | j	                  t              dt        z  k(  sJ t        t        t        j$                  z        } | j	                  t              dt        z  k(  sJ t        t&        j$                  t        j$                  z  t,        z  t        z  t&        z        } | j	                  t              t,        j$                  t        z  t&        z  t&        j$                  z  t,        t        z  t&        z  t&        j$                  z  z   k(  sJ t        t        j$                  t&        z  t        z  t,        z        } | j	                  t              t&        t        z  t,        z  t&        j$                  t        z  t,        j$                  z  z   k(  sJ t        t        t        z  t&        z  t        j$                  z  t,        z        } | j	                  t              t        j$                  t,        j$                  z  t        z  t&        j$                  z  t,        t        z  t        z  t&        z  z   k(  sJ t        t        t        z  t&        z  t,        z   t        t        z  t&        z  t,        z   j$                  z        } | j	                  t              dt        j$                  z  t        t        z  t&        z  t,        z   z  t&        j$                  z  k(  sJ t        t        t        z        } t        t        t        t        z  z        } t        t&        j$                  t        j$                  z  t,        z  t        z  t        j$                  z  t,        z  t        z  t&        z        } | j	                  t              t,        t        z  t        j$                  z  t,        z  t        z  t&        z  t&        j$                  z  t,        j$                  t        z  t&        z  t&        j$                  z  t        j$                  z  t,        j$                  z  t        z  z   t,        t        z  t&        z  t&        j$                  z  t        j$                  z  t,        z  t        z  z   t,        j$                  t        z  t        j$                  z  t,        j$                  z  t        z  t&        z  t&        j$                  z  z   k(  sJ t        t        t        dz  z  t&        z        } | j	                  t              t/        t              j$                   t        j$                  z  t&        j$                  z  t/        t              j$                  z  k(  sJ t        t/        t        j$                  t,        z  t        z        t        z        } | j	                  t              t        j1                         j$                   t        j$                  z  t        j1                         z  t,        j1                         j$                  z  t        j1                         j$                  z  t        j1                         j$                  t        z  t        j1                         z  t,        j1                         z  t        j1                         j$                  z  z
  k(  sJ t        t        j$                  t,        z  t        z  j1                         t        j$                  t&        z  t        z  z        } | j	                  t              dt,        z  t        z  t        j$                  t,        z  t        z  j1                         z  t        j$                  z  t&        z  t        z  t        j$                  t,        z  t        z  j1                         z  dt&        z  t        z  t        j$                  t,        z  t        z  j1                         z  z   k(  sJ t        t        t        j$                  t,        z  t        z  z   j1                         t        j$                  t&        z  t        z  z        } | j	                  t              t&        t        z  t/        t        t        j$                  t,        z  t        z  z         z  t,        t        z  t/        t        t        j$                  t,        z  t        z  z         z  t        j$                  z  t&        z  t        z  t/        t        t        j$                  t,        z  t        z  z         z  z
  t,        j$                  t        z  t/        t        j$                  t,        t        z  j$                  t        z  z         z  t        j$                  z  t&        j$                  z  t        z  t/        t        j$                  t,        t        z  j$                  t        z  z         z  z
  t&        j$                  t        z  t/        t        j$                  t,        t        z  j$                  t        z  z         z  z   k(  sJ y )NrL   r$   rB   rS   )r   r&   r   r/   r9   r   r    r!   r   r0   r1   rX   r\   rY   rZ   r"   rewriter   rD   r'   rE   r   r(   r   invr]   s     r2   !test_matrix_derivatives_of_tracesrc      sP   8A:DA99Q<8$6q!$<kJ\]bcd]efg]gijJkm{mxyzm{|}  @A  nB  ?C  D  D  D  D1:??1QT7#((*q!VAq\!%(*q!Qq!tW	   8D99Q<8A;&&&<<!!!AqD'*//1VAq\AAA 1:D99Q<133<<!!!AqD'*//1Qq!tW<<< 1Q<D99Q<133qss7"""<<!!!AqD'*//1::ACCGQT?KKK 133q>D99Q<1Q3 Q<D99Q<1 133<D99Q<1 A;D99Q<1QSS5    Aa=D99Q<AaC!A#I==(((1a!D99Q<AaC!A#I==((( Qq>D99Q<1Q3Q;&&& 1QSS>D99Q<1Q3Q;&&& 133q>D99Q<1Q3Q;&&& 1QSS>D99Q<1QSS51Q3;&&& 133q>D99Q<1QSS51Q3;&&& Qq>D99Q<1QSS51Q3;&&& 1Qq>D99Q<133qss7133;QSS4444 Q<D99Q<1Q3133<D99Q<1Q3 QSS1QD99Q<133q57133;1Qqss2222 QqD99Q<1Q3q5133q59,,,, 1Qqss1D99Q<133qss719QSS=1Q3q572222 !A#a%!)ac!eai]]*+D99Q<1QSS5!A#a%!),QSS0000 A;D 1a4=D QSS1QSS"1$Q&'D99Q<1Q3qss719Q;q=,qss1uQwqss{133qss/B1/DDqs1uQSSyQRQTQT}UVWXGXX[\[^[^_`[`abadad[defeheh[hij[jkl[lmnmpmp[ppppp
 1r71D99Q<GAJLL=,QSS0==== Qq!!#$D99Q<QUUWYY;qss?15572155799<QUUWYYFSTUVUZUZU\I\]^]b]b]dIdefejejelenenInnnnn !##a%'!##a%'*+D99Q<2a46133q57--/1!##5a79133q57--/IAaCPQESTSVSVWXSXYZSZR_R_RaLaaaaa !acc!eAg+""$acc!eAg./D99Q<1Q3wq133q57{33ac'!acc!eAg+:N6Nqss6RST6TUV6VW^_`cdcfcfghchijcj_jWk6kknonqnqrsnst{|}||  DE  FG  DG  CJ  CJ  KL  CL  }L  uM  oM  NO  NQ  NQ  oQ  RS  RU  RU  oU  VW  oW  X_  `a  `c  `c  gh  ij  gj  fm  fm  no  fo  `o  Xp  op  p  st  sv  sv  wx  sx  y@  AB  AD  AD  HI  JK  HK  GN  GN  OP  GP  AP  yQ  sQ  Q  Q  Q  Qr4   c            	         t         j                  t        t        z  t        j                  t        z  t        t        z  z   z  t        j                  t        j                  z  t         t
        j                  z  t        t        z  t        j                  z  t        t        j                  t        z  t        t        z  z   z  t        z  t        z  z   t        j                  t        j                  z  t        z  z
  z  t        z  t        t        t        j                  z  t        t        z  t        z  t        j                  z  z   dt        z  t        z  z
  z  z   z  t        z  z   dt        z  t        z  t        j                  z  t        j                  z  t        t        j                  z   z  z   z  t
        z  } t        t        t        z  t        z  t        j                  z  dt        z  t        z  z
  t        t        j                  z  z   z  t         t
        j                  z  t        t        t        z  t        j                  t        z  z   z  t        z  t        z  t        t        z  t        j                  z  z   t        j                  t        j                  z  t        z  z
  z  t        z  z   t        z  t
        z  t         j                  z  t        j                  z  t        dz  t
        z  t         j                  z  t        j                  z  t        j                  z  t         z  t
        j                  z  t        z  t        z  z   dt        z  t        z  t        j                  z  t        j                  z  t         z  t
        j                  z  z   t        t        z  t        dz  z  t
        z  t         j                  z  t        j                  z  t        j                  z  t         z  t
        j                  z  t        z  z   t        t
        z  t         j                  z  t        z  t        z  z   t         t
        j                  z  dt        z  dt        j                  z  z   z  t        z  t        z  t        j                  z  z   t
        t         j                  z  t        z  t        z  t         z  t
        j                  z  t        j                  dz  z  t        z  t        j                  z  z   t
        t         j                  z  t        z  t        z  t         z  t
        j                  z  t        j                  dz  z  t        j                  z  t        j                  t        z  t        j                  t        j                  z  z   z  z   dt
        z  t         j                  z  t        z  t        z  t        j                  z  t        j                  z  z   t        j                  dt        z  dt        j                  z  z   z  t
        z  t         j                  z  t        z  t        z  z   t        j                  t        j                  dz  z  t        z  t        z  t         z  t
        j                  z  t        j                  z  t        z  z   t        j                  t         z  t
        j                  z  t        j                  t        j                  z  t        j                  t        z  z   z  z   t        j                  t        j                  z  t
        z  t         j                  z  t        z  t        z  t         z  t
        j                  z  t        j                  dz  z  t        j                  z  z   t        j                  t        z  t        z  t         z  t
        j                  z  t        j                  z  t        z  z   dt        j                  z  t        z  t        z  t         z  t
        j                  z  t        j                  z  t        j                  z  z
  t        j                  t        z  t        dz  z  t
        z  t         j                  z  t        j                  z  t        j                  z  t         z  t
        j                  z  z
  t        j                  t        j                  z  t         z  t
        j                  z  t        j                  z  z   }| j                  t              |k(  sJ y )NrL   *   rB   )	r*   rD   r&   r"   r'   r+   r)   r(   r9   )r=   results     r2   +test_derivatives_of_complicated_matrix_exprrg   L  s*   33!QSSUQqS[!ACCGQqssUAaCGaQ1oa>OPQ>Q4QTUTWTWXYX[X[T[\]T]4]-^_`-`cdfghihkhkfknopqnqrsnstutwtwnwfwz{|}z}~zf  dA  .A  %B  CD  %D  D  GI  JK  GK  LM  GM  NO  NQ  NQ  GQ  RS  RU  RU  GU  WX  [\  [^  [^  W^  G_  _  `  ab  bD1QqssQqSU"QqssU*+aeQ!acc!e_Q5Fq5H1Q3qss75RUVUXUXYZY\Y\U\]^U^5^._`a.aacddeffghgjgjjklknknnqrtuquvwqwxyx{x{q{|}||q  AB  AD  AD  rD  EF  rF  GH  GJ  GJ  rJ  KL  rL  MN  rN  N  QS  TU  QU  VW  QW  XY  X[  X[  Q[  \]  \_  \_  Q_  `a  Qa  bc  be  be  Qe  e  hi  jk  hk  lm  op  lp  hp  qr  hr  st  sv  sv  hv  wx  wz  wz  hz  {|  {~  {~  h~  @  h@  AB  AD  AD  hD  EF  hF  F  IJ  KL  IL  MN  MP  MP  IP  QR  IR  ST  IT  T  WX  YZ  Y\  Y\  W\  ^`  ab  ^b  eg  hi  hk  hk  ek  ^k  Wl  mn  Wn  op  Wp  qr  qt  qt  Wt  t  wx  yz  y|  y|  w|  }~  w~  @  w@  AB  wB  CD  CF  CF  wF  GH  GJ  GJ  LM  GM  wM  NO  wO  PQ  PS  PS  wS  S  VW  XY  X[  X[  V[  \]  V]  ^_  V_  `a  Va  bc  be  be  Ve  fg  fi  fi  kl  fl  Vl  mn  mp  mp  Vp  rs  ru  ru  vw  rw  z{  z}  z}  ~  ~A  ~A  zA  rA  VB  B  EG  HI  EI  JK  JM  JM  EM  NO  EO  PQ  EQ  RS  RU  RU  EU  VW  VY  VY  EY  Y  \]  \_  \_  ac  de  ae  hj  kl  kn  kn  hn  an  \o  pq  \q  rs  ru  ru  \u  vw  \w  xy  \y  y  |}  |  |  @A  @C  @C  EF  @F  |F  GH  |H  IJ  |J  KL  |L  MN  MP  MP  |P  QR  QT  QT  |T  UV  |V  V  YZ  Y\  Y\  ]^  Y^  _`  _b  _b  Yb  de  dg  dg  hi  hk  hk  dk  no  nq  nq  rs  ns  ds  Yt  t  wx  wz  wz  {|  {~  {~  w~  @  w@  AB  AD  AD  wD  EF  wF  GH  wH  IJ  wJ  KL  KN  KN  wN  OP  OR  OR  TU  OU  wU  VW  VY  VY  wY  Y  \]  \_  \_  `a  \a  bc  \c  de  \e  fg  fi  fi  \i  jk  jm  jm  \m  no  \o  o  rs  tu  tw  tw  rw  xy  ry  z{  r{  |}  r}  ~  ~A  ~A  rA  BC  BE  BE  rE  FG  FI  FI  rI  I  LM  LO  LO  PQ  LQ  RS  UV  RV  LV  WX  LX  YZ  Y\  Y\  L\  ]^  ]`  ]`  L`  ab  ad  ad  Ld  ef  Lf  gh  gj  gj  Lj  j  mn  mp  mp  qr  qt  qt  mt  uv  mv  wx  wz  wz  mz  {|  {~  {~  m~  ~F99Q<6!!!r4   c                  @   dt        t              z  } | j                  t              dt        t              z  k(  sJ t        } | j                  t              }t        |t              sJ |t        t        t              k(  sJ t        t              dz  } | j                  t              dt        t              z  t        t              z  k(  sJ t        t              t        z  } t        t              }| j                  t              t        t        |t              t        t        t        t              |z  |       t        d      dd                  k(  sJ t        t        t              t        z        } | j                  t              dt        t              z  t        t              z  k(  sJ t        t        t        t              t        z        t        z        } | j                  t              dt        t              dz  z  t        t              z  k(  sJ y )NrL   rB   r$   )r   r&   r9   r   r/   
isinstancer   r   r    r!   r   )r=   derivrM   s      r2   "test_mixed_deriv_mixed_expressionsrk   R  s   U1X:D99Q<1Xa[=(((DIIaLEeZ(((Jq!$$$$8Q;D99Q<AeAhJ33338A:DA99Q<8$6q!$<kJ\]bcd]efg]gijJkm{mxyzm{|}  @A  nB  ?C  D  D  D  Dq!D99Q<AeAhJ3333uQxz"1$%D99Q<AeAhkM8A;6666r4   c                  F   t         j                  t        z  } | j                  t               t        k(  sJ | d   j                  t         t        df         j                         t        t        df   k(  sJ t         j                  t        z  t        j                  z  } | j                  t               t        dt        t         j                  t        z        z  z  k(  sJ t         j                  t         z  t        j                  z  } | j                  t               t         t         j                  t         z  t        dd      z  z  k(  sJ t        j                  t        z  t         j                  z  t        z  t        j                  z  } | j                  t               t        t        j                  z  t        z  t        t        j                  t        z  t         j                  z  t        z        z  dz  k(  sJ t        j                  t        z  t         j                  z  t        z  t        dd      z  } | j                  t               t        t        j                  z  t        z  t        j                  t        z  t         j                  z  t        z  t        dd      z  z  dz  k(  sJ t        j                  t        z  t        z  t        j                  z  } | j                  t              t        dt        t        j                  t        z  t        z        z  z  t        j                  z  k(  sJ t        j                  t         z  t        j                  t        z  t        z  t        j                  z  z  t        j                  z  t        z  } | j                  t              t        dt        t        j                  t        z  t        z        z  z  t         j                  z  t        z  t        j                  z  t        z  t        j                  z  k(  sJ y )NrW   r   rB   rS   r$   rL   r`   )r#   rD   r%   r9   rX   rY   r   Halfr   r   r,   r*   r+   r"   r-   rT   s    r2   test_derivatives_matrix_normsrn   j  s   33q5D99Q<1:??1QT7#((*a1g555CCEAFF?D99Q<1aQSSUm,,,,CCEAFF?D99Q<1acc!ehr1o55555CCE!##IaK!&& D99Q<1QSS574Aacc	!#44Q6666CCE!##IaK(1a.(D99Q<1QSS57ACCE!##IaK(2q/#AA!CCCCCCE!GaffD99Q<1aQSSU1Wo.qss222233q5!##a%'AFF""133&q(D99Q<1aQSSU1Wo.qss214QSS8:133>>>>r4   c                  d   t         j                  t              } | j                  t               j	                  t        t         j                  d                   sJ | t        df   j                  t         t        df         j                         t        t         t        df         dz  dz   t        t        t              z  k(  sJ t        | t         | j                  t                      t        dz  t         z  j                  t              } | j                  t              j	                  t        dt        z  t         z  t        dz  t         z  j                  t                          sJ | t        df   j                  t              j                         dt        z  t         t        df   z  t        t        dz  t         t        df   z        z  k(  sJ t        | t        | j                  t                     t        t              t        z  t         z  j                  t              } | j                  t              j	                  t        t        t         z  t        z  t        t              t        z  t         z  j                  t                          sJ t        | t        | j                  t                     t        t         j                  t"              z  } t        | t         | j                  t                      t         j$                  t        z  t         z  t&        t(        j                  t              j$                  z  t         z  z   } | j                  t               j	                  t        j$                  t         z  t        t         z  z   t&        t(        j                  t              z  z         sJ t        | t         | j                  t                      t         j                  t              j$                  t(        z  } t        | t         | j                  t                      t*        j$                  t,        z  t.        z  j                  t              } | j                  t,              j	                  t*        t*        j$                  t,        z  t.        z  j                  t              z  t.        j$                  z        sJ t        | t,        | j                  t,                     t*        j$                  t,        j                  t              z  t.        z  } | j                  t,              j	                  t        t*              t,        j                  t              z  t        t.              z        sJ t        | t,        | j                  t,                     t*        j$                  t        t,        z  t         z  j                  t              z  t.        z  } | j                  t,              j	                  t        j$                  t        t*              z  t        t,        z  t         z  j                  t              z  t        t.              z  t         j$                  z        sJ t        | t,        | j                  t,                     t*        j$                  t        t,        z  t.        z  j                  t              z  t.        j$                  z  } t*        j$                  t        z  t,        j                  t              z  t         z  t.        z  } | j                  t,              j	                  t        t        j$                  t*        z  t.        j$                  z  t         j$                  z  t,        j                  t                          sJ t*        j$                  t        t,        j                  t              z  t         z  j                  t              z  t.        z  } t*        j$                  t,        j                  t              j                  t              z  t.        z  } y )Nc                 $    t        |       dz  dz   S )NrB   r$   )r   )r#   s    r2   r3   z8test_derivatives_elementwise_applyfunc.<locals>.<lambda>  s    QQ r4   r   rB   r$   )r#   rF   r   r9   rE   r   r0   rX   rY   rZ   r@   r   r   r   r
   r&   r'   r	   rD   r/   r%   r*   r"   r+   rT   s    r2   &test_derivatives_elementwise_applyfuncrq     s.   ;;sD99Q<  1;;678: : :1:??1QT7#((*s1QT7|Q/BF1aL.PPPP*4DIIaLAqDFc"D99Q<  1a!Q$q&!3!3C!89; ; ;1:??1""$!AadGC1Qq!tW4E(EEEE*4DIIaLAF1HQJ!!#&D99Q<  !AAq
55c:;= = =*4DIIaLAQ[[D +4DIIaLA33q57Qq{{3')))!++D99Q<  Q1qS1A/A!ABBB*4DIIaLA;;saD +4DIIaLACC!GaK""3'D99Q<  ACCE!G#6#6s#;!;ACC!?@@@*4DIIaLA33S!!A%D99Q<  1akk#&&z!}46 6 6*4DIIaLA33!A#a%""3''!+D99Q<  	JqM1Q3q5++C00A>qssBD D D*4DIIaLA33!A#a%""3''!##-D
 33q5S!!!#A%D99Q<  a!##+Q[[-=>@ @ @ 33!AKK$$Q&11#66:D 33!++c"--c22Q6Dr4   c                     t        t        t        t              } | j	                  t              t        t        t        t                    k(  sJ t        j                  t        t        t        t              z  t        z  } | j	                  t              t        t        t        j                  z  t        t              k(  sJ t        t        d      } | j	                  t              j                         dt        t              z  k(  sJ t        t        j                  d      } | j	                  t              j                         dt        t              z  k(  sJ t        t        t        j                        } | j	                  t              t        j                  t        t        t        t        dd                  z  k(  sJ t        t        j                  t        z  t        z  d      } | j	                  t              dt        z  t        j                  z  t        z  t        z  t        j                  z  k(  sJ t        t        j                  t        z  t        z  t        j                        } | j	                  t              t        dt!        t        j                  t        z  t        z        z  z  t        j                  z  k(  sJ y )NrB   rS   )r   r*   r#   r+   r9   r   rD   r&   r"   r'   r   r   rY   r   rm   r   r   rT   s    r2   (test_derivatives_of_hadamard_expressionsrs     s    Aq!$D99Q<:&6q!&<====331a((*D99Q<?1QSS5!Q7777 !QD99Q<!JqM/111!##q!D99Q<!JqM/111!QVV$D99Q<166*^AxA-O"PPPPP!##a%'1%D99Q<1Q3qss719Q;qss?***!##a%'166*D99Q<1aQSSU1Wo.qss2222r4   N)rB   )T__doc__sympyr   sympy.combinatoricsr   sympy.concrete.summationsr   sympy.core.numbersr   sympy.core.singletonr   sympy.core.symbolr   &sympy.functions.elementary.exponentialr	   r
   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   r   r   (sympy.functions.special.tensor_functionsr   &sympy.matrices.expressions.determinantr   #sympy.matrices.expressions.diagonalr   #sympy.matrices.expressions.hadamardr   r   r   "sympy.matrices.expressions.inverser   "sympy.matrices.expressions.matexprr   "sympy.matrices.expressions.specialr    sympy.matrices.expressions.tracer   !sympy.matrices.expressions.mataddr   !sympy.matrices.expressions.matmulr   r   r   $sympy.tensor.array.array_derivativesr   sympy.matrices.expressionsr   0sympy.tensor.array.expressions.array_expressionsr   r    r!   r0   r1   r/   rX   r\   r"   r#   r%   r&   r'   r(   r)   r*   r+   r,   r-   rZ   r@   rG   rJ   rO   rQ   rU   r^   rc   rg   rk   rn   rq   rs   rI   r4   r2   <module>r      sa  
 # + ) ' " % = 9 D D C > : b b 6 ; 8 2 4 4 E @ 5 f f
'
1au~1aaaaaaaaaaa 
5H,,C".2(5@pPQf"70?2<7B3r4   