
    sg%                     6   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 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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' d dl(m)Z) d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4y)    )Rational)S)symbols)log)import_module)Densityentropyfidelity)Ket
TimeDepKet)Qubit)	represent)Dagger)XKetPxKetPxOpXOp)JzKet)OuterProduct)Tr)sqrt)raises)scipy_sparse_matrix)TensorProductc            
         t        t        t        d      dgt        d      dg      t              sJ t        t        t        d      dt	        d      z  gt        d      dt	        d      z  g      t              sJ t        t        d      dt	        d      z  gt        d      dt	        d      z  g      } | j
                  D ]  \  }}t        |t              rJ  t        t        d        y )Nr         ?   00   11c                  B    t        t        d      gt        d      g      S )Nr   r   )r   r        [/var/www/html/venv/lib/python3.12/site-packages/sympy/physics/quantum/tests/test_density.py<lambda>z test_eval_args.<locals>.<lambda>!   s    wAx#a&: r#   )
isinstancer   r   r   r   argsr   
ValueError)dstateprobs      r$   test_eval_argsr,      s    gs1vsmc!fc];WEEEguT{Ad1gI6$T{Ad1gI689@B B B 	taQi(5;$q'	*BCA (%'''( ::;r#   c                  x   t        d      \  } }t        dd      \  }}}}}}t        t               dgt               dg      }dt               t	        t                     z  z  dt               t	        t                     z  z  z   |j                         k(  sJ t        t        | |z        dgt        | |z        dg      }	dt        | |z        t	        t        | |z              z  z  dt        | |z        t	        t        | |z              z  z  z   |	j                         k(  sJ t        ||z   |z  dg      }|j                         d|z  |z  t	        |      z  t	        |      z  d|z  |z  t	        |      z  t	        |      z  z   d|z  |z  t	        |      z  t	        |      z  z   d|z  |z  t	        |      z  t	        |      z  z   k(  sJ t        |||      }
t        |
dg      }|j                         dt        |t	        |      z  |t	        |      z  |t	        |      z        z  k(  sJ t        ||      }t        ||      }t        |dg|dg      }|j                         dt        |t	        |      z  |t	        |      z        z  dt        |t	        |      z  |t	        |      z        z  z   k(  sJ t        ||z   dg      }|j                         dt        |t	        |      z  |t	        |      z        z  dt        |t	        |      z  |t	        |      z        z  z   dt        |t	        |      z  |t	        |      z        z  z   dt        |t	        |      z  |t	        |      z        z  z   k(  sJ t        t        dd      t        dd            }t        |dg      }t        |      }
|
j                         dk(  sJ t        |d	g      }
|
j                         t        dd      t	        t        dd            z  k(  sJ t        |dg      }
|
j                         t        dd      t	        t        dd            z  k(  sJ t        t        t        j                  t        j                        t        t        j                  t        dd
                  }t        |dg      }t        |      }
|
j                         dk(  sJ t        |d	g      }
|
j                         t        t        j                  t        dd
            t	        t        t        j                  t        dd
                  z  k(  sJ t        |dg      }
