Ë
    7^(hi  ã                   ó¶  — d dl Z d dl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mZ d dl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mZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) d dl*m+Z+ ed„ «       Z,e,j[                  e«      dedefd„«       Z.e,j[                  e«      dedefd„«       Z.e,j[                  e«      dedefd„«       Z.e,j[                  e«      dedefd„«       Z.e,j[                  e«      dedefd„«       Z.e,j[                  e«      dedefd„«       Z.e,j[                  e«      dedefd„«       Z.e,j[                  e«      dedefd„«       Z.e,j[                  e«      dedefd„«       Z.e,j[                  e «      de defd„«       Z.e,j[                  e«      dedefd„«       Z.e,j[                  e	«      de	defd„«       Z.e,j[                  e#«      de#defd„«       Z.e,j[                  e«      dedefd„«       Z.e,j[                  e«      dedefd„«       Z.e,j[                  e«      dedefd „«       Z.e,j[                  e)«      de)defd!„«       Z.d"„ Z/y)#é    N)ÚreduceÚsingledispatch)ÚExpr)ÚS)ÚHadamardProduct)ÚInverse)Ú
MatrixExprÚMatrixSymbol)ÚIdentityÚ	OneMatrix)Ú	Transpose)Ú
_af_invert)ÚElementwiseApplyFunction)Ú
_ArrayExprÚ	ZeroArrayÚArraySymbolÚArrayTensorProductÚArrayAddÚPermuteDimsÚArrayDiagonalÚArrayElementwiseApplyFuncÚget_rankÚ	get_shapeÚArrayContractionÚ_array_tensor_productÚ_array_contractionÚ_array_diagonalÚ
_array_addÚ_permute_dimsÚReshape)Úconvert_matrix_to_arrayc                 ó0   — t        dt        | «      › �«      ‚)z8
    Derivatives (gradients) for array expressions.
    znot implemented for type )ÚNotImplementedErrorÚtype©ÚexprÚxs     úr/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/tensor/array/expressions/arrayexpr_derivatives.pyÚarray_deriver)      s   € ô
 Ð 9¼$¸t»*¸ÐFÓ
GÐGó    r&   r'   c                 ó&   — t        |j                  Ž S ©N©r   Úshaper%   s     r(   Ú_r/      s   € ä�a—g‘gÐÐr*   c                 óT  — | j                   }g }t        | j                   «      D �]I  \  }}t        ||«      }|dk(  rŒ|d | }||dz   d  }t        t        j
                  t        t        |«      d«      }	t        t        j
                  t        t        |«      d«      }
t        g |¢|‘|¢­Ž }t        t        |«      «      }|t        |	«      z   }|t        t        |«      «      z   }|t        |
«      z   }t        t        ||«      «      t        t        |«      «      z   t        t        ||«      «      z   t        t        ||«      «      z   }t        |t        |«      «      }|j                  |«       �ŒL t        |«      dk(  r|d   S t        |«      dk(  rt        j                   S t#        |Ž S )Nr   é   © )ÚargsÚ	enumerater)   r   ÚoperatorÚaddÚmapr   r   ÚlenÚlistÚranger   r   Úappendr   ÚZeror   )r&   r'   r3   Úaddend_listÚiÚargÚdargÚ	args_prevÚ	args_succÚ
shape_prevÚ
shape_succÚaddendÚtot1Útot2Útot3Útot4Úperms                    r(   r/   r/   "   s‡  € à�9‰9€DØ€KÜ˜DŸI™IÓ&ó #‰ˆˆ3Ü˜C Ó#ˆØ�1Š9ØØ˜˜!�Hˆ	Ø˜˜1™˜�Jˆ	ÜœHŸL™L¬#¬i¸Ó*CÀRÓHˆ
ÜœHŸL™L¬#¬i¸Ó*CÀRÓHˆ
Ü&ÐD¨	ÐD°4ÐD¸)ÒDˆÜ”9˜Q“<Ó ˆØ”c˜*“oÑ%ˆØ”cœ) C›.Ó)Ñ)ˆØ”c˜*“oÑ%ˆÜ”E˜$ Ó%Ó&Ü”E˜$“KÓ ñ!Ü#'¬¨d°DÓ(9Ó#:ñ;ä”E˜$ Ó%Ó&ñ'ˆô ˜v¤z°$Ó'7Ó8ˆØ×Ñ˜6Ö"ð##ô$ ˆ;Ó˜1ÒØ˜1‰~ÐÜ	ˆ[Ó	˜QÒ	Ü�v‰vˆä˜;Ð'Ð'r*   c           	      ó~  — | |k(  r�t        t        j                  d„ | j                  D «       «      t	        t        | j                  «      «      D �cg c]  }d|z  ‘Œ	 c}t	        t        | j                  «      «      D �cg c]
  }d|z  dz   ‘Œ c}z   «      S t        |j                  | j                  z   Ž S c c}w c c}w )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr,   )r   )Ú.0r>   s     r(   ú	<genexpr>z_.<locals>.<genexpr>D   s   è ø€ Ò'H¸¬°¯Ñ'Hùs   ‚é   r1   )r   r   Úfromiterr.   r:   r8   r   )r&   r'   r>   s      r(   r/   r/   @   s”   € àˆq‚yÜÜ×'Ñ'Ñ'H¸T¿Z¹ZÔ'HÓHÜ¤ D§J¡J£Ó0Ö1�QˆQˆq‹SÒ1ÄEÌ#ÈdÏjÉjË/ÓDZÖ4[¸q°Q°q±S¸³UÒ4[Ñ[ó
