ó
¡¼™\c           @   sº   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
 m Z m Z m Z m Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d S(   iÿÿÿÿ(   t   sqrtt   Matrix(   t	   represent(   t   qapply(   t   IntQubit(   t   apply_grovert   superposition_basist
   OracleGatet   grover_iterationt   WGatec         C   s   |  t  d |  j ƒ k S(   Ni   (   R   t   nqubits(   t   qubits(    (    sF   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_grover.pyt   return_one_on_two	   s    c         C   s   |  t  d d |  j ƒk S(   Ni   R
   (   R   R
   (   R   (    (    sF   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_grover.pyt   return_one_on_one   s    c          C   s„  d }  t  d d |  ƒd t  d d |  ƒd } t  d |  ƒ d t  d |  ƒ d } | | t |  ƒ k sp t ‚ d }  d t d ƒ t  d d |  ƒd t d ƒ t  d d |  ƒ} d t d ƒ t  d |  ƒ d t d ƒ t  d |  ƒ } d t d ƒ t  d |  ƒ d t d ƒ t  d |  ƒ } d t d ƒ t  d	 |  ƒ d t d ƒ t  d
 |  ƒ } | | | | t |  ƒ k s€t ‚ d  S(   Ni   i    R
   i   i   i   i   i   i   i   (   R   R   t   AssertionErrorR    (   t   nbitst   first_half_statet   second_half_statet   firstqt   secondqt   thirdqt   fourthq(    (    sF   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_grover.pyt   test_superposition_basis   s    *$>888c       	   C   sÝ  t  d d „  ƒ }  t |  t d ƒ ƒ t d ƒ k s; t ‚ t |  t d ƒ ƒ t d ƒ k sc t ‚ d } t  d t ƒ }  t |  t d | ƒ ƒ t d d | ƒk s© t ‚ t |  t d | ƒ ƒ t d d | ƒk sÚ t ‚ t |  t d | ƒ ƒ t d | ƒ k s	t ‚ t |  t d | ƒ ƒ t d | ƒ k s7t ‚ t t  d d „  ƒ d d ƒt d d g d d g g ƒ k syt ‚ t |  d d ƒt d d d d g d d d d g d d d d g d d d d g g ƒ k sÙt ‚ d  S(	   Ni   c         S   s   |  t  d ƒ k S(   Ni    (   R   (   R   (    (    sF   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_grover.pyt   <lambda>    t    i    i   R
   i   c         S   s   |  t  d ƒ k S(   Ni    (   R   (   R   (    (    sF   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_grover.pyR   +   R   iÿÿÿÿ(   R   R   R   R   R   R   R   (   t   vR   (    (    sF   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_grover.pyt   test_OracleGate   s    )(11/.'c          C   s“   d }  t  |  ƒ } t t |  ƒ | ƒ | k s4 t ‚ d t t d |  ƒ ƒ | t d d |  ƒ} t t |  ƒ t d d |  ƒƒ | k s t ‚ d  S(   Ni   i   R
   (   R   R   R	   R   R    t   powR   (   R
   t   basis_statest   expected(    (    sF   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_grover.pyt
   test_WGate0   s
    "-c          C   sX   d }  t  |  ƒ } t |  t ƒ } t d d |  ƒ} t t | | ƒ ƒ | k sT t ‚ d  S(   Ni   i   R
   (   R   R   R   R   R   R   R   (   t	   numqubitsR   R   R   (    (    sF   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_grover.pyt   test_grover_iteration_19   s
    c          C   s±   d }  t  |  ƒ } t |  t ƒ } t | | ƒ } t | ƒ } t | | ƒ } t | ƒ } t | | ƒ } t | ƒ } d | d d t d |  ƒ d } t | ƒ | k s­ t ‚ d  S(   Ni   ióÿÿÿi@   i  i   i   (   R   R   R   R   R   R   R   (   R   R   R   t   iteratedR   (    (    sF   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_grover.pyt   test_grover_iteration_2A   s    #c          C   s‡   d }  t  t |  ƒ t d d |  ƒk s- t ‚ d }  t |  ƒ } d | d d t d |  ƒ d } t  t d ƒ t | ƒ k sƒ t ‚ d  S(	   Ni   i   R
   i   ióÿÿÿi@   i  i   (   R   R   R   R   R   R   R   (   R
   R   R   (    (    sF   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_grover.pyt   test_groverT   s    '#N(   t   sympyR    R   t   sympy.physics.quantum.representR   t   sympy.physics.quantum.qapplyR   t   sympy.physics.quantum.qubitR   t   sympy.physics.quantum.groverR   R   R   R   R	   R   R   R   R   R   R    R"   R#   (    (    (    sF   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_grover.pyt   <module>   s   (								