
    g"                     @   d dl Z d dlmZ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mZmZmZ d dlmZmZmZmZmZ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% d dl&m'Z'  ed          \  Z(Z)dZ*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5dS )    N)IntegerRational)S)symbols)sqrt)Matrix)measure_allmeasure_partialmatrix_to_qubitmatrix_to_densityqubit_to_matrixIntQubitIntQubitBraQubitBra)HadamardGateCNOTXGateYGateZGate	PhaseGate)qapply)	represent)Qubit)raises)Density)Trzx,ygư>c                     g d} t          d          }|                    d          t          d          k    sJ |                    d          t          d          k    sJ |                    d          t          d          k    sJ |j        dk    sJ |j        d	k    sJ t	          d	          D ]}||         | d|z
           k    sJ t          |          d	k    sJ t          d
          }d S )N)r   r      r   r   00110r   00111r   00100   10110   110)r   flipqubit_values	dimensionrangelen)arrayqbis      b/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/physics/quantum/tests/test_qubit.py
test_Qubitr/      s    OOE	wB771::w''''771::w''''771::w''''?o----<11XX % %!ua!e$$$$$r77a<<<<	uBBB    c                  X   t          d          } t          d          }|                                 t          k    sJ |                                t           k    sJ t          ddd          } t          ddd          }t          | d          j        t          |d          k    sJ t          dd          } t          dd          }|                     |          t          d          k    sJ t          dd          }|                     |          t          d          k    sJ d S )Nr   r      nqubits)r   r   
dual_classr   H_eval_innerproduct_QubitBrar   )r,   qb_bras     r.   test_QubitBrar9   (   s   	qBa[[F==??h&&&&%''''	q!QBaAFR###%61)E)E)EEEEE	q!Ba]]F))&11WQZZ????a^^F))&11WQZZ??????r0   c                  X   t          dd          } t          t          d                    t          |           k    sJ t          d          }t          t          |                    t          |          k    sJ t          dd          } t          t          d                    t          |           k    sJ t          t          d                    t          |           k    sJ t          dd          } t          t          d	                    t          |           k    sJ t          t          dd                    t          |           k    sJ t          d
          } |                                 d
k    sJ | j        dk    sJ t          dd          } | j        dk    sJ t          d          t          dd          k    sJ t          d          } t          d          }|                                 t
          k    sJ |                                t           k    sJ t          d          } t          d          }|                     |          t          d          k    sJ t          d          } t          d          }|                     |          t          d          k    sJ t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            d S )Nr   r   r3   010101   r"   0111   r   r   r   r   )r   r   r   r   r2      r$   c                  "    t          dd          S )Nr"   r   r    r0   r.   <lambda>ztest_IntQubit.<locals>.<lambda>_   s    x1~~ r0   c                       t          d          S )N5rD   rE   r0   r.   rF   ztest_IntQubit.<locals>.<lambda>a   s    x}} r0   c                  "    t          dd          S )Nr$   rH   rD   rE   r0   r.   rF   ztest_IntQubit.<locals>.<lambda>b   s    x3// r0   c                  $    t          dd          S )Nr$   rH   r3   rD   rE   r0   r.   rF   ztest_IntQubit.<locals>.<lambda>c   s    x3777 r0   c                  $    t          dd          S )Nr$   T)bad_argrD   rE   r0   r.   rF   ztest_IntQubit.<locals>.<lambda>d   s    hq$777 r0   )r   r   r   as_intr'   r   r5   _eval_innerproduct_IntQubitBrar   r   
ValueError	TypeError)iqbr,   iqb_bras      r.   test_IntQubitrS   :   s   
1a
 
 
 C5::&&/#*>*>>>>>	vB8B<<((OB,?,?????
1a
 
 
 C5::&&/#*>*>>>>>8A;;''?3+?+?????
1a
 
 
 C5==))_S-A-AAAAA8Aq>>**oc.B.BBBBB
1++C::<<1|++++
1a..C|++++A;;(1a..(((( 1++C!nnG>>{****8++++
1++C!nnG--g66'!**DDDD
1++C!nnG--g66'!**DDDD
:--...
:,,---
://000
:77888
97788888r0   c                     dt          d          z  t          d          z  dt          d          z  t          d          z  z   } t          dd          t          d          z  | z  }t          d          dz  t          d          dz  z   t          d          dz  z
  t          d          dz  z   }t	          |                                          |k    sJ t          t          |d                    |k    sJ d S )	Nr   rB   0110r   0011r3   )r   r   r   r   r   expandr   r   )state
