
    Qi7$                     J   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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 Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7dS )    N)IntegerRational)S)symbols)sqrt)Matrix)	measure_allmeasure_all_oneshot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      ~/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/sympy/physics/quantum/tests/test_qubit.py
test_Qubitr0      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_QubitBrar:   (   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??????r1   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   r4   010101   r#   0111   r   r   r   r   )r   r   r   r   r3      r%   c                  "    t          dd          S )Nr#   r   r    r1   r/   <lambda>ztest_IntQubit.<locals>.<lambda>_   s    x1~~ r1   c                       t          d          S )N5rE   rF   r1   r/   rG   ztest_IntQubit.<locals>.<lambda>a   s    x}} r1   c                  "    t          dd          S )Nr%   rI   rE   rF   r1   r/   rG   ztest_IntQubit.<locals>.<lambda>b   s    x3// r1   c                  $    t          dd          S )Nr%   rI   r4   rE   rF   r1   r/   rG   ztest_IntQubit.<locals>.<lambda>c   s    x3777 r1   c                  $    t          dd          S )Nr%   T)bad_argrE   rF   r1   r/   rG   ztest_IntQubit.<locals>.<lambda>d   s    hq$777 r1   )r   r   r   as_intr(   r   r6   _eval_innerproduct_IntQubitBrar   r   
ValueError	TypeError)iqbr-   iqb_bras      r/   test_IntQubitrT   :   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8r1   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   rC   0110r   0011r4   )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Nr1   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 )Nr3   rC      r4   )r   intrandomr   r   r   r   r   r*   r   r   r   rZ   )gatescircuitr.   matstates	state_reps         r/   test_apply_represent_equalityrh   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r1   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   rC   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   rZ   )r-   re   r[   oness       r/   test_matrix_to_qubitsrk      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))))))r1   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br[   s      r/   test_measure_normalizers      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r1   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 )NrV   rW   rn   r   )r   rC   r3   00001r   11111)r   rC   )r3   r#   )r   rC   r3   1111110110111000)r   r   r3   r#   )r   r   r   Halfra   r   r   )r[   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 2r1   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 )	NrY   r   rW   r%   rC   rX   r#   r<   )r	   r   r   r|   r   r   r   )r[   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.???????r1   c                     t          j        d           t          t          d                    t          d          k    sJ t          t          d                    t          d          k    sJ t          t          d          t	          d          z  t          d          t	          d          z  z             t          d          k    sJ d S )N*   rY   r>   r<   rC   )rb   seedr
   r   r   rF   r1   r/   test_measure_all_oneshotr      s    
KOOOuT{{++uT{{::::uSzz**eCjj8888uSzz$q''1E#JJtAww4FFGG#JJ     r1   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   rz   r#   r=   0110rC   )r   r   rC   r3   r#   )rC   r   r3   rX   rW   rY   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 6r1   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   rW   rB   rX   )r   r   r   r   )re   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-=%>%>>>>>>>r1   )8rb   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   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epsilonr0   r:   rT   r^   rh   rk   rs   r   r   r   r   r   rF   r1   r/   <module>r      s    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? ? ? ? ?r1   