§
    OŠtjÏ  ã                   óh   — 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
 dgZ G d„ de¦  «        Zd	S )
zSymbolic inner product.é    )ÚExpr)Ú
NumberKind)Ú	conjugate)Ú
prettyForm)ÚDaggerÚInnerProductc                   óp   — e Zd ZdZeZdZd„ Zed„ ¦   «         Z	ed„ ¦   «         Z
d„ Zd„ Zd„ Zd	„ Zd
„ Zd„ ZdS )r   aT  An unevaluated inner product between a Bra and a Ket [1].

    Parameters
    ==========

    bra : BraBase or subclass
        The bra on the left side of the inner product.
    ket : KetBase or subclass
        The ket on the right side of the inner product.

    Examples
    ========

    Create an InnerProduct and check its properties:

        >>> from sympy.physics.quantum import Bra, Ket
        >>> b = Bra('b')
        >>> k = Ket('k')
        >>> ip = b*k
        >>> ip
        <b|k>
        >>> ip.bra
        <b|
        >>> ip.ket
        |k>

    In quantum expressions, inner products will be automatically
    identified and created::

        >>> b*k
        <b|k>

    In more complex expressions, where there is ambiguity in whether inner or
    outer products should be created, inner products have high priority::

        >>> k*b*k*b
        <b|k>*|k><b|

    Notice how the inner product <b|k> moved to the left of the expression
    because inner products are commutative complex numbers.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Inner_product
    Tc                 óÊ   — ddl m}m} t          ||¦  «        st	          d|z  ¦  «        ‚t          ||¦  «        st	          d|z  ¦  «        ‚t          j        | ||¦  «        }|S )Nr   )ÚKetBaseÚBraBasez"KetBase subclass expected, got: %rz"BraBase subclass expected, got: %r)Úsympy.physics.quantum.stater   r   Ú