state_gatestate_expandeds      r.   test_superposition_of_statesr]   f   s    d1ggIeDkk!Ad1ggIeDkk$99EaLOO+E1J4[[]U4[[]2U4[[]BU4[[QR]RN*$$&&.88889Z;;;<<NNNNNNr0   c                  n   t          t          dt          j                    z                      t          t          dt          j                    z                      t	          t          dt          j                    z                      t          t          dt          j                    z                      t	          t          dt          j                    z                      t          t          dt          j                    z                      g} t          t          t          j                    dz            t          t          j                    dz            t          t          j                    dz            t          t          j                    dz            t          t          j                    dz            t          t          j                    dz                      }t          t          t          j                    dz                      D ].}| t          t          j                    dz                     |z  }/t          |d          }t          |          }t          |          }|                                }|                                }||k    sJ d S )Nr2   rB      r3   )r   intrandomr   r   r   r   r   r)   r   r   r   rY   )gatescircuitr-   matstates	state_reps         r.   test_apply_represent_equalityrg   o   s   #a/0011
3q !!""E#a.?*@*@$A$Ac!FMOO#$$%%uS6=??1B-C-C'D'D#a'(())+E
 C)**C0A,B,BC 122C8I4J4JFMOOA   G 3v}q())** 8 8FMOOA-../7
GQ
'
'
'CG__F$$I]]__F  ""Ir0   c                     t          dddd          } t          g d          }t          |          | k    sJ t          |           |k    sJ dt	          d          z  t          ddd          t          ddd          z   t          ddd          z   t          ddd          z   t          ddd          z   t          ddd          z   t          ddd          z   t          ddd          z   z  }t	          d          dz  t          g d          z  }t          |          |                                k    sJ t          |          |k    sJ d S )Nr   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rB   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   rY   )r,   rd   rZ   oness       r.   test_matrix_to_qubitsrj      sY   	q!Q		B
AAA
B
BC32%%%%2#%%%%d1ggIuQ1~~aA6q!QGQ1~~&(-aA79>q!QHQ1~~&(-aA7 8E 7719V444555D4  ELLNN22225!!T))))))r0   c                     t          d          \  } }| t          d          z  |t          d          z  z   }t          |dd          | t          d          z  | |                                 z  f|t          d          z  ||                                z  fgk    sJ t	          |d          t          d          | |                                 z  ft          d          ||                                z  fgk    sJ d S )Nza br%   111r   F)	normalize)r   r   r
   	conjugater	   )abrZ   s      r.   test_measure_normalizerr      s   5>>DAqeEllNQuU||^+E5$%888
