§
    OŠtj`6  ã                   óð   — d dl 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 d dlmZ d dlmZ d d	lmZmZ d d
lmZmZmZmZmZmZ d dlmZ d„ Z G d„ de¦  «        Zd„ Z d„ Z! G d„ de¦  «        Z"dS )é    )ÚCounter)ÚMulÚsympify)ÚAdd)ÚExprBuilder)Údefault_sort_key)Úlog)Ú
MatrixExpr)Úvalidate_matadd_integer)Ú
ZeroMatrixÚ	OneMatrix)ÚunpackÚflattenÚ	conditionÚexhaustÚrm_idÚsort)Úsympy_deprecation_warningc                  ó�   — | st          d¦  «        ‚t          | ¦  «        dk    r| d         S t          | Ž                      ¦   «         S )au  
    Return the elementwise (aka Hadamard) product of matrices.

    Examples
    ========

    >>> from sympy import hadamard_product, MatrixSymbol
    >>> A = MatrixSymbol('A', 2, 3)
    >>> B = MatrixSymbol('B', 2, 3)
    >>> hadamard_product(A)
    A
    >>> hadamard_product(A, B)
    HadamardProduct(A, B)
    >>> hadamard_product(A, B)[0, 1]
    A[0, 1]*B[0, 1]
    z#Empty Hadamard product is undefinedé   r   )Ú	TypeErrorÚlenÚHadamardProductÚdoit)Úmatricess    úa/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/matrices/expressions/hadamard.pyÚhadamard_productr      sM   € ð" ð ?ÝÐ=Ñ>Ô>Ð>Ý
ˆ8�}„}˜ÒÐØ˜Œ{ÐÝ˜HÐ%×*Ò*Ñ,Ô,Ð,ó    c                   ób   ‡ — e Zd ZdZdZdddœˆ fd„
Zed„ ¦   «         Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zˆ xZS )r   a(  
    Elementwise product of matrix expressions

    Examples
    ========

    Hadamard product for matrix symbols:

    >>> from sympy import hadamard_product, HadamardProduct, MatrixSymbol
    >>> A = MatrixSymbol('A', 5, 5)
    >>> B = MatrixSymbol('B', 5, 5)
    >>> isinstance(hadamard_product(A, B), HadamardProduct)
    True

    Notes
    =====

    This is a symbolic object that simply stores its argument without
    evaluating it. To actually compute the product, use the function
    ``hadamard_product()`` or ``HadamardProduct.doit``
    TFN)ÚevaluateÚcheckc                ó†  •— t          t          t          |¦  «        ¦  «        }t          |¦  «        dk    rt	          d¦  «        ‚t          d„ |D ¦   «         ¦  «        st          d¦  «        ‚|�t          ddd¬¦  «         |d	ur	t          |Ž   t          ¦   «         j
        | g|¢R Ž }|r|                     d	¬
¦  «        }|S )Nr   z+HadamardProduct needs at least one argumentc              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S ©N)Ú
isinstancer
   )Ú.0Úargs     r   ú	<genexpr>z*HadamardProduct.__new__.<locals>.<genexpr>G   s,   è è € Ð?Ð?°3•:˜c¥:Ñ.Ô.Ð?Ð?Ð?Ð?Ð?Ð?r   z Mix of Matrix and Scalar symbolszjPassing check to HadamardProduct is deprecated and the check argument will be removed in a future version.z1.11z,remove-check-argument-from-matrix-operations)Údeprecated_since_versionÚactive_deprecations_targetF)Údeep)ÚlistÚmapr   r   Ú
ValueErrorÚallr   r   ÚvalidateÚsuperÚ__new__r   )Úclsr    r!   ÚargsÚobjÚ	__class__s        €r   r2   zHadamardProduct.__new__A   sä   ø€ Ý•C� Ñ&Ô&Ñ'Ô'ˆÝˆt‰9Œ9˜Š>ˆ>åÐJÑKÔKÐKåÐ?Ð?¸$Ð?Ñ?Ô?Ñ?Ô?ð 	@ÝÐ>Ñ?Ô?Ð?àÐÝ%Ø|Ø)/Ø+Yð[ñ [ô [ð [ð
 ˜ÐÐÝ�dˆOˆOà�e‰gŒgŒo˜cÐ) DÐ)Ð)Ð)ˆØð 	'Ø—(’( �(Ñ&Ô&ˆCØˆ
r   c                 ó&   — | j         d         j        S ©Nr   )r4   Úshape©Úselfs    r   r9   zHadamardProduct.shapeX   s   € àŒy˜Œ|Ô!Ð!r   c                 ó@   ‡‡‡— t          ˆˆˆfd„| j        D ¦   «         Ž S )Nc                 ó.   •— g | ]} |j         ‰‰fi ‰¤Ž‘ŒS © )Ú_entry)r&   r'   ÚiÚjÚkwargss     €€€r   ú
<listcomp>z*HadamardProduct._entry.<locals>.<listcomp>]   s/   ø€ ÐEÐEÐE°C�Z�S”Z  1Ð/Ð/¨Ð/Ð/ÐEÐEÐEr   )r   r4   )r;   r@   rA   rB   s    ```r   r?   zHadamardProduct._entry\   s-   øøø€ ÝÐEÐEÐEÐEÐEÐE¸4¼9ÐEÑEÔEÐFÐFr   c                 ó`   — ddl m} t          t          t	          || j        ¦  «        ¦  «        Ž S ©Nr   )Ú	transpose)Ú$sympy.matrices.expressions.transposerF   r   r,   r-   r4   ©r;   rF   s     r   Ú_eval_transposezHadamardProduct._eval_transpose_   s3   € ØBÐBÐBÐBÐBÐBÝ¥¥S¨°D´IÑ%>Ô%>Ñ ?Ô ?Ð@Ð@r   c                 ó0  ‡‡‡—  | j         ˆfd„| j        D ¦   «         Ž }ddlmŠ ddlm} ˆfd„|j        D ¦   «         Š‰rIˆfd„|j        D ¦   «         }  |d„ t          ‰Ž D ¦   «         ¦  «        j        | j        Ž }t          |g|z   Ž }t          |¦  «        S )Nc              3   ó2   •K  — | ]} |j         di ‰¤ŽV — Œd S )Nr>   )r   )r&   r@   Úhintss     €r   r(   z'HadamardProduct.doit.<locals>.<genexpr>d   s1   øè è € Ð>Ð>¨q˜6˜1œ6˜?˜? E˜?˜?Ð>Ð>Ð>Ð>Ð>Ð>r   r   )Ú
MatrixBase)ÚImmutableMatrixc                 ó4   •— g | ]}t          |‰¦  «        ¯|‘ŒS r>   )r%   )r&   r@   rM   s     €r   rC   z(HadamardProduct.doit.<locals>.<listcomp>i   s(   ø€ ÐFÐFÐF˜!­J°q¸*Ñ,EÔ,EÐF�AÐFÐFÐFr   c                 ó   •— g | ]}|‰v¯|‘Œ	S r>   r>   )r&   r@   Úexplicits     €r   rC   z(HadamardProduct.doit.<locals>.<listcomp>k   s#   ø€ ÐCÐCÐC˜q°¸(Ð1BÐ1B˜Ð1BÐ1BÐ1Br   c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r>   )r   Úfromiter)r&   r@   s     r   rC   z(HadamardProduct.doit.<locals>.<listcomp>l   s-   € ð (ð (ð (Ø$%•”˜Q‘”ð(ð (ð (r   )Úfuncr4   Úsympy.matrices.matrixbaserM   Úsympy.matrices.immutablerN   ÚzipÚreshaper9   r   Úcanonicalize)r;   rL   ÚexprrN   Ú	remainderÚexpl_matrM   rQ   s    `    @@r   r   zHadamardProduct.doitc   sî   øøø€ ØˆtŒyÐ>Ð>Ð>Ð>°D´IÐ>Ñ>Ô>Ð?ˆà8Ð8Ð8Ð8Ð8Ð8Ø<Ð<Ð<Ð<Ð<Ð<àFÐFÐFÐF˜tœyÐFÑFÔFˆØð 	>ØCÐCÐCÐC D¤IÐCÑCÔCˆIð��ð (ð (Ý),¨h¨ð(ñ (ô (ñ ô ä˜œ
ð$ˆHõ # h Z°)Ñ%;Ð=ˆDå˜DÑ!Ô!Ð!r   c                 ó6  — g }t          | j        ¦  «        }t          t          |¦  «        ¦  «        D ]S}|d |…         ||                              |¦  «        gz   ||dz   d …         z   }|                     t          |Ž ¦  «         ŒTt          j        |¦  «        S ©Nr   )	r,   r4   Úranger   ÚdiffÚappendr   r   rS   )r;   ÚxÚtermsr4   r@   Úfactorss         r   Ú_eval_derivativez HadamardProduct._eval_derivatives   s�   € ØˆÝ�D”I‰ŒˆÝ•s˜4‘y”yÑ!Ô!ð 	5ð 	5ˆAØ˜2˜A˜2”h $ q¤'§,¢,¨q¡/¤/Ð!2Ñ2°T¸!¸A¹#¸$¸$´ZÑ?ˆGØ�LŠLÕ)¨7Ð3Ñ4Ô4Ð4Ð4ÝŒ|˜EÑ"Ô"Ð"r   c                 ó  ‡ ‡— ddl m} ddl m} ddlm} ˆfd„t          ‰ j        ¦  «        D ¦   «         }g }|D �]I}‰ j        d |…         }‰ j        |dz   d …         }	‰ j        |                              ‰¦  «        }
t          |	|z   Ž }ddg}ˆ fd	„t          |¦  «        D ¦   «         }|
D ]×}|j	        |j
                 }|j	        |j                 }t          |t          |t          ||g¦  «        |t          ||g¦  «        g¦  «        g|¢¦  «        }|j        d         j        d         j        |_        d|_        |j        d         j        d
         j        |_        d|_        |g|_	        |                     |¦  «         ŒØ�ŒK|S )Nr   ©ÚArrayDiagonal©ÚArrayTensorProduct©Ú_make_matrixc                 óD   •— g | ]\  }}|                      ‰¦  «        ¯|‘ŒS r>   )Úhas)r&   r@   r'   rb   s      €r   rC   zAHadamardProduct._eval_derivative_matrix_lines.<locals>.<listcomp>€   s,   ø€ ÐIÐIÐI™F˜A˜s¸c¿gºgÀa¹j¼jÐI�aÐIÐIÐIr   r   )r   é   ©é   é   c                 ó<   •— g | ]\  }}‰j         |         d k    ¯|‘ŒS ©r   )r9   ©r&   rA   Úer;   s      €r   rC   zAHadamardProduct._eval_derivative_matrix_lines.<locals>.<listcomp>‰   s-   ø€ ÐPÐPÐP™d˜a ¸T¼ZÈ¼]ÈaÒ=OÐ=O˜Ð=OÐ=OÐ=Or   ro   )Ú0sympy.tensor.array.expressions.array_expressionsrh   rj   Ú"sympy.matrices.expressions.matexprrl   Ú	enumerater4   Ú_eval_derivative_matrix_linesr   Ú_linesÚ_first_line_indexÚ_second_line_indexr   Ú_first_pointer_parentÚ_first_pointer_indexÚ_second_pointer_parentÚ_second_pointer_indexra   )r;   rb   rh   rj   rl   Ú
