
    g%                     8   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 Z4dS )    )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            
      b   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                    sJ t          t          d            d S )Nr         ?   00   11c                  Z    t          t          d          gt          d          g          S )Nr   r   )r   r        d/var/www/html/ai-engine/env/lib/python3.11/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   gs1vvsmc!ffc];;WEEEEEguT{{Ad1ggI6$T{{Ad1ggI68 89@B B B B B 	taQi(5;;$q''	*BCCA ( (%'''''' :::;;;;;r#   c                  Z   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   |                                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   |	                                k    sJ t          ||z   |z  dg          }|                                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          }|                                dt          |t	          |          z  |t	          |          z  |t	          |          z            z  k    sJ t          ||          }t          ||          }t          |dg|dg          }|                                dt          |t	          |          z  |t	          |          z            z  dt          |t	          |          z  |t	          |          z            z  z   k    sJ t          ||z   dg          }|                                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          |          }
|
                                dk    sJ t          |d	g          }
|
                                t          dd          t	          t          dd                    z  k    sJ t          |dg          }
|
                                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          |          }
|
                                dk    sJ t          |d	g          }
|
                                t          t          j
        t          dd
                    t	          t          t          j
        t          dd
                              z  k    sJ t          |dg          }
|
                                t          t          j
        t          j
                  t	          t          t          j
        t          j
                            z  k    sJ d S )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()tvv&'(,-FFHH5 5 5 5 $qs))S)E!A#JJ+<==JqsF51::.../ac6$qs)),,,-.2<//2C2CD D D D 	!a%C !!A6688Aaq		)&))3Aaq		)&))34Aaq		)&))34 Aaq		)&))34 5 5 5 5 	aAACA6688mAfQiiK6!99aq		kBBBC C C C 
q!		B	q!		BS	B9%%A6688mAfQiiK6!99EEEmAfQiiK6!99EEEF G G G G 	b#A6688mAfQiiK6!99EEEmAfQiiK6!99EEEFmAfQiiK6!99EEEF mAfQiiK6!99EEEF G G G G aU1b\\
2
2CaA 	1A6688q==== 	1qc

A6688uQ||fU1b\\&:&::::::
1qc

A6688uQ{{VE!QKK%8%888888 afaf--uQVXb!__/M/M
N
NCaA 	1A6688q==== 	1qc

A6688uQVXb!__55uQVXVXZ[__?]?]8^8^^^^^^
1qc

A6688uQVQV,,veAFAF6K6K/L/LLLLLLLLr#   c                  D   t          t          d          dgt          d          dg          } |                     t                                t          t                      t          d          z  dgt                      t          d          z  dg          k    sJ d S Nr   r   r   )r   r   apply_opr   )r)   s    r$   test_apply_oprF   j   s    QA}--A::cees1vvs(;),s1vv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 d S )Nr.   r   )basis)r   r   r   r   r   r   r   )r4   r5   r)   r<   s       r$   test_representrI   p   s   5>>DAq~..Ac5776%''??2344c466&..012237@||D D D D $qs))S)E!A#JJ+<==Jc51::fU1Q3ZZ&8&889::c4!99VD1II%6%667889*   
 c466&..01@@@c5776%''??23466BBBC!466"""# # # # # #r#   c                      t          t          d          dgt          d          dg          } |                                 }|d         t          d          k    r|d         t          d          k    sJ d S rD   )r   r   states)r)   rK   s     r$   test_statesrL      sg    QA}--AXXZZF!9A6!9A#6#6#6#6#6#6r#   c                     t          t          d          dgt          d          dg          } |                                 }|d         dk    r|d         dk    sJ t          d          \  }}t          t          d          |gt          d          |g          } |                                 }|d         |k    r|d         |k    sJ d S )Nr         ?r         ?r.   )r   r   probsr   )r)   rP   r4   r5   s       r$   
test_probsrQ      s    QA~..AGGIIE8taD 0 0 0 0 5>>DAqQc!ffa[))AGGIIE8q==U1X]]]]]]r#   c                  B   t          d          \  } }t          t          d          | gt          d          |g          }|                    d          |                    d          f}|d         t          d          k    r|d         t          d          k    sJ d S Nr.   r   r   )r   r   r   	get_state)r4   r5   r)   rK   s       r$   test_get_staterU      s    5>>DAqQc!ffa[))Akk!nnakk!nn-F!9A6!9A#6#6#6#6#6#6r#   c                     t          d          \  } }t          t          d          | gt          d          |g          }|                    d          |                    d          f}|d         | k    r|d         |k    sJ d S rS   )r   r   r   get_prob)r4   r5   r)   rP   s       r$   test_get_probrX      ss    5>>DAqQc!ffa[))AZZ]]AJJqMM*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 |                                t          d          dz  k    sJ t          dd          }|rQt          |d          }t          |          }t          ||j
                  sJ |j        dk    sJ |j        dk    sJ t          d	d
dgi          }|rD|rDt          |d          }t          |t                    sJ |j        dk    sJ |j        dk    sJ d S d S d S )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      s   	qvqv		B"a))DQVtQVn--A !**C1::Q!!!!99;;#a&&(""""	w7	;	;	;B	 1W---foo&"*-----x.....x1}}}}'*xj1IJJJE  .111#233333x.....x1}}}}   
 }r#   c                     t          t          j        t          j                  } t          t          j        t          dd                    }t	          | df|df          }t          |          }|                                dk    sJ  G d dt                    }t          d          \  }} |dd          } |dd	          }t	          |dg|dg          }|                                dt          ||j
                  z  dt          ||j
                  z  z   k    sJ t          |          }|                                dk    sJ d S )
Nr1   r   r   r0   c                       e Zd Zd ZdS )'test_eval_trace.<locals>.TestTimeDepKetc                     dS )Nr   r"   )selfbraoptionss      r$   _eval_tracez3test_eval_trace.<locals>.TestTimeDepKet._eval_trace   s    1r#   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      sJ   	qvqv		B"a))DS	D#;''A
1A6688s????        5>>DAq	3		B	1		BS	B9%%A6688l2rw777l2rw7778 9 9 9 9 	1A6688s??????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           d S )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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   	qvqv		B"a))DeDGGmR15a=$"66F b6"::o&&Evd||+,,G&6&>>122Ixu%%)**T1111E7##d****xy))QU477];<<tCCCCx	7++quT!WW}=>>EEEE RIEtSk""G&&Ixu%%)**T1111xw''((4////xy))QU477];<<tCCCCx	7++quT!WW}=>>EEEE 1ggailQVD[(G	&$'4	1	1B	&$'4	1	1BxB%'((4////xB(2r"2"2233d:::: 3ZZF3ZZFU477]6!AE$q''M&$88F(1a..!!&(15a=+??F$$I$$I$$IIy))Q....Iy))Q....x	9--$q''	9::TAAAAx	9--$q''	9::TAAAA 
&$&$	0	0B	&$&$	0	0BxB!#$$t++++xB%'((4////xB(2r"2"2233d:::: FFFD FFD
:33333444 FFDIIIIIID :3333344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 6 6 6 6 6 ( ( ( ( ( ( D D D D D D D D D D 7 7 7 7 7 7 7 7 - - - - - - 5 5 5 5 5 5 / / / / / / B B B B B B B B B B B B , , , , , , 7 7 7 7 7 7 * * * * * *             ' ' ' ' ' ' A A A A A A = = = = = =< < <CM CM CML= = =# # #$7 7 7	+ 	+ 	+7 7 7+ + +  8  0K/ K/ K/ K/ K/r#   