§
    OŠtj   ã                   ó†  — 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
mZ ddlmZ g d¢Z ed	¦  «        Zes G d
„ d¦  «        Znej        Z edddgi¬¦  «        Zes G d„ d¦  «        ZdZnej        Zej        Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d „ Z#d!„ Z$d"„ Z%d#„ Z&d$„ Z'd%„ Z(d&„ Z)d'„ Z*d(„ Z+dS ))z<Utilities to deal with sympy.Matrix, numpy and scipy.sparse.é    )ÚExpr)ÚI)ÚS©Ú
MatrixBase)ÚeyeÚzeros)Úimport_module)Únumpy_ndarrayÚscipy_sparse_matrixÚsympy_to_numpyÚsympy_to_scipy_sparseÚnumpy_to_sympyÚscipy_sparse_to_sympyÚflatten_scalarÚmatrix_daggerÚto_sympyÚto_numpyÚto_scipy_sparseÚmatrix_tensor_productÚmatrix_zerosÚnumpyc                   ó   — e Zd ZdS )r   N©Ú__name__Ú
__module__Ú__qualname__© ó    ú_/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/physics/quantum/matrixutils.pyr   r      ó   € € € € € Øˆr   r   ÚscipyÚfromlistÚsparse)Úimport_kwargsc                   ó   — e Zd ZdS )r   Nr   r   r   r    r   r   &   r!   r   r   Nc                 ón  — t           st          ‚|                     dd¦  «        }t          | t          ¦  «        r.t                                |                      ¦   «         |¬¦  «        S t          | t          ¦  «        r(| j        s| j	        s| t          k    rt          | ¦  «        S t          d| z  ¦  «        ‚©zBConvert a SymPy Matrix/complex number to a numpy matrix or scalar.ÚdtypeÚcomplex©r)   z.Expected MatrixBase or complex scalar, got: %r)ÚnpÚImportErrorÚgetÚ
isinstancer   ÚarrayÚtolistr   Ú	is_NumberÚis_NumberSymbolr   r*   Ú	TypeError©ÚmÚoptionsr)   s      r    r   r   .   s¡   € åð ÝÐØ�KŠK˜ Ñ+Ô+€EÝ�!•ZÑ Ô ð Ý�xŠx˜Ÿš™
œ
¨%ˆxÑ0Ô0Ð0Ý	�A•tÑ	Ô	ð ØŒ;ð 	˜!Ô+ð 	¨qµAªv¨vÝ˜1‘:”:ÐÝ
ÐDÀqÑHÑ
IÔ
IÐIr   c                 ó¬  — t           rt          st          ‚|                     dd¦  «        }t	          | t
          ¦  «        rFt                               t                                |                      ¦   «         |¬¦  «        ¦  «        S t	          | t          ¦  «        r(| j
        s| j        s| t          k    rt          | ¦  «        S t          d| z  ¦  «        ‚r(   )r,   r$   r-   r.   r/   r   Ú
csr_matrixr0   r1   r   r2   r3   r   r*   r4   r5   s      r    r   r   ;   s¶   € åð •Vð ÝÐØ�KŠK˜ Ñ+Ô+€EÝ�!•ZÑ Ô ð Ý× Ò ¥§¢¨!¯(ª(©*¬*¸E Ñ!BÔ!BÑCÔCÐCÝ	�A•tÑ	Ô	ð ØŒ;ð 	˜!Ô+ð 	¨qµAªv¨vÝ˜1‘:”:ÐÝ
ÐDÀqÑHÑ
IÔ
IÐIr   c                 óD   — t          |                      ¦   «         ¦  «        S )z0Convert a scipy.sparse matrix to a SymPy matrix.)r   Útodense©r6   r7   s     r    r   r   H   s   € å�a—i’i‘k”kÑ"Ô"Ð"r   c                 ó    — t          | ¦  «        S )z)Convert a numpy matrix to a SymPy matrix.r   r<   s     r    r   r   M   s   € å�a‰=Œ=Ðr   c                 ó  — t          | t          ¦  «        r| S t          | t          ¦  «        rt          | ¦  «        S t          | t          ¦  «        rt          | ¦  «        S t          | t          ¦  «        r| S t          d| z  ¦  «        ‚)z6Convert a numpy/scipy.sparse matrix to a SymPy matrix.ú1Expected sympy/numpy/scipy.sparse matrix, got: %r)r/   r   r   r   r   r   r   r4   r<   s     r    r   r   R   s…   € å�!•ZÑ Ô ð ØˆÝ	�A•}Ñ	%Ô	%ð Ý˜aÑ Ô Ð Ý	�AÕ*Ñ	+Ô	+ð Ý$ QÑ'Ô'Ð'Ý	�A•tÑ	Ô	ð ØˆÝ
ÐGÈ!ÑKÑ
LÔ
LÐLr   c                 ó,  — |                      dd¦  «        }t          | t          t          f¦  «        rt	          | |¬¦  «        S t          | t
          ¦  «        r| S t          | t          ¦  «        r|                      ¦   «         S t          d| z  ¦  «        ‚)z6Convert a sympy/scipy.sparse matrix to a numpy matrix.r)   r*   r+   r?   )	r.   r/   r   r   r   r   r   r;   r4   r5   s      r    r   r   _   s‹   € à�KŠK˜ Ñ+Ô+€EÝ�!•j¥$Ð'Ñ(Ô(ð Ý˜a uÐ-Ñ-Ô-Ð-Ý	�A•}Ñ	%Ô	%ð ØˆÝ	�AÕ*Ñ	+Ô	+ð Ø�yŠy‰{Œ{ÐÝ