with_x_indÚlinesÚindÚ	left_argsÚ
right_argsÚdÚhadamÚdiagonalr@   Úl1Úl2Úsubexprs   ``               r   rz   z-HadamardProduct._eval_derivative_matrix_lines{   sÕ  øø€ ØRÐRÐRÐRÐRÐRØWÐWÐWÐWÐWÐWØCÐCÐCÐCÐCÐCàIÐIÐIÐI¥i°´	Ñ&:Ô&:ÐIÑIÔIˆ
ØˆØð 	 ñ 	 ˆCØœ	 $ 3 $œˆIØœ 3 q¡5 6 6Ô*ˆJà”	˜#”×<Ò<¸QÑ?Ô?ˆAÝ$ z°IÑ'=Ð?ˆEØ Ð'ˆHØPÐPÐPÐP¥i°Ñ&9Ô&9ÐPÑPÔPˆHØð  ð  �Ø”X˜aÔ1Ô2�Ø”X˜aÔ2Ô3�Ý%Ø!å#Ø.å +¨L¸2¸$Ñ ?Ô ?Ø %Ý +¨L¸2¸$Ñ ?Ô ?ðñô ð	ð ð	ñô �ð +2¬,°q¬/Ô*>¸qÔ*AÔ*F�Ô'Ø)*�Ô&Ø+2¬<¸¬?Ô+?ÀÔ+BÔ+G�Ô(Ø*+�Ô'Ø#˜9�”Ø—’˜Q‘”��ñ- ð0 ˆr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úis_HadamardProductr2   Úpropertyr9   r?   rI   r   re   rz   Ú__classcell__©r6   s   @r   r   r   )   sÅ   ø€ € € € € ðð ð* Ðà%*°$ð ð ð ð ð ð ð ð. ð"ð "ñ „Xð"ðGð Gð GðAð Að Að"ð "ð "ð #ð #ð #ð'ð 'ð 'ð 'ð 'ð 'ð 'r   r   c                 óŒ  — t          d„ t          ¦  «        }t          |¦  «        } || ¦  «        } t          d„ t          d„ ¦  «        ¦  «        } || ¦  «        } d„ }t          d„ |¦  «        } || ¦  «        } t	          | t
          ¦  «        rxt          | j        ¦  «        }g }|                     ¦   «         D ]D\  }}|dk    r| 	                    |¦  «         Œ!| 	                    t          ||¦  «        ¦  «         ŒEt          |Ž } t          d„ t          t          ¦  «        ¦  «        } || ¦  «        } t          | ¦  «        } | S )aò  Canonicalize the Hadamard product ``x`` with mathematical properties.

    Examples
    ========

    >>> from sympy import MatrixSymbol, HadamardProduct
    >>> from sympy import OneMatrix, ZeroMatrix
    >>> from sympy.matrices.expressions.hadamard import canonicalize
    >>> from sympy import init_printing
    >>> init_printing(use_unicode=False)

    >>> A = MatrixSymbol('A', 2, 2)
    >>> B = MatrixSymbol('B', 2, 2)
    >>> C = MatrixSymbol('C', 2, 2)

    Hadamard product associativity:

    >>> X = HadamardProduct(A, HadamardProduct(B, C))
    >>> X
    A.*(B.*C)
    >>> canonicalize(X)
    A.*B.*C

    Hadamard product commutativity:

    >>> X = HadamardProduct(A, B)
    >>> Y = HadamardProduct(B, A)
    >>> X
    A.*B
    >>> Y
    B.*A
    >>> canonicalize(X)
    A.*B
    >>> canonicalize(Y)
    A.*B

    Hadamard product identity:

    >>> X = HadamardProduct(A, OneMatrix(2, 2))
    >>> X
    A.*1
    >>> canonicalize(X)
    A

    Absorbing element of Hadamard product:

    >>> X = HadamardProduct(A, ZeroMatrix(2, 2))
    >>> X
    A.*0
    >>> canonicalize(X)
    0

    Rewriting to Hadamard Power

    >>> X = HadamardProduct(A, A, A)
    >>> X
    A.*A.*A
    >>> canonicalize(X)
     .3
    A

    Notes
    =====

    As the Hadamard product is associative, nested products can be flattened.

    The Hadamard product is commutative so that factors can be sorted for
    canonical form.

    A matrix of only ones is an identity for Hadamard product,
    so every matrices of only ones can be removed.

    Any zero matrix will make the whole product a zero matrix.

    Duplicate elements can be collected and rewritten as HadamardPower

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Hadamard_product_(matrices)
    c                 ó,   — t          | t          ¦  «        S r$   ©r%   r   ©rb   s    r   ú<lambda>zcanonicalize.<locals>.<lambda>û   ó   € •j ¥OÑ4Ô4€ r   c                 ó,   — t          | t          ¦  «        S r$   r—   r˜   s    r   r™   zcanonicalize.<locals>.<lambda>  rš   r   c                 ó,   — t          | t          ¦  «        S r$   )r%   r   r˜   s    r   r™   zcanonicalize.<locals>.<lambda>  s   € �J q­)Ñ4Ô4€ r   c                 ó^   — t          d„ | j        D ¦   «         ¦  «        rt          | j        Ž S | S )Nc              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S r$   )r%   r   )r&   Úcs     r   r(   z/canonicalize.<locals>.absorb.<locals>.<genexpr>
  s,   è è € Ð9Ð9¨Q�z˜!�ZÑ(Ô(Ð9Ð9Ð9Ð9Ð9Ð9r   )Úanyr4   r   r9   r˜   s    r   Úabsorbzcanonicalize.<locals>.absorb	  s5   € ÝÐ9Ð9°!´&Ð9Ñ9Ô9Ñ9Ô9ð 	Ý˜qœwÐ'Ð'àˆHr   c                 ó,   — t          | t          ¦  «        S r$   r—   r˜   s    r   r™   zcanonicalize.<locals>.<lambda>  rš   r   r   c                 ó,   — t          | t          ¦  «        S r$   r—   r˜   s    r   r™   zcanonicalize.<locals>.<lambda>#  rš   r   )r   r   r   r   r%   r   r   r4   Úitemsra   ÚHadamardPowerr   r   r   )rb   ÚruleÚfunr¡   ÚtallyÚnew_argÚbaseÚexps           r   rY   rY   §   sp  € õf Ø4Ð4Ýñ
ô 
€Dõ �$‰-Œ-€CØˆˆA‰Œ€Aõ Ø4Ð4ÝÐ4Ð4Ñ5Ô5ñ
ô 
€Cð 	ˆˆA‰Œ€Aðð ð õ
 Ø4Ð4Øñ
ô 
€Cð 	ˆˆA‰Œ€Aõ �!•_Ñ%Ô%ð 
&Ý˜œ‘”ˆàˆØŸš™œð 	9ð 	9‰IˆD�#Ø�aŠxˆxØ—’˜tÑ$Ô$Ð$Ð$à—’�}¨T°3Ñ7Ô7Ñ8Ô8Ð8Ð8å˜WÐ%ˆõ Ø4Ð4ÝÕ!Ñ"Ô"ñ
ô 
€Cð 	ˆˆA‰Œ€Aõ 	ˆq‰	Œ	€AØ€Hr   c                 ó²   — t          | ¦  «        } t          |¦  «        }|dk    r| S | j        s| |z  S |j        rt          d¦  «        ‚t          | |¦  «        S )Nr   z#cannot raise expression to a matrix)r   Ú	is_Matrixr.   r¥   )rª   r«   s     r   Úhadamard_powerr®   -  sd   € Ý�4‰=Œ=€DÝ
�#‰,Œ,€CØ
ˆa‚x€xØˆØŒ>ð Ø�S‰yÐØ
„}ð @ÝÐ>Ñ?Ô?Ð?Ý˜˜sÑ#Ô#Ð#r   c                   ó|   ‡ — e Zd ZdZˆ fd„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Z	d„ Z
d„ Zd	„ Zˆ xZS )
r¥   a¤  
    Elementwise power of matrix expressions

    Parameters
    ==========

    base : scalar or matrix

    exp : scalar or matrix

    Notes
    =====

    There are four definitions for the hadamard power which can be used.
    Let's consider `A, B` as `(m, n)` matrices, and `a, b` as scalars.

    Matrix raised to a scalar exponent:

    .. math::
        A^{\circ b} = \begin{bmatrix}
        A_{0, 0}^b   & A_{0, 1}^b   & \cdots & A_{0, n-1}^b   \\
        A_{1, 0}^b   & A_{1, 1}^b   & \cdots & A_{1, n-1}^b   \\
        \vdots       & \vdots       & \ddots & \vdots         \\
        A_{m-1, 0}^b & A_{m-1, 1}^b & \cdots & A_{m-1, n-1}^b
        \end{bmatrix}

    Scalar raised to a matrix exponent:

    .. math::
        a^{\circ B} = \begin{bmatrix}
        a^{B_{0, 0}}   & a^{B_{0, 1}}   & \cdots & a^{B_{0, n-1}}   \\
        a^{B_{1, 0}}   & a^{B_{1, 1}}   & \cdots & a^{B_{1, n-1}}   \\
        \vdots         & \vdots         & \ddots & \vdots           \\
        a^{B_{m-1, 0}} & a^{B_{m-1, 1}} & \cdots & a^{B_{m-1, n-1}}
        \end{bmatrix}

    Matrix raised to a matrix exponent:

    .. math::
        A^{\circ B} = \begin{bmatrix}
        A_{0, 0}^{B_{0, 0}}     & A_{0, 1}^{B_{0, 1}}     &
        \cdots & A_{0, n-1}^{B_{0, n-1}}     \\
        A_{1, 0}^{B_{1, 0}}     & A_{1, 1}^{B_{1, 1}}     &
        \cdots & A_{1, n-1}^{B_{1, n-1}}     \\
        \vdots                  & \vdots                  &
        \ddots & \vdots                      \\
        A_{m-1, 0}^{B_{m-1, 0}} & A_{m-1, 1}^{B_{m-1, 1}} &
        \cdots & A_{m-1, n-1}^{B_{m-1, n-1}}
        \end{bmatrix}

    Scalar raised to a scalar exponent:

    .. math::
        a^{\circ b} = a^b
    c                 ó$  •— t          |¦  «        }t          |¦  «        }|j        r|j        r||z  S t          |t          ¦  «        r%t          |t          ¦  «        rt	          ||¦  «         t          ¦   «                              | ||¦  «        }|S r$   )r   Ú	is_scalarr%   r
   r0   r1   r2   )r3   rª   r«   r5   r6   s       €r   r2   zHadamardPower.__new__r  s‡   ø€ Ý�t‰}Œ}ˆÝ�c‰lŒlˆàŒ>ð 	˜cœmð 	Ø˜3‘;Ðå�d�JÑ'Ô'ð 	 ­J°s½JÑ,GÔ,Gð 	 Ý�T˜3ÑÔÐå‰gŒg�oŠo˜c 4¨Ñ-Ô-ˆØˆ