E%LL.!AKKMM/	*QuU||^Qq{{}}_,MNO O O Ou...
,,!++--	(5<<1;;==*IJK K K K K Kr0   c                  <   t          d          t          d          z   } t          | d          t          d          t          j        ft          d          t          j        fgk    sJ t          | t	          d                    t          d          t          j        ft          d          t          j        fgk    sJ t          | d          t          | d          d d d         k    sJ t          d          t          d          z  t          d	          z  d
t          d          z  t          d          z  z   }t          |d          t          d          t          d          z  t          d	          z  d
t          d          z  t          d          z  z   d
fgk    sJ t          |d          t          |d          k    sJ t          |d          t          d	          t          dd          ft          d          t          d
d          fgk    sJ t          d          t          d          z   t          d          z   t          d          z   }t          |d          t          d          t          d
d          ft          d          t          d
d          ft          d          t          d          z  t          d          t          d          z  z   t          j        fgk    sJ t          |d          t          d          t          d
d          ft          d          t          d          z  t          d          t          d          z  z   t          d          t          d          z  z   t          dd          fgk    sJ d S )NrU   rV   rm   r   )r   rB   r2   00001r   11111)r   rB   )r2   r"   )r   rB   r2   1111110110111000)r   r   r2   r"   )r   r
   r   Halfr`   r   r   )rZ   state1state2s      r.   test_measure_partialr~      sF   $KK%++%E5$''
++qv	taf 567 7 7 75#a&&))
++qv	taf 567 7 7 75$''t$$TTrT*+ + + + !WWT!WW_U7^^+aQig.FFF64((
q''$q''/%..
(1T!WW9U7^^+C
CQ	GHI I I I66**off.M.MMMMM69--
..(1a..	)E'NNHQNN+KLM M M M 6]]U6]]*U6]]:U6]]JF69--
--!Q	(5==(1a..*I
--Q
%--Q"7
7	@	BB B B B 64((
--!Q	(
--Q
%--Q"7
7
--Q
 !)!Q
1	22 2 2 2 2 2r0   c                     t          t          d                    t          d          dfgk    sJ t          d          t          d          z   } t          |           t          d          t          j        ft          d          t          j        fgk    sJ t          d          t	          d          z  dt          d          z  t	          d          z  z   }t          |          t          d          t          dd          ft          d          t          dd          fgk    sJ t          t          t          d                              t          d          dfgk    sJ d S )	NrX   r   rV   r$   rB   rW   r"   r;   )r	   r   r   r{   r   r   r   )rZ   r}   s     r.   test_measure_allr      sE   uT{{##ta(8'99999$KK%++%Eu5;;"7$KK "" " " " "4[[a 1U4[[=a#88Fv
++x1~~	&thq!nn(EFG G G G veCjj))**c

A.???????r0   c                     t          d          } t          d          }t          | dg|dg          }t          |          }|                                dk    sJ t          |d          }|                                dt          t          d          dg          z  dt          t          d	          dg          z  z   k    sJ t          |d
          }|                                dt          t          d          dg          z  dt          t          d          dg          z  z   k    sJ t          |d          }|                                dt          t          d          dg          z  dt          t          d          dg          z  z   k    sJ t          |g d          }|                                dk    sJ t          |g d          }|                                dt          t          d          dg          z  dt          t          d          dg          z  z   k    sJ dt	          d          z  t          d          t          d          z   z  }t          |dg          }t          |d          }|                                dt          t          d          dg          z  dt          t          d          dg          z  z   k    sJ d S )Nr#   01010g333333?g?g      ?r   0101r   ry   r"   r<   0110rB   )r   r   rB   r2   r"   )rB   r   r2   rW   rV   rX   g      ?r;   r=   )r   r   r   doitr   )q1q2dtqs        r.   test_eval_tracer      s   	wB	wBS	B9%%A
1A6688s???? 	1aA6688GU6]]A$6777GU6]]A$67778 9 9 9 9
1aA6688GU6]]A$6777GU6]]A$67778 9 9 9 9 	1aA6688GU6]]A$6777GU6]]A$67778 9 9 9 9 	1oooA6688s???? 	1iiiA6688GU4[[!$4555GU4[[!$45556 7 7 7 7 
477uT{{U4[[01A!SA
1aA6688GU3ZZO444GU3ZZO4445 6 6 6 6 6 6r0   c                     t          ddgddgg          } t          |           t          t          d          dg          k    sJ t          ddgddgg          } t          |           t          t          d          dg          k    sJ t          ddgddgg          } t          |           dk    sJ t          g dg dg dg dg          } t          |           t          t          d          dg          k    sJ t          g dg dg dg dg          } t          |           t          t          d	          dg          k    sJ d S )
Nr   r   r=   r;   )r   r   r   r   )r   r   r   r   rV   rA   rW   )r   r   r   r   )rd   s    r.   test_matrix_to_densityr      s   
1a&1a&!
"
"CS!!WeCjj!_%=%=====
1a&1a&!
"
"CS!!WeCjj!_%=%=====
1a&1a&!
"
"CS!!Q&&&&
,,,,,,,,,  ! !C
 S!!WeDkk1-=%>%>>>>>
,,,,,,,,,  ! !C
 S!!WeDkk1-=%>%>>>>>>>r0   )6ra   sympy.core.numbersr   r   sympy.core.singletonr   sympy.core.symbolr   (sympy.functions.elementary.miscellaneousr   sympy.matrices.denser   sympy.physics.quantum.qubitr	   r
   r   r   r   r   r   r   sympy.physics.quantum.gater   r   r   r   r   r   sympy.physics.quantum.qapplyr   sympy.physics.quantum.representr   sympy.physics.quantum.shorr   sympy.testing.pytestr   sympy.physics.quantum.densityr   sympy.physics.quantum.tracer   xyepsilonr/   r9   rS   r]   rg   rj   rr   r~   r   r   r   rE   r0   r.   <module>r      su    2 2 2 2 2 2 2 2 " " " " " " % % % % % % 9 9 9 9 9 9 ' ' ' ' ' '@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @: : : : : : : : : : : : : : : : / / / / / / 5 5 5 5 5 5 , , , , , , ' ' ' ' ' ' 1 1 1 1 1 1 * * * * * *wu~~1
  @ @ @$*9 *9 *9XO O O  (* * *K K K2 2 2:
@ 
@ 
@"6 "6 "6J? ? ? ? ?r0   