o
    *Î®cË  ã                   @   sÀ   d dl mZmZ d dlmZ d dlmZ d dlmZm	Z	m
Z
 dd„ Zdd„ ZG d	d
„ d
e
ƒZG dd„ de	eƒZG dd„ deeƒZG dd„ de
ƒZG dd„ de	eƒZG dd„ deeƒZdd„ ZdS )é    )ÚIÚInteger)ÚInnerProduct)ÚDagger)ÚBraÚKetÚ	StateBasec                  C   sª   t dƒ} tdƒ}t|| ƒ}t|tƒsJ ‚|j|ksJ ‚|j| ks"J ‚||  t|| ƒks-J ‚| ||   | | t|| ƒ | ks@J ‚t|| ƒ |t| ƒ¡t| ƒ|  ksSJ ‚d S ©NÚkÚb)r   r   r   Ú
isinstanceÚbraÚketÚsubsr   ©r
   r   Úip© r   úT/tmp/pip-target-vg8gfxp4/lib/python/sympy/physics/quantum/tests/test_innerproduct.pyÚtest_innerproduct   s   
&*r   c                  C   s8   t dƒ} tdƒ}||  }t|ƒt| ƒt|ƒ ksJ ‚d S r	   )r   r   r   r   r   r   r   Útest_innerproduct_dagger   s    r   c                   @   ó   e Zd ZdS )ÚFooStateN©Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r      ó    r   c                   @   s(   e Zd Zedd„ ƒZdd„ Zdd„ ZdS )ÚFooKetc                 C   ó   t S ©N)ÚFooBra©Úselfr   r   r   Ú
dual_class!   ó   zFooKet.dual_classc                 C   s   t dƒS )Né   )r   ©r"   r   r   r   r   Ú_eval_innerproduct_FooBra%   s   z FooKet._eval_innerproduct_FooBrac                 C   r   r   )r   r&   r   r   r   Ú_eval_innerproduct_BarBra(   s   z FooKet._eval_innerproduct_BarBraN)r   r   r   Úclassmethodr#   r'   r(   r   r   r   r   r      s
    
r   c                   @   ó   e Zd Zedd„ ƒZdS )r    c                 C   r   r   )r   r!   r   r   r   r#   -   r$   zFooBra.dual_classN©r   r   r   r)   r#   r   r   r   r   r    ,   ó    r    c                   @   r   )ÚBarStateNr   r   r   r   r   r-   2   r   r-   c                   @   r*   )ÚBarKetc                 C   r   r   )ÚBarBrar!   r   r   r   r#   7   r$   zBarKet.dual_classNr+   r   r   r   r   r.   6   r,   r.   c                   @   r*   )r/   c                 C   r   r   )r.   r!   r   r   r   r#   =   r$   zBarBra.dual_classNr+   r   r   r   r   r/   <   r,   r/   c                  C   sh   t dƒ} tdƒ}t|| ƒ ¡ tksJ ‚tt| ƒt|ƒƒ ¡ t ks#J ‚tt| ƒ| ƒ ¡ tdƒks2J ‚d S )NÚfooÚbarr%   )r   r/   r   Údoitr   r   r   )Úfr   r   r   r   Ú	test_doitB   s
    "r4   N)Úsympy.core.numbersr   r   Ú"sympy.physics.quantum.innerproductr   Úsympy.physics.quantum.daggerr   Úsympy.physics.quantum.stater   r   r   r   r   r   r   r    r-   r.   r/   r4   r   r   r   r   Ú<module>   s    