
    oVh7$                     B   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 Z7y)    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      }|j                  d      t        d      k(  sJ |j                  d      t        d      k(  sJ |j                  d      t        d      k(  sJ |j                  dk(  sJ |j                  d	k(  sJ t	        d	      D ]  }||   | d|z
     k(  rJ  t        |      d	k(  sJ t        d
      }y )N)r   r      r   r   00110r   00111r   00100   10110   110)r   flipqubit_values	dimensionrangelen)arrayqbis      V/home/dcms/DCMS/lib/python3.12/site-packages/sympy/physics/quantum/tests/test_qubit.py
test_Qubitr0      s    E	wB771:w'''771:w'''771:w'''??o---<<11X %!ua!e$$$%r7a<<	uB    c                     t        d      } t        d      }| j                         t        k(  sJ |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      }| j                  |      t        d      k(  sJ t        dd      }| j                  |      t        d      k(  sJ y )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	q!Ba]F))&1WQZ???a^F))&1WQZ???r1   c                     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
      } | j                         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      }| j                         t
        k(  sJ |j                         t         k(  sJ t        d      } t        d      }| j                  |      t        d      k(  sJ t        d      } t        d      }| j                  |      t        d      k(  sJ t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        y )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 r1   c                      t        dd      S )Nr%   T)bad_argrE   rF   r1   r/   rG   ztest_IntQubit.<locals>.<lambda>d   s    hq$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8Aq>*oc.BBBB
1+C::<1|+++
1a.C|+++A;(1a.((( 1+C!nG>>{***8+++
1+C!nG--g6'!*DDD
1+C!nG--g6'!*DDD
:-.
:,-
:/0
:78
97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	        |      j                         |k(  sJ t        t        |d            |k(  sJ y )	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    d1gIeDk!Ad1gIeDk$99EaLO+E1J4[]U4[]2U4[]BU4[QR]RN*$$&.8889Z;<NNNr1   c                     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        |      }|j                         }|j                         }||k(  sJ y )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1
3q !"E#a.?*@$Ac!FMMO#$%uS6==?1B-C'D#a'()+E
 C)*C0A,BC 12C8I4JFMMOA G 3v}}q()* 8FMMOA-./78 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        |      |j                         k(  sJ t        |      |k(  sJ y )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      s   	q!Q	B
A
BC32%%%2#%%%d1gIuQ1~aA6q!QGQ1~&(-aA79>q!QHQ1~&(-aA7 8E 719V455D4 ELLN2225!T)))r1   c                     t        d      \  } }| t        d      z  |t        d      z  z   }t        |dd      | t        d      z  | | j                         z  f|t        d      z  ||j                         z  fgk(  sJ t	        |d      t        d      | | j                         z  ft        d      ||j                         z  fgk(  sJ y )Nza br&   111r   F)	normalize)r   r   r   	conjugater	   )abr[   s      r/   test_measure_normalizers      s    5>DAqeElNQuU|^+E5$%8
E%L.!AKKM/	*QuU|^Qq{{}_,MNO O Ou.
,!++-	(5<1;;=*IJ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 y )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      s   $K%+%E5$'
+qvv	taff 567 7 75#a&)
+qvv	taff 567 7 75$'t$TrT*+ + + !WT!W_U7^+aQig.FFF64(
q'$q'/%.
(1T!W9U7^+C
CQ	GHI I I66*off.MMMM69-
.(1a.	)E'NHQN+KLM M M 6]U6]*U6]:U6]JF69-
-!Q	(5=(1a.*I
-Q
%-Q"7
7	@	BB B B 64(
-!Q	(
-Q
%-Q"7
7
-Q
 !)!Q
1	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 y )	NrY   r   rW   r%   rC   rX   r#   r<   )r	   r   r   r|   r   r   r   )r[   r~   s     r/   test_measure_allr      s   uT{#ta(8'9999$K%+%Eu5;"7$K "" " " "4[a 1U4[=a#88Fv
+x1~	&thq!n(EFG G G veCj)*c
A.????r1   c                  B   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 y )N*   rY   r>   r<   rC   )rb   seedr
   r   r   rF   r1   r/   test_measure_all_oneshotr      s    
KKOuT{+uT{:::uSz*eCj888uSz$q'1E#JtAw4FFG#J  r1   c                  t   t        d      } t        d      }t        | dg|dg      }t        |      }|j                         dk(  sJ t        |d      }|j                         dt        t        d      dg      z  dt        t        d	      dg      z  z   k(  sJ t        |d
      }|j                         dt        t        d      dg      z  dt        t        d      dg      z  z   k(  sJ t        |d      }|j                         dt        t        d      dg      z  dt        t        d      dg      z  z   k(  sJ t        |g d      }|j                         dk(  sJ t        |g d      }|j                         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      }|j                         dt        t        d      dg      z  dt        t        d      dg      z  z   k(  sJ y )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      s6   	wB	wBS	B9%A
1A668s?? 	1aA668GU6]A$677GU6]A$6778 9 9 9
1aA668GU6]A$677GU6]A$6778 9 9 9 	1aA668GU6]A$677GU6]A$6778 9 9 9 	1oA668s?? 	1iA668GU4[!$455GU4[!$4556 7 7 7 
47uT{U4[01A!SA
1aA668GU3ZO44GU3ZO445 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 y )
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!WeCj!_%====
1a&1a&!
"CS!WeCj!_%====
1a&1a&!
"CS!Q&&&
,  !C
 S!WeDk1-=%>>>>
,  !C
 S!WeDk1-=%>>>>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 " % 9 '@ @ @: : / 5 , ' 1 *u~1
@$*9XO(*K2:
@"6J?r1   