
    \hw>                        S 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  SSKJrJr  SS	KJr  SS
KJrJr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!  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-  SSK.J/r/  SSK0J1r1  SSK2J3r3J4r4J5r5  \" S5      u  r6r7r8\" S5      u  r9r:\#" S\8\85      r;\#" S\8S5      r<\#" S\8S5      r=\#" S\8\85      r>\#" S \8\85      r?\#" S!\8\85      r@\#" S"\8\85      rA\#" S#\8S5      rB\#" S$\8S5      rC\#" S%\8S5      rD\#" S&\8S5      rES' rFS6S( jrGS) rHS* rIS+ rJS, rKS- rLS. rMS/ rNS0 rOS1 rPS2 rQS3 rRS4 rSg5)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                 ,    [        XS[        S-
  45      $ )Nr   r$   )r   k)ijs     i/var/www/auris/envauris/lib/python3.13/site-packages/sympy/matrices/expressions/tests/test_derivatives.py<lambda>r3   0   s    nQAqs84    c                     g N)xreplacer/   as_explicitdiffreshapeshapetomatrix)exprr#   diffexprdims       r2   &_check_derivative_with_explicit_matrixr@   3   s    
r4   c            	         [         R                  [        5      [        [        [        5      :X  d   e[         [
        [        -   -  [        -  R                  [        5      [        [        S5      :X  d   e[        R                  [        5      [        [        S5      :X  d   e[        R                  [        -  R                  [        5      [        SS5      :X  d   e[        [        R                  -  R                  [        5      [        [        [        5      :X  d   e[        [        -   R                  [        5      [        [        S5      :X  d   e[        [        S5      R                  [        5      [        [        S5      :X  d   e[        [        [        5      R                  [        5      R                  [        [        R                  [        5      [!        [        [        5      5      5      (       d   e[#        [        [        5      R                  [        5      [        [        S5      :X  d   e[#        [        [%        [        S5      -  [        [        5      R                  [        5      [#        [        [        5      :X  d   e[        [        -  R                  [        5      [        :X  d   e['        [        5      [         -  [        -  [        -  R                  [        5      [)        [        5      [         -  [        -  [        -  :X  d   e[        R                  [&        5      R                  [        5      [        [        S5      :X  d   e[+        [        S-  [
        -  5      R                  [        5      S[        -  [+        [
        5      -  :X  d   e[-        S5      n SU -  [        -  nUR                  [        5      SU -  [/        [        5      -  :X  d   eg )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                      [        [        R                  [        [        S5      5      R                  [        5      [        [        S5      :X  d   eg )Nr$   )r   r#   rD   r   r/   r9    r4   r2   test_one_matrixrJ   X   s2    !##yA',,Q/9Q?BBBr4   c            	         [        [        5      n [        [        X 5      [	        S5      " SS5      5      n[
        R                  [
        5      U:X  d   e[
        R                  R                  [
        5      [        [        X 5      [	        S5      " SSS5      5      :X  d   eS[
        -  R                  [
        5      [        [        SU -  U 5      [	        S5      " SS5      5      :X  d   e[        [
        [
        5      R                  [
        5      [        X5      :X  d   e[
        [        -   R                  [
        5      U:X  d   eg )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q!0D
EC66!93388A;+&8&>AqRSUV@WXXXXaC::a=K(:1Q3(BKPQNSTVWDXYYYY!Q<Q8C#5555E<<?c!!!r4   c                  f    [         R                  [        5      [        [         [        5      :X  d   eg r6   )r"   r9   r&   r   rI   r4   r2   $test_matrix_derivative_trivial_casesrQ   g   s!     66!91----r4   c                     [         R                  [        [        5      -  [        -  n U R                  [        5      [        [        5      R                  * [         -  [        R                  -  [        [        5      R                  -  :X  d   e[        [        [        5      5      n [        [        [        [        5      -  [        -  5      n U R                  [        5      [        S-  [        -  [        -  [        S-  -  R                  * :X  d   e[        [        [        [        -   5      5      n U R                  [        5      [        [        [        -   5      R                  S-  * :X  d   eg )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                     [         R                  [         5      [        [        5      :X  d   e[         [        S4   R                  [         [
        S4   5      R                  5       [        [
        [        5      :X  d   e[         R                  R                  [         5      [        [        5      :X  d   e[         R                  [        -  n U R                  [         5      [        :X  d   eU S   R                  [         [
        S4   5      R                  5       [        [
        S4   :X  d   e[        R                  [         -  n U R                  [         5      [        :X  d   e[        R                  [        -  [        -  n U R                  [        5      [        [        R                  -  :X  d   e[        R                  [        R                  -  [        -  n U R                  [        5      [        [        R                  -  :X  d   e[        R                  [        -  [        -  n U R                  [        5      [        [        R                  -  :X  d   e[        R                  [        R                  -  [        -  n U R                  [        5      [        [        R                  -  :X  d   e[        R                  [        R                  -  [        -  [        -  n U R                  [        5      [        [        -  [        R                  -  [        [        -  [        R                  -  -   :X  d   e[        [         -  [        -   R                  [        -  [        [         -  [         -   -  n U R                  [         5      [        R                  [        -  [        [         -  [         -   -  [        R                  [        R                  -  [        [         -  [        -   -  -   :X  d   e[         R                  [        -  [         -  n U R                  [         5      [        [         -  [        R                  [         -  -   :X  d   e[        R                  [        R                  -  [        -  [        -  [        -  n U R                  [        5      [        R                  [        -  [        -  [        R                  -  [        [        -  [        -  [        R                  -  -   :X  d   e[        [        -  [        -   R                  [        -  [        [        -  [        -   -  n U R                  [        5      [        [        [        -  [        -   -  [        R                  -  [        R                  [        [        -  [        -   -  [        R                  -  -   :X  d   e[#        U S   R                  [        [
        [$        4   5      R                  5       5      S:X  d   e[         [         R                  -  [         -  n [        [        5      nU R                  [         5      ['        U[         R                  [         -  5      S[         -  [         R                  -  -   :X  d   eg )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                  8$   [        [        5      [        -  n [        [        5      nU R	                  [        5      [        [        U[        5      [        [        [        [        5      U-  U5      [        S5      " SS5      5      5      :X  d   eU [        [        4   R	                  [        [        [        4   5      R                  5       [        [        [        5      [        [        [        5      -  [        [        5      -  [        [        [        5      [        [        [        4   -  -   :X  d   e[        [        5      n U R	                  [        5      [        [        5      :X  d   eU R!                  ["        5      R	                  [        [        [        4   5      R                  5       [        [        [        5      :X  d   e[        [        [        -  5      n U R	                  [        5      [        R$                  :X  d   eU R!                  ["        5      R	                  [        [        [        4   5      R                  5       [        [        [        4   :X  d   e[        [        [        -  [&        -  5      n U R	                  [        5      [        R$                  [&        R$                  -  :X  d   eU R!                  ["        5      R	                  [        [        [        4   5      R                  5       R)                  [        R$                  [&        R$                  -  [        [        4   5      (       d   e[        [        [        R$                  -  [&        -  5      n U R	                  [        5      [&        [        -  :X  d   e[        [        R$                  [        -  5      n U R	                  [        5      [        :X  d   e[        [        [        R$                  -  5      n U R	                  [        5      [        :X  d   e[        [        S-  5      n U R	                  [        5      S[        R$                  -  :X  d   e[        [        S-  [&        -  5      n U R	                  [        5      [        [&        -  [&        [        -  -   R$                  :X  d   e[        [+        [        [        [&        5      5      n U R	                  [        5      [        [&        -  [&        [        -  -   R$                  :X  d   e[        [        R$                  [&        -  [        -  5      n U R	                  [        5      [&        [        -  [&        R$                  [        -  -   :X  d   e[        [&        [        -  [        R$                  -  5      n U R	                  [        5      [&        [        -  [&        R$                  [        -  -   :X  d   e[        [        [        R$                  -  [&        -  5      n U R	                  [        5      [&        [        -  [&        R$                  [        -  -   :X  d   e[        [        [&        -  [        R$                  -  5      n U R	                  [        5      [        [&        R$                  -  [        [&        -  -   :X  d   e[        [&        [        R$                  -  [        -  5      n U R	                  [        5      [        [&        R$                  -  [        [&        -  -   :X  d   e[        [        R$                  [        -  [&        -  5      n U R	                  [        5      [        [&        R$                  -  [        [&        -  -   :X  d   e[        [        [        -  [&        -  [        -  5      n U R	                  [        5      [        R$                  [        R$                  -  [&        R$                  -  [&        R$                  [        R$                  -  [        R$                  -  -   :X  d   e[        [        R$                  [        -  5      n U R	                  [        5      S[        -  :X  d   e[        [        [        R$                  -  5      n U R	                  [        5      S[        -  :X  d   e[        [&        R$                  [        R$                  -  [,        -  [        -  [&        -  5      n U R	                  [        5      [,        R$                  [        -  [&        -  [&        R$                  -  [,        [        -  [&        -  [&        R$                  -  -   :X  d   e[        [        R$                  [&        -  [        -  [,        -  5      n U R	                  [        5      [&        [        -  [,        -  [&        R$                  [        -  [,        R$                  -  -   :X  d   e[        [        [        -  [&        -  [        R$                  -  [,        -  5      n U R	                  [        5      [        R$                  [,        R$                  -  [        -  [&        R$                  -  [,        [        -  [        -  [&        -  -   :X  d   e[        [        [        -  [&        -  [,        -   [        [        -  [&        -  [,        -   R$                  -  5      n U R	                  [        5      S[        R$                  -  [        [        -  [&        -  [,        -   -  [&        R$                  -  :X  d   e[        [        [        -  5      n [        [        [        [        -  -  5      n [        [&        R$                  [        R$                  -  [,        -  [        -  [        R$                  -  [,        -  [        -  [&        -  5      n U R	                  [        5      [,        [        -  [        R$                  -  [,        -  [        -  [&        -  [&        R$                  -  [,        R$                  [        -  [&        -  [&        R$                  -  [        R$                  -  [,        R$                  -  [        -  -   [,        [        -  [&        -  [&        R$                  -  [        R$                  -  [,        -  [        -  -   [,        R$                  [        -  [        R$                  -  [,        R$                  -  [        -  [&        -  [&        R$                  -  -   :X  d   e[        [        [        S-  -  [&        -  5      n U R	                  [        5      [/        [        5      R$                  * [        R$                  -  [&        R$                  -  [/        [        5      R$                  -  :X  d   e[        [/        [        R$                  [,        -  [        -  5      [        -  5      n U R	                  [        5      [        R1                  5       R$                  * [        R$                  -  [        R1                  5       -  [,        R1                  5       R$                  -  [        R1                  5       R$                  -  [        R1                  5       R$                  [        -  [        R1                  5       -  [,        R1                  5       -  [        R1                  5       R$                  -  -
  :X  d   e[        [        R$                  [,        -  [        -  R1                  5       [        R$                  [&        -  [        -  -  5      n U R	                  [        5      S[,        -  [        -  [        R$                  [,        -  [        -  R1                  5       -  [        R$                  -  [&        -  [        -  [        R$                  [,        -  [        -  R1                  5       -  S[&        -  [        -  [        R$                  [,        -  [        -  R1                  5       -  -   :X  d   e[        [        [        R$                  [,        -  [        -  -   R1                  5       [        R$                  [&        -  [        -  -  5      n U R	                  [        5      [&        [        -  [/        [        [        R$                  [,        -  [        -  -   5      -  [,        [        -  [/        [        [        R$                  [,        -  [        -  -   5      -  [        R$                  -  [&        -  [        -  [/        [        [        R$                  [,        -  [        -  -   5      -  -
  [,        R$                  [        -  [/        [        R$                  [,        [        -  R$                  [        -  -   5      -  [        R$                  -  [&        R$                  -  [        -  [/        [        R$                  [,        [        -  R$                  [        -  -   5      -  -
  [&        R$                  [        -  [/        [        R$                  [,        [        -  R$                  [        -  -   5      -  -   :X  d   eg )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]gijJkmxyzm{|}  @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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            	         [         R                  [        [        -  [        R                  [        -  [        [        -  -   -  [        R                  [        R                  -  [         [
        R                  -  [        [        -  [        R                  -  [        [        R                  [        -  [        [        -  -   -  [        -  [        -  -   [        R                  [        R                  -  [        -  -
  -  [        -  [        [        [        R                  -  [        [        -  [        -  [        R                  -  -   S[        -  [        -  -
  -  -   -  [        -  -   S[        -  [        -  [        R                  -  [        R                  -  [        [        R                  -   -  -   -  [
        -  n [        [        [        -  [        -  [        R                  -  S[        -  [        -  -
  [        [        R                  -  -   -  [         [
        R                  -  [        [        [        -  [        R                  [        -  -   -  [        -  [        -  [        [        -  [        R                  -  -   [        R                  [        R                  -  [        -  -
  -  [        -  -   [        -  [
        -  [         R                  -  [        R                  -  [        S-  [
        -  [         R                  -  [        R                  -  [        R                  -  [         -  [
        R                  -  [        -  [        -  -   S[        -  [        -  [        R                  -  [        R                  -  [         -  [
        R                  -  -   [        [        -  [        S-  -  [
        -  [         R                  -  [        R                  -  [        R                  -  [         -  [
        R                  -  [        -  -   [        [
        -  [         R                  -  [        -  [        -  -   [         [
        R                  -  S[        -  S[        R                  -  -   -  [        -  [        -  [        R                  -  -   [
        [         R                  -  [        -  [        -  [         -  [
        R                  -  [        R                  S-  -  [        -  [        R                  -  -   [
        [         R                  -  [        -  [        -  [         -  [
        R                  -  [        R                  S-  -  [        R                  -  [        R                  [        -  [        R                  [        R                  -  -   -  -   S[
        -  [         R                  -  [        -  [        -  [        R                  -  [        R                  -  -   [        R                  S[        -  S[        R                  -  -   -  [
        -  [         R                  -  [        -  [        -  -   [        R                  [        R                  S-  -  [        -  [        -  [         -  [
        R                  -  [        R                  -  [        -  -   [        R                  [         -  [
        R                  -  [        R                  [        R                  -  [        R                  [        -  -   -  -   [        R                  [        R                  -  [
        -  [         R                  -  [        -  [        -  [         -  [
        R                  -  [        R                  S-  -  [        R                  -  -   [        R                  [        -  [        -  [         -  [
        R                  -  [        R                  -  [        -  -   S[        R                  -  [        -  [        -  [         -  [
        R                  -  [        R                  -  [        R                  -  -
  [        R                  [        -  [        S-  -  [
        -  [         R                  -  [        R                  -  [        R                  -  [         -  [
        R                  -  -
  [        R                  [        R                  -  [         -  [
        R                  -  [        R                  -  -   nU R                  [        5      U:X  d   eg )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                  V   S[        [        5      -  n U R                  [        5      S[        [        5      -  :X  d   e[        n U R                  [        5      n[        U[        5      (       d   eU[        [        [        5      :X  d   e[        [        5      S-  n U R                  [        5      S[        [        5      -  [        [        5      -  :X  d   e[        [        5      [        -  n [        [        5      nU R                  [        5      [        [        U[        5      [        [        [        [        5      U-  U5      [        S5      " SS5      5      5      :X  d   e[        [        [        5      [        -  5      n U R                  [        5      S[        [        5      -  [        [        5      -  :X  d   e[        [        [        [        5      [        -  5      [        -  5      n U R                  [        5      S[        [        5      S-  -  [        [        5      -  :X  d   eg )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]gijJkmxyzm{|}  @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                  V   [         R                  [        -  n U R                  [         5      [        :X  d   eU S   R                  [         [        S4   5      R                  5       [        [        S4   :X  d   e[         R                  [        -  [        R                  -  n U R                  [         5      [        S[        [         R                  [        -  5      -  -  :X  d   e[         R                  [         -  [        R                  -  n U R                  [         5      [         [         R                  [         -  [        SS5      -  -  :X  d   e[        R                  [        -  [         R                  -  [        -  [        R                  -  n U R                  [         5      [        [        R                  -  [        -  [        [        R                  [        -  [         R                  -  [        -  5      -  S-  :X  d   e[        R                  [        -  [         R                  -  [        -  [        SS5      -  n U R                  [         5      [        [        R                  -  [        -  [        R                  [        -  [         R                  -  [        -  [        SS5      -  -  S-  :X  d   e[        R                  [        -  [        -  [        R                  -  n U R                  [        5      [        S[        [        R                  [        -  [        -  5      -  -  [        R                  -  :X  d   e[        R                  [         -  [        R                  [        -  [        -  [        R                  -  -  [        R                  -  [        -  n U R                  [        5      [        S[        [        R                  [        -  [        -  5      -  -  [         R                  -  [        -  [        R                  -  [        -  [        R                  -  :X  d   eg )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                     [         R                  [        5      n U R                  [         5      R	                  [        [         R                  S 5      5      5      (       d   eU [        S4   R                  [         [        S4   5      R                  5       [        [         [        S4   5      S-  S-   [        [        [        5      -  :X  d   e[        U [         U R                  [         5      5        [        S-  [         -  R                  [        5      n U R                  [        5      R	                  [        S[        -  [         -  [        S-  [         -  R                  [        5      5      5      (       d   eU [        S4   R                  [        5      R                  5       S[        -  [         [        S4   -  [        [        S-  [         [        S4   -  5      -  :X  d   e[        U [        U R                  [        5      5        [        [        5      [        -  [         -  R                  [        5      n U R                  [        5      R	                  [        [        [         -  [        -  [        [        5      [        -  [         -  R                  [        5      5      5      (       d   e[        U [        U R                  [        5      5        [        [         R                  ["        5      -  n [        U [         U R                  [         5      5        [         R$                  [        -  [         -  [&        [(        R                  [        5      R$                  -  [         -  -   n U R                  [         5      R	                  [        R$                  [         -  [        [         -  -   [&        [(        R                  [        5      -  -   5      (       d   e[        U [         U R                  [         5      5        [         R                  [        5      R$                  [(        -  n [        U [         U R                  [         5      5        [*        R$                  [,        -  [.        -  R                  [        5      n U R                  [,        5      R	                  [*        [*        R$                  [,        -  [.        -  R                  [        5      -  [.        R$                  -  5      (       d   e[        U [,        U R                  [,        5      5        [*        R$                  [,        R                  [        5      -  [.        -  n U R                  [,        5      R	                  [        [*        5      [,        R                  [        5      -  [        [.        5      -  5      (       d   e[        U [,        U R                  [,        5      5        [*        R$                  [        [,        -  [         -  R                  [        5      -  [.        -  n U R                  [,        5      R	                  [        R$                  [        [*        5      -  [        [,        -  [         -  R                  [        5      -  [        [.        5      -  [         R$                  -  5      (       d   e[        U [,        U R                  [,        5      5        [*        R$                  [        [,        -  [.        -  R                  [        5      -  [.        R$                  -  n [*        R$                  [        -  [,        R                  [        5      -  [         -  [.        -  n U R                  [,        5      R	                  [        [        R$                  [*        -  [.        R$                  -  [         R$                  -  [,        R                  [        5      5      5      (       d   e[*        R$                  [        [,        R                  [        5      -  [         -  R                  [        5      -  [.        -  n [*        R$                  [,        R                  [        5      R                  [        5      -  [.        -  n g )Nc                 $    [        U 5      S-  S-   $ )NrB   r$   )r   )r#   s    r2   r3   8test_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_applyfuncrr     sT   ;;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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 6*4DIIaLA33!A#a%""3''!+D99Q<  	JqM1Q3q5++C00A>qssBD 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                     [        [        [        [        5      n U R	                  [        5      [        [        [        [        5      5      :X  d   e[        R                  [        [        [        [        5      -  [        -  n U R	                  [        5      [        [        [        R                  -  [        [        5      :X  d   e[        [        S5      n U R	                  [        5      R                  5       S[        [        5      -  :X  d   e[        [        R                  S5      n U R	                  [        5      R                  5       S[        [        5      -  :X  d   e[        [        [        R                  5      n U R	                  [        5      [        R                  [        [        [        [        SS5      5      5      -  :X  d   e[        [        R                  [        -  [        -  S5      n U R	                  [        5      S[        -  [        R                  -  [        -  [        -  [        R                  -  :X  d   e[        [        R                  [        -  [        -  [        R                  5      n U R	                  [        5      [        S[!        [        R                  [        -  [        -  5      -  -  [        R                  -  :X  d   eg )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_expressionsrt     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   rr   rt   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   