|
j                         t        t        j                  t        j                        t	        t        t        j                  t        j                              z  k(  sJ y )Nx yzA B C D E FF)commutativer         ?r   r   r   )r   r   r   r   r   doitr   r   r   r   Halfr   )xyABCDEFr)   
d_with_symtt2t3tp1tp2s                  r$   	test_doitrB   $   s   5>DAq}%@Aq!Q1~.A()tv&'(,-FFH5 5 5 $qs)S)E!A#J+<=JqsF51:../ac6$qs),,-.2<//2CD D D 	!a%C !A668Aaq	)&)3Aaq	)&)34Aaq	)&)34 Aaq	)&)34 5 5 5 	aAACA668mAfQiK6!9aq	kBBC C C 
q!	B	q!	BS	B9%A668mAfQiK6!9EEmAfQiK6!9EEF G G G 	b#A668mAfQiK6!9EEmAfQiK6!9EEFmAfQiK6!9EEF mAfQiK6!9EEF G G G aU1b\
2CaA 	1A668q== 	1qc
A668uQ|fU1b\&:::::
1qc
A668uQ{VE!QK%88888 affaff-uQVVXb!_/M
NCaA 	1A668q== 	1qc
A668uQVVXb!_5uQVVXVXZ[_?]8^^^^^
1qc
A668uQVVQVV,veAFFAFF6K/LLLLLr#   c                      t        t        d      dgt        d      dg      } | j                  t                     t        t               t        d      z  dgt               t        d      z  dg      k(  sJ y Nr   r   r   )r   r   apply_opr   )r)   s    r$   test_apply_oprF   j   se    QA}-A::ces1vs(;),s1vs(;!= = = =r#   c                  ^   t        d      \  } }t        t               dgt               dg      }t	        dt               t        t                     z  z        t	        dt               t        t                     z  z        z   t	        |      k(  sJ t        t        | |z        dgt        | |z        dg      }t	        dt        | |z        t        t        | |z              z  z        t	        dt        | |z        t        t        | |z              z  z        z   t	        |      k(  sJ t	        dt               t        t                     z  z  t                     t	        dt               t        t                     z  z  t                     z   t	        |t                     k(  sJ y )Nr.   r   )basis)r   r   r   r   r   r   r   )r4   r5   r)   r<   s       r$   test_representrI   p   sj   5>DAq~.Ac576%'?234c46&.01237@|D D D $qs)S)E!A#J+<=Jc51:fU1Q3Z&889:c4!9VD1I%66789*  
 c46&.01@c576%'?2346BC!46"# # #r#   c                      t        t        d      dgt        d      dg      } | j                         }|d   t        d      k(  r|d   t        d      k(  sJ y rD   )r   r   states)r)   rK   s     r$   test_statesrL      sQ    QA}-AXXZF!9A6!9A#666#6r#   c                  0   t        t        d      dgt        d      dg      } | j                         }|d   dk(  r|d   dk(  sJ t        d      \  }}t        t        d      |gt        d      |g      } | j                         }|d   |k(  r|d   |k(  sJ y )Nr         ?r         ?r.   )r   r   probsr   )r)   rP   r4   r5   s       r$   
test_probsrQ      s    QA~.AGGIE8taD 000 5>DAqQc!fa[)AGGIE8q=U1X]**]r#   c                      t        d      \  } }t        t        d      | gt        d      |g      }|j                  d      |j                  d      f}|d   t        d      k(  r|d   t        d      k(  sJ y Nr.   r   r   )r   r   r   	get_state)r4   r5   r)   rK   s       r$   test_get_staterU      sm    5>DAqQc!fa[)Akk!nakk!n-F!9A6!9A#666#6r#   c                      t        d      \  } }t        t        d      | gt        d      |g      }|j                  d      |j                  d      f}|d   | k(  r|d   |k(  sJ y rS   )r   r   r   get_prob)r4   r5   r)   rP   s       r$   test_get_probrX      sb    5>DAqQc!fa[)AZZ]AJJqM*E8q=U1X]**]r#   c                     t        t        j                  t        j                        } t        t        j                  t        dd            }t	        | t        j                  f|t        j                  f      }t        |      }t        |      t        d      dz  k(  sJ |j                         t        d      dz  k(  sJ t        dd      }|rRt        |d      }t        |      }t        ||j                        sJ |j                  dk(  sJ |j                  dk(  sJ t        d	d
dgi      }|rE|rBt        |d      }t        |t              sJ |j                  dk(  sJ |j                  dk(  sJ y y y )Nr1   r   numpyz1.4.0)min_module_version)formatg9B.?r   scipyfromlistsparse)import_kwargszscipy.sparse)r   r   r3   r   r   r	   r   r   r   r&   ndarrayrealimagr   )updownr)   entnpnp_matr]   mats           r$   test_entropyrj      sC   	qvvqvv	B"a)DQVVtQVVn-A !*C1:Q!!!99;#a&("""	w7	;B	1W-fo&"**---xx....xx1}}'*xj1IJE.1#2333xx....xx1}} ur#   c                  F   t        t        j                  t        j                        } t        t        j                  t        dd            }t	        | df|df      }t        |      }|j                         dk(  sJ  G d dt              }t        d      \  }} |dd      } |dd	      }t	        |dg|dg      }|j                         dt        ||j                        z  dt        ||j                        z  z   k(  sJ t        |      }|j                         dk(  sJ y )
Nr1   r   r   r0   c                       e Zd Zd Zy)'test_eval_trace.<locals>.TestTimeDepKetc                      y)Nr   r"   )selfbraoptionss      r$   _eval_tracez3test_eval_trace.<locals>.TestTimeDepKet._eval_trace   s    r#   N)__name__
__module____qualname__rr   r"   r#   r$   TestTimeDepKetrm      s    	r#   rv   zx tr   r   )r   r   r3   r   r   r   r2   r   r   r   dual)rd   re   r)   r=   rv   r4   k1k2s           r$   test_eval_tracerz      s   	qvvqvv	B"a)DS	D#;'A
1A668s??  5>DAq	3	B	1	BS	B9%A668l2rww77l2rww778 9 9 9 	1A668s??r#   c                  	   t        t        j                  t        j                        } t        t        j                  t        dd            }t        j                  t        d      z  | z  t        j                  t        d      z  |z  z   }t        | t        |       z        }t        |t        |      z        }t        |t        |      z        }t        t        ||      dz
        dk  sJ t        ||      dk  sJ t        t        ||      t        j                  t        d      z  z
        dk  sJ t        t        ||      t        j                  t        d      z  z
        dk  sJ t        | dg      }t        |dg      }t        |dg      }t        t        ||      dz
        dk  sJ t        t        ||            dk  sJ t        t        ||      t        j                  t        d      z  z
        dk  sJ t        t        ||      t        j                  t        d      z  z
        dk  sJ t        d      dz  | z  t        j                  |z  z   }t        |dg|dg      }t        |dg|dg      }t        t        ||      d	z
        dk  sJ t        t        ||      t        ||      z
        dk  sJ t        d
      }	t        d      }
