
    \h                     `    S 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/r " S S\5      rg	)
zSymbolic inner product.    )Expr)
NumberKind)	conjugate)
prettyForm)DaggerInnerProductc                   j    \ rS rSrSr\rSrS r\	S 5       r
\	S 5       rS rS rS	 rS
 rS rS rSrg)r      a  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                     SSK JnJn  [        X#5      (       d  [	        SU-  5      e[        X5      (       d  [	        SU-  5      e[
        R                  " XU5      nU$ )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         Z/var/www/auris/envauris/lib/python3.13/site-packages/sympy/physics/quantum/innerproduct.pyr   InnerProduct.__new__J   sU     	A#''@3FGG#''@3FGGll3S)
    c                      U R                   S   $ )Nr   argsselfs    r   r   InnerProduct.braU       yy|r   c                      U R                   S   $ )N   r   r   s    r   r   InnerProduct.ketY   r   r   c                 f    [        [        U R                  5      [        U R                  5      5      $ N)r   r   r   r   r   s    r   _eval_conjugateInnerProduct._eval_conjugate]   s!    F488,fTXX.>??r   c                     U R                   R                  < SUR                  " U R                  /UQ76 < SUR                  " U R                  /UQ76 < S3$ )N(,))	__class____name___printr   r   )r   printerr   s      r   
_sympyreprInnerProduct._sympyrepr`   sD    "nn55NN488+d+W^^DHH-Lt-LN 	Nr   c                     UR                  U R                  5      nUR                  U R                  5      nUS S < SUSS  < 3$ )N|r!   )r-   r   r   )r   r.   r   sbraskets        r   	_sympystrInnerProduct._sympystrd   s=    ~~dhh'~~dhh's)T!"X..r   c                    U R                   R                  " U/UQ76 nU R                  R                  " U/UQ76 n[        UR	                  5       UR	                  5       5      nUR
                  nU R                   R                  XV5      u  pxU R                  R                  XV5      u  p[        UR                  U5      6 n[        UR                  U	5      6 n[        UR                  U5      6 n[        UR                  U
5      6 nU$ r$   )
r   _print_contents_prettyr   maxheight_use_unicode_pretty_bracketsr   leftright)r   r.   r   r   r   r;   use_unicodelbracket_cbracketrbracketpforms               r   _prettyInnerProduct._prettyi   s    hh--g==hh--g==SZZ\3::<0**hh//D!XX66vKCHHX./EKK12EKK,-EKK12r   c                     U R                   R                  " U/UQ76 nUR                  " U R                  /UQ76 nSU< SU< 3$ )Nz\left\langle z	 \right. )r   _print_contents_latexr-   r   )r   r.   r   	bra_labelr   s        r   _latexInnerProduct._latexy   s=    HH227BTB	nnTXX--093??r   c                 0    U R                   R                  " U R                  40 UD6nUb  U$ U $ ! [         a[     [	        U R                  R
                  R                  " U R                   R
                  40 UD65      n NX! [         a    S n  Ngf = ff = fr$   )r   _eval_innerproductr   NotImplementedErrorr   dual)r   hintsrs      r   doitInnerProduct.doit~   s    	++DHH>>A =H # 	HHMM44TXX]]LeL ' 	s'   '0 
BABBBBB N)r,   
__module____qualname____firstlineno____doc__r   kind
is_complexr   propertyr   r   r%   r/   r6   rF   rK   rS   __static_attributes__rU   r   r   r   r      sb    -^ DJ	    @N/
 @
r   N)rY   sympy.core.exprr   sympy.core.kindr   $sympy.functions.elementary.complexesr    sympy.printing.pretty.stringpictr   sympy.physics.quantum.daggerr   __all__r   rU   r   r   <module>rd      s1       & : 7 / t4 tr   