
    g8                         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dS )    )sqrt)Matrix)	represent)qapplyIntQubit)apply_groversuperposition_basis
OracleGategrover_iterationWGatec                 4    | t          d| j                  k    S )N   r   nqubitsqubitss    c/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/physics/quantum/tests/test_grover.pyreturn_one_on_twor   
   s    Xa0000    c                 6    | t          d| j                  k    S )N   r   r   r   s    r   return_one_on_oner      s    Xa88888r   c                  V   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 d S )Nr   r   r   r                     )r   r
   r   )nbitsfirst_half_statesecond_half_statefirstqsecondqthirdqfourthqs          r   test_superposition_basisr)      s   E5111!3hq%6P6P6PQR6RR E**1,x5/A/A!/CC//3Fu3M3MMMMMEQi!U3333qay(1V[B\B\B\6\\Fay(1e,,,$q''	8Au;M;M/MMGQi!U+++qay(1e:L:L.LLFay(1e,,,$q''	8Au;M;M/MMGGf$w.2Ee2L2LLLL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 d S )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    &HQKK2G 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       s   1::;;A!HQKK-  Xa[[L0000!HQKK-  HQKK////E1'((A!HQ&&&''8Au+E+E+EEEEE!HQ&&&''8Au+E+E+EEEEE!HQ&&&''HQ,>,>+>>>>>!HQ&&&''8Au+=+=====Z#G#GHHRSTTTB7QF#$$% % % %Q"""flllLLL---YeYeYe-f&g&gggggggr   c                  D   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 d S Nr   r   r   )r
   r   r   r   powr   r   basis_statesexpecteds      r   
test_WGater8   1   s    G&w//L%..-..,>>>>4Aw(((,6(1g:V:V:VVH%..!W!=!=!==>>(JJJJJJr   c                      d} t          |           }t          | t                    }t          d|           }t	          t          ||                    |k    sJ d S r3   )r
   r   r   r   r   r   )	numqubitsr6   r0   r7   s       r   test_grover_iteration_1r;   :   s`    I&y11L9/00A9---H"<3344@@@@@@r   c                  t   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 d S )Nr   @     r      )r
   r   r   r   r   r   )r:   r6   r0   iteratedr7   s        r   test_grover_iteration_2rB   B   s    I&y11L9/00A  a00HhH!,,HhH!,,HhH L "$s8Ay+A+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 d S )	Nr   r   r   r   r=   r>   r?   r@   )r	   r   r   r
   r   r   r5   s      r   test_groverrD   U   s    G)733x77S7S7SSSSSG&w//LL "$s8Aw+?+?'?'CCH)1--1A1AAAA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      s8   9 9 9 9 9 9 ' ' ' ' ' ' 5 5 5 5 5 5 / / / / / / 0 0 0 0 0 0- - - - - - - - - - - - - -1 1 19 9 9M M Mh h h"K K KA A A( ( (&B B B B Br   