|
22 | 22 | (*THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THEIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE AREDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLEFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIALDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ORSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVERCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USEOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*)
|
23 | 23 |
|
24 | 24 |
|
25 |
| -(* ::Subsection:: *) |
| 25 | +(* ::Subsection::Closed:: *) |
26 | 26 | (*Preamble*)
|
27 | 27 |
|
28 | 28 |
|
|
104 | 104 | AssignUsage[RandomHermitian,$Usages];
|
105 | 105 |
|
106 | 106 |
|
107 |
| -(* ::Subsection:: *) |
| 107 | +(* ::Subsection::Closed:: *) |
108 | 108 | (*Error Messages*)
|
109 | 109 |
|
110 | 110 |
|
|
162 | 162 | Begin["`Private`"];
|
163 | 163 |
|
164 | 164 |
|
165 |
| -(* ::Subsection:: *) |
| 165 | +(* ::Subsection::Closed:: *) |
166 | 166 | (*States and Operators*)
|
167 | 167 |
|
168 | 168 |
|
|
517 | 517 | VecForm[a__,opts:OptionsPattern[VecForm]]:=Map[VecForm[#,opts]&,{a}]
|
518 | 518 |
|
519 | 519 |
|
520 |
| -(* ::Subsection:: *) |
| 520 | +(* ::Subsection::Closed:: *) |
521 | 521 | (*Symbolic Evaluation*)
|
522 | 522 |
|
523 | 523 |
|
|
555 | 555 | }
|
556 | 556 |
|
557 | 557 |
|
558 |
| -(* ::Subsubsection:: *) |
| 558 | +(* ::Subsubsection::Closed:: *) |
559 | 559 | (*QSimplify*)
|
560 | 560 |
|
561 | 561 |
|
|
574 | 574 | QSimplify[expr_,opts:OptionsPattern[]]:= QSimplifyCached[expr,opts]
|
575 | 575 |
|
576 | 576 |
|
| 577 | +QSimplify[Com[a_,b_,n_?Positive],opts:OptionsPattern[]]:=QSimplify[Com[a,QSimplify[Com[a,b],opts],n-1],opts] |
| 578 | +QSimplify[ACom[a_,b_,n_?Positive],opts:OptionsPattern[]]:=QSimplify[ACom[a,QSimplify[ACom[a,b],opts],n-1],opts] |
| 579 | + |
| 580 | + |
577 | 581 | (* ::Text:: *)
|
578 | 582 | (*Memoized function for QSimplify*)
|
579 | 583 |
|
|
624 | 628 | ]
|
625 | 629 |
|
626 | 630 |
|
627 |
| -(* ::Subsubsection:: *) |
| 631 | +(* ::Subsubsection::Closed:: *) |
628 | 632 | (*Linear Algebra Rules*)
|
629 | 633 |
|
630 | 634 |
|
|
644 | 648 | Dot[QPower[a_,n_],a_]:> QPower[a,n+1],
|
645 | 649 | Dot[a_,QPower[a_,n_]]:> QPower[a,n+1],
|
646 | 650 | Dot[QPower[a_,m_],QPower[a_,n_]]:> QPower[a,n+m],
|
| 651 | +Dot[CircleTimes[a1_,b1__],CircleTimes[a2_,b2__]]:> CircleTimes@@MapThread[Dot,{{a1,b1},{a2,b2}}], |
647 | 652 | (* CircleTimes *)
|
648 | 653 | KroneckerProduct[a_,b__]:> CircleTimes[a,b],
|
649 | 654 | CircleTimes[Plus[a_,b__],c_]:> Plus@@Map[CircleTimes[#,c]&,{a,b}],
|
|
683 | 688 | Com[QPower[a_,n_],b_]:> Dot[a,Com[QPower[a,n-1],b]]+Dot[Com[QPower[a,n-1],b],a],
|
684 | 689 | Com[a_,QPower[b_,n_]]:> Dot[b,Com[a,QPower[b,n-1]]]+Dot[Com[a,QPower[b,n-1]],b],
|
685 | 690 | Com[CircleTimes[a1_,b1__],CircleTimes[a2_,b2__]]:>
|
686 |
| - CircleTimes[Com[a1,a2],Dot[b1,b2]] |
| 691 | + CircleTimes[Com[a1,a2],Dot[CircleTimes[b1],CircleTimes[b2]]] |
687 | 692 | +CircleTimes[Dot[a1,a2],Com[CircleTimes[b1],CircleTimes[b2]]],
|
| 693 | +Com[a_,b_,n_?Positive]:> Com[a,Com[a,b],n-1], |
688 | 694 | (* ACom *)
|
689 |
| -ACom[a_,b_]:> a.b+b.a |
| 695 | +ACom[a_,b_]:> a.b+b.a, |
| 696 | +ACom[a_,b_,n_?Positive]:> ACom[a,ACom[a,b],n-1] |
690 | 697 | };
|
691 | 698 |
|
692 | 699 |
|
|
755 | 762 | (* X and Y expand to P and M *)
|
756 | 763 | $QSimplifySpinPM={
|
757 | 764 | Spin["X"]:> (Spin["P"]+Spin["M"])/2,
|
758 |
| -Spin["Y"]:> (-I*Spin["P"]+I*Spin["M"])/2}; |
| 765 | +Spin["Y"]:> (-I*Spin["P"]+I*Spin["M"])/2 |
| 766 | +}; |
759 | 767 | (* P and M expand to X and Y *)
|
760 | 768 | $QSimplifySpinXY={
|
761 | 769 | Spin["P"]:> Spin["X"]+I*Spin["Y"],
|
762 |
| -Spin["M"]:> Spin["X"]-I*Spin["Y"]}; |
| 770 | +Spin["M"]:> Spin["X"]-I*Spin["Y"] |
| 771 | +}; |
763 | 772 |
|
764 | 773 |
|
765 | 774 | (* ::Text:: *)
|
|
0 commit comments