ÐGÈ!ÑKÑ
LÔ
LÐLr   c                 óT  — |                      dd¦  «        }t          | t          t          f¦  «        rt	          | |¬¦  «        S t          | t
          ¦  «        r(t          st          ‚t                               | ¦  «        S t          | t          ¦  «        r| S t          d| z  ¦  «        ‚)z6Convert a sympy/numpy matrix to a scipy.sparse matrix.r)   r*   r+   r?   )r.   r/   r   r   r   r   r$   r-   r9   r   r4   r5   s      r    r   r   k   sŸ   € à�KŠK˜ Ñ+Ô+€EÝ�!•j¥$Ð'Ñ(Ô(ð Ý$ Q¨eÐ4Ñ4Ô4Ð4Ý	�A•}Ñ	%Ô	%ð Ýð 	ÝÐÝ× Ò  Ñ#Ô#Ð#Ý	�AÕ*Ñ	+Ô	+ð ØˆÝ
ÐGÈ!ÑKÑ
LÔ
LÐLr   c                 óÎ   — t          | t          ¦  «        r| j        dk    r| d         } t          | t          t          f¦  «        r | j        dk    rt          | d         ¦  «        } | S )zCFlatten a 1x1 matrix to a scalar, return larger matrices unchanged.)é   rC   r   )r   r   )r/   r   Úshaper   r   r*   ©Úes    r    r   r   y   se   € å�!•ZÑ Ô ð ØŒ7�fÒÐØ�!”ˆAÝ�!•mÕ%8Ð9Ñ:Ô:ð !ØŒ7�fÒÐÝ˜˜$œÑ Ô ˆAØ€Hr   c                 óâ   — t          | t          ¦  «        r| j        S t          | t          t          f¦  «        r&|                      ¦   «                              ¦   «         S t          d| z  ¦  «        ‚)z7Return the dagger of a sympy/numpy/scipy.sparse matrix.r?   )r/   r   ÚHr   r   Ú	conjugateÚ	transposer4   rE   s    r    r   r   „   sa   € å�!•ZÑ Ô ð )ØŒsˆ
Ý	�A�Õ':Ð;Ñ	<Ô	<ð )Ø�{Š{‰}Œ}×&Ò&Ñ(Ô(Ð(Ý
ÐGÈ!ÑKÑ
LÔ
LÐLr   c                  ó   — ddl m}  || Ž S )zCCompute the kronecker product of a sequence of SymPy Matrices.
    r   )Úmatrix_kronecker_product)Ú$sympy.matrices.expressions.kroneckerrL   )ÚmatricesrL   s     r    Ú_sympy_tensor_productrO   Ž   s%   € ð NÐMÐMÐMÐMÐMà#Ð# XÐ.Ð.r   c                  ó‚   — t           st          ‚| d         }| dd…         D ]}t                                ||¦  «        }Œ|S )z6numpy version of tensor product of multiple arguments.r   rC   N)r,   r-   Úkron©ÚproductÚanswerÚitems      r    Ú_numpy_tensor_productrV   –   sJ   € åð ÝÐØ�QŒZ€FØ˜˜˜”ð 'ð 'ˆÝ—’˜ Ñ&Ô&ˆˆØ€Mr   c                  ó²   — t           st          ‚| d         }| dd…         D ]}t                                ||¦  «        }Œt                                |¦  «        S )z=scipy.sparse version of tensor product of multiple arguments.r   rC   N)r$   r-   rQ   r9   rR   s      r    Ú_scipy_sparse_tensor_productrX       s[   € åð ÝÐØ�QŒZ€FØ˜˜˜”ð +ð +ˆÝ—’˜V TÑ*Ô*ˆˆõ ×Ò˜VÑ$Ô$Ð$r   c                  óÞ   — t          | d         t          ¦  «        r	t          | Ž S t          | d         t          ¦  «        r	t	          | Ž S t          | d         t
          ¦  «        r	t          | Ž S dS )zGCompute the matrix tensor product of sympy/numpy/scipy.sparse matrices.r   N)r/   r   rO   r   rV   r   rX   )rS   s    r    r   r   ¬   sp   € å�'˜!”*�jÑ)Ô)ð 6Ý$ gÐ.Ð.Ý	�G˜A”J¥Ñ	.Ô	.ð 6Ý$ gÐ.Ð.Ý	�G˜A”JÕ 3Ñ	4Ô	4ð 6Ý+¨WÐ5Ð5ð6ð 6r   c                 ó†   — t           st          ‚t                                t                                | d¬¦  «        ¦  «        S )znumpy version of complex eye.r*   r+   )r,   r-   r0   r   ©Úns    r    Ú