r   c                 ó   — | j         d         S r8   ©Ú_argsr:   s    r   rª   zHadamardPower.base  ó   € àŒz˜!Œ}Ðr   c                 ó   — | j         d         S r^   r³   r:   s    r   r«   zHadamardPower.expƒ  rµ   r   c                 óJ   — | j         j        r| j         j        S | j        j        S r$   )rª   r­   r9   r«   r:   s    r   r9   zHadamardPower.shape‡  s#   € àŒ9Ôð 	#Ø”9”?Ð"ØŒxŒ~Ðr   c                 ó4  — | j         }| j        }|j        r |j        ||fi |¤Ž}n,|j        r|}n"t          d                     |¦  «        ¦  «        ‚|j        r |j        ||fi |¤Ž}n,|j        r|}n"t          d                     |¦  «        ¦  «        ‚||z  S )Nz)The base {} must be a scalar or a matrix.z-The exponent {} must be a scalar or a matrix.)rª   r«   r­   r?   r±   r.   Úformat)r;   r@   rA   rB   rª   r«   ÚaÚbs           r   r?   zHadamardPower._entry�  sÝ   € ØŒyˆØŒhˆàŒ>ð 	JØ�”˜A˜qÐ+Ð+ FÐ+Ð+ˆAˆAØŒ^ð 	JØˆAˆAåØ;×BÒBÀ4ÑHÔHñJô Jð Jð Œ=ð 	MØ�”
˜1˜aÐ*Ð* 6Ð*Ð*ˆAˆAØŒ]ð 	MØˆAˆAåØ?×FÒFÀsÑKÔKñMô Mð Mð �A‰vˆr   c                 óT   — ddl m} t           || j        ¦  «        | j        ¦  «        S rE   )rG   rF   r¥   rª   r«   rH   s     r   rI   zHadamardPower._eval_transpose£  s2   € ØBÐBÐBÐBÐBÐBÝ˜Y˜Y t¤yÑ1Ô1°4´8Ñ<Ô<Ð<r   c                 óÚ   — | j                              |¦  «        }| j                             t          ¦  «        }|                     |¦  «        }t          ||z  | j         |z  z   | ¦  «        S r$   )r«   r`   rª   Ú	applyfuncr	   r   )r;   rb   ÚdexpÚlogbaseÚdlbases        r   re   zHadamardPower._eval_derivative§  s`   € ØŒx�}Š}˜QÑÔˆØ”)×%Ò%¥cÑ*Ô*ˆØ—’˜a‘”ˆÝØ�‰L˜4œ8 F™?Ñ*Øñ
ô 
ð 	
r   c                 óœ  ‡ — ddl m} ddl m} ddlm} ‰ j                             |¦  «        }|D �]}ddg}ˆ fd„t          |¦  «        D ¦   «         }|j        |j	                 }|j        |j
                 }	t          |t          |t          ||g¦  «        ‰ j        t          ‰ j        ‰ j        dz
  ¦  «        z  t          ||	g¦  «        g¦  «        g|¢|j        ¬	¦  «        }