ð 	
ô �q—w‘w §¡Ñ+Ð-Ð-ùò 2ùÒ4[s   ÁB5
Á>B:c                 ó¼   — | j                   \  }}| |k(  r*t        t        t        |«      t        |«      «      g d¢«      S t	        |j                   | j                   z   Ž S )N)r   rO   r1   é   )r.   r   r   r   r   )r&   r'   ÚmÚns       r(   r/   r/   J   sR   € à�:‰:�D€A€qØˆq‚yÜÜ!¤(¨1£+¬x¸«{Ó;Úó
ð 	
ô �q—w‘w §¡Ñ+Ð-Ð-r*   c                 ó@   — t        |j                  | j                  z   Ž S r,   r-   r%   s     r(   r/   r/   U   ó   € ä�q—w‘w §¡Ñ+Ð-Ð-r*   c                 ó@   — t        |j                  | j                  z   Ž S r,   r-   r%   s     r(   r/   r/   Z   rV   r*   c                 óJ   — t        | j                  |«      }t        |g d¢«      S )N)r   r1   rR   rO   )r)   r?   r   )r&   r'   Úfds      r(   r/   r/   _   s!   € ô 
�d—h‘h Ó	"€BÜ˜š\Ó*Ð*r*   c                 óˆ   — | j                   }t        ||«      }t        |  || «      }t        |dd«      }t	        |g d¢«      }|S )N)r1   é   )é   é   )r1   rO   r   rR   )ÚIr)   r   r   r   )r&   r'   ÚmatÚdexprÚtpÚmpÚpps          r(   r/   r/   g   sF   € à
�&‰&€CÜ˜˜aÓ €EÜ	 ˜u e¨TÓ	2€BÜ	˜B ¨Ó	/€BÜ	�rš<Ó	(€BØ€Ir*   c                 óì   — t        | «      dk(  sJ ‚t        |«      dk(  sJ ‚| j                  «       }t        | j                  |«      }t	        t        || j                  «      |«      }t        |dd«      }|S )NrO   )r   r[   )r1   r\   )r   Ú_get_function_fdiffr)   r&   r   r   r   )r&   r'   Úfdiffr`   ra   Útds         r(   r/   r/   q   sy   € ä�D‹>˜QÒÐÐÜ�A‹;˜!ÒÐÐØ×$Ñ$Ó&€EÜ˜Ÿ™ AÓ&€EÜ	Ü  ¨¯	©	Ó2Øó
€Bô 
Ø
ˆF�Fó
€Bð €Ir*   c                 ó  — | j                  «       }| j                  }t        ||«      }t        |t	        ||«      «      }t        |«      }t        | «      }t        |«      D �cg c]  }||z   ||z   |z   f‘Œ }	}t        |g|	¢­Ž S c c}w r,   )re   r&   r)   r   r   r   r:   r   )
r&   r'   rf   ÚsubexprÚdsubexprra   ÚbÚcr>   Údiag_indicess
             r(   r/   r/   �   s�   € à×$Ñ$Ó&€EØ�i‰i€GÜ˜G QÓ'€HÜ	ØÜ! %¨Ó1ó
€Bô 	�‹€AÜ�‹€AÜ05°a³Ö9¨1�Q˜‘U˜A ™E A™IÒ&Ð9€LÐ9Ü˜2Ð- Ò-Ð-ùò :s   Á"Bc                 ó0   — t        | «      }t        ||«      S r,   )r!   r)   )r&   r'   Úcgs      r(   r/   r/   �   s   € ä	  Ó	&€BÜ˜˜AÓÐr*   c                 ó   — t        «       ‚r,   )r#   r%   s     r(   r/   r/   –   s   € ä
Ó
Ðr*   c                 óÔ   ‡— t        | j                  |«      }t        t        |«      «      Š| j                  }|D �cg c]  }t        ˆfd„|D «       «      ‘Œ }}t        |g|¢­Ž S c c}w )Nc              3   ó(   •K  — | ]	  }|‰z   –— Œ y ­wr,   r2   )rM   ÚjÚrank_xs     €r(   rN   z_.<locals>.<genexpr>    s   øè ø€ Ò$;°A Q¨¥ZÑ$;ùs   ƒ)r)   r&   r8   r   Úcontraction_indicesÚtupler   )r&   r'   rY   ru   r>   Únew_contraction_indicesrt   s         @r(   r/   r/   ›   sc   ø€ ä	�d—i‘i Ó	#€BÜ”˜1“Ó€FØ×2Ñ2ÐØEXÖYÀœuÓ$;¸Ô$;Õ;ÐYÐÐYÜ˜bÐ;Ð#:Ò;Ð;ùò Zs   ¼A%c           	      óÜ   — t        | j                  |«      }t        t        |«      «      }| j                  D ��cg c]  }|D �cg c]  }||z   ‘Œ	 c}‘Œ }}}t        |g|¢­Ž S c c}w c c}}w r,   )r)   r&   r8   r   Údiagonal_indicesr   )r&   r'   rj   rt   r>   rs   rm   s          r(   r/   r/   ¤   s`   € ä˜DŸI™I qÓ)€HÜ”˜1“Ó€FØ59×5JÑ5J×K°¨Ö+ A�Q˜“ZÔ+ÐK€LÑKÜ˜8Ð3 lÒ3Ð3ùò ,ùÓKs   º	A(ÁA#ÁA(Á#A(c           	      ó`   — t        | j                  D �cg c]  }t        ||«      ‘Œ c}Ž S c c}w r,   )r   r3   r)   )r&   r'   r?   s      r(   r/   r/   ¬   s&   € ä¸¿	¹	ÖB°œ S¨!Õ,ÒBÐCÐCùÒBs   ”+c                 ó¨   — t        | j                  |«      }ddg| j                  j                  D �cg c]  }|dz   ‘Œ	 c}z   }t	        ||«      S c c}w )Nr   r1   rO   )r)   r&   ÚpermutationÚ
array_formr   )r&   r'   Úder>   rJ   s        r(   r/   r/   ±   sN   € ä	�d—i‘i Ó	#€BØˆqˆ6 D×$4Ñ$4×$?Ñ$?Ö@˜q�Q˜“UÒ@Ñ@€DÜ˜˜TÓ"Ð"ùò As   ²Ac                 ór   — t        | j                  |«      }t        |t        |«      | j                  z   «      S r,   )r)   r&   r    r   r.   )r&   r'   r~   s      r(   r/   r/   ¸   s,   € ä	�d—i‘i Ó	#€BÜ�2”y “| d§j¡jÑ0Ó1Ð1r*   c                 óh   — ddl m} t        | «      }t        ||«      } ||«      j	                  «       S )Nr   )Úconvert_array_to_matrix)Ú3sympy.tensor.array.expressions.from_array_to_matrixr�   r!   r)   Údoit)r&   r'   r�   ÚceÚdces        r(   Úmatrix_deriver†   ¾   s/   € Ý[Ü	  Ó	&€BÜ
�r˜1Ó
€CÙ" 3Ó'×,Ñ,Ó.Ð.r*   )0r5   Ú	functoolsr   r   Úsympy.core.exprr   Úsympy.core.singletonr   Ú#sympy.matrices.expressions.hadamardr   Ú"sympy.matrices.expressions.inverser   Ú"sympy.matrices.expressions.matexprr	   r
   Ú"sympy.matrices.expressions.specialr   r   Ú$sympy.matrices.expressions.transposer   Ú sympy.combinatorics.permutationsr   Ú$sympy.matrices.expressions.applyfuncr   Ú0sympy.tensor.array.expressions.array_expressionsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    Ú3sympy.tensor.array.expressions.from_matrix_to_arrayr!   r)   Úregisterr/   r†   r2   r*   r(   ú<module>r”      si  ðÛ ß ,å  Ý "Ý ?Ý 6ß Iß BÝ :Ý 7Ý I÷9÷ 9÷ 9÷ 9õ 9õ
 Xð ñHó ðHð ×Ñ�tÓðˆDð �Zò ó ðð ×ÑÐ)Ó*ð(Ðð ( 4ò (ó +ð(ð: ×Ñ�{Ó#ð.ˆKð .˜Jò .ó $ð.ð ×Ñ�|Ó$ð.ˆLð .˜Zò .ó %ð.ð ×Ñ�xÓ ð.ˆHð .˜ò .ó !ð.ð ×Ñ�yÓ!ð.ˆIð .˜*ò .ó "ð.ð ×Ñ�yÓ!ð+ˆIð +˜$ò +ó "ð+ð ×Ñ�wÓðˆGð ˜ò ó  ðð ×ÑÐ/Ó0ðÐ$ð ¨ò ó 1ðð ×ÑÐ0Ó1ð.Ð%ð .¨$ò .ó 2ð.ð ×Ñ�zÓ"ðˆJð ˜4ò ó #ðð
 ×Ñ�Ó'ð ˆOð   ò  ó (ð ð ×ÑÐ'Ó(ð<Ðð < ò <ó )ð<ð ×Ñ�}Ó%ð4ˆMð 4˜dò 4ó &ð4ð ×Ñ�xÓ ðDˆHð D˜ò Dó !ðDð ×Ñ�{Ó#ð#ˆKð #˜Dò #ó $ð#ð ×Ñ�wÓð2ˆGð 2˜ò 2ó  ð2ó
/r*   