
    sg8                         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 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y)    )sqrt)Matrix)	represent)qapplyIntQubit)apply_groversuperposition_basis
OracleGategrover_iterationWGatec                 4    | t        d| j                        k(  S )N   r   nqubitsqubitss    Z/var/www/html/venv/lib/python3.12/site-packages/sympy/physics/quantum/tests/test_grover.pyreturn_one_on_twor   
   s    Xa000    c                 6    | t        d| j                        k(  S )N   r   r   r   s    r   return_one_on_oner      s    Xa888r   c                     d} t        d|       dz  t        d|       dz  z   }t        d|       dz  t        d|       dz  z   }||z   t        |       k(  sJ d} dt        d      z  t        d|       z  dt        d      z  t        d|       z  z   }dt        d      z  t        d|       z  dt        d      z  t        d|       z  z   }dt        d      z  t        d|       z  dt        d      z  t        d|       z  z   }dt        d      z  t        d	|       z  dt        d      z  t        d
|       z  z   }||z   |z   |z   t        |       k(  sJ y )Nr   r   r   r                     )r   r
   r   )nbitsfirst_half_statesecond_half_statefirstqsecondqthirdqfourthqs          r   test_superposition_basisr)      sY   E51!3hq%6PQR6RR E*1,x5/A!/CC//3Fu3MMMMEQi!U33qay(1V[B\6\\Fay(1e,,$q'	8Au;M/MMGQi!U++qay(1e:L.LLFay(1e,,$q'	8Au;M/MMGGf$w.2Ee2LLLLr   c                     t        dd       } t        | t        d      z        t        d       k(  sJ t        | t        d      z        t        d      k(  sJ d}t        dt              } t        | t        d|      z        t        d|      k(  sJ t        | t        d|      z        t        d|      k(  sJ t        | t        d|      z        t        d|       k(  sJ t        | t        d|      z        t        d|      k(  sJ t	        t        dd       d      t        ddgddgg      k(  sJ t	        | d      t        g d	g d
g dg dg      k(  sJ y )Nr   c                     | t        d      k(  S Nr   r   r   s    r   <lambda>z!test_OracleGate.<locals>.<lambda>!   s    Vx{%: r   r   r   r   r   c                     | t        d      k(  S r,   r   r   s    r   r-   z!test_OracleGate.<locals>.<lambda>,   s    &HQK2G r   )r   r   r   r   )r   r   r   r   )r   r   r/   r   )r   r   r   r   )r   r   r   r   r   r   )vr"   s     r   test_OracleGater1       sW   1:;A!HQK- Xa[L000!HQK- HQK///E1'(A!HQ&&'8Au+EEEE!HQ&&'8Au+EEEE!HQ&&'HQ,>+>>>>!HQ&&'8Au+====Z#GHRSTB7QF#$% % %Q"flL-Ye-f&ggggr   c                      d} t        |       }t        t        |       |z        |k(  sJ dt        t	        d|             z  |z  t        d|       z
  }t        t        |       t        d|       z        |k(  sJ y Nr   r   r   )r
   r   r   r   powr   r   basis_statesexpecteds      r   
test_WGater8   1   sv    G&w/L%.-.,>>>4Aw((,6(1g:VVH%.!W!==>(JJJr   c                      d} t        |       }t        | t              }t        d|       }t	        t        ||            |k(  sJ y r3   )r
   r   r   r   r   r   )	numqubitsr6   r0   r7   s       r   test_grover_iteration_1r;   :   sE    I&y1L9/0A9-H"<34@@@r   c                     d} t        |       }t        | t              }t        ||      }t	        |      }t        ||      }t	        |      }t        ||      }t	        |      }d|z  dz  dt        d|       z  dz  z   }t	        |      |k(  sJ y )Nr   @     r      )r
   r   r   r   r   r   )r:   r6   r0   iteratedr7   s        r   test_grover_iteration_2rB   B   s    I&y1L9/0A  a0HhH!,HhH!,HhH L "$s8Ay+A'A#'EEH(x'''r   c                      d} t        t        |       t        d|       k(  sJ d} t        |       }d|z  dz  dt        d|       z  dz  z   }t        t        d      t        |      k(  sJ y )	Nr   r   r   r   r=   r>   r?   r@   )r	   r   r   r
   r   r   r5   s      r   test_groverrD   U   ss    G)73x77SSSSG&w/LL "$s8Aw+?'?'CCH)1-1AAAAr   N)(sympy.functions.elementary.miscellaneousr   sympy.matrices.denser   sympy.physics.quantum.representr   sympy.physics.quantum.qapplyr   sympy.physics.quantum.qubitr   sympy.physics.quantum.groverr	   r
   r   r   r   r   r   r)   r1   r8   r;   rB   rD    r   r   <module>rL      sK    9 ' 5 / 0- -19Mh"KA(&Br   