
    \h%                     6   S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
JrJrJr  S SKJrJr  S SKJr  S S	KJr  S S
KJr  S SKJrJrJrJr  S SKJr  S SKJr  S SK J!r!  S SK"J#r#  S SK$J%r%  S SK&J'r'  S SK(J)r)  S r*S r+S r,S r-S r.S r/S r0S r1S r2S r3S r4g)    )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            
         [        [        [        S5      S/[        S5      S/5      [        5      (       d   e[        [        [        S5      S[	        S5      -  /[        S5      S[	        S5      -  /5      [        5      (       d   e[        [        S5      S[	        S5      -  /[        S5      S[	        S5      -  /5      n U R
                   H  u  p[        U[        5      (       a  M   e   [        [        S 5        g )Nr         ?   00   11c                  B    [        [        S5      /[        S5      /5      $ )Nr   r   )r   r        `/var/www/auris/envauris/lib/python3.13/site-packages/sympy/physics/quantum/tests/test_density.py<lambda> 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EguT{Ad1gI6$T{Ad1gI689@B B B B 	taQi(5;$q'	*BCA%''''   ::;r#   c                  l   [        S5      u  p[        SSS9u  p#pEpg[        [        5       S/[        5       S/5      nS[        5       [	        [        5       5      -  -  S[        5       [	        [        5       5      -  -  -   UR                  5       :X  d   e[        [        X-  5      S/[        X-  5      S/5      n	S[        X-  5      [	        [        X-  5      5      -  -  S[        X-  5      [	        [        X-  5      5      -  -  -   U	R                  5       :X  d   e[        X#-   U-  S/5      nUR                  5       SU-  U-  [	        U5      -  [	        U5      -  SU-  U-  [	        U5      -  [	        U5      -  -   SU-  U-  [	        U5      -  [	        U5      -  -   SU-  U-  [	        U5      -  [	        U5      -  -   :X  d   e[        X#U5      n
[        U
S/5      nUR                  5       S[        U[	        U5      -  U[	        U5      -  U[	        U5      -  5      -  :X  d   e[        X#5      n[        XE5      n[        US/US/5      nUR                  5       S[        U[	        U5      -  U[	        U5      -  5      -  S[        U[	        U5      -  U[	        U5      -  5      -  -   :X  d   e[        X-   S/5      nUR                  5       S[        U[	        U5      -  U[	        U5      -  5      -  S[        U[	        U5      -  U[	        U5      -  5      -  -   S[        U[	        U5      -  U[	        U5      -  5      -  -   S[        U[	        U5      -  U[	        U5      -  5      -  -   :X  d   e[        [        SS5      [        SS5      5      n[        US/5      n[        U5      n
U
R                  5       S:X  d   e[        US	/5      n
U
R                  5       [        SS5      [	        [        SS5      5      -  :X  d   e[        US/5      n
U
R                  5       [        SS5      [	        [        SS5      5      -  :X  d   e[        [        [        R                  [        R                  5      [        [        R                  [        SS
5      5      5      n[        US/5      n[        U5      n
U
R                  5       S:X  d   e[        US	/5      n
U
R                  5       [        [        R                  [        SS
5      5      [	        [        [        R                  [        SS
5      5      5      -  :X  d   e[        US/5      n
U
R                  5       [        [        R                  [        R                  5      [	        [        [        R                  [        R                  5      5      -  :X  d   eg )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_doitrC   $   s   5>DA}%@A!~.A()tv&'(,-FFH5 5 5 $qs)S)E!#J+<=JqsF5:../ac6$qs),,-.2<//2CD D D 	!%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 	aA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 	#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                      [        [        S5      S/[        S5      S/5      n U R                  [        5       5      [        [        5       [        S5      -  S/[        5       [        S5      -  S/5      :X  d   eg Nr   r   r   )r   r   apply_opr   )r*   s    r$   test_apply_oprG   j   se    QA}-A::ces1vs(;),s1vs(;!= = = =r#   c                  D   [        S5      u  p[        [        5       S/[        5       S/5      n[	        S[        5       [        [        5       5      -  -  5      [	        S[        5       [        [        5       5      -  -  5      -   [	        U5      :X  d   e[        [        X-  5      S/[        X-  5      S/5      n[	        S[        X-  5      [        [        X-  5      5      -  -  5      [	        S[        X-  5      [        [        X-  5      5      -  -  5      -   [	        U5      :X  d   e[	        S[        5       [        [        5       5      -  -  [        5       S9[	        S[        5       [        [        5       5      -  -  [        5       S9-   [	        U[        5       S9:X  d   eg )Nr/   r   )basis)r   r   r   r   r   r   r   )r5   r6   r*   r=   s       r$   test_representrJ   p   s\   5>DA~.Ac576%'?234c46&.01237@|D D D $qs)S)E!#J+<=Jc5:fU13Z&889:c49VDI%66789*  
 c46&.01@c576%'?2346BC!46"# # #r#   c                      [        [        S5      S/[        S5      S/5      n U R                  5       nUS   [        S5      :X  a  US   [        S5      :X  d   eg rE   )r   r   states)r*   rL   s     r$   test_statesrM      sQ    QA}-AXXZF!9A6!9A#666#6r#   c                  6   [        [        S5      S/[        S5      S/5      n U R                  5       nUS   S:X  a	  US   S:X  d   e[        S5      u  p#[        [        S5      U/[        S5      U/5      n U R                  5       nUS   U:X  a	  US   U:X  d   eg )Nr         ?r         ?r/   )r   r   probsr   )r*   rQ   r5   r6   s       r$   
test_probsrR      s    QA~.AGGIE8taD 000 5>DAQc!fa[)AGGIE8q=U1X]**]r#   c                      [        S5      u  p[        [        S5      U /[        S5      U/5      nUR                  S5      UR                  S5      4nUS   [        S5      :X  a  US   [        S5      :X  d   eg Nr/   r   r   )r   r   r   	get_state)r5   r6   r*   rL   s       r$   test_get_staterV      sk    5>DAQc!fa[)Akk!nakk!n-F!9A6!9A#666#6r#   c                      [        S5      u  p[        [        S5      U /[        S5      U/5      nUR                  S5      UR                  S5      4nUS   U :X  a	  US   U:X  d   eg rT   )r   r   r   get_prob)r5   r6   r*   rQ   s       r$   test_get_probrY      s`    5>DAQc!fa[)AZZ]AJJqM*E8q=U1X]**]r#   c                     [        [        R                  [        R                  5      n [        [        R                  [        SS5      5      n[	        U [        R                  4U[        R                  45      n[        U5      n[        U5      [        S5      S-  :X  d   eUR                  5       [        S5      S-  :X  d   e[        SSS9nU(       aU  [        USS9n[        U5      n[        XTR                  5      (       d   eUR                  S:X  d   eUR                  S:X  d   e[        S	S
S/0S9nU(       aN  U(       aF  [        USS9n[        U[        5      (       d   eUR                  S:X  d   eUR                  S:X  d   eg g g )Nr2   r   numpyz1.4.0)min_module_version)formatg9B.?r   scipyfromlistsparse)import_kwargszscipy.sparse)r   r   r4   r   r   r	   r   r   r   r'   ndarrayrealimagr   )updownr*   entnpnp_matr^   mats           r$   test_entropyrk      sG   	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3xx....xx1}} ur#   c                  F   [        [        R                  [        R                  5      n [        [        R                  [        SS5      5      n[	        U S4US45      n[        U5      nUR                  5       S:X  d   e " S S[        5      n[        S5      u  pSU" SS5      nU" SS	5      n[	        US/US/5      nUR                  5       S[        XfR                  5      -  S[        XwR                  5      -  -   :X  d   e[        U5      nUR                  5       S:X  d   eg )
Nr2   r   r   r1   c                       \ rS rSrS rSrg)'test_eval_trace.<locals>.TestTimeDepKet   c                     g)Nr   r"   )selfbraoptionss      r$   _eval_trace3test_eval_trace.<locals>.TestTimeDepKet._eval_trace   s    r#   r"   N)__name__
__module____qualname____firstlineno__rt   __static_attributes__r"   r#   r$   TestTimeDepKetrn      s    	r#   r{   zx tr   r   )r   r   r4   r   r   r   r3   r   r   r   dual)re   rf   r*   r>   r{   r5   k1k2s           r$   test_eval_tracer      s    	qvvqvv	B"a)DS	D#;'A
1A668s??  5>DA	3	B	1	BS	B9%A668l2ww77l2ww778 9 9 9 	1A668s??r#   c                  	  ^^^^ [        [        R                  [        R                  5      n [        [        R                  [        SS5      5      n[        R                  [        S5      -  U -  [        R                  [        S5      -  U-  -   n[        U [        U 5      -  5      n[        U[        U5      -  5      n[        U[        U5      -  5      n[        [        X35      S-
  5      S:  d   e[        X45      S:  d   e[        [        X55      [        R                  [        S5      -  -
  5      S:  d   e[        [        XT5      [        R                  [        S5      -  -
  5      S:  d   e[        U S/5      n[        US/5      n[        US/5      n[        [        X35      S-
  5      S:  d   e[        [        X45      5      S:  d   e[        [        X55      [        R                  [        S5      -  -
  5      S:  d   e[        [        XT5      [        R                  [        S5      -  -
  5      S:  d   e[        S5      S-  U -  [        R                  U-  -   n[        US/US/5      n[        US/US/5      n[        [        Xx5      S	-
  5      S:  d   e[        [        X5      [        Xx5      -
  5      S:  d   e[        S
5      n	[        S5      n
[        R                  [        S5      -  U	-  [        R                  [        S5      -  U
-  -   n[        [        SS5      5      U	-  [        R                  [        S5      -  U
-  -   n[        U	S/5      n[        U
S/5      n[        US/5      n[        X5      S:X  d   e[        X5      S:X  d   e[        [        X5      S[        S5      -  -
  5      S:  d   e[        [        X5      S[        S5      -  -
  5      S:  d   e[        US/US/5      n[        US/US/5      n[        [        Xw5      S-
  5      S:  d   e[        [        Xx5      S-
  5      S:  d   e[        [        Xx5      [        X5      -
  5      S:  d   eSS/SS/SS//mSS/SS//m[        [        UU4S j5        SS/SS//m/ SQ/ SQ/ SQ/m[        [        UU4S j5        Su  mm[        [        UU4S j5        g )Nr2   r   r   gMbP?r1      rP   rO   gʡE?01r   gffffff?g333333?g?g?gZd;?c                     > [        T T5      $ Nr
   mat1mat2s   r$   r%   test_fidelity.<locals>.<lambda>      xd3r#   )r   r   r   c                     > [        T T5      $ r   r   r   s   r$   r%   r     r   r#   )r   r   c                     > [        T T5      $ r   r   )r5   r6   s   r$   r%   r   !  s    x1~r#   )r   r   r4   r   Oner   r   r   absr
   r   r   r   r)   )re   rf   updownup_dmdown_dm	updown_dmupdown2d1d2state1state2state3state4	state1_dm	state2_dm	state3_dmr   r   r5   r6   s                   @@@@r$   test_fidelityr      sd   	qvvqvv	B"a)DeeDGmR155a=$"66F b6":o&Evd|+,G&6&>12Ix%)*T111E#d***x)QUU47];<tCCCx	+quuT!W}=>EEE RIEtSk"G&Ix%)*T111x'(4///x)QUU47];<tCCCx	+quuT!W}=>EEE 1gailQVVD[(G	&$'4	1B	&$'4	1Bx%'(4///x(2"223d::: 3ZF3ZFUU47]6!AEE$q'M&$88F(1a.!&(155a=+??F$I$I$II)Q...I)Q...x	-$q'	9:TAAAx	-$q'	9:TAAA 
&$&$	0B	&$&$	0Bx!#$t+++x%'(4///x(2"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-   rC   rG   rJ   rM   rR   rV   rY   rk   r   r   r"   r#   r$   <module>r      s|    ' " % 6 ( D D 7 - 5 / B B , 7 *   ' A =<CML=#$7	+7+80K/r#   