
    \h8                         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 SK
JrJrJrJrJr  S rS rS	 rS
 rS rS rS rS rg)    )sqrt)Matrix)	represent)qapplyIntQubit)apply_groversuperposition_basis
OracleGategrover_iterationWGatec                 4    U [        SU R                  5      :H  $ )N   r   nqubitsqubitss    _/var/www/auris/envauris/lib/python3.13/site-packages/sympy/physics/quantum/tests/test_grover.pyreturn_one_on_twor   
   s    Xa000    c                 0    U [        SU R                  S9:H  $ )N   r   r   r   s    r   return_one_on_oner      s    Xa888r   c                     Sn [        SU S9S-  [        SU S9S-  -   n[        SU 5      S-  [        SU 5      S-  -   nX-   [        U 5      :X  d   eSn S[        S5      -  [        SU S9-  S[        S5      -  [        SU S9-  -   nS[        S5      -  [        SU 5      -  S[        S5      -  [        SU 5      -  -   nS[        S5      -  [        SU 5      -  S[        S5      -  [        SU 5      -  -   nS[        S5      -  [        S	U 5      -  S[        S5      -  [        S
U 5      -  -   nX4-   U-   U-   [        U 5      :X  d   eg )Nr   r   r   r                     )r   r
   r   )nbitsfirst_half_statesecond_half_statefirstqsecondqthirdqfourthqs          r   test_superposition_basisr)      sT   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f$w.2Ee2LLLLr   c                     [        SS 5      n [        U [        S5      -  5      [        S5      * :X  d   e[        U [        S5      -  5      [        S5      :X  d   eSn[        S[        5      n [        U [        SU5      -  5      [        SUS9:X  d   e[        U [        SU5      -  5      [        SUS9:X  d   e[        U [        SU5      -  5      [        SU5      * :X  d   e[        U [        SU5      -  5      [        SU5      :X  d   e[	        [        SS 5      SS9[        SS/SS//5      :X  d   e[	        U SS9[        / S	Q/ S
Q/ SQ/ SQ/5      :X  d   eg )Nr   c                     U [        S5      :H  $ Nr   r   r   s    r   <lambda>!test_OracleGate.<locals>.<lambda>!   s    Vx{%:r   r   r   r   r   c                     U [        S5      :H  $ r,   r   r   s    r   r-   r.   ,   s    &HQK2Gr   )r   r   r   r   )r   r   r   r   )r   r   r0   r   )r   r   r   r   )r   r   r   r   r   r   )vr"   s     r   test_OracleGater2       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                      Sn [        U 5      n[        [        U 5      U-  5      U:X  d   eS[        [	        SU 5      5      -  U-  [        SU S9-
  n[        [        U 5      [        SU S9-  5      U:X  d   eg Nr   r   r   )r
   r   r   r   powr   r   basis_statesexpecteds      r   
test_WGater9   1   sv    G&w/L%.-.,>>>4Aw((,6(1g:VVH%.!W!==>(JJJr   c                      Sn [        U 5      n[        U [        5      n[        SU S9n[	        [        X5      5      U:X  d   eg r4   )r
   r   r   r   r   r   )	numqubitsr7   r1   r8   s       r   test_grover_iteration_1r<   :   sC    I&y1L9/0A9-H"<34@@@r   c                     Sn [        U 5      n[        U [        5      n[        X5      n[	        U5      n[        X25      n[	        U5      n[        X25      n[	        U5      nSU-  S-  S[        SU 5      -  S-  -   n[	        U5      U:X  d   eg )Nr   @     r      )r
   r   r   r   r   r   )r;   r7   r1   iteratedr8   s        r   test_grover_iteration_2rC   B   s    I&y1L9/0A  0HhH,HhH,HhH L "$s8Ay+A'A#'EEH(x'''r   c                      Sn [        [        U 5      [        SU S9:X  d   eSn [        U 5      nSU-  S-  S[        SU 5      -  S-  -   n[        [        S5      [        U5      :X  d   eg )	Nr   r   r   r   r>   r?   r@   rA   )r	   r   r   r
   r   r   r6   s      r   test_groverrE   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)   r2   r9   r<   rC   rE    r   r   <module>rM      sK    9 ' 5 / 0- -19Mh"KA(&Br   