_numpy_eyer]   ¶   s2   € åð ÝÐÝ�8Š8•B—F’F˜1 I�FÑ.Ô.Ñ/Ô/Ð/r   c                 óX   — t           st          ‚t                                | | d¬¦  «        S )z$scipy.sparse version of complex eye.r*   r+   )r$   r-   r   r[   s    r    Ú_scipy_sparse_eyer_   ½   s(   € åð ÝÐÝ�:Š:�a˜ )ˆ:Ñ,Ô,Ð,r   c                 óÐ   — |                      dd¦  «        }|dk    rt          | ¦  «        S |dk    rt          | ¦  «        S |dk    rt          | ¦  «        S t	          d|z  ¦  «        ‚)z=Get the version of eye and tensor_product for a given format.ÚformatÚsympyr   úscipy.sparsezInvalid format: %r)r.   r   r]   r_   ÚNotImplementedError)r\   r7   ra   s      r    Ú
matrix_eyere   Ä   so   € à�[Š[˜ 7Ñ+Ô+€FØ�ÒÐÝ�1‰vŒvˆØ	�7Ò	Ð	Ý˜!‰}Œ}ÐØ	�>Ò	!Ð	!Ý  Ñ#Ô#Ð#Ý
Ð2°VÑ;Ñ
<Ô
<Ð<r   c                 ó†   — |                      dd¦  «        }t          st          ‚t                               | |f|¬¦  «        S )znumpy version of zeros.r)   Úfloat64r+   )r.   r,   r-   r	   )r6   r\   r7   r)   s       r    Ú_numpy_zerosrh   Ð   s=   € à�KŠK˜ Ñ+Ô+€EÝð ÝÐÝ�8Š8�Q˜�F %ˆ8Ñ(Ô(Ð(r   c                 ó
  — |                      dd¦  «        }|                      dd¦  «        }t          st          ‚|dk    rt                               | |f|¬¦  «        S |dk    rt                               | |f|¬¦  «        S dS )zscipy.sparse version of zeros.ÚspmatrixÚcsrr)   rg   Úlilr+   N)r.   r$   r-   Ú