t        j                  t        d      z  |	z  t        j                  t        d      z  |
z  z   }t        t        dd            |	z  t        j                  t        d      z  |
z  z   }t        |	dg      }t        |
dg      }t        |dg      }t        ||      dk(  sJ t        ||      dk(  sJ t        t        ||      dt        d      z  z
        dk  sJ t        t        ||      dt        d      z  z
        dk  sJ t        |dg|dg      }t        |dg|dg      }t        t        ||      dz
        dk  sJ t        t        ||      dz
        dk  sJ t        t        ||      t        ||      z
        dk  sJ ddgddgddggddgddggt        t        fd       ddgddggg dg dg dgt        t        fd       d\  t        t        fd       y )Nr1   r   r   gMbP?r0      rO   rN   gʡE?01r   gffffff?g333333?g?g?gZd;?c                      t               S Nr
   mat1mat2s   r$   r%   ztest_fidelity.<locals>.<lambda>      xd3 r#   )r   r   r   c                      t               S r   r   r   s   r$   r%   ztest_fidelity.<locals>.<lambda>  r   r#   )r   r   c                      t               S r   r   )r4   r5   s   r$   r%   ztest_fidelity.<locals>.<lambda>!  s    x1~ r#   )r   r   r3   r   Oner   r   r   absr
   r   r   r   r(   )rd   re   updownup_dmdown_dm	updown_dmupdown2d1d2state1state2state3state4	state1_dm	state2_dm	state3_dmr   r   r4   r5   s                   @@@@r$   test_fidelityr      s   	qvvqvv	B"a)DeeDGmR155a=$"66F b6":o&Evd|+,G&6&>12Ixu%)*T111E7#d***xy)QUU47];<tCCCx	7+quuT!W}=>EEE RIEtSk"G&Ixu%)*T111xw'(4///xy)QUU47];<tCCCx	7+quuT!W}=>EEE 1gailQVVD[(G	&$'4	1B	&$'4	1BxB%'(4///xB(2r"223d::: 3ZF3ZFUU47]6!AEE$q'M&$88F(1a.!&(155a=+??F$I$I$IIy)Q...Iy)Q...x	9-$q'	9:TAAAx	9-$q'	9:TAAA 
&$&$	0B	&$&$	0BxB!#$t+++xB%'(4///xB(2r"223d::: FFFD FFD
:34 FFDD :34 DAq
:-.r#   N)5sympy.core.numbersr   sympy.core.singletonr   sympy.core.symbolr   &sympy.functions.elementary.exponentialr   sympy.externalr   sympy.physics.quantum.densityr   r	   r
   sympy.physics.quantum.stater   r   sympy.physics.quantum.qubitr   sympy.physics.quantum.representr   sympy.physics.quantum.daggerr   sympy.physics.quantum.cartesianr   r   r   r   sympy.physics.quantum.spinr   sympy.physics.quantum.operatorr   sympy.physics.quantum.tracer   sympy.functionsr   sympy.testing.pytestr   !sympy.physics.quantum.matrixutilsr   #sympy.physics.quantum.tensorproductr   r,   rB   rF   rI   rL   rQ   rU   rX   rj   rz   r   r"   r#   r$   <module>r      s|    ' " % 6 ( D D 7 - 5 / B B , 7 *   ' A =<CML=#$7	+7+80K/r#   