
    sg"                     8   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 Z5y)    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      }|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      Y/var/www/html/venv/lib/python3.12/site-packages/sympy/physics/quantum/tests/test_qubit.py
test_Qubitr/      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_QubitBrar9   (   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???r0   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   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 r0   c                      t        dd      S )Nr$   T)bad_argrD   rE   r0   r.   rF   ztest_IntQubit.<locals>.<lambda>d   s    hq$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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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	        |      j                         |k(  sJ t        t        |d            |k(  sJ y )	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    d1gIeDk!Ad1gIeDk$99EaLO+E1J4[]U4[]2U4[]BU4[QR]RN*$$&.8889Z;<NNNr0   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 )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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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        |      |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   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      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)))r0   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brZ   s      r.   test_measure_normalizerr      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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 y )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~      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 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 y )	NrX   r   rV   r$   rB   rW   r"   r;   )r	   r   r   r{   r   r   r   )rZ   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.????r0   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   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      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 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 y )
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!WeCj!_%====
1a&1a&!
"CS!WeCj!_%====
1a&1a&!
"CS!Q&&&
,  !C
 S!WeDk1-=%>>>>
,  !C
 S!WeDk1-=%>>>>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      s     2 " % 9 '@ @ @: : / 5 , ' 1 *u~1
@$*9XO(*K2:
@"6J?r0   