lil_matrixr9   )r6   r\   r7   rj   r)   s        r    Ú_scipy_sparse_zerosrn   Ø   sŽ   € à�{Š{˜: uÑ-Ô-€HØ�KŠK˜ Ñ+Ô+€EÝð ÝÐØ�5ÒÐÝ× Ò  ! Q ¨uÐ Ñ5Ô5Ð5Ø	�UÒ	Ð	Ý× Ò  ! Q ¨uÐ Ñ5Ô5Ð5ð 
Ð	r   c                 óÎ   — |                      dd¦  «        }|dk    rt          | |¦  «        S |dk    rt          | |fi |¤ŽS |dk    rt          | |fi |¤ŽS t	          d|z  ¦  «        ‚)z'"Get a zeros matrix for a given format.ra   rb   r   rc   zInvaild format: %r)r.   r	   rh   rn   rd   )r6   r\   r7   ra   s       r    r   r   ä   sˆ   € à�[Š[˜ 7Ñ+Ô+€FØ�ÒÐÝ�Q˜‰{Œ{ÐØ	�7Ò	Ð	Ý˜A˜qÐ,Ð, GÐ,Ð,Ð,Ø	�>Ò	!Ð	!Ý" 1 aÐ3Ð3¨7Ð3Ð3Ð3Ý
Ð2°VÑ;Ñ
<Ô
<Ð<r   c                 ó�   — t           st          ‚t                                | ¦  «        }t                                | |¦  «        rdS | S )z/Convert a numpy zero matrix to the zero scalar.ç        )r,   r-   Ú
zeros_likeÚallclose)rF   Útests     r    Ú_numpy_matrix_to_zeroru   ð   sA   € åð ÝÐÝ�=Š=˜ÑÔ€DÝ	‡{‚{�1�dÑÔð Øˆsàˆr   c                 ó¸   — t           st          ‚|                      ¦   «         }t                                |¦  «        }t                                ||¦  «        rdS | S )z6Convert a scipy.sparse zero matrix to the zero scalar.rq   )r,   r-   r;   rr   rs   )rF   Úedensert   s      r    Ú_scipy_sparse_matrix_to_zerorx   û   sN   € åð ÝÐØ�YŠY‰[Œ[€FÝ�=Š=˜Ñ Ô €DÝ	‡{‚{�6˜4Ñ Ô ð Øˆsàˆr   c                 ó   — t          | t          ¦  «        rt          | j        Ž | k    rt          j        } nIt          | t          ¦  «        rt          | ¦  «        } n$t          | t          ¦  «        rt          | ¦  «        } | S )z)Convert a zero matrix to the scalar zero.)
r/   r   r	   rD   r   ÚZeror   ru   r   rx   rE   s    r    Úmatrix_to_zeror{     ss   € å�!•ZÑ Ô ð ,Ý�!”'ˆ?˜aÒÐÝ”ˆAøÝ	�A•}Ñ	%Ô	%ð ,Ý! !Ñ$Ô$ˆˆÝ	�AÕ*Ñ	+Ô	+ð ,Ý(¨Ñ+Ô+ˆØ€Hr   ),Ú__doc__Úsympy.core.exprr   Úsympy.core.numbersr   Úsympy.core.singletonr   Úsympy.matrices.matrixbaser   Úsympy.matricesr   r	   Úsympy.externalr
   Ú__all__r,   r   Úndarrayr"   r   r$   rj   r   r   r   r   r   r   r   r   r   rO   rV   rX   r   r]   r_   re   rh   rn   r   ru   rx   r{   r   r   r    ú<module>r…      s¤  ðØ BÐ Bà  Ð  Ð  Ð  Ð  Ð  Ø  Ð  Ð  Ð  Ð  Ð  Ø "Ð "Ð "Ð "Ð "Ð "Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø (Ð (Ð (Ð (Ð (Ð (ðð ð €ð& €]�7ÑÔ€Ø	ð ðð ð ð ð ñ ô ð ð ð ”J€Màˆ�g¨j¸8¸*Ð-EÐFÑFÔF€Øð *ðð ð ð ð ñ ô ð à€F€FàŒ\€FØ œ/Ðð
Jð 
Jð 
Jð
Jð 
Jð 
Jð#ð #ð #ð
ð ð ð

Mð 
Mð 
Mð	Mð 	Mð 	MðMð Mð Mðð ð ðMð Mð Mð/ð /ð /ðð ð ð	%ð 	%ð 	%ð6ð 6ð 6ð0ð 0ð 0ð-ð -ð -ð	=ð 	=ð 	=ð)ð )ð )ð	6ð 	6ð 	6ð	=ð 	=ð 	=ðð ð ð	ð 	ð 	ð	ð 	ð 	ð 	ð 	r   