|
j        d         j        d         j        |_        d|_        d|_	        |
j        d         j        d
         j        |_        d|_        d|_
        |
g|_        �Œ|S )Nr   ri   rg   rk   )r   ro   rp   c                 óF   •— g | ]\  }}‰j         j        |         d k    ¯|‘ŒS rt   )rª   r9   ru   s      €r   rC   z?HadamardPower._eval_derivative_matrix_lines.<locals>.<listcomp>¸  s1   ø€ ÐUÐUÐU™d˜a ¸T¼Y¼_ÈQÔ=OÐSTÒ=TÐ=T˜Ð=TÐ=TÐ=Tr   r   )Ú	validatorro   )rw   rj   rh   rx   rl   rª   rz   ry   r{   r|   r}   r   r«   r®   Ú	_validater4   r~   r   r€   r�   )r;   rb   rj   rh   rl   Úlrr@   r‰   rŠ   r‹   rŒ   s   `          r   rz   z+HadamardPower._eval_derivative_matrix_lines°  s‡  ø€ ØWÐWÐWÐWÐWÐWØRÐRÐRÐRÐRÐRØCÐCÐCÐCÐCÐCàŒY×4Ò4°QÑ7Ô7ˆØð 	!ñ 	!ˆAØ Ð'ˆHØUÐUÐUÐU¥i°Ñ&9Ô&9ÐUÑUÔUˆHØ”˜!Ô-Ô.ˆBØ”˜!Ô.Ô/ˆBÝ!ØåØ*å'¨°r°dÑ;Ô;Ø œH¥^°D´I¸t¼xÈ¹zÑ%JÔ%JÑJÝ'¨°r°dÑ;Ô;ðñô ð	ð ð	ð (Ô1ðñ ô ˆGð '.¤l°1¤oÔ&:¸1Ô&=Ô&BˆAÔ#Ø%&ˆAÔ"Ø"#ˆAÔØ'.¤|°A¤Ô';¸AÔ'>Ô'CˆAÔ$Ø&'ˆAÔ#Ø#$ˆAÔ Ø�yˆAŒH‰HØˆ	r   )r�   rŽ   r�   r�   r2   r’   rª   r«   r9   r?   rI   re   rz   r“   r”   s   @r   r¥   r¥   9  sÐ   ø€ € € € € ð6ð 6ðpð ð ð ð ð ðð ñ „Xðð ðð ñ „Xðð ðð ñ „Xðð
ð ð ð,=ð =ð =ð
ð 
ð 
ð ð  ð  ð  ð  ð  ð  r   r¥   N)#Úcollectionsr   Ú
sympy.corer   r   Úsympy.core.addr   Úsympy.core.exprr   Úsympy.core.sortingr   Ú&sympy.functions.elementary.exponentialr	   rx   r
   Ú!sympy.matrices.expressions._shaper   r0   Ú"sympy.matrices.expressions.specialr   r   Úsympy.strategiesr   r   r   r   r   r   Úsympy.utilities.exceptionsr   r   r   rY   r®   r¥   r>   r   r   ú<module>rÑ      sº  ðØ Ð Ð Ð Ð Ð à #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø /Ð /Ð /Ð /Ð /Ð /Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø QÐ QÐ QÐ QÐ QÐ QØ DÐ DÐ DÐ DÐ DÐ DÐ DÐ Dðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð AÐ @Ð @Ð @Ð @Ð @ð-ð -ð -ð0yð yð yð yð y�jñ yô yð yð|Cð Cð CðL	$ð 	$ð 	$ðWð Wð Wð Wð W�Jñ Wô Wð Wð Wð Wr   