isinstanceÚ	TypeErrorr   Ú__new__)ÚclsÚbraÚketr   r   Úobjs         ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/physics/quantum/innerproduct.pyr   zInnerProduct.__new__J   sƒ   € ð 	AÐ@Ð@Ð@Ð@Ð@Ð@Ð@Ý˜#˜wÑ'Ô'ð 	HÝÐ@À3ÑFÑGÔGÐGÝ˜#˜wÑ'Ô'ð 	HÝÐ@À3ÑFÑGÔGÐGÝŒl˜3  SÑ)Ô)ˆØˆ
ó    c                 ó   — | j         d         S )Nr   ©Úargs©Úselfs    r   r   zInnerProduct.braU   ó   € àŒy˜Œ|Ðr   c                 ó   — | j         d         S )Né   r   r   s    r   r   zInnerProduct.ketY   r   r   c                 ój   — t          t          | j        ¦  «        t          | j        ¦  «        ¦  «        S ©N)r   r   r   r   r   s    r   Ú_eval_conjugatezInnerProduct._eval_conjugate]   s&   € Ý�F 4¤8Ñ,Ô,­f°T´XÑ.>Ô.>Ñ?Ô?Ð?r   c                 óp   — | j         j        ›d |j        | j        g|¢R Ž ›d |j        | j        g|¢R Ž ›d�S )Nú(ú,ú))Ú	__class__Ú__name__Ú_printr   r   )r   Úprinterr   s      r   Ú
_sympyreprzInnerProduct._sympyrepr`   sY   € Ø"œnÔ5Ð5Ð5ØˆGŒN˜4œ8Ð+ dÐ+Ð+Ð+Ð+Ð+¨^¨W¬^¸D¼HÐ-LÀtÐ-LÐ-LÐ-LÐ-LÐ-LðNð 	Nr   c                 ó˜   — |                      | j        ¦  «        }|                      | j        ¦  «        }|d d…         ›d|dd …         ›�S )Néÿÿÿÿú|r   )r(   r   r   )r   r)   r   ÚsbraÚskets        r   Ú	_sympystrzInnerProduct._sympystrd   sI   € Ø�~Š~˜dœhÑ'Ô'ˆØ�~Š~˜dœhÑ'Ô'ˆØ˜s ˜sœ)˜)˜) T¨!¨"¨"¤X XÐ.Ð.r   c                 ó   —  | j         j        |g|¢R Ž } | j        j        |g|¢R Ž }t          |                     ¦   «         |                     ¦   «         ¦  «        }|j        }| j                              ||¦  «        \  }}| j                             ||¦  «        \  }	}
t          |                     |¦  «        Ž }t          | 	                    |	¦  «        Ž }t          | 	                    |¦  «        Ž }t          | 	                    |
¦  «        Ž }|S r    )
r   Ú_print_contents_prettyr   ÚmaxÚheightÚ_use_unicodeÚ_pretty_bracketsr   ÚleftÚright)r   r)   r   r   r   r4   Úuse_unicodeÚlbracketÚ_ÚcbracketÚrbracketÚpforms               r   Ú_prettyzInnerProduct._prettyi   sõ   € à-ˆdŒhÔ-¨gÐ=¸Ð=Ð=Ð=ˆØ-ˆdŒhÔ-¨gÐ=¸Ð=Ð=Ð=ˆå�S—Z’Z‘\”\ 3§:¢:¡<¤<Ñ0Ô0ˆØÔ*ˆØ”h×/Ò/°¸ÑDÔD‰ˆ�!Ø!œX×6Ò6°v¸{ÑKÔKÑˆ�(å˜CŸHšH XÑ.Ô.Ð/ˆÝ˜EŸKšK¨Ñ1Ô1Ð2ˆÝ˜EŸKšK¨Ñ,Ô,Ð-ˆÝ˜EŸKšK¨Ñ1Ô1Ð2ˆØˆr   c                 ó^   —  | j         j        |g|¢R Ž } |j        | j        g|¢R Ž }d|›d|›�S )Nz\left\langle z	 \right. )r   Ú_print_contents_latexr(   r   )r   r)   r   Ú	bra_labelr   s        r   Ú_latexzInnerProduct._latexy   sL   € Ø2�D”HÔ2°7ÐB¸TÐBÐBÐBˆ	ØˆgŒn˜TœXÐ-¨Ð-Ð-Ð-ˆˆØ09°	°	¸3¸3Ð?Ð?r   c                 óè   — 	  | j         j        | j        fi |¤Ž}nS# t          $ rF 	 t	           | j        j        j        | j         j        fi |¤Ž¦  «        }n# t          $ r d }Y nw xY wY nw xY w|�|S | S r    )r   Ú_eval_innerproductr   ÚNotImplementedErrorr   Údual)r   ÚhintsÚrs      r   ÚdoitzInnerProduct.doit~   s±   € ð	Ø+�”Ô+¨D¬HÐ>Ð>¸Ð>Ð>ˆAˆAøÝ"ð 	ð 	ð 	ðÝØ4�D”H”MÔ4°T´X´]ÐLÐLÀeÐLÐLñô ��øõ 'ð ð ð Ø���ðøøøøøð	øøøð ˆ=ØˆHØˆs2   ‚ ›
A+¦/AÁA+ÁA%Á"A+Á$A%Á%A+Á*A+N)r'   Ú
__module__Ú__qualname__Ú__doc__r   ÚkindÚ
is_complexr   Úpropertyr   r   r!   r*   r0   r?   rC   rJ   © r   r   r   r      sÓ   € € € € € ð-ð -ð^ €Dà€Jð	ð 	ð 	ð ðð ñ „Xðð ðð ñ „Xðð@ð @ð @ðNð Nð Nð/ð /ð /ð
ð ð ð @ð @ð @ð
ð ð ð ð r   N)rM   Úsympy.core.exprr   Úsympy.core.kindr   Ú$sympy.functions.elementary.complexesr   Ú sympy.printing.pretty.stringpictr   Úsympy.physics.quantum.daggerr   Ú__all__r   rQ   r   r   ú<module>rX      s¯   ðØ Ð à  Ð  Ð  Ð  Ð  Ð  Ø &Ð &Ð &Ð &Ð &Ð &Ø :Ð :Ð :Ð :Ð :Ð :Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø /Ð /Ð /Ð /Ð /Ð /ð ð€ðtð tð tð tð t�4ñ tô tð tð tð tr   