§
    OŠtj8  ã                   óŽ   — 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    úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/physics/quantum/tests/test_grover.pyÚreturn_one_on_twor   
   s   € Ø•X˜a ¤Ñ0Ô0Ò0Ð0ó    c                 ó6   — | t          d| j        ¬¦  «        k    S )Né   ©r   r   r   s    r   Úreturn_one_on_oner      s   € Ø•X˜a¨¬Ð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°!Ñ3µh¸qÈ%Ð6PÑ6PÔ6PÐQRÑ6RÑRÐÝ   EÑ*Ô*¨1Ñ,­x¸¸5Ñ/AÔ/AÀ!Ñ/CÑCÐØÐ/Ñ/Õ3FÀuÑ3MÔ3MÒMÐMÐMÐMà€EØ•�Q‘”‰i� !¨UÐ3Ñ3Ô3Ñ3°q½¸a¹¼±yÅ(È1ÐV[ÐB\ÑB\ÔB\Ñ6\Ñ\€FØ•�a‘”‰y�( 1 eÑ,Ô,Ñ,°µ$°q±'´'±	½8ÀAÀuÑ;MÔ;MÑ/MÑM€GØ•�Q‘”‰i� ! UÑ+Ô+Ñ+¨qµ°a±´©y½(À1ÀeÑ:LÔ:LÑ.LÑL€FØ•�a‘”‰y�( 1 eÑ,Ô,Ñ,°µ$°q±'´'±	½8ÀAÀuÑ;MÔ;MÑ/MÑM€GØ�GÑ˜fÑ$ wÑ.Õ2EÀeÑ2LÔ2LÒ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   €  V­x¸©{¬{Ò%:€ r   r   r   r   r   c                 ó(   — | t          d¦  «        k    S r,   r   r   s    r   r-   z!test_OracleGate.<locals>.<lambda>,   s   € °&½HÀQ¹K¼KÒ2G€ 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Ý�!•H˜Q‘K”K‘-Ñ Ô ¥X¨a¡[¤[ LÒ0Ð0Ð0Ð0Ý�!•H˜Q‘K”K‘-Ñ Ô ¥H¨Q¡K¤KÒ/Ð/Ð/Ð/à€EÝ�1Õ'Ñ(Ô(€AÝ�!•H˜Q Ñ&Ô&Ñ&Ñ'Ô'­8°A¸uÐ+EÑ+EÔ+EÒEÐEÐEÐEÝ�!•H˜Q Ñ&Ô&Ñ&Ñ'Ô'­8°A¸uÐ+EÑ+EÔ+EÒEÐEÐEÐEÝ�!•H˜Q Ñ&Ô&Ñ&Ñ'Ô'­H°Q¸Ñ,>Ô,>Ð+>Ò>Ð>Ð>Ð>Ý�!•H˜Q Ñ&Ô&Ñ&Ñ'Ô'­8°A°uÑ+=Ô+=Ò=Ð=Ð=Ð=å•Z Ð#GÐ#GÑHÔHÐRSÐTÑTÔTÝ�B˜�7˜Q ˜FÐ#Ñ$Ô$ò%ð %ð %ð %å�Q Ð"Ñ"Ô"¥f¨l¨l¨l¸L¸L¸LÈ-È-È-ÐYeÐYeÐYeÐ-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�˜A˜w™œÑ(Ô(Ñ(¨,Ñ6½(À1ÈgÐ:VÑ:VÔ:VÑV€HÝ•%˜‘.”.¥¨!°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Ô1€LÝ�9Õ/Ñ0Ô0€AÝ˜ 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Ô1€LÝ�9Õ/Ñ0Ô0€Aõ   ¨aÑ0Ô0€HÝ�hÑÔ€HÝ ¨!Ñ,Ô,€HÝ�hÑÔ€HÝ ¨!Ñ,Ô,€HÝ�hÑÔ€Hð �LÑ  "Ñ$ s­8°A°yÑ+AÔ+AÑ'AÀ#Ñ'EÑE€HÝ�(ÑÔ˜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Ô3µxÀÈ7Ð7SÑ7SÔ7SÒSÐSÐSÐSà€GÝ& wÑ/Ô/€LØ�LÑ  "Ñ$ s­8°A°wÑ+?Ô+?Ñ'?ÀÑ'CÑC€HÝÕ)¨1Ñ-Ô-µ¸Ñ1AÔ1AÒ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   