
    \h                        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  S S	KJr  S S
KJr  S SKJr   " S S\5      rg)    )annotations)Expr)
Derivative)Integer)
MatrixBase   )	NDimArray)derive_by_array)
MatrixExpr)
ZeroMatrix_matrix_derivativec                     ^  \ rS rSrSrU 4S jrS r\S 5       r\	S 5       r
\SS j5       r\SS j5       r\SS	 j5       r\SS
 j5       r\SS j5       r\SS j5       r\SS j5       r\	U 4S j5       rSrU =r$ )ArrayDerivative   Fc                   > [         TU ]  " X/UQ70 UD6n[        U[        5      (       a  UR	                  5       Ul        U$ N)super__new__
isinstancer   
_get_shape_shape)clsexpr	variableskwargsobj	__class__s        \/var/www/auris/envauris/lib/python3.13/site-packages/sympy/tensor/array/array_derivatives.pyr   ArrayDerivative.__new__   s;    goc>)>v>c?++)CJ
    c                    SnU R                    H8  u  p#[        US5      (       d  M  [        U5       H  nXR                  -  nM     M:     [        U R                  S5      (       a  XR                  R                  -  nU$ )N shape)variable_counthasattrranger$   r   )selfr$   vcountis        r   r   ArrayDerivative._get_shape   sh    ++HAq'""uAWW$E & , 499g&&YY__$Er!   c                    U R                   $ r   )r   )r(   s    r   r$   ArrayDerivative.shape"   s    {{r!   c                    [        U[        [        45      (       a  UR                  " UR                  6 $ [        U[
        5      (       a  [        UR                  6 $ [        S5      e)Nz.Unable to determine shape of array-derivative.)r   r   r	   zerosr$   r   r   RuntimeError)r   r   s     r   _get_zero_with_shape_like)ArrayDerivative._get_zero_with_shape_like&   sO    dZ344::tzz**j))tzz**OPPr!   c                .   ^  UR                  U 4S j5      $ )Nc                &   > TR                  U 5      $ r   diffxr   s    r   <lambda>?ArrayDerivative._call_derive_scalar_by_matrix.<locals>.<lambda>1       TYYq\r!   	applyfuncr   r)   s   ` r   _call_derive_scalar_by_matrix-ArrayDerivative._call_derive_scalar_by_matrix/       {{122r!   c                h    U R                  U5      (       a  [        X5      $ [        UR                  6 $ r   )hasr   r   r$   r?   s     r   _call_derive_scalar_by_matexpr.ArrayDerivative._call_derive_scalar_by_matexpr3   s)    88A;;%d..qww''r!   c                .   ^  UR                  U 4S j5      $ )Nc                &   > TR                  U 5      $ r   r6   r8   s    r   r:   >ArrayDerivative._call_derive_scalar_by_array.<locals>.<lambda><   r<   r!   r=   r?   s   ` r   _call_derive_scalar_by_array,ArrayDerivative._call_derive_scalar_by_array:   rB   r!   c                    [        X5      $ r   r   r?   s     r   _call_derive_matrix_by_scalar-ArrayDerivative._call_derive_matrix_by_scalar>   s    !$**r!   c                $    U R                  U5      $ r   )_eval_derivativer?   s     r   _call_derive_matexpr_by_scalar.ArrayDerivative._call_derive_matexpr_by_scalarB   s    $$Q''r!   c                .   ^ U R                  U4S j5      $ )Nc                &   > U R                  T5      $ r   r6   )r9   r)   s    r   r:   >ArrayDerivative._call_derive_array_by_scalar.<locals>.<lambda>H   s    q	r!   r=   r?   s    `r   _call_derive_array_by_scalar,ArrayDerivative._call_derive_array_by_scalarF   s    ~~122r!   c                F    U R                  U5      (       a  [        X5      $ g r   )rD   r   r?   s     r   _call_derive_default$ArrayDerivative._call_derive_defaultJ   s    88A;;%d..r!   c                D  > [        U[        [        45      (       a	  US:*  S:X  a  g UR                  (       a  [        U[        5      (       a  U R                  X5      nGO[        U[        5      (       a  U R                  X5      nGOy[        U[        5      (       a  U R                  X5      nGOQUR                  (       a  [        TU ]-  XU5      $ g UR                  (       av  [        U[        5      (       a  U R                  X5      nO[        U[        5      (       a  U R                  X5      nO[        U[        5      (       a  U R                  X5      nOg [        U[        5      (       d  [        U[        5      (       a  [        X5      nOr[        U[        5      (       a'  [        U[        5      (       a  U R!                  X5      nO6[        U[        5      (       d  [        U[        5      (       a  g [        X5      nUc  g US:X  a  U$ U R                  XBUS-
  5      $ )Nr   Tr   )r   intr   	is_scalarr   r@   r   rE   r	   rJ   r   !_dispatch_eval_derivative_n_timesrM   rQ   rV   r
   rY   )r   r   r)   r*   resultr   s        r   r^   1ArrayDerivative._dispatch_eval_derivative_n_timesQ   s    %#w00eqjT5I >>!Z((::4CAz**;;DDAy))99$Bw@%PP[[$
++::4CD*--;;DDD),,99$B $
++z!Z/H/H(1D*--*Q
2K2K11$:D*--Az1J1J(1>A:M88EAINNr!   r#   )r   r   r)   r   returnr   )r   r   r)   r   ra   r   )r   r   r)   r	   ra   r   )r   r   r)   r   ra   r   )r   r   r)   r   ra   r   )r   r	   r)   r   ra   r   )r   r   r)   r   ra   zExpr | None)__name__
__module____qualname____firstlineno__r]   r   r   propertyr$   classmethodr2   staticmethodr@   rE   rJ   rM   rQ   rV   rY   r^   __static_attributes____classcell__)r   s   @r   r   r      s    I   Q Q 3 3 ( ( 3 3 + + ( ( 3 3   /O /Or!   r   N)
__future__r   sympy.core.exprr   sympy.core.functionr   sympy.core.numbersr   sympy.matrices.matrixbaser   
ndim_arrayr	   arrayopr
   "sympy.matrices.expressions.matexprr   "sympy.matrices.expressions.specialr   r   r   r#   r!   r   <module>rt      s3    "   * & 0 ! $ 9 9 AsOj sOr!   