Ë
    7^(h8  ã                   óŒ   — 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    úe/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/physics/quantum/tests/test_grover.pyÚreturn_one_on_twor   
   s   € Ø”X˜a §¡Ó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Ð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°!Ñ3´h¸qÈ%Ô6PÐQRÑ6RÑRÐÜ   EÓ*¨1Ñ,¬x¸¸5Ó/AÀ!Ñ/CÑCÐØÐ/Ñ/Ô3FÀuÓ3MÒMÐMÐMà€EØ”�Q“‰iœ !¨UÔ3Ñ3°q¼¸a»±yÄ(È1ÐV[ÔB\Ñ6\Ñ\€FØ”�a“‰yœ( 1 eÓ,Ñ,°´$°q³'±	¼8ÀAÀuÓ;MÑ/MÑM€GØ”�Q“‰iœ ! UÓ+Ñ+¨q´°a³©y¼(À1ÀeÓ:LÑ.LÑL€FØ”�a“‰yœ( 1 eÓ,Ñ,°´$°q³'±	¼8ÀAÀuÓ;MÑ/MÑM€GØ�GÑ˜fÑ$ wÑ.Ô2EÀeÓ2LÒ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   €  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Ñ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       sW  € Ü�1Ñ:Ó;€AÜ�!”H˜Q“K‘-Ó ¤X¨a£[ LÒ0Ð0Ð0Ü�!”H˜Q“K‘-Ó ¤H¨Q£KÒ/Ð/Ð/à€EÜ�1Ô'Ó(€AÜ�!”H˜Q Ó&Ñ&Ó'¬8°A¸uÔ+EÒEÐEÐEÜ�!”H˜Q Ó&Ñ&Ó'¬8°A¸uÔ+EÒEÐEÐEÜ�!”H˜Q Ó&Ñ&Ó'¬H°Q¸Ó,>Ð+>Ò>Ð>Ð>Ü�!”H˜Q Ó&Ñ&Ó'¬8°A°uÓ+=Ò=Ð=Ð=ä”Z Ñ#GÓHÐRSÔTÜ�B˜�7˜Q ˜FÐ#Ó$ò%ð %ð %ä�Q Ô"¤fªlºLÊ-Ò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œ˜A˜w›Ó(Ñ(¨,Ñ6¼(À1ÈgÔ:VÑV€HÜ”%˜“.¤¨!°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Ó1€LÜ�9Ô/Ó0€AÜ˜ 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Ó1€LÜ�9Ô/Ó0€Aô   ¨aÓ0€HÜ�hÓ€HÜ ¨!Ó,€HÜ�hÓ€HÜ ¨!Ó,€HÜ�hÓ€Hð �LÑ  "Ñ$ s¬8°A°yÓ+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 ‚y )	Nr   r   r   r   r=   r>   r?   r@   )r	   r   r   r
   r   r   r5   s      r   Útest_groverrD   U   ss   € Ø€GÜÔ)¨7Ó3´xÀÈ7Ô7SÒSÐSÐSà€GÜ& wÓ/€LØ�LÑ  "Ñ$ s¬8°A°wÓ+?Ñ'?ÀÑ'CÑC€HÜÔ)¨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   