# ipython/ipython

Updating notebook examples to current format.

1 parent a86896d commit bee9c06597aa5de20069a9ef40de4ff782f51daf ellisonbg committed
607 docs/examples/notebooks/basic_quantum.ipynb
 @@ -1 +1,606 @@ -{"cells":[{"cell_type":"text","text":"

Basic Symbolic Quantum Mechanics

"},{"code":"%load_ext sympyprinting","cell_type":"code","prompt_number":1},{"code":"from sympy import sqrt, symbols, Rational\nfrom sympy import expand, Eq, Symbol, simplify, exp, sin\nfrom sympy.physics.quantum import *\nfrom sympy.physics.quantum.qubit import *\nfrom sympy.physics.quantum.gate import *\nfrom sympy.physics.quantum.grover import *\nfrom sympy.physics.quantum.qft import QFT, IQFT, Fourier\nfrom sympy.physics.quantum.circuitplot import circuit_plot","cell_type":"code","prompt_number":2},{"cell_type":"text","text":"

Bras and Kets

"},{"cell_type":"text","text":"Create symbolic states"},{"code":"phi, psi = Ket('phi'), Ket('psi')\nalpha, beta = symbols('alpha beta', complex=True)","cell_type":"code","prompt_number":3},{"cell_type":"text","text":"Create a superposition"},{"code":"state = alpha*psi + beta*phi; state\n","cell_type":"code","prompt_number":4},{"cell_type":"text","text":"Dagger the superposition and multiply the original"},{"code":"ip = Dagger(state)*state; ip\n","cell_type":"code","prompt_number":5},{"cell_type":"text","text":"Distribute"},{"code":"qapply(expand(ip))\n","cell_type":"code","prompt_number":6},{"cell_type":"text","text":"

Operators

"},{"cell_type":"text","text":"Create symbolic operators"},{"code":"A = Operator('A')\nB = Operator('B')\nC = Operator('C')","cell_type":"code","prompt_number":7},{"cell_type":"text","text":"Test commutativity"},{"code":"A*B == B*A\n","cell_type":"code","prompt_number":8},{"cell_type":"text","text":"Distribute A+B squared"},{"code":"expand((A+B)**2)","cell_type":"code","prompt_number":9},{"cell_type":"text","text":"Create a commutator"},{"code":"comm = Commutator(A,B); comm\n","cell_type":"code","prompt_number":10},{"cell_type":"text","text":"Carry out the commutator"},{"code":"comm.doit()","cell_type":"code","prompt_number":11},{"cell_type":"text","text":"Create a more fancy commutator"},{"code":"comm = Commutator(A*B,B+C); comm","cell_type":"code","prompt_number":12},{"cell_type":"text","text":"Expand the commutator"},{"code":"comm.expand(commutator=True)","cell_type":"code","prompt_number":13},{"cell_type":"text","text":"Carry out and expand the commutators"},{"code":"_.doit().expand()\n","cell_type":"code","prompt_number":14},{"cell_type":"text","text":"Take the dagger"},{"code":"Dagger(_)","cell_type":"code","prompt_number":15},{"code":"%notebook save basic_quantum.ipynb","cell_type":"code","prompt_number":16},{"code":"%notebook load quantum_computing.ipynb","cell_type":"code","prompt_number":19}]} + + + basic_quantum + 2 + + + + + <h1>Basic Symbolic Quantum Mechanics</h1> + + + %load_ext sympyprinting + python + 18 + 1 + + + + from sympy import sqrt, symbols, Rational +from sympy import expand, Eq, Symbol, simplify, exp, sin +from sympy.physics.quantum import * +from sympy.physics.quantum.qubit import * +from sympy.physics.quantum.gate import * +from sympy.physics.quantum.grover import * +from sympy.physics.quantum.qft import QFT, IQFT, Fourier +from sympy.physics.quantum.circuitplot import circuit_plot + python + 19 + 1 + + + + <h2>Bras and Kets</h2> + + + Create symbolic states + + + phi, psi = Ket('phi'), Ket('psi') +alpha, beta = symbols('alpha beta', complex=True) + python + 20 + 1 + + + + Create a superposition + + + state = alpha*psi + beta*phi; state + + python + 21 + 0 + + + pyout + α⋅❘ψ⟩ + β⋅❘φ⟩ + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUY4QUFBQVhDQVlBQUFCdFI1UDBBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFCSEJKUkVGVQphSUh0MlZtc1hXTVVCL0RmdmIwZHFCWXRqWkNyV3ZkQk9pRFZs +bXBUTFRXMFVpU0drSGpScG9aRVRTVWtUUXlKc2VhSUd6RlVFU1hFCkEwcnd3SldLNFVFMFNqd2dh +Rk5xbmtyYTRQS3c5czdaZDkrOTl6Mm5kMEJ5L3kvbmZHdDlhNTMxLzc3MXJXL3RmUmpFL3hMM1k4 +eS8KSFVRL28xODVOdmZDZGpTR05URC9KZ3pOeVM3SGhGN0UwRmVZaG5ZUjQxcGNpeWFOY2J3VUIr +UmtsZnhhR2d5eU54aUpQM0t5cDdBYwpWd3hnSEhrc3hWKzRXTVRYakMvd1NZTisydkI1VGxiSnJ6 +ZVozd2pHNHRzQytTYnNnVkc5OUQ5dEorMk93NTlZbzVZWW5mZ05oelhnCnAxbHNZQjZWL0FacThZ +OUNSNGx1TlpiMDB2OGRPMkV6Q3ZQeFNFNCtYbVR4MnczNG1vcjNTM1NsL0FacThXY29KL01XWmc1 +Z0xDbk8Kd21NRjhodnhpaWdaOVdLdTh1UXE1VmRVOHljbWdiVmlITDdHbGZnbDBUZmg3d0s3WVRn +UFIySURic25vaHFvZDY5dkZ4WFJxUnI4TwppL0ZzQ1lIK3dIalJ6WXpHUTlndVl2OEtSeXZtbUVV +clZ1QjduSVNEc0F0dXdLZTV1WFh4TzFqVXFVWEp1Qm4zSmNicHp0MmRmRDZKCmZUSzJsMkNTMk9Y +dDJDMlI3NlhyaGJNYXYrZCt0MFZ4RnRhTGpnYm5qOHJFTkVwc3dtcVI3WjFZa09qeUhGTmNoSmV4 +djFpWGV4UDUKNGRpaWU5ZlRJNzgyc2V0WDUrUW5paXlZaWYweStteGdRM0ZYOG4wRmZsRGJyTk5F +MlVreFZ2Zk1nS3R3U0ZXQUZlaG9jUDRpd1NlUAo0ZmhPY0tONDhjL0JSMnJKTlEzTE12cm44R0NC +NzBwK2E4WGlqOHpKVzhYaUx4Y0x2MjlCWU1QRnhzQkdjVnBTWEk4aG1mRVFrV1Y1CmpGSExvRWJS +MGVEOGxibVlzdGlJVjVQditjV2ZnQjFZbUpHdEVJbWI0Z0hGOTFzM2Ztbk5iOGF4ZUVHMFdWbHNU +ajZQRUgzc2x3V08KZDRqak5obFRSTStjb2tuWE5tdzZIaTd3a2M0dHd3UThvL2hpYmhQM1RCNWJ4 +TW5ObzBWeGE5aUNBL0ZTU1F3TDhWTk8zNmJyTThGMAp2Rk5pMzRWZnV2aVRSVzMrb01TSWFLZVdW +dWhoamlDMVBobnZMUzdzTENiaWlRTGJjMFhXbE9FejVmMThCK2IxRUZ1SzBVbGNSVGhaClhKcnJT +dlNUOGJIYVpkd2luaE5TdElua1cxbGcyNDFmbWtXYkVvZjVoU0pxVzZmWTdlMGxRYVhveERhMXJK +cUgxekw2WmJseGloYXgKdWUvMTRMOHZNQmZINjM2Q1drUUpXWVBYUzJ6WHE1VmQ0a0hzM2VSN2sr +aWEydkZpZ2U5dS9OSUFmaFpIK3ZpYzBRTGNLbzdSdUdUKwpLU1dCd2ZPaWxwNlFqQ2VKMHpRQ3E4 +U2RzclhBN25ROFhlRzNMekVEMTRpMk9LMzdhY2Z5bzY0bE00OTE0a245ekdROFh5VFRXSEdhCk4r +Q3lBcnRDZnRrKy8yemNKaTZaelVsQWIrSUMwWUxlSTE0OFBWNFIzRlpSODY3RExORlJyRXAwN2FK +MEZHRng4dnNEZ1JHaXVWaUsKUjBYaTdZazNjTDdxL240YmpoRk54R3hSWnNkZ1Y5eXMrTjZoSC9p +VjljQXBwdUxDT3Z6TVVwMXQ5YUNqem5tN0s2N0haYWppT0VTdAp2YTVDS2IvK2ZLU2ZyNzVGV2FL +NDlXd0UzOVE1YjY0NHpYMkJRNVcvejhtaWxGOXZGcjlUY2J1V1lnbys3TUZIcTZpenYvWWlEamlq +CnpubXpOZmJDcklyakhGR3FxdEJYL0xxaHA5ZkE3WFg0R09nL1V4cDkrMW5GOGM0NjdQOHJmeFlO +WWhDREdBVDhBKzB3M1dzNWRhbkkKQUFBQUFFbEZUa1N1UW1DQwo= + + $$\alpha {\left|\psi\right\rangle } + \beta {\left|\phi\right\rangle }$$ + 21 + + + + + Dagger the superposition and multiply the original + + + ip = Dagger(state)*state; ip + + python + 22 + 0 + + + pyout + ⎛⎽ ⎽ ⎞ +⎝α⋅⟨ψ❘ + β⋅⟨φ❘⎠⋅(α⋅❘ψ⟩ + β⋅❘φ⟩) + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU5vQUFBQWFDQVlBQUFEUjlVSnZBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFDSHBKUkVGVQplSnp0bkhlTVZFVWN4ejkzUjBmZ3dEdWFvaWg0b0lKS1FNQ1du +RjFBTUVyVTJFQVRRVVFsRmpSZzdCcERiSW1DR3ZWTUVLT29JV0pzCkpOWTFGaXlnU0FtaWxOaUFp +RmhqUWVYT1AzN3p2TGV6TS9ObTN0dTdOYnFmNUxLN00vTm1mci85dmpmbE4zTmJRWms0aHdHekxY +bmYKQStlMG9pMWwva2RNQVhxVzJvai9LYk9CTHFVMm9reHhxSFRrblEzc0FuelRTcmFVeWVjTllE +SFF2dFNHbEdrNURnS2VCeXBLYlVpTQpXMHR0UUF0ajh1OVJZRjZKYmZpdjhhL3k4VG1ndm9qMXpj +RC9vWjFoU2M4Vng1UlU3QWJNQXVZQURjQ1JoaksrUGw1dVNjOFowdm9BCjI0RTlQZW85Rk9qblVj +NkZ5UVlYSnEwT0FvN09hRWRXWEhybEF1b3hhZVh5cnhZNHlwVFJ4cEIyTUREUVlGRGFRRUUxVUFj +MFdmTGoKVkFIOVBjcTFKbU9Bb2NDVHdDYms1bCtQM05nZnF6SWhQZzRNYUhzTGNDZHdOWENCbzl3 +SVplZTFBWFZueGFiVmFtQSs4R29yMmhMSApSeTlmVEZxNS9Oc0duQTU4QzZ4TXF2dzY0T1pBZzF4 +Y0NSem9XWFlFc2pZMGtjdGdRN2VVMXgwR1hHVkkzNnFsKy9wWUE5eGd5Y3RaCjBrY0JuenZxckFa +ZXhOeHBobUt6d1lSTHExbEl6NStGTkpyNTZKWHpyTXVsbGN1L1hzQXFaRlIxOGlSd2txY3hTYlFC +SGdrb1B4UG8KYThuTHBiU2hPK0pUS0YyQld3enAvWkdSNjJUMU9jVEhVekJQTzhIdTM2NnFQVnNF +OGk1VmJ6R3cyV0RDcFZVUDRONE1kcVRSekZldgpuR2Q5THEyUy9KdWk1NXVpamtPQVpaN0dKREVS +ZURxZ2ZCOWdjNUhhanFoU2Y2R2NCVHhtU0o4TnZBTThxejZIK0RnU1dCcG94M2JnCkIyQi9RMTR0 +TUI1NEpyRE9ZdURTNmp2Z1Q2UjNUME1helh6MThzV2xWWkovRGNEaFNOUWVLSnh1dEFVRzRMN1pP +d0RIQWtjZ1QvYnIKbUIwRXVRa21hV2tWd0JucStnWmd1VXF2VXNaSHpFSG11WTg3YkdsSitnRnJn +YzdJT3FrUzJWUHNCcHdJN0ZUbFREN0c2UTVNVnZVYwpvNjUvSDVubis2enBRTllZK3dQdmF1bGpr +SnVvMFhGdGlGNDZXYlI2QUpnRzNPalpWbFo4OVhJUm9wWEx2eWJnUytUaGZ3QUtSN1E2CllJZWgw +b2c5Z0JYQUlOWEE5Y0NGNUFkSnJsQ3ZvNEVQS0x3SlppTTN6a2ZBUGJIMDRUU1BwSlhLeUFzdGRy +UTB0VWdnQW1CMzlWY0wKREVZVzJwMVVuczNIaUVuQUU4Q2J5QmUrQkpnTzdJZU1RcjZSMkEyWVI3 +UXh1RWZJRUwxTVpORnFMYkEzcmJNUDZLdVhpMUN0a3Z4YgpoMzNxeVVUZ0swdGVUM1d4dmc4eERl +a3RlaUVPWHFQU0g2UndYZEdONWtETFhFVEFpSm5JZWlUaU5HU1JINUd6R1oxQURiQW84SnBUCmtT +bTB6bDdJUXhYNVlQSXhZaXJTeTBjaW4wcHpXTGdDaVV5ZEdTdWZjOWh6Sy9uZlJjUnk1R0V6RWFx +WGJrTVdyU0tPQjg2ejJPY2kKVkROZnZjRDhQWWRxRmVIeWJ5cXhUbEFmMGJZaFRwcldibmNqVTQ4 +NVd2cEtWWDQwRXVKZmdBemozd00vYTJWcmtDbElXeVFNR3Y4eQpkMFhXSXhITGtkNjRGT3lMaEhG +MU5pRVJyRHJzUG9MMCtQT0FjNEZmVmRxaHdOdnFmUlB3R1RLUDk2RWRvbzFPVDJXRGlSQzlUQlJE +CnE1ZVFhV3RMNDZPWGpTeGF1ZnhiUjJ6L1UxK2pyVUdHd243a2g1U3JnQk9BaGNCUDJqWHJZOFpW +QWw4Z3ZjRjZDdG1nWHNjaFEvdkMKbUIxL2FHV0h4L0o5R0lyMDN2b1EzeFk0QURucG9yTUp1Q1Nn +alU1QWIrUjdxc1BzSThpNlpnWHdZU3l0SS9DN2VsK0JUQVVYZTdaYgpxOW8wMldPYXRvYnFaYUlZ +V2pXcHNoMW85ajFPUzJzVzE4dEdGcTFjL24yTGRIUkE0WU8ySGVrQkJwTC9vSTFFOW10V0dScUxo +QjRQCkhLTGV2d2FjRHp4a0tBL05EK0pHOVhrRXN0YUpxRVNtTjZiMmJLeEJwa1c2YU4yUlhuMmE0 +WnBmRFdtdVNOazRWZi9yd0Z2WWZUeUUKL0I1ZWo5QWRqRXc1WDNhMEZhY0djNCs5SGRnSFdiREhD +ZFhMUlJhdCtpRWpzZWtoZytKbzVxdVhqU3hhdWZ6YkIzbllBUE1tNXhyawpRWXZ2ZlAraVhqY1VG +djhubWpNZitGRzliMExtd2tkaWRyS2EvSjcwY0dTOUV6RVovOTQrb2hINDJwRCtPL0FiOXJXblRq +MHlyZEtwClFIclNwNUFGTTloOVhJbEVyaUxpWmRvQTl5R1JzWS93WXpmTXZmSldKTkNoRTZxWGl5 +eGFUUWZ1ZDlSZERNM3E4ZGZMUkJhdFhQNE4KUnZRQnpHdXgxUlFlUFZtTjlHZ2p0ZlE2NERZazRs +T3Qwb2FyMXdYWVR3NHNRWHFTNkpvdXlCU25EWEl5WlJ1eWQxUUtoaUMrNnZQNgpXNUJOMFl0amFU +WWY1eU1oOGQ3cTh5amdQVVRRQnVTaE1aMWdNTkVMMlhRMW5RNVppZ2lxazBZdkcybTE2b3lzSVRj +YThvcEppRjRtCjVwTk9xeVQvQmhFTGhwaEd0R1hJdkRWT0kzQ2NNcW9yTWlUMlJBUzdDT2tCcmxM +bGxxaHJma09HNEFFVTlxeUxrTkR6NDhERHlEQjcKQXhMcGVvVFNCVUZBMWdlWEl5SGVDbVJLTkFy +eGRUVDUwd1Niais4aGkrc0daSjlyQ0hKVERrRDhmU1hBbnJIWXY0OFhNSi91VDZPWApqYlJhVGNZ +ZWFDa21JWHFaU0t0VmtuK0RnWnRjRGJkSEZweTJucTRQc21iUXFhWnd2Nkl2Y0llanJVcEUrS2sw +OTVnMmNnbjVOa0pDCnhiM0pQN0hkRHRrcmNaSGs0ekRnZHBMM2szS1c5RVhBQkV0ZUZUSjY5WGZV +RzZLWHpRWUkwNnFDc0VDV2pxOW1hZlRLT2ZKOHRVcnkKcncvd1Nid2UwOVJ4QnhJSnVnZnpodW9X +WW91OEdEOVF1RkRkakF5eFhTMEdOU0pmekVKYWJxcllpUHZrUkp4Njh1ZnpmNUE4OVVueQpzUTc1 +dDZNZG5qYkVHWVk4eUxialF6dVJUV2pYT2loRUx4Y2hXbzBsZWFSTWFzdEhzM3JDOVhMaHExV1Nm +M09SWUU2aTVsVklhTFVZCnY1RXhITGpNa1crTFRPcmtNdGhnNnRGTjNFbTZVL0F1SCs5QXdyOUo1 +TFRQN1pESXBzOHArR2N3YjZpR290dWc0NnZWQXNUK0xQaG8KbGthdm5DUFBWeXVYZnhPUXFIdmVJ +R2I3S1lPZHlPNzRCTEwvYnNWeTdEZExEZWJlMXNTbEdXendiYU1kOEZlSytsMCt4dmRrWE9qKwp6 +VUpPYmZpc1YwOUhUb2owU0NvWWFFTWNYNjMyQXo2bGNLOHRGSisyMHVqbDh0RkhLNWQvWFpEamFC +UHduMFVCY3ZxNGMyS3BaR3h6Cit2Wmt2em1LU2Uva0lsWnNQcWF0TS9TNkRyVHNqL240YXRXSjdL +T1pMMW4wU2x1Znk3K094RTdzbHlsVHBreVpNbVhLbENtVGdyOEIKMktjNjJRN3k0RTRBQUFBQVNV +Vk9SSzVDWUlJPQo= + + $$\left(\overline{\alpha} {\left\langle \psi\right|} + \overline{\beta} {\left\langle \phi\right|}\right) \left(\alpha {\left|\psi\right\rangle } + \beta {\left|\phi\right\rangle }\right)$$ + 22 + + + + + Distribute + + + qapply(expand(ip)) + + python + 23 + 0 + + + pyout + ⎽ ⎽ ⎽ ⎽ +α⋅α⋅⟨ψ❘ψ⟩ + α⋅β⋅⟨φ❘ψ⟩ + β⋅α⋅⟨ψ❘φ⟩ + β⋅β⋅⟨φ❘φ⟩ + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVU4QUFBQWFDQVlBQUFBMytkNENBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFCOVZKUkVGVQplSnp0bkh1SUZWVWN4eiticm1CcFdxMWFtcGJQM0hWVnhDaWwx +S3NVb2VoS3BSbEZVWmxaVmhROW9LeklIb2daU0JtOUpEVjZVV1FVClBmNm9QMng3UDZDM1VsU1E5 +dEswN0tFRitjaisrTTJ3czNOblpzL3ZuSm01c3pKZldOZzc4enUvTS9kenZuZG16bS9PdlhXVTZn +eXEKQjU1UDJIODE4RzFPeDFLcWxGYWxmMHVWS2xXcVZLbFNwVXFWc2xhWFdoK0FveTRDZGdJN2Fu +MGdCN0JLeHRtclpKeU5NdVY2VUJaSgpEVFVaR0djWU94YzRLbUw3Q0tCQjBXZFVubGxlbnM2a091 +QnM0QzdnZnVCbW9HdE1yQ25uNFFpTHNBNEV4aHBlV3VYdDQ2aHhxalZmCjBERTJqYzNUdTJxdXJp +ZlBldURsaEw5aENXMHZCRFlZOW5NeXNNWCtNQlB6ZkFoY25rTHV2SFFFY0Nmd0czQVRjdXpOd01x +WWVGUE8KcHdDYlVqaStvakUyNGRXWmZCdzFUclgyc01hVG10Zzh2YXZtNm5yMTNRUE10R2pYQkh6 +anRUZlJmeFo5bU9iNUJmbndISTdiN1gwdgo0RStIOWlicUNpd0ZGaVBtODdVQnVBUllGSXJYY0c0 +Q0hrcmhHTE5pYk1QWGxGZG44bkhVT05YU3d4cFBhbUx6OXE2YWE2Mm03UXVCClZZYXhqY0NYS2ZT +WmxHY1ZzTUF4L3pySDlpYTZIcmlWOXNZRG1JQVlMU3dONS8zZW40dXlaR3pEVjh0THExcjRPRzZj +YXVWaERXTk4KYk43ZVZYT3R4Y216QWFsNS9Hb1lYd0hXcDlCdlVwNVBrYW1EeTUxNHZVTmJFeDBD +OUFTMmhyYVBCVTVGcGtCQmFUZ1BJNTJUU1lYcwpHR3Y1YW5scFZRc2ZKNDFUTFR5c1lheUp6ZHU3 +Vmx5alFOY0QwNENweUp0NEQzZ1UyQmVUWEJ1L0VIZzRZdnQ0NU9uWUI4QmpnZTFECmFGdEFPeHVw +VFZ3Wms5c2x6M1BBSE9EcGhOeHBTOE51THJEVysvOENwSDdXQlppRVREbmZEOFhIY1E1cUpsS1FQ +eDdZQlF3Q1Z0QngKWGE0ek1OYnlLcHFQZ3pJZHA3dzlyR0dzaWMzU3V6WTVJcm1HN3p3YmdJK0JF +NEZsd0EzQW1jRHlRTXkxRHZIMXlOT3JqYUYrS3dqTQpwY0FqUU4vQXZtQ2RhQVp3QlZLYmlaSkxu +aGVCbHBpOFdVakxiaWh0VjhjSnlCUmpKSEFzTUNhVU80NnpyeUhJK3gyS1BQSDhFVGdQCmVBb3g4 +ZWlFNDY3UU9SaHJlQlhOeDc2MDQ1UzNoeldNVFdPejlLNXRqZzY1SGdwOFJIV2RZUTd5Umh1OW1P +V1c4WGdIT0NPaTc1WEkKYmZwcFh0c0IzdlltNFB4QVhBT3lic3VmWGl4REJzSTFqNityZ0lrUngy +ZWlWa1dzRGJzbE1ibGVRcVkzd1F0aEhHZUFmc0RtMFA0SApBLy9mRHJ3YmVGMFV4cTNLK0NVeDI4 +TzhpdWhqMEkrVHI3dzhERHBQbXNabTZWMmJITDRTdWQ0SC9FMzFPclFSaUJIbUkwL0R4bGpHCkF6 +eUptQ3VvT21TcUJQQUVNbDN5dFFnNE9oVC9UT0QvSUJ5WFBMNTZZbDZrRHF0VkVhdGwxd2ljRlpO +cnNkZW1UMkJiRkdkZmJ3SnIKQXErYmFEOTlQQmQ1d3RuTmUxMFV4cTJLV0Eydm92bllsM2FjZk9Y +bFlRMWpUV3hXM3JYTjRhdUthN0RtT1JONGhlcjV2bCtuR1l0YwpLUit3ak8rRzFJL0NUN1QyQTY4 +RDNZSFRnUnNEK3dZZ3Q5UytEa1BXWGtVcGpUdzdrYnVNT1BWQVBoaFJ0ZUxSeUpyQXNQWWdDNEwv +CkRXelRzcXNRL3lSMENMRGQrNE40emlCVHBFbkFkWUZ0VXhGdXdmZXhCZGdkMFQ1cnhtbnhyV0RP +cTJnK0JyZHh5c3ZERmN3Wm04Wm0KNlYzWEhGVmNmWUREdmNScnFKWmZxMm1oN1N5dWpjYzdtQzFl +dTAwUjdTWUNCd092ZXEvcnFDN1dUMGJ1RkpMa2ttY2F5VmZmWGNDbApSQnZ2V1c5ZldIdHBiem9i +ZHMyMG4xcjQ2Z3BNcC8zZ0ozR2VpQmp6czhDMlViU2RHRURNOUZwRVgrRThXVEJPZ3krWTh5cXFq +MTNHCktROFBnODZUcHJGWmV6Y1RydjI5cE9mRWRMcVA5alVmYmJ5dlk1QUNiWlRPOEhKMjkxNDMw +LzVXZnh3d0pkUW02cmJjSm8rdnRZangKYmRScUdHZkRiaXRTM0E1ckh2SmhHQnphSHNkNUZISlM2 +TzI5cnFPOWNSWWc5YURnZzQ2aU1HNVZ4SnJ5S3FxUGJjYkpWeDRlQnAwbgpOYkZaZWpkVnJuNlI5 +bWVrYUg1Q3FNRkFaTlg5NWtDSDR5M2lmVzFHcGl3OUlnNXVQWExsbWU2OW5rTGJGV2syY2dmd1Jr +Uzd0UElNCkEzNEMvakhvdzBWYWRxT0F4NEdMUS9HTndEM0lnSDhYMmhmSGVTUHdObEtVQjVtU2Z1 +NzkzNExVZmxxQWJSMjhoeUl6MXZBcXFvOXQKeHlrdkQyc1lhLzJicFhkVDVScThkWitGRkd0WEly +Zk0vWkd2SkYyRDFDeFdBTGNnU3pwczRuMnRSYjZ6R3A2Mi9JR3NmYnNEV1cvbApMeGNZaVJUZmI4 +Tk10bmt1ODQ0NUQybllIUXZjaTlScVhrQnFaUU9RSy9RTTRKT1lQdUk0VDBlVzBReEZUTG9ES1lS +dlE2N1NKaCs4CklqT3VvT05WVkIvYmpGTmVIcTVnemxnVDZ5dEw3MmJLdFE5d1pNVDJIa1FYb3JY +eElBWHJwRzgzRFVPdVZnTVRZaUI2U21tVHB4Y2QKTDhydFNLMFdiVXpZM1IzYU53anphVmtTNTI3 +SVNTT3EvNkNLd3JqVk1NNldWMUY5YkRwT2VYcFl3OWgyUExMMnJqUFhxSVBiVHZWWApxRUJxRTMr +bEVBL3lSQy9waHhnR0l3dFRmMGlJTVpGcG52bkFhc2UrNHI2SmtxU08yTlZSdld6amU4eW5aVW1j +ZHdPL3gvU3ZVVjZNClRmaTY4Q3FxajAzSEtTOFBheGk3akVmVzNuWG1XcXNmQmxtSGZJTWpUaFhz +N3VSczhuUkI2bGxKUzBkTU5NK3hmWlNhZ2E4YzJpZHgKUGc3NDJpRzNyd3I1TURiaDY4cExxeng4 +YkRKT2VYcFl3OWhsUExMMnJqUFhXcDA4OXlMRjIrYVkvZjFvV3lPV3BOWEFGd243VGZLMApJTFVZ +VjVuK1FJUkdVNEMzSE5vbmNUNEplTWNnUjFFWW0vQjE1YVZWSGo0MkdhYzhQYXhoN0RJZVdYczNU +NjZwcTU3NDJrZlVyMjNiCnlDUlBiK0svMFZCcjlVc2hSeHpudnFSejhTd1M0elI0YVpXMWowM0dL +VThQYXhpN2prZVczaTBhMTFLbFNwVXFWYXBVcVZLbFNwVXEKVmFwVWV2b2Z6NFNPd3VmaXE1Z0FB +QUFBU1VWT1JLNUNZSUk9Cg== + + $$\alpha \overline{\alpha} \left\langle \psi \right. {\left|\psi\right\rangle } + \alpha \overline{\beta} \left\langle \phi \right. {\left|\psi\right\rangle } + \beta \overline{\alpha} \left\langle \psi \right. {\left|\phi\right\rangle } + \beta \overline{\beta} \left\langle \phi \right. {\left|\phi\right\rangle }$$ + 23 + + + + + <h2>Operators</h2> + + + Create symbolic operators + + + A = Operator('A') +B = Operator('B') +C = Operator('C') + python + 24 + 1 + + + + Test commutativity + + + A*B == B*A + + python + 25 + 0 + + + pyout + False + 25 + + + + + Distribute A+B squared + + + expand((A+B)**2) + python + 26 + 0 + + + pyout + 2 2 +A⋅B + A + B⋅A + B + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU1BQUFBQVpDQVlBQUFCbjdTSGdBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFCT05KUkVGVQplSnp0Mmx1b0ZWVWN4L0ZQNmpuWnNkTk5LelZGS0xzWDFFT1Jw +R1lJS1JrRlJnUkpENzBvRkJSRm1sUXYwa3NQUVVWWVBZWFJUY1RxCklTcUtvdWhDRDBZU2RDVUt0 +SXRkMEpKU3V1bnBZZTNOMlU0emU2ODFNL3NjT2N3WERwczlhODNNLy9mL25UWHJ2OVpzR2hvYUdo +STUKRW1kZ3luZ0gwdENUcmw1Tkh0dFlKZ1Fyc0JMSFlDT21ZdHU0UnRSUVJPTlZ6UXpncGRZbm5J +NFJYRGh1RVRVVTBYalZCMDdBbjFqUQpjZXdQckJtZmNCcTZFT1ZWYWcyN0VvUFkzS1hQUnN3cmFQ +c0hPMXZuZjVCNDcxUUc4WGRDL3p4dDJXdnN3Ykg0cS9WOVBvN1NmeTFGCjlDUFhNUjdYVFpGWEtm +cjY3dFdKcllzKzFxUGZJTTRYcHB2bk1TUU10Q21ZZzRkYmJldktCaExCTEt4TzZGK2s3VjZqVTJn +ZVc3RSsKTGJSYXFUdlhzUjdYU1RldlV2VDEzYXNuV2pkN01hTHZpbGJmNjNQYUJ2QXo5Z2tDWTBo +WnJFOFNERXc1cDBqYm1YaTg0SnkxdUNYaApIdDJvc2hsUlo2NVRQQzZpYnE5aTlaWHlhbEprb0pj +SzA4c0laa2IwWDl6NmZEdW43VURyT2tkRTNuOHBib3ZvMStZbXZONjZUd3pkCnRIMHBKUGk4elBG +VitFeVlvZ2V3TUNHK0xLbjZzdFNWNjFTUDgraUhWN0g2ZGlqaFZjdy80QlRjaDd1eFcvd0ErQncv +NWJRdHhVbDQKVmxpazlHSkEvRXdCTndpci94aGl0TDNnMEtmSGRUaEhTUHBWZ3VGSEo4U1hKVlZm +bGpweVhjYmpQUHJoVllxK3ZuaDF1OUdWOHlmWQozNlAva1BBa2VUU25iYUZRWTI0UlhsREVzRng4 +N1hZODNvenNTNXkySVdHeEJkUHhQajdNL00xT3VHZVdGSDE1c2RXUjYxU1BpNmpiCnExUjl5Vjcx +MmdXYWphdUZrUVkvNGx4aGRiMjM0SndGd3BQZ1pLUEpHRzRGdkEvWDRxMGU5eTNMcWRnVjJUZFcy +MzRjRko1c3U0VlMKNFhDaGpseVg4YmdPWXJ4SzFaZnNWYThCOElBd0xSNXNmVzlQUXpNVko2ZGRz +NjBWUm1pYnJYZ1FHL0FWdnVzVlhBbW1DNG1KSVVYYgpUbUczWWtmVkFHdW1qbHlYOGJnT1lyd3Fv +eS9KcTI1cmdLWENYbXZudm1sbmNvcFloQy93RFg3citOc3UxSHlMOEhSTWNDWFlpN2tSCi9WSzF6 +Y0x2MVVMckMxVnpYZGJqT29qeHFveStKSytLWm9CQllkVzhIUTkxSEwrNDR5WjVET0FTUEZQUS9v +TWdZTEV3bFhVR3VreFkKdEdTWkk3elZtNS9UOWg0MmRYemZLZnp3cVJ1cDJnWXhBNy8ydUc0djZ0 +RFhTWlZjVTk1anhzYXJNdnFTdlNvYUFIY0tLK3N0bWVQZgpDblZaMGRQaEl1RnQyN3NGN1dmak9H +RlVadzNaSnRSdFdSWUlpWG95cHkxYlErNFM2c0J1YjRGVHRaMG0xSmtqQmRlTHBRNTluVlRKCk5l +VTlabXk4S3FNdjJhdThBVEFQbHd1ai9HQ21iV2JtTTB1N1ppc0src2JXNTFNNWJYc2NXdWUxbVlG +cHdnbytoczNDMUppM3cxQkcKMnhMRlQ2RVU2dExYcGtxdXEzak0ySGhWUnQ4U0ZiMGF4anZDVzdV +ODVndWphMU5CK3l1S0YxeXJXK2MrSnlRcGx0UnR3aUc4NXYrdgp4Y3RvbTRGWGhYM2tmbEYyRzdS +c3JxdDYzSTI2dkNKZFh5bXYyalBBTU83Qk5UaEwyQlBlNE5CZGdEWENDQ004UGRiaFpYeU5tNFZW +Ci9SWENOdHA2L05zUjJKV0MyRnZ4U0VxQUpkZ3Y3R3FzRm1yY0t0cFdDZHFxbGo5MU1WWDVYRmZK +dzZlMUt3bGt2YXFpN3c0bHZHcVAKbG1GYzFuRjhCRzhZL1NVZFlick1qdFNQOEVzcjJLS1Jkd0Fm +QzR1V01pekhCYmcvOGJ4VDhMMXEyaVlMTlhFL1NkRTNvSHl1cStRaAoxcnVxWGxYUk4xZi92Um9Y +bHVHdThRNmlqMHdrZlJOSnkySEROUDNma3g1UEpwSytpYVNsb2FHaG9hR2hvV0dpOGgrc1pjTHdo +djBRCnV3QUFBQUJKUlU1RXJrSmdnZz09Cg== + + $$A B + \left(A\right)^{2} + B A + \left(B\right)^{2}$$ + 26 + + + + + Create a commutator + + + comm = Commutator(A,B); comm + + python + 27 + 0 + + + pyout + [A,B] + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUM0QUFBQVdDQVlBQUFDL2tLNzNBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFBa2hKUkVGVQpTSW50MTgyTFRXRWNCL0RQdk9XbEpwVEdZTEt3VUZNenpZWm1N +ek5KaVdsMi9nSEZRbFptNHlVYlk0V3RRc3FVRlJZaVNvUTRhSXBTCjhyS1FST1JkU1pFTU0xZzh6 +K1hPblhQbW5udG5aa0crZFh2Ty9YM1A3L3Y3M3Q5em51YzhsNzhVTlNYZkwrQXJMdUZBbWR3OXFN +TzIKS3VvT1lDMDY4UU5EK0JLNVJpekIyWGpmK3hqdngwbzBvSzlVTU1sWnVCM2ZjYXdLMHdVMENH +WlBwWEJ0VWY4ZWFrdTRSRW93RDJxdwpEL1ZvcmlLL2dPV1loWXNwM0FOY0ZoclVscFpjamZIMXNk +aG5relBlRThlckdYd3JSdkU4ajFoU2hwOFhDOVhqTVQ3a0VjM0FPYnpLCjROYmhwekN6cFVqU0Vs +S0RSVGlFVmZGNktJclBLT2N3QmJYNGlPTWw4ZG5ZSExudHhtOGV2ejNXVjFCc2hkRHhLL0g3Mnpn +MjQxa0YKT3RDQk9aaUx2VEUyRTZ1RlhXME5ibFVpbUdURWEzRk4yS1lLT0NoMHZMT1NBaEZiWXU2 +eUZHNGp2bUhEUkI3ekxzNU53dDVldkZDSwpPMTRwZXZBT2oxSzRRYndXR3RPWUpaRG5VV25Demxp +a3F5amVFc2RxakhmaitnVDhKMkYybCtKdUhzRWtKWFlVdlNueFBtRzZkK1VSCkxrSnJ6T3ZQNEJk +Ry9xa0pGbWU1UjZWTGVJT2RUK0ZleERHdDQ0c20wQ3pzM3pjeStJRTRIaEYrUUM0a1JkZnRlSU1G +R2ZjdWpzS24KUytJZHd2bGpNQ1B2cFBEeXFpdUpOMkUvUnJBanA4Y3h3Zm5DR1dFMEdudm96L05j +d0FtOGpQeXcwTDNDd2FjRlQzRGYyS2srZzVzeApaeVJlSi9Gelczak5IeloySFZWa2ZLcXdld3Ex +aXBGUTNWa2xMNlpUZTlyRWUzRm5tclF4M3ZpSThHY2lhNnZLcTlrdC9adzlHV3dWCnZBMVBzZTUv +L052NEJmcHZkNXROTFJsdUFBQUFBRWxGVGtTdVFtQ0MK + + $$\left[A,B\right]$$ + 27 + + + + + Carry out the commutator + + + comm.doit() + python + 28 + 0 + + + pyout + A⋅B - B⋅A + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUU0QUFBQVNDQVlBQUFEMTV1aVJBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFBaTVKUkVGVQpXSVh0MXp0b1ZFRVlCZURQR0VHTGxRUU1haFFpcEJVRjBTcVl3 +bWRockN4Rk8rMEYwVUt4VVZTMEVMRU5hV09oUWhvckZmR0JsWStnCklwcE9nbURBS2tyVXFMR1lR +ZGRrN3U1OUpBRmhEeXgzZHM0L2M4N1p1WFBuTGkyVXdwS0M5VmN3aVRNTmFnYXhEWnZ3RlUvd1BY +S3IKMEluck9JZXBndnFOc0JDNmVmSTJ4VmI4eEZDTzJnMll3YVVFdHk5eUkxWE1MSUp1a2J5WmFN +UGRLSHc3Ui8yaFdMc3JneCtMcG1wVgpUQzJnYnRPOGJUa05IY1VOVEdOTmp2cCtZWnM4VG5BMXJN +Y0VQdWZVejR2NTBpMmFONGt1NGRkdnd6Zys1Qmp6Rmc4enVCUENTaDRwCmEyaUJkY3ZrVFdJSWZi +SDlGRDgwdmxOWFI0Tm5aL1YzeEw0SkhDNXJaaEYwYytWdGJ6SkpINWI2ZSt0L2pOKzdZanVGL25q +dHhjWFkKcm1FQTcrS2NZMDN0RjhkODZKYkpPd2Z0ZUlTMWRYMUR3cXB1YmpEdUdyNWhlWUk3THh6 +dnUvT2FLSUNxdW1YenpzRXhISi9WZHlGTwp0TGZCdUZIcGh6T3NFQjY0NzRzWXlZbXF1b1h5Wm0z +VjdqakpHLzhlN1QzeG1uWFNkR0FqTG1mdzA4SmRzVTdZUnBQQ1ZqcWRVWi9DCmlCQ29xbTQ5eXVh +ZGcySHNTUFFmRUZiZ1pNYTQvWkVmeU9DM1IvNU9YaU01VVZXM2NON1U2YmdUbjNBdndZM0hhOVlL +OUVlaDFKWloKaGxPeFBaZ3h2aXlxNkZiSit3ZGJoTk9qTTRQdmpRYUhNL2puZUpubzc4Rk5mTUhC +WmlaS29LeHUxYnk2OFFxL1l1RnI0YjJvSHJlRQpsOEVaNFUvMEErekJTbUcxWGtSdVNqaWQ3c2ZQ +S0o3aHF2QWNtaTlVMGEyU3Q0VVdXdmgvOEJ0MXY4VEcwN0FDaFFBQUFBQkpSVTVFCnJrSmdnZz09 +Cg== + + $$A B - B A$$ + 28 + + + + + Create a more fancy commutator + + + comm = Commutator(A*B,B+C); comm + python + 29 + 0 + + + pyout + [A⋅B,B + C] + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdBQUFBQVdDQVlBQUFBLzQ1bmtBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFBM3RKUkVGVQphSUh0MkUyc1hWTVVCL0RmZXhxdlV2cjBReFhGUUkyazhkbjRh +dCtBMXdnbGtmaUltUkloRWhFRERCclZDTkxHTTJxakhSQTZFTVNFCmdmaElrU3Q5alU3RTkwY0lT +YVdFcEJKYURhckZZTzNiM2w3bjNMUFA2NzMzVGU1L3NzL1phKzMvWHVmc3RkWmVlelBBdEdLbzdm +MU4KL0ltdGVLcGk3RG9jZ3djNzZHekNwVGdQZitIOTFNSmNuSVNYOFNoK3IyRjNyM2lQQmlPNElk +bDFydmlQSTlpTWw3QVdEK0ZqWEliOQpSU1NOek1tVzRHKzhrS0c3RVA5aVE0SHN5aVI3SzNQZWZ2 +Qk9CUmZoYzJ6QkZlTEhTKzNqMklqZk1DNmNmR1laVVNOanNpRzhMajd3CjNRejltNUx1dFNYeVQ1 +TjhYZ1pYTDNubjRZeWFOaENldlY5NUpoakNKUDRRUC82b0YyQVY3c05lZkpHaHZ4RUhNTHRBTmpQ +eC9JTGgKREs1ZThsNHZ2cXNPYmhlTGZFZUYzaHE4azU2UFdJQVpOU2VjZzF1eEF2ZUlORkNGTVh5 +SVBRV3lPM0U4N3NVL05XM3BGVzh1emhicApid2VlcWREOVRqaExKUm9WOHMwaXg4RjJzZm9qNWVw +T3hFRk10UFdQQ3EvWXJkcDcrc1ZiTndLMmllOGZ6OUM5RUl2VDg1UWpZS21JCmdHYmUvem0xQzdH +elpNeHlrUUxPeFByVU4wdms3WjFKL21VTkczck5tNHM1dUJ5ZjRPME0vUTl5aVJzbC9jTjR6NUdi +MUNiaEFSZDMKNEpzUW9YZENnZXhoN01QS1hPTjZ6RnNuQWxhS2IzK3U1aHkwUlVEdUJuV1hPQnQ4 +MzlMWEdnRmxHQk4xNzk0QzJibzAvN1ArZng2cApRcTk0YzlGMHVzOHlkT2ZxVUlubHBLQUZXSTJ2 +c2F5bGYxRnF5eFpnRmk1UWZxQTdLRXF6QmNuQTNSbTJkSU4zbFdKUEg4V3hTZDZPCjUvRmt5M3N6 +NWY2WVllOXFQSmFoaCtJVXRBVlhGL1EzdzNCdENkZUtKTCt4Ukw0MHlTZHpqZXN4YjUwVWRGYWE0 +NGtLdmNXNHY2MnYKVmdwYUprNjhieFRJZHFXMkxBTEdVcnV0UURaRFZDdndkTW40VTN2RTJ3MThL +NnJBNnhUdlE4UWlyUkY3WlRZYUxjOUw4Qk5PTHRFOQpUWGpCS3lYeUhmaW1vSDhSWGhScDRyYVNz +YzFUN2dOZDV1MkV1bVhvYkxFSWt6aTlwWDhVdDRoQ29haEVyeXhENTR0Uzh4eUhxNTl4Cmh6MmV1 +RnhhbnA2dkVkNjRQbzE3VFpScDU0c0xzdTBpaW9qNnZaa2VMaEViYVJGMjRRY1JnUk00cmt1ODNj +UWVYQ1VPZlJ1RUEzeUYKWDBYQlV1UThsV2gweWJodTRaRSt6aldWcTRpcFlFcGw2SFJnV0hoMXY3 +QlAvNjZ1RDZIdVhWQS9jVGRlN2VOOFcvczQxeUcwUjhBQgpFU0w5Q01WT21DL3kva2ZUYkVjM2Ni +UDR0NmZvM1FYaEFBTU1NRUFkL0FmM1FPSkhTbklZTndBQUFBQkpSVTVFcmtKZ2dnPT0K + + $$\left[A B,B + C\right]$$ + 29 + + + + + Expand the commutator + + + comm.expand(commutator=True) + python + 30 + 0 + + + pyout + [A,B]⋅B + [A,C]⋅B + A⋅[B,C] + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU44QUFBQVdDQVlBQUFCQUhrbFFBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFCT1ZKUkVGVQplSnp0bTB0b1hVVVl4MytKQ1duRitLclUra1lMWXRIYWhZK2dK +S1dJcjlxNkVWeXBGSFJSeFlBRm4zUmpYRm5CallLSzFFZ0VVUmMrClVOQ0lRaDBmUVZ4cGl3dVJn +TzgzaWxJdGF1dGo4YzNoM2h4bnpwazU4ODI5dDNKK0VFNHkzOHgzdnU5LzU4eWNPek9CbHBhV3Zq +QlUKK3Z0VjRIZmdkZUNobXJiM0FvY0FkelM0N3d4d09UQUIvQTBzQVB1c2JSdzRHWGpKMXZ2Qmxt +OEROZ0Nqd0NZbG56bUkwUkRTZEN3WQpBcTRFSm9GemtmekhnT2VBQjRIVndBYzJwa0hYcjQ0NnZY +ejZ6NUF2UHczOU1ZRTNXd3ZzQjU2S0RMS2JVU1Q1NXgyMnM2ei9QY0J3CnlXWXkrTlRFUk5UVjBQ +RlVlODk1cEFPTTIvSmg0SHJnU2VCVFlEb2d2a0hRcjRvUXZVeUZMVWQrYXZwN0RWME1BYThBL3dD +N0lvSXMKYzRIMWNhUEhQbS90WjVmS1RRYWZQbzRHVGdtc1cyQUM2Mm5vdUFYWUN6eUt6QVl1SHJm +M09DTWdQbTM5b0ptR0xrTDFNaFUyN2Z5Uwo5Rzh5Z20wQlhnTitCVlkxYUYrdzNsN2Y4TmpYQUg4 +Qm4vZlI1NFhBMVJIM2p5RlZ4eWxnRnZuZ3R5SjV1WmdIdmdJK0N2Q1o0elBSCjBsQ2ozMm5tcDY2 +L3FiRWZoUVErQWl3Q1B3VUU2ZU5sNEd1UDdTcGt0TGpQWVRNWmZQcllETndXVVIvQ1pyNVVIWThF +UGtOeVhWNVQKOXh6Z2ljRDR0UFdEWmhxV2lkSExWTmkwOHN1aXY5ZGdlUVM0eVA2K2dBUTdWdFBH +eFREd00vQjBxZnhRNENacnU1UC9MZ2hWeFpqaQowMGV1aHk5Vng1MjJ6WFJkUmVBa1pQYXBpeStI +ZnFEejhNWG9aVHpsbXZtcDZEOFMwTGpnUEdRRUt0NjN2N1BYVmNnb0VNTTY0QWhrCkJObGh5NVlC +bHlBclZaY0I3dzJBenh4bzZMZ1orYTZ4TTZEdUYvYW5qa0hWVDZ2ZmFlYVhRLy9LVWVOTlpEbTI0 +R0hrNlo4SWNWemkKRnR2MmRJZnRCdUJQWktVb0pzWVVuejYwWno0TkhWZmIrdTlHeGxWZ1BPVTU5 +SU8wbWErSlhzWlRycFdmbXY2aEN5NWJrVDJLN2kraQozU05RTE91Qjc0R1BIYlpaNEJ0RTVIR0h2 +WmMrdGRIUXNlaDBId2JVSFdOcHg2MWlFUFhUN0hkYSthbnBIL0xhdVJMWWpnUTkyVlYrCm9yMDJY +YWw3cThLK0Z3bjZOR0IzRDN4ZUI5enFhSE00SXVDMUR0c3pkRjVmUXREU3NYalY4aTBjZEhNenN1 +a2NRdXBub3EyaGRyL1QKNm5PNTlIZE8yWFBBUmtmNUptVDZ2VHZVdVdXTmJiZk5Zei9PMmo4aGZN +RWwxYWNQemRmT09YUjBIQVYrUTA1alZIRVljTCtqM0RqSwpjdWtIelY4NzUyaW1sM0dVYWVhbnBu +L2RhK2Nrc3VzLzc3QjlhYSt1RWVqNENwL0ZYc3ZiSHZ1TXZUNkdDQkpDRHArYWFPcTRINWt4CnBw +Q1ZOQmNya0dOTkR3VEdOMmo2TmRYTFI5UDhlcVUvc0hUVVdBdDhDeHpycVh1Q0RmU0ZVdms2NUd6 +YnJLZmRzOGhHYWZsRXdFb2sKNEFQQVhZRXhhdm4wb1RIejVkQnhCT2tBaThpeHFJTGx3S1hJMHZ5 +S3dQZ2duMzRRcjJGVHZRcU1vNnhKZnRuMWQzM25Pd1paMWoyVAp6bXJUeFhSR0hPZzgrUUJYSUNQ +S0RtUVQ4MGZrTE52NXlCUmVqQ1F2SW9KT0lLY0JGcEFsWHBBcGVwa3Qyd0M4NHdtOFRBNmZXdVRT +CkVhU3pYSU9zem0xSFZ2QVdnVitRZktmeG43am9acEQwUzlYTFJVcCt2ZEIvQ1NhMlFRWDNLUHJx +eG1UeTZ5TFhKbnNNMmpvYVpYOTEKYUd5eXgyQ1UvV1hUUCtmcDlINmRmTmRrSC9LNjBrOE9kaDBI +UWNNVXN1a2ZjOElsaG8zQSs1bDg5NUpkcFAzblJpci9CeDM3cldFSwpXZlV2UDlVSGtIMEozNUpz +cU04cDNQOHpsY0x0U0d4L0tQdlZSa05EME5meFlORXZsVmIvbHBhV2xwYVdscGFXbGc3L0FwMkpD +c0NZCkVCSG1BQUFBQUVsRlRrU3VRbUNDCg== + + $$\left[A,B\right] B + \left[A,C\right] B + A \left[B,C\right]$$ + 30 + + + + + Carry out and expand the commutators + + + _.doit().expand() + + python + 31 + 0 + + + pyout + 2 +A⋅B⋅C + A⋅B - B⋅A⋅B - C⋅A⋅B + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU84QUFBQVpDQVlBQUFEWnUzbTlBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFCYlJKUkVGVQplSnp0bTNsb0hVVWN4ejgyaHpIeXZHdmFSQnN4MFZvUFBHdGJQ +R093aWhWRkJTc2VVQlFNRkd5MUZxMFhLdjVURmRPb3FNVzdGUThDClZnUVZFVk9Mb2tYVVJNRnFL +R28xYXFnVlJJMHRhbHZqSDc5WnN0bnN2SjNaMmJmN3JQT0I1ZTB4TS92N3p2eDJkK1kzODhEajhY +ZzgKdWRBRU5CZHRoS2Q0ZGl2YUFJOHhOY0R0d0RBd0ZiZ0F1QXo0cWtpalBCNVBNbGNEVjRhT0h3 +VGVMOGdXVHhVd3FXZ0RQTVljQ0Z3ZgpPaDRBVHNLMzRmOFcyMjd6eFVBOThGS1pOSThBclpwcjI0 +RWhsWDk5bVRKcWdLT0JPY0FzNEUvZ1ZlQk5kWDB4OHVYSm15VDk5Y0RmCm1tczI5YUlyWjNmZ0w3 +WGZBeHdMZENSYTdVWVc3UmtsTHo5eUpTcy9MRnp2Wk9BWDRMR0VkUFhBTWNBbzhETFFDTlNxN1NC +RTdDaHcKa3liL3VjQTNRQy9RQmJRQmh3RjNJQUtYQU8rbEVlQklrdjZ6Z05QTDVMZXBsK09RQnRm +UkJud050SnVibnhyWDlveVNseCs1a3BVZgpWb1hlcDFYbVZ3elN6bE5wNThkY3F3TzJBRnVWd1FF +bDRISGdONkJUVSs1eVZlNWRCamJVR0tTeG9aeitOdUJXZ3pKczZtVTU4cmFQCnNnL1N1RzBHOTh1 +S05PMnBvOUorNUVyV2ZsaTQzbE9BbGNBL21IMjI3MVZHTk1WY213VDhCR3dER2tMbitvRE55RmRI +eHlHcTNOTU0KYkxnZk9OSWduUWxKK2xjRCt4bVVZMU12SldCVkpFMGpjQit3cnpydUlKOFpBOXYy +MUZGcFAzSWxhejhzWEc4dHNCWnh6cCtCVFFaNQoxZ05mYUs2ZHJReDhNblR1Wm5YdUNvT3loNUcz +VUJJOWxHOEFVNUwwN3crc01Tekx0bDZlQVk1USsvWHErRkxnZkxVOVlYaGZWMnp0CmppTVBQM0ls +U3orc0NyMDNJSDErZ00rUko3OGNqVWl3NWRHWWE2Y2kvZjllSlBnQ2NJSkt2d0d6eUtscG9DcXJo +emRKLzN4Z21VRTUKdHZVQ2NBdXdWTzFmQTN3YzJYb003dXRLR3J2anFMUWZ1WksxSDFaY2IyMUNn +YzNJWW9DZzc3OFpPQXJZR3hrVHhERUhlU00xTWViVQpKV1hBVnVBUzRKMVErZ1VxL1QxSTl5S0p4 +UVpwc3NKRWZ6dnduVUZadHZVQ3NKR3hhUEpUYXN1Yk5IWkh5Y09QWEZsQWRuNVlGWHBmClVJVUdQ +STk4dXFlWHlYTzNTbk1vRWx3SnR1T0JkY0M3U1BRc29GK2xuMkpqbUFGWmZIbE45SGNERnhtVVpW +c3ZJRjhEazBCSEpVbGoKZDVROC9NaVZMUDJ3Y0wyZFRBeVlkS3NibkZFbTMxcmdTODIxWnBWL25U +b3VBVHVRTVVIV3VENjhwdnJ2QkJZWmxHZFRMd0h6a0dCWQprYVN4TzB3ZWZ1UktsbjZZbTE1ZHQ3 +a2VtY3NhWVB5NDZtVDFPMVdUcnc2WWpieHA0aGdHZmtYbVEwdWg4eHMxNmNOTUJoWWliNmd3Ck53 +SXpZdExQQnFZaFk0VW9LNUV4b3c0Yi9VUEFpV1hLQXZ0NkdWSG5wMlBXSlE5VEE2ekFmRHBoQnpK +M0dEY21TMnQzUUY1K3RJMXMKTkx2NEllU25kd1QwRCs5UzVOUGZHem4vUGRJZDBIVXRaZ0o3b0or +OG5vRjBCUVlaYStoK0pQU2V4SFZJeFVSWmcwUjhvelFDcnhIZgpJSU1KOTdMUjN3ZGNubEJlbW5v +QmVYaDFEYXBqSi9KeXNuRmtYVEFscmQwQmVmcVJpK1lSM1AwUTh0VWIrL0MySWtHU2M1ZzRjSjhT +CitZMFNyRERTR1hHVituMHVkTzR0NERiZ2NQUnZ2azdnRDJTZUs4b200c1B3VzVDdys2ZWFNblhZ +Nmg5U3R1MEYvSzRwTTAyOTFBQXQKd0FmSkprOUFOOTFnU3hxN0EvTDJJMWZOcm42WXQ5NEpsSkNC +c1c1ZzNZNzB2Wi9WWEg4RCtFRno3VnFWOTBWZ3o5RDVPaVFvTTBpOAp1QzdHTDhnM0pjMllONjMr +V2NCRFpjcE5VeTlMTUp0dnJDUnA3SVppL01nVkZ6OHNSRy93NVMwaGI1MExrVVVCWFVpZlBoelc3 +Z0xPClZQc2R5SmpoZFdTTjdVS2s2em9YQ1lzdlE3b21BQWNBNXlIZDJFWEF3eEhqdGlNTER4NVFJ +cjRGUGtHNk1BMUtjSjlHV0ZhNDZOOEEKZkloRWhtY0NINmswRGFTdmw0T1JLWVB1Yk9SWjRXSjNr +WDdrU2hvL0xGUnZzTFN1eFBoSTJDandObVAvWUFIcERrUlhsUFFqRWJxNQo2SmZwN1FRK1F3YmRK +clFpYjc0QjlQL1FNYUVIcVhDVGJyT0wvckN1RnVCSHRWOUgrbnBwVWVkSERXelBHaGU3cThtUFhE +SHh3MTFKCmIxV3hBdm5Mbk1maitZOHhEYk0xMEI2UHgrUHhlRHdlajhmajJUWDVGN1NTV0xra1du +SzdBQUFBQUVsRlRrU3VRbUNDCg== + + $$A B C + A \left(B\right)^{2} - B A B - C A B$$ + 31 + + + + + Take the dagger + + + Dagger(_) + python + 32 + 0 + + + pyout + 2 + † † † † † † ⎛ †⎞ † † † † +- B ⋅A ⋅B - B ⋅A ⋅C + ⎝B ⎠ ⋅A + C ⋅B ⋅A + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVd3QUFBQWFDQVlBQUFDVGsyYlJBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFCd1pKUkVGVQplSnp0blhtSVZWVVl3SDh6NHpLbUpZV2FXMlhtVXBKbVdZcWhF +bEdSTFdwa0N5MDZ4UmoxUndXYWxRU2xMWnFwYmYrMENiYUlCZGtDCnRraUxtVVVGWlNsYUZsbVVS +WVlsV0VHN1RuOTg5ekhYTy9lK2Q5Wjc1MDduQjQ4Mzk1eHp6M2UrNzV6djNIUFA4Z1lDZ1VBZ0VG +Q2sKRWRnVVpIaW43RFlvMnI1ZGdjVkFuYVA4VlBRNUZ6ak5rVHhUaXJhN0NiN0xYSmd2ZGZJc1ZJ +Vy9nTitERE8rVTNRWkYycmNCZUJSWQpBTFE0eWxORm56WEFhbUFuOEdsSy9DamdyRmphdERTMnRQ +ZDJuWWJ2TWhmbVMvV2VoYXJRQXJ3VFpIaW43RFlvMHI2emdQZUFyeDNtCnFhclBQT0E1b0hzaWZB +SndLckFFZUFsNEE1anNzSHdWMm51N1RzTjNtUXZ6SlZldmQ2YXNBNzVGUnZxOWdNK0FPVUdHYzhw +dWd5THQKMndQcHJNY0NmenJLVTFlZlc1RlI5bU94c0tlaWNqMFVYVDhDREFaT2QxUkdrM0syQjN5 +WHVleSt0QjlkZ1lFWm53RzBIU1ZVV09CSQpmbmV5M3hwVVpaanFvQ1BEbG81ZzV5eDZwb1IxYzVT +M0NVM0FBelhTK0s2UFFjREhpYkJMZ0N0ajEvY0Q3eXZtbDRiUE92VkJ0WFlDCi92MjlFRjl5UFlj +OUJyZ1dtSWdvdXdINE1vcXJSeFpRZmtGR0RDL0U3aHZoUVBhQndEYmdZdURkbEhoVkdhWTY2TWl3 +cFNQWXVVSXYKb0JrWUQvUUR2Z0VPQTU1Qk9zcExnZjdJcTM5ZTlvMXpOaklsVVEzZjliRURPQVk0 +Z2RhT2UxVXN2Z3N3TmNyZkJOZDE2Z09kZGdMKwovYjA5K3BJeHp5Tktka21FTndCcmdiMklnU3JZ +akF3cTNJZk0rMXlRRWE4clExY0hFeG0ybE4zTzA1QlgvZHVBSVltNE9jaUMyei9BCmlRWjUxK0lV +MnRvdGpkMjBMVnNXUHV0akN6QXpJMjRaNXAwMXVQZWRhcHlDbXQzajZMWVQ4Ty92aGZpU3IwWEhD +Y2dUNCs5RStGN2sKaVZnUG5Ca0x0NTFMSHdWY0ZQM2ROeU9Ocmd4ZEhVeGsyRkpXT3pjQVR5Qmx2 +QTU1OWR1ZVNMTU1HVlg5UnV1bzBxVjltNEUrTmRJMApBb2NBUHlubTZiTSt2Z0NPU0FtZkJXd0Zi +dGZJSzQ0UDM2bUdpdDBybUxZVDhPL3ZoZmlTanc1N0JOQWJlQ3NqZm16MHZkV1J2RHBrCmYreTg2 +RHBMZVIzeTFzR0VNdHY1Rm1BR01BVjR0a3E2OVloKyt5eGsyZEE3a3YyclFscmY5WkhXWVU5RHBn +WldSTmMzYWVicHczZGMKa2xjN0tZMHYrZGlIUFNuNlhwOFNkelJ3WVJRWG54ZTAyZHZhaEt5cWZo +SmRaeW12SThORUIxMFp0cFRWenVPUjEvYzF3R3MxMG40SAo3TkxJMnpVdHlLQ21CektDcTRidit1 +akUvZ09zYzRCRndGZkE5VWduc0VNalAvRGpPNjZ3YVNmZzM5L2JneTg1WVJXd0IzbWRxZEFUCm1h +ZlppY3piOUVqYzg3YWhySU9SUllMT3lHdFdDL0J5UmxvZEdTWTY2TXF3cGF4MjNvYU1oSTVUa0hz +c2NLaEczanFzUkhZQ1ZLTUwKb3VzWWhmeDgxOGVMeUtpc3dtUmtlaUgrVVNsbkJWKytVd3NWdTRO +ZE93SC8vbDZJTC9rWVlVOEVmZ1R1aW9VTlFlWnNsZ0FQQXY4bQo3dm5CVU5aQzRFNWt3ZUZuWkw0 +cDYybWxJOE5FQjEwWnRwVFJ6b2NqSTVZTndHWUZ1Y2xYMER6dEN6S2Z1UXNZRG15c2tkWjNmUXdI +ClhvOWR2NnB4YnhxK2ZNY0Z0dTBFL1B0N0liN2t1c01lakR3OTV3SkxFM0c5a1VZL0hWa3Bqay91 +YnpHUWRSTHloS3E4THUxRERKQ2wKdktvTVV4MTBaTmhTVmp0UGlMNVZuRkEzN3l6cVNWK3JxVU5H +VkVrZmFFR2NxTUk2WUZnTkdiN3JveE53RkhLYTBRVytmQ2VPamQxdAoyd240OS9laWZZbVJ5RGFT +RHhRL0Q2ZmswWVFZZmx5R2pFVlJmSE8xZ2loUWp4emJQRElSdmdsNWN0bXM0RGJoVHdjWE52WmR4 +aml1CjdidzBLdGRWQ21rSG9iNmJvQnBQQWgrbGZIWWpIVUl5L0VOZ2RPeit5NEduYThob3dtOTlE +RVhtcWwzZzAzZmkyTmc5ejNiU1JJbDgKS2Y2VTI0Sk05TnN3Q2ZuQmt1U3ByQ1FETE9WY0RSeEU2 +N0hjQ3Yxb1BjNnB1aFVyaVU4ZFhOZ1l5bXZuejZQdjNRcHBiOEROY2R3WgpHZUVyZ1p1QjcydmN2 +eHBaelI5WUphM3YrcmdHdU5mdzNpUStmU2VPamQzemJDZGw5U1VuYkFmZXJCSy9FWGxhMlp6ZzZZ +T01QcnVsCnhDMlA4aDlwa1g4ZU90aFNWanNQamU1YlhDUGRPT0FLemJ4MVVWMzhBam13a2p6Vkdz +ZG5mUnlQZEdDZERlNU40dHQzVkZDeGU1N3QKcEt5K1pFMy9TUEQ4alBpWnlKeE5OZU9vc0lMc1Vl +cjhxQXltUDRDVGx3NDJsTjNPYXhFbjZaVVJmekl5Q21uSWlIZUZUb2RkaC96WQowcFNVT0ovMVVS +L2RON1pXUWtWOCtvNHFxbmJQbzUyVTNaZXNhSTRFbjVFSTd3dk1SbFpabHlPbngweG9CTzVHVm82 +enVERXFRNU9oCkROODZ1S0RzZG01RWRqaHNSanFpeXNoeEJMTHdNNWQ4VG96cWROZ2dIY05DMnBi +TlozMU1wWFdQc0ExNStJNHFxbmJQbzUyVXpwZGMKT01aczVNVFZRR1RmNmg1azVSTmtoSEFBOGpP +UWE0RlhER1djRDl5RC9MSldDN0kvOGJKWS9ERGdjV1NlcVFINEEvbDV3dWxSZWRxRApEclowQkR0 +WDZBcWNoMnluR28wc3FHMURIRFN2LzI2aU9vZWRSUm5hRE9SWHA2cm8yTjFYTytsSXZoUUkvQys0 +QXpuRUVNaVhZUGRBCklCQUlCQUtCUUNBUUNBUUNnVUFnRUFnRUFvRkFJQkFvaXY4QUxKRDhNYVAw +U3pRQUFBQUFTVVZPUks1Q1lJST0K + + $$- B^{\dagger} A^{\dagger} B^{\dagger} - B^{\dagger} A^{\dagger} C^{\dagger} + \left(B^{\dagger}\right)^{2} A^{\dagger} + C^{\dagger} B^{\dagger} A^{\dagger}$$ + 32 + + + + + + +
1,044 docs/examples/notebooks/decompose.ipynb
 @@ -1 +1,1043 @@ -{"cells":[{"cell_type":"text","text":"

Gate Decomposition

"},{"code":"%load_ext sympyprinting","cell_type":"code","prompt_number":1},{"code":"from sympy import sqrt, symbols, Rational\nfrom sympy import expand, Eq, Symbol, simplify, exp, sin\nfrom sympy.physics.quantum import *\nfrom sympy.physics.quantum.qubit import *\nfrom sympy.physics.quantum.gate import *\nfrom sympy.physics.quantum.grover import *\nfrom sympy.physics.quantum.qft import QFT, IQFT, Fourier\nfrom sympy.physics.quantum.circuitplot import circuit_plot","cell_type":"code","prompt_number":2},{"cell_type":"text","text":"

Example 1

"},{"cell_type":"text","text":"Create a symbolic controlled-Y gate"},{"code":"CY10 = CGate(1, Y(0)); CY10\n","cell_type":"code","prompt_number":3},{"cell_type":"text","text":"Decompose it into elementary gates and plot it"},{"code":"CY10.decompose()\n","cell_type":"code","prompt_number":4},{"code":"circuit_plot(CY10.decompose(), nqubits=2)","cell_type":"code","prompt_number":5},{"cell_type":"text","text":"

Example 2

"},{"cell_type":"text","text":"Create a controlled-Z gate"},{"code":"CZ01 = CGate(0, Z(1)); CZ01\n","cell_type":"code","prompt_number":6},{"cell_type":"text","text":"Decompose and plot it"},{"code":"CZ01.decompose()\n","cell_type":"code","prompt_number":7},{"code":"circuit_plot(CZ01.decompose(), nqubits=2)","cell_type":"code","prompt_number":8},{"cell_type":"text","text":"

Example 3

"},{"cell_type":"text","text":"Create a SWAP gate"},{"code":"SWAP10 = SWAP(1, 0); SWAP10\n","cell_type":"code","prompt_number":9},{"cell_type":"text","text":"Decompose and plot it"},{"code":"SWAP10.decompose()","cell_type":"code","prompt_number":10},{"code":"circuit_plot(SWAP10.decompose(), nqubits=2)","cell_type":"code","prompt_number":11},{"cell_type":"text","text":"

All together now

"},{"code":"gates = [CGate(1,Y(0)), CGate(0,Z(1)), SWAP(1, 0)]","cell_type":"code","prompt_number":12},{"code":"for g in gates:\n dg = g.decompose()\n display(Eq(g, dg))\n circuit_plot(g, nqubits=2)\n circuit_plot(dg, nqubits=2) ","cell_type":"code","prompt_number":13},{"code":"%notebook save decompose.ipynb","cell_type":"code","prompt_number":30},{"code":"%notebook load gate_rules.ipynb","cell_type":"code","prompt_number":53}]} + + + decompose + 2 + + + + + <h1>Gate Decomposition</h1> + + + %load_ext sympyprinting + python + 1 + 1 + + + + from sympy import sqrt, symbols, Rational +from sympy import expand, Eq, Symbol, simplify, exp, sin +from sympy.physics.quantum import * +from sympy.physics.quantum.qubit import * +from sympy.physics.quantum.gate import * +from sympy.physics.quantum.grover import * +from sympy.physics.quantum.qft import QFT, IQFT, Fourier +from sympy.physics.quantum.circuitplot import circuit_plot + python + 2 + 1 + + + + <h2>Example 1</h2> + + + Create a symbolic controlled-Y gate + + + CY10 = CGate(1, Y(0)); CY10 + + python + 3 + 0 + + + pyout + C ⎛Y ⎞ + 1⎝ 0⎠ + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURjQUFBQVlDQVlBQUFCZUlXV2xBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFBeFpKUkVGVQpXSVh0MkV1b1ZsVVV3UEhmdmI2S1czYUx3Z2QxVXlTdk5BZ2ZH +WUpwQlE1Q3doQ0NCbXJxNEtLRU5YQlEwV01XRVNJUm9oTVJIMXlwCklLSkVNR2dRUW9XSUlEMndC +QlUxeEFpMHAybWhsWU8xUHp6MzNQUDZQck1HK1lmRHg5bDdQZlpqcmJYMytmZ2ZNeFZyOFM0K3cw +ZDQKQzVQUmhSMFkzNEhkdGZnYWY2Zm5GTllWeUMzQlgwbm1OMnp2d05jd1J1QUZuTWJUdUNmVGR4 +ZjJZaHNPdDJHekYwL2wybmFKZ1MrcQowUHNBNnpHcW9POVpkTGN4Qm4zWWh4T1lWaUl6TXcxcVkw +T2JZekdJVzNMdFR5UTdPMHYwVm9oZEx1TVJ2Tmx3REVaaVA0NWpRbzNzCjkxamMwTzQyVEM5b3Z3 +RS80eHg2Y24zenNhR0I3YTFpQjJ0NVRhemswZ2F5bjRwUXEyTTZkbGYwYjAwK2wyVGFwdUFkc2Ro +MTNDYlMKNDhZcW9SbjRFNGMwaStNbkc4akEyM2lzb24rQm1OeWU5TjZMOXpWYnVCYXZZbVdWd0V2 +SnlVQWJSdXNZaVRNaTU4cm9Gb1hySWlhSwp4WmpTcHArbElwMUsrVkJNYmxhYmhxdVlpeThheUwy +UmZCOFN1ZFl1OStPU2lqRCtRWVJsWmV3bXBqWjB1c3lWY0t0aWtaamNpdzN0CjVyazU2VS9LTm1a +ejZ5Uit3b1VhUTNlb2llOE00NVBOT21hbTN5WUxVY1N2K0E1M1p4dXprOXNyS2s5ZmphRTFocDh0 +ZmFLNjVSbXQKV2NXYkx4Ymh5NEsrQ1hnT3E1UGZpU1UyenVHbU1nZHo4THU0bVpTeEtqMHRldkN5 +T0lTUEZzZ1BxTSs1VVRpdi9MalloWWN6WXl3cQpIS05GUVpwZDVlalI1T2daUTNPdkg2OWpZWW5l +QXNXVFc1anNkVlg0bkNmeTVmbUN2bjVSQzBhazl5NXhlYmd2SjNkdnNuRm5oUi9FCjdOZmpFM0ZS +M2lGMlozS0ZUdG5rYmhWVmJGSkIzekt4QzJmVHdFN2lZMFB6NW5GOGs5UDdITXR6Yll0eExPK2dL +QjhPcE9lZjRFY3gKZ1g1eFY4MHltSjRxYmhjN24rV0M0WGZVYWVJb0cwSmJOK29PMlN3dXlKMXdY +T3hxbGg0UnFpMjZ4Vkd5SmEvOGIweHVVRndNSHVwQQo5NkE0ZXJLTXc3ZVo5elU0SXNMMW1sQ1dj +eTFtaVZBZjA0SHR3NjU4VDg0UXgwVnJVL3J3bGZMajRhcm9FaCt6NzRuY2VFWDU5ZWxCCnhSV3hq +dGxpOTFkZ0V4N0k5RzFTVWVpcVNuUlQ4bjh6bk1jdkpiSmo4RWVIZm9wMHI4YmVkYTd6WDNBWmd6 +dWJDa2Y3Z3o0QUFBQUEKU1VWT1JLNUNZSUk9Cg== + + $$C_{1}{\left(Y_{0}\right)}$$ + 3 + + + + + Decompose it into elementary gates and plot it + + + CY10.decompose() + + python + 4 + 0 + + + pyout + S ⋅CNOT ⋅S ⋅Z + 0 1,0 0 0 + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlnQUFBQWNDQVlBQUFDNlRmY0hBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFCZ2xKUkVGVQphSUh0bW4rc2xtTVl4ejl2NXpqbnRKTFRjYUlpVFVScHhQcGhO +VkZNZGxqbE4vMWhUTm9vdEJTbG1qSVJFNlpWU0dUVFZLc0liZjA0Cjh6TmtSczJ2UDlDRXFDWDlH +RkVuNmZqamV6L2Urenp2L2Z4NG4vZDVTL1YrdDdPejU3NnUrN3F2KzN2ZnozMWYxL1c4VUVJSkNW +RU8KM0EzTUJ4WUN5NEJoUUF0Z2VRSjcvWUFwd0VyZ1hlQTk0RkdnSmRBYVdHVHBEZ2JXQUw4Q2pV +YlBqeEhBRmlQZkIzd0dWUHQwV2dKagpqZTl6Z2FWbS9HRU92VCtNclIrQVZjYS92MDNieDZiZkdt +Q0hhZXNiYzk3NUlnM2VLOGo2K1Erd0VYZ0x6V0VsOEl1UmpVcnFaSFBqCnpDU2dtZFYrUC9DTmNU +d3VXcVBKcmdkdUJOcFlzdjdBQ3VCRDRGbEgzNFZvd1g0REtoM3lZNEZOUUVlSGJMQ1JEYWZwSE5v +QTN3S3YKVysxRGdVK0JkcFplSmJEWHROdW9RZVIzY0l4WktOTGkvVkswTWFhU3kxdGZZQSt3Qk1n +a2RYUXg4SHlBYkROd1cwdzdBOUJ1clVlTAo2Y0k5YURkZjYyc3ZRNFJNTVBLYkhIMVBCSjUwdEY4 +R2JBVzZCWXg1dHJFNXdqd3ZNTFpzOURNNjB4ejlsMU1BdVNGSWkvZW5nZHNkCjdaM1J5N1lXcU1y +Yk80UGowSkU5TUVDK0NqZzFocDFUZ0ozQUc4QXhJWHBkMFc0LzN0ZmVBeGlQRm00ZjhKR2o3M1hB +bGI2Mi9zQmYKd1BVUi9tMEJ2a01iZDU1RFBoRnRrRHFIYkg2RTdTUklpM2ZROWVqbnZCYk5kd05O +VC9HOGNRVWlabVNBZkZJTUcyWEErMmpDVVpPcQpSUEdESDZQSjN2TUxqVS9kZlRvemFMcXhlcUJZ +WW5FTUg5Y0FCOUFwMDlzaFh3M3NCMW81WkxmRXNKOHYwdUFkRkt2YzRHdXJRaS9ZCmR1Q01STjVa +cUVYRU5BRFRnUXNJUHdGY0dJVW02NG9yL0tnQXJuSzB6N2ZHdlNqQTNpdSs1MVZHNzVJWTQyNDJ1 +clVPV1RuYWFLNk4KV3l5a3dic0xHZlRDN0VYWFppcTRGem5hYVA1MkE3UEl6UktDVUcvNmRVNDRm +b2JjZ094cnRHaGVMRk1EekxUa1hjMllQeElkSDFRYgozUTBCOHQ1RzdvcHZpb2xDZVhkaE9qb3Bo +eGJzblE5ZGdBZkpYaFdOS1BLTlFobGF5TjhMR0xzYk1OblhkaWROQThzaEtDdnlNTnpJCkY4U3dQ +OGpvdmh3Z0gydmsvdmptWUNBcDd5Nk1OUDBucE9OYU1Mb0JQNkc2UUZUMGU0NXhhbTFNMjY0NzhR +NFViTnBvaGQ2b0w4M3oKRTBCN1MvNllHZmVSR0dPK1kzUmRWeHNvc0Q1QWJ1QjhzSkVQNzM0TVFs +ZVdQeXZLQUpjbmRXaDhpR3dhMnRITkkyeTBSbG5KMGhqagoxUUhYT05wZndrM0lITFN3L2NpOWdy +eDBlVnpFbUQyTjNxSUFlUWJWT2I2S3NKTW0wdURkUmcvME1xMUU4WlNOZ2NCZGVYbG4wTklZCkRN +SXNWRkgwMEFkTmJBeUtzTzE3Znozd2ZZd3hud2xvRDFxODg5RGlMa2VieFVZdkkxc2RNbDV6NEFP +VTRnYWREdDRKT0R2RWpvZUwKZ1lkaTZJVnhsU2J2b0tMaEZ1QnozTFduWmVRV0ZxTnNBbnFiOXdP +bk9XUW5vTUxUQVBOY2d5cDczdTZjRHR4bjZZOUdKUGR4RFlReQpsNmNDNUtjRER3ZjBBNUhWU0c2 +cVdZWXFwQTJJZEQvS2dUZFIyYmxYaUgwdjF2R25pamE2QWcrZ3pUWTNSQStpdVVxVDkyb1V6UDhN +Cm5PeXdOd0IzWlRqTTVuOTRIQlZTbGdCbldlMmQwS0tNc2RvbUFpOWF6eGVpeGJFeEJkaUZVazZ2 +YkZ3T25BODhSM0NHTTQvd2J3UTMKb3dYczVKQjFRS1g1R1RRdFZmY0NYa1hwWGxoR2tFRW5VQ051 +Z3YyWVN2UUdpZUlxTGQ0cmdMZFJnbkN1ejRjMktJaHZRT3NTMnovNwpmbXFMRnE4N0t0VldvOExL +SG5TLzI1WE1MbWdoUEd4R0M5NEMrTk8wVFFHK1FKbkdORlJ5M3dtc001UGU3WE4wTW5wN2E4MllR +OGgrClU3Q3h5T2k1cnJCTlpvTERnUmRRb0ZscHhwNUQ4RkUrMDh5cEhkbEZXbTNtVlk4QzRLU0k0 +aW90M3NlaEUySWIyWHBSR2Rwb05lYTUKRVhndFQvOFNZUVg2Z09UaEpETjRlN2Y2RVlzNEowaWFY +QldEOTFDYnpWdzlZbUNqTWVLaGhmbS9JNkc5SXhscGNsVU0za050SnQwZwo2MUFBNWFFdE90cjJK +clIzSkNOTnJvckJlNmpOcEJ2a0U3S1JOZWp6ZWxES2VyU2hpcVpGdmpTNUtnYnZvVGJMRWhyZGlq +NVAxNkdVCnJ5MnFZRFlrdEhlNG9UMXdLMHFGejBROGJrTkJlRS8wNjYwVnFCNlJKbGZGNEQzVVpx +RS9lc21nTDQ3N0NyUnp1S0dDYkdiZ1lSZloKbzc0aitvUlFiOG5UNUtvWXZCK3RhM2xJY0RXSC9q +dE9La2dhZzVRUWpDcDB1bXcvMUk2VThQOUVodVN4WFFrbGxGQkNDU1dVVUVJSgp3TDl4anFTc1FZ +cHF6UUFBQUFCSlJVNUVya0pnZ2c9PQo= + + $$S_{0} CNOT_{1,0} S_{0} Z_{0}$$ + 4 + + + + + circuit_plot(CY10.decompose(), nqubits=2) + python + 5 + 0 + + + pyout + &lt;sympy.physics.quantum.circuitplot.CircuitPlot object at 0x2c85f10&gt; + 5 + + + display_data + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVE4QUFBQ09DQVlBQUFBdnRJMzNBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFBQWx3U0ZsegpBQUFMRWdBQUN4SUIwdDErL0FBQUNUNUpSRUZVZUp6dDNFdElW +SDhZeHZIMzJEQ2psZUNGTGhob0dCUkJFR0ZFRUZtTFNNelNMTHU0CmtHaFRVRkl0dWkyc0lJcWlG +a0VVRmFVdXdxZzJicnFIMVNLNi9CZWhkTEVMMnQwd0tteTZwL2IrZDVIbHFQTjY5TXlNM3cvTTVw +d3oKUDU3ZmVlTnBqb002cWhvVWtVUUJnREE0cXFwZWh3QVFmZUs4RGdBZ09sRWVBRXdvRHdBbWxB +Y0FFOG9EZ0FubEFjQ0U4Z0JnUW5rQQpNS0U4QUpoUUhnQk1LQThBSnBRSEFCUEtBNEFKNVFIQWhQ +SUFZRUo1QURDaFBBQ1lVQjRBVENnUEFDYVVCd0FUeWdPQUNlVUJ3SVR5CkFHQkNlUUF3b1R3QW1G +QWVBRXdvRHdBbWxBY0FFOG9EZ0FubEFjQ0U4Z0JnUW5rQU1LRThBSmhRSG9ncXo1OC9sMGVQSG9t +cWVoMWwKd0tNOEVCV2FtcHBrOHVUSk1uNzhlTW5LeXBMUm8wZkxuVHQzdkk0MW9EbEtoU01LWkdW +bFNWMWRuYlMzdC84K2xweWNMRTFOVFJJZgpIKzloc29HTFR4NkllRStmUHBYNit2b094U0VpMHQ3 +ZUxoY3ZYdlFvRlVKKzhuQWNwNyt6QUlnaXZsQW5lSnBCcFBqMTY1ZWtwNmZMCjY5ZXZPeHhQU0Vp +UVY2OWVTVXBLaWtmSkJqWWVXeER4NHVMaXBMcTZXcEtTa2lReE1WRkVST0xqNDZXeXNwTGk4QkEv +TUVYVStQcjEKcTF5NGNFRVdMbHdvNzk2OWs5VFVWSzhqRFdpVUI2S080emc4VmtjQUhsc0FtRkFl +QUV3b0R3QW1sQWNBRThvRGdBbmxBY0NFOGdCZwpRbmtBTUtFOEFKaFFIZ0JNS0E4QUpwUUhBQlBL +QTRBSjVRSEFoUElBWUVKNUFEQ2hQQUNZVUI0QVRDZ1BBQ2FVQndBVHlnT0FDZVVCCndJVHlBR0JD +ZVFBd29Ud0FtRkFlQUV3b0R3QW1sQWNBRThvRGdBbmxBY0NFOGdCZ1Fua0FNS0U4QUpoUUhnQk1L +QThBSnBRSEFCUEsKQTRBSjVRSEFoUElBWUVKNUFEQ0pxZkpJU1VrUngzRmNmYVdrcEhpOXJRN2Mz +R09rN1MzV3hkcnNIRlZWcjBPNHhYRWNjWHM3ZmJGbQpiN2laSjlMMjFsUGtqb3g3RUZPZlBCQ2JY +cng0SVdWbFpUSnUzRGhKU2tvU0VaSFJvMGZMcWxXcjVPN2R1eDZuRzdnR1JIbThmZnRXCi9INi94 +TVhGaWQvdmw3Rmp4OHJzMmJNbE56ZFhjbk56SlRVMVZlTGk0cVM2dXRycnFMM1MxdFltKy9mdmw1 +S1NFaWt1THBiQ3drS3AKcUtpUUwxKyt5THg1ODd5T0Y3WTNiOTdJZ2dVTFpOS2tTZkxwMHljNWVm +S2tORFkyaW9qSXBVdVhaT1RJa1pLYm15dloyZGxTVjFmbgpjZHJlaTdyNWFRd0p0WjJLaWdvTkJB +SzZmLzkrYld0cjYzQ3V1cnBhQncwYXBHdlhyZzFyVGErRXl2UDE2MWZOeTh2VG5UdDNkamkrCmE5 +Y3VIVHQyckJZWEYvZDRyVWp3K1BGanpjakkwQzFidHVqbno1ODduUHN6OTgrZlA3Vzh2RnlIRFJ1 +bU5UVTEvUjB6TEYzZDczRG4KRndtejh6NkJpMExkMElVTEYrclpzMmYvT1g3cjFpMU5TRWpRK2ZQ +bmg3Mm1WMExsS1NvcTBoVXJWblI2TGkwdFRjdkx5M3U4bHRlYQptNXMxTXpOVER4OCszT241em5K +ZnZYcFZodzBicHJXMXRYMGR6NnlyK3gzdS9DSmhkdDRuY0ZGbk4vVEhqeDg2YytiTWY0NDNORFRv +CjhPSERkY3FVS2ZydDI3ZXcxdlJTWjNsYVdsclU3L2ZyNWN1WE8zMVBUazZPUG52MnJFZHJSWUxT +MGxKZHMyWk55UE9oY2g4OWVsU3oKczdQN0tsYXZoY3B0bVY4a3pDN21mK2JSM053c1pXVmxIWTU5 +K1BCQjVzeVpJME9HREpFelo4NUlmSHk4UituY2NmMzZkV2x0YlpYSApqeDkzZW43NjlPbVNrWkhS +ejZsc1BuMzZKRlZWVmJKaHc0YXczN3RzMlRKNTh1U0ozTHQzcncrUzlaMm9uWi9YN2VXbW5tem4r +L2Z2Ck9uMzZkRTFKU2RINitucFgxdXhQbmVWNTkrNmQrbncrRFFRQ3VuNzllcjErL2JxMnRyYWEx +dkxhb1VPSHRMQ3dzTXRydXNxOWRldFcKWGJWcWxkdXhYQkVxdDJWK2tUQTc3eE80cUxzYit1dlhM +eTB1THRaQUlLQlhyMTUxWmMzK0ZpclAzcjE3TlJBSXFPTTQ2amlPRGhreQpSRmV2WHEwdExTMWhy +K1dsZ29JQ1BYbnlaSmZYZEpYN3dZTUhtcG1aNlhZc1YzU1ZPOXo1UmNMc3ZFL2dvdTV1Nk9iTm05 +VnhIRDErCi9MaHJhL2EzcnZJOGZQaFF0MjNicHRuWjJlcjMrOVZ4SEMwcUtqS3Q1WlhzN094dWk3 +MnIzTy9mdjlla3BDU1hVN21qdS9zZHp2d2kKWVhZaEU0aElWTDVDT1hMa2lEcU9vOXUzYis5dy9O +dTNiM3JseXBYUU55Z0M5dFRUUGY3cC92MzdtcDZlcm42L1gzLzgrQkUxZTR2MQpWMDkxTnordjl5 +RWlBK09UeC9uejU5WG44K255NWN2L09WZGVYcTdWMWRWaHIrbVZ2L1BzM3IwNzVMV2JOMjlXdjkr +djM3OS83OUZhCmtXREpraVdkZnEzOHA2NXkvL2ZmZnpwKy9IaTNZN21pczl6VytVWEM3R0wrMjVi +YTJscFp2SGl4ekp3NVU0NGVQZnJQK2NyS1NzbkoKeWZFZ1dlOTkvdnhacmwyN0Z2SjhNQmlVckt3 +c0NRUUMvUmVxbHhZdFdpU1ZsWlhtOTFkV1Zzcml4WXRkVE5SM29uNStYcmVYbS83ZQp6c3VYTHpV +dExVMG5USmlnd1dEd24rdXJxcW8wUHo4L3JEVzk5bWVlYytmT3FjL24wNGFHaG4rdWEyNXUxaEVq +UnVpMWE5ZDZ0RmFrCmFHMXQxVkdqUm1sZFhWM0lhMExsL3ZqeG95WW5KK3ZyMTYvN0tsNnYvSjI3 +Ti9PTGhObkY3Q2VQWURBb2MrYk1FVldWczJmUFNtSmkKNHU5elRVMU5zbnYzYmlrcEtaR0NnZ0lQ +VS9iT2xTdFhKRE16VXpadDJpVDE5ZlcvanpjMk5rcEJRWUZzMnJSSlpzeVk0V0hDOFBsOApQbG01 +Y3FXVWxaVkplM3Q3V08vZHRXdVh6Sm8xUzlMUzB2b29uYnVpZlg0K3J3UDBsWFhyMXNuOSsvZGwx +S2hSc21USkVoRVIrZm56CnB6UTBORWd3R0JRUkViL2ZINW0vY05SRHpjM05jdnYyYmFtdHJaVzFh +OWRLUzB1THBLYW1Ta0pDZ3V6YnQwK21UcDNxZFVTVGpSczMKU2s1T2pwU1dsc3FCQXdkazBLQkIz +YjduNE1HRGN1clVLYmw1ODJZL0pIUkh0TStQditmaHdacTlFV3QvRXlLVWxwWVdLU3dzbEtGRApo +OHFPSFR0azRzU0p2OC85bWZ2NTgrZXlaODhldVh6NXNwdy9mMTdHakJualZlUnV4ZHJzWXZheEJk +RXRLU2xKTGx5NElGT25UcFc1CmMrZkt0R25UNU5peFkzTHAwaVVSRVRseDRvVGs1K2RMVmxhVytQ +MSt1WEhqUmtRWFJ5emlrNGNIYS9aR3JQM3YxUk50YlcxeTVzd1oKT1gzNnRMeDkrMVpxYW1wa3dZ +SUZrcGVYSjB1WExwWEJnd2Q3SGJGSFltMTJsSWNIYS9aR3JQMERIRWhpYlhZOHRnQXdpYmx2V3h6 +SApjWFc5NU9Sa1Y5ZHpnMXQ3ak1TOXhicFltbDFNUGJZQTZEODh0Z0F3b1R3QW1GQWVBRXdvRHdB +bWxBY0FFOG9EZ0FubEFjQ0U4Z0JnClFua0FNS0U4QUpoUUhnQk1LQThBSnBRSEFCUEtBNEFKNVFI +QWhQSUFZRUo1QURDaFBBQ1lVQjRBVENnUEFDYVVCd0FUeWdPQUNlVUIKd0lUeUFHQkNlUUF3b1R3 +QW1GQWVBRXdvRHdBbWxBY0FFOG9EZ0FubEFjQ0U4Z0JnUW5rQU1LRThBSmo4RHdBb24zcHVmNG1n +QUFBQQpBRWxGVGtTdVFtQ0MK + + + + + + <h2>Example 2</h2> + + + Create a controlled-Z gate + + + CZ01 = CGate(0, Z(1)); CZ01 + + python + 6 + 0 + + + pyout + C ⎛Z ⎞ + 0⎝ 1⎠ + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURrQUFBQVlDQVlBQUFCQTZGVVdBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFBMUpKUkVGVQpXSVh0MkZ1SVZXVVV3UEhmTk9NTVhaalIwcHA1cUxCb3hxZ0gw +NHJJUUVub01rUVFYWVRvWXNKa1JCRkVwQlVSQlltOUdkUkRQaVF5ClVFUXZSWlFpaEQ1MEU4RXVV +RVpCV2c5Tzl3dFptV1Qxc1BiT2MvYnN2YzkzenB5SEh1WVArMkYvYTUyMTl0cmZXdXRiK3pDTFVk +eVAKbC9FMmR1QUZMRVFQdG1LNEMzNG04RTkyL1lyM3NUMjczc3pXZjhaZ0YzejlSeS9XNHlEdXhq +a05zdE94QzF2d2FSczI1K0syQ3RucgorQUtYbHNpMjRnaFcxdGkrcjQzbkFHZmdYUnpBb2dxZEpl +THRQcE5vY3hDVEdDcVJuWUQ5RmJMSE16K3JXOWkvQms4bVBvcys3TTZjCmpyVFEvUWJYSmRyZGdz +VVZzbXZ4VU1uNmFoSGdFNGsrWHNLYUZNVU5tZUZiRW5UZkVpbllpc1Y0clVaK3ZlbTd1RktrNkdT +Qy9aeGgKZklJNWRVb1g0Q2creG5FSlJsY2xPbjlScEZNcTU0c21zeFA5YmZ3T051SEdPb1ZIeEM1 +T3RHbTRqajU4TDcwcmp1QXI3TU84RHZ6ZApKYnB4SmR0RWtFczdNRjdGTW55WXFIc1M5b3BhWDlp +aHZ4VTRWS2Z3bzBqWDR4T01qU1k2dlJWdkpPajFabnEvNGFLQzdFS2NsdWh2ClJHelUvTWJGeHRy +N1V0VENIeTBNTGNBZGlVNkhNNXV0ZUJaWDRtYnNLY2pXNFpkRWYxTmltRGl6Y2JFeHlGMDRXWnlU +ZGR3akNqeG4KbVJnY0hzRERCZDErVVpkMXJNTmFNVm05V3BDZExTYXJ3OW45SER5UHMycnNIUktw +WDhvbG1iSDFOUWJXWmxmT0FqSDE5R2IzbTdLSAp6WmxRWDVPcjhEZWVMcEgxaWJQdjl1eCtqVGd6 +LzFJOXBBeUtkRDIzeHFlcjhEdnUxVnliWTlpSThZTCtZOWpjY0grNU9LdHl4ak43ClBTVytMaE12 +OVJYTkdkV1hCYkZOQkhSSzRYZUhWUWQ1c1FpeTZmd3VwdEoyTEJkdmVJZW96eWw4anVmRUpOVElJ +czN6NjBIeEZnZncKcHhnUCswV05IR2pRNjgrQ0d4Q2Q5SjFzZlVpa2FINmc3OFFQRlFHVk1ZYVBG +UHBBV2Izc01iMzRxNWd2ZGlvbmIxcEQrQlkvaVRGeApUSE9RUnhRNllKZklNNkNKbE1tbWp2MGlQ +WEpPZE95ektHY3picGlobnhUNmNMVm9URTNNTk1pOU9MWGhmaGhmaTUzS21SUUR4dklaCittckZn +M2dQbjNYYjhCTE5xZjBVSGkzUlc1cnBEWFRCWjFuakdjVUhLa3FndDJ5eERhWXl3MWZnUExHckd6 +VHZaSzYzRHplSmZ4ZzYKWVZ4OGZxMFE1K0JjeDQ2bmpiaFRqSVRUS0d2dG5kQWpPbUl4dUNKNTEr +MkVlWm96NFNpKzY0TGRXV2I1UC9Fdk4yS243REZxRG5vQQpBQUFBU1VWT1JLNUNZSUk9Cg== + + $$C_{0}{\left(Z_{1}\right)}$$ + 6 + + + + + Decompose and plot it + + + CZ01.decompose() + + python + 7 + 0 + + + pyout + H ⋅CNOT ⋅H + 1 0,1 1 + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUh3QUFBQWNDQVlBQUFDajZ0dmtBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFCV1pKUkVGVQphSUh0bW10c0ZVVVV4MzlGb0FnK1FLaVNxdHhHVUxDQXFFQWsx +bUlOUGo2SUdKR0VEeEJCRVIvMWtXQWtCbVBVcUlTWUdLTDRxQXBHCkhzSFkrUG9naWkyb0JWRlJh +MUt4S1BWRjFFZ2dKR0FWQ2VEenczL1c3dDA3czd1M2R5ODBkSDlmNXQ0NXMyZG01OHljT1dmdWha +UVUKNEExZ0cvQXY4Q2ZRQWl3MXNnendQdkNMa2Y4R2ZBYmNsb2YrWTRHWndOUEFScUFCYUFLbUdm +bGx3SHhmK3llQnpjQmZ3Ti9BT1JhZAphNEg5Wmt4N2djV1dOaU9BNTRCWGdHWEEyMEE5TU5veHps +bEczMEdnR1hnSCtOclUvUXFzTjJQL0hQZ0grQ2JrblR0THNXM3hQeE9NCmtpY2M4Z1ZHUHIwVGV0 +dlFvR3VBM3FhK0QvQVk4RGl3RDdnbzhOd2c0QXZUNTdNTzNiUFJCSlVFNm5zQWRlYjU0R0taZ2hi +S2RSWjkKRGNEOXZqRkN4eUs0M2RMM3U0NXhGVXF4YkpIRmZLUGtDb2U4QWUyMkFYbm9YQWdjQXU1 +MHlJOUJLL1Izb0ZkQWRnMHdBOWhxNU1kYgpucjhMR0J1b0swR0xheTFhVkRZZVJidWozRmMzRUht +Q0lDK2dlUmtlcUIrQ0ZsVXhLSVl0Y2xpRGpOUFBJdXVGZG1GTEh2cHEwYUJuClJyUmJDTHhscVY4 +TW5BYmNZZlRVV3Rxc1JJdkd6eExrOGdhRjlEbko2SHpBVnpjWCt3Ui9DK3kwMUk4RjVvWDBVUWhK +MnlLSEh1Z2MKL05BaHZ4Qk4wSktZK2tZaXQ5a1VvKzBjN0JQbjdiWVRnVCtBTHdQeUVtQlZvTzVo +TTg2ckkvck1tSGF2K2VwbW9YbndVMjdhMlhiKwpTR0I4UkQrZElWRmJCRi9JWXd6UUg3ZUJMakhs +aGppZEFNdFJvSFpmakxhdDZCejJjd0xRYmo2M0F5OEJvOGcrNTBjamQrOVJEdHlECmR2ZWFpRDZI +bXJLdnIyNEZDc1Q4VERUbFJvdU9yZWc0U3BwRWJkSFRVZSs5Mk9Ya25va0E0MHhwZS9FZ3A1ajJu +d0tiWXJUL3hGSlgKUmZZS3J3TnVCRzcxNmJ3NE1KNWE1TzVXb2ZNdGpNcVF2djE0OHhKM29TZEJr +clp3OGpwS2dZNnp5SG9pbC9wVlRGM1hJcGRUU0VDegppSTVkNkxFWnBVdGw1dnNLc2dPOURhYmZL +MlBvcnljOEtQSm9CZmFRbXdVVWt5UnRZWFhwSlVBMVNtSDJXZVRuSTljWGQwVmRZTXJXCkdHM0xz +RWVhWndEZkIrcnFVTG8weDN6dmpmSlVqMkdtM0I3Ulp3YVlDdXdDUGdwcE54QjVnazFvY1J3T2ty +YUYxZUNWS0tMOXdQR00KZDI3R2RXcy9tbkpIakxiM2ttMDAwTm0vMzlLMkh1MjJtOUdZMndMeVhh +WnNKNXg1YUtmTVJlbWVpMnBrZ0lKY1o1NGtiUXVyd2Iwegp3M1hlVnBuUzl1TFRVQzdzcDhtVTUw +V01wUkx0eHVCS25vRDliRDJBZ3NFSzVQS0Q0L0VtYVZKSW4rT1FvVjhFM293WVgxakFWZ2JjCkRk +eUNMbzRxSW5SNTJPYkwxbWRTdHJEeU1uSlpneDN5bmNCM2dicng2RWFxQlhna0lDdEIwZXNXc3FO +Z1A4T1I4VW90c2dlQnN4M1AKbllraTZVUElFL2laaU02K2VzZXpJNERkd0t2WXo4Y2d6Y2dEMkFM +ZDFjQms4M2tVU2hsZEdSQ0V6NWVmcEcyUlE2bFJFand2UGNhWQpBU3gzeUpjNU9obUFqUDRlY0tx +dnZqKzZQVnRFOXZXbHg4bkF6M1FFWmpiVzRUNTdaeUFqK1hkNVh4Ukl0cUVvUHc0WnRIaldXMlNu +Ckk2L2tYNncvb1B3NEN0ZDhRWkZzNGEzQ0RISUwyMUFhTlFTbFFkNXQxbFhBeDNTODhCUjBibFFS +ajczQXBlakhpbWRRaXJZU2VNakkKRnFCZDZsRnErdnNKM2E2MW9KemF4bE5vSWRsWWpZdzdGYm50 +cGNEenlPVk9Kanh6cUtEalI1MW1kSU5YamR4ckl3cVlBTTR5NzNEUQo5K3dPb284d0Y4VzJSYUtF +cmRpamxlbmtCb3pyVUFBYVJUSG5LM1NIcDNTZTdlU21hZjFRQnRIbFNBMWVPRnVBa3dKMWc5Rngx +T1ZJCkRWNDRCMUJnZWE3NTdtVU9qZWI3TUhKdkNZOFlycnYwZkJtS2dvY2FkTlczRy8yaUZPZXk1 +V2hnTmdvOEcxRnVmejJLNmtHLy9kZVEKL2NlTFlzNVhxTzZrN29UN29CVEx6eDZ5SSsvdVFDblow +VHBvam05QWY1endLT1o4cGJib0F0eDBwQWVRY3Zpb1JwY2tLZDJFcE9LawpsSlNVbEpTVWxHN01m +MjBkWGlkUDdJV25BQUFBQUVsRlRrU3VRbUNDCg== + + $$H_{1} CNOT_{0,1} H_{1}$$ + 7 + + + + + circuit_plot(CZ01.decompose(), nqubits=2) + python + 8 + 0 + + + pyout + &lt;sympy.physics.quantum.circuitplot.CircuitPlot object at 0x472d550&gt; + 8 + + + display_data + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU5jQUFBQ09DQVlBQUFDaS9KMktBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFBQWx3U0ZsegpBQUFMRWdBQUN4SUIwdDErL0FBQUIxTkpSRUZVZUp6dDNVMUlW +RzBid1BIclRJOVprMlZaazVDTEtLaVJYR2lVQzVueVl4T1ZWQWlSClVxc0tETVlXdFluMkxTSnBx +N1hLb1hiWklvSlNORFFzb3pBRE45R21ORnRVUXdiMm9WYk9YTS9xaWQ3WEdkUEp5ek56NXY4RE45 +N04KNlRyZS9wMDduY3BSMWM4aXNsSUFMQ2hIVmRYdElRQXY4cms5QU9CVnhBVVlJUzdBQ0hFQlJv +Z0xNRUpjZ0JIaUFvd1FGMkNFdUFBagp4QVVZSVM3QUNIRUJSb2dMTUVKY2dCSGlBb3dRRjJDRXVB +QWp4QVVZSVM3QUNIRUJSb2dMTUVKY2dCSGlBb3dRRjJDRXVBQWp4QVVZCjhVUmNCUVVGNGppTzJW +dEJRWUhidCtocFh0MC9UL3hiOFk3amlPVnRXRjgvMjNsMS8vNVo5TjhSQzA1VjVmSGp4eEtKUkdS +MGRGU20KcHFZa1B6OWZLaW9xNU9USms3SisvWHEzUjh4S25qZ1daaXRWbFVna0ltVmxaWExpeEFr +cExpNldzMmZQU2w5Zm54dy9mbHhldlhvbAp3V0JRamgwN0ppOWZ2blI3M095akhqRGJiZFRWMVds +eGNiRTZqcU01T1RsYVZsYW1qWTJOcXFvNk1qS2lOVFUxV2xSVXBJN2o2S3BWCnE3Uzh2RnhiV2xy +bWZIMjNURTlQYTJOam81YVdsdXI5Ky9jMUhvLy9XdnQ5M2srZlB1bWxTNWMwRUFob1QwK1BHNlAr +a1ZmM0wvMCsKYTFMd3B3L2VreWRQMUhFY1BYUG1UTUwxaXhjdnF1TTRldlBtelpTdXY5amk4Ymcy +TlRWcGRYVzFmdjc4ZWNaNm9ubDdlbnAwM2JwMQpPakF3c0JnanpvdFg5eThyam9WOWZYMGlJckov +Ly82RTY3Mjl2YkpreVJMWnMyZlBZbzZWc3M3T1R1bnU3cGJidDIvTHlwVnorMDlCCmEycHE1T3JW +cTlMUTBDRHhlTng0d29XVnNmdm5TdElMN0UrM1VWdGJxN201dVRveE1URmo3Y2VQSDdwaXhRcmR2 +bjE3eXRkZmJMVzEKdGRyVzFwWjBQZG04OFhoY2QrellvUjBkSFVhVHBjYXIrK2Y1WjY1NFBDNzkv +ZjFTWGw0dXk1Y3ZuN0UrTURBZ0V4TVRVbGxaNmNKMAo4emM4UEN4UG56NlYrdnI2ZVQvV2NSd0po +OFBTMHRKaU1KbU5UTjQvejhjMU5EUWs0K1BqVWwxZG5YQzl0N2RYUkVTcXFxb1djYXJVCjNicDFT +NDRjT1pMd0UyMHVHaG9hcEtlblI3NSsvYnJBazluSTVQM3ovTSs1L2p1dmQzVjF5Yk5uejJhc0R3 +d01pT000YWZtVkw1Rm8KTkNvYk4yNU0rZkYrdjEvV3JsMHJZMk5qa3BlWHQ0Q1QyY2pvL1V0Mlho +U1JqSHBMcHE2dVRuTnljdlRidDI4ejFxYW5wOVh2OTJ0SgpTY21zWjJlMzd5MGIzcnk0ZjBtZnVU +U0RYdTdqT0U3Qzk2dXFQSHo0VUVwTFM4WHY5ODlZSHh3Y2xNbkp5VGw5MVV1WGo4ZUZDeGZrCnk1 +Y3YwdHpjblBUWHpQWnluMWdzSnF0WHI1YlIwVkZaczJhTjFaano0dFg5OC9TZnVWNjhlQ0ZqWTJP +eWUvZnVoT3VQSGowU2tmUTgKcnllemI5OCthVzl2bDFnc2x0TGo3OTI3SnlVbEpXa1QxbXd5ZmY4 +OEhkZC81L1ZkdTNZbFhPL3Y3eGNSU2MvemVoSTdkKzZVUUNBZwpuWjJkS1QyK3RiVlZ3dUh3QWs5 +bEkrUDNiOWJEYW9aSWRodjE5ZlhxOC9uMHc0Y1BDZGNMQ3d0MXk1WXRLVi9mTFpGSVJDc3JLL1hu +Cno1OEoxNVBOT3pnNHFJRkFRQ2NuSnkzSG16ZXY3cDlubjdtK2YvOHVEeDQ4a00yYk55ZDhWZmpR +MEpCRW8xRUpoVUl1VFBkM2poNDkKS3JtNXVYTDY5T2s1djlwaWVIaFlEaDA2SkMwdExiSnMyVExq +Q2YrZUovYlBsYVFYMk8rMzhlYk5HNjJzck5STm16YXB6K2ZUcFV1WAphaWdVMGl0WHJxaXE2cDA3 +ZDdTaW9rSURnWUQ2ZkQ0dEtDalFxcW9xN2Uvdm45UDEwOFg0K0xpR1FpR3RyNi9YOSsvZi84L2E3 +L1BHCjQzSHQ3dTdXRFJzMmFHdHI2MktQT1NkZTNULytzbVFhWEQ5VlUxTlRjdTdjT2JseDQ0YnMz +YnRYVHAwNkpkdTJiWlBDd2tJWkdSbVIKdTNmdlNtdHJxOFJpTVdsdWJwWURCdzY0UFhKQ1h0MC80 +a3FENi8rdDhmRnh1WDc5dXJTMXRjbmJ0Mi9sNDhlUFVsUlVKQlVWRlJJTwpoNlc2dWpycHQ3dlRn +VmYzajdqUzRQb0xqWGtYOS9ySmVQWWJHb0RiUFBQYVFzdGpUeWI4d0RYVGVYSC9QQkZYSmgyQk1K +Tlg5NDlqCklXQ0V1QUFqeEFVWUlTN0FDSEVCUm9nTE1FSmNnQkhpQW93UUYyQ0V1QUFqeEFVWUlT +N0FDSEVCUm9nTE1FSmNnQkhpQW93UUYyQ0UKdUFBanhBVVlJUzdBQ0hFQlJvZ0xNRUpjZ0JIaUFv +d1FGMkNFdUFBanhBVVlJUzdBQ0hFQlJvZ0xNRUpjZ0JIaUFvd1FGMkNFdUFBagp4QVVZSVM3QUNI +RUJSb2dMTUVKY2dCSGk4cEJZTENaZFhWMGlJdkw2OVd1WHB3RnhlY1M3ZCs5azY5YXRjdmp3WVJF +UktTa3BrZlBuCno3czhWWFp6VkZYZEhnSi83K0RCZzlMUjBTSFQwOU8vM3VmMys2V3JxMHRDb1pD +TGsyVXZucms4NHYvREVoR1puSnlVOXZaMmx5WkMKMG1jdXgzRVdleGJBVS81SnRzQnBNYk0wTlRY +SnRXdlhaR3BxNnRmNy9INi9QSC8rWElMQm9JdVRaUytPaFI1eCtmSmxxYTJ0bGR6YwpYTW5MeTVQ +OC9IeUpSQ0tFNVNLK29lRXgwV2hVb3RHb0JJTkJ5Y25KY1h1Y3JFWmNnQkdPaFlBUjRnS01FQmRn +aExnQUk4UUZHQ0V1CndBaHhBVWFJQ3pCQ1hJQVI0Z0tNRUJkZ2hMZ0FJOFFGR0NFdXdBaHhBVWFJ +Q3pCQ1hJQVI0Z0tNRUJkZ2hMZ0FJOFFGR0NFdXdBaHgKQVVhSUN6QkNYSUFSNGdLTUVCZGdoTGdB +SThRRkdDRXV3QWh4QVVhSUN6QkNYSUFSNGdLTUVCZGdoTGdBSThRRkdDRXV3QWh4QVVhSQpDekJD +WElBUjRnS00vQXZuK01DMi9PUDM1Z0FBQUFCSlJVNUVya0pnZ2c9PQo= + + + + + + <h2>Example 3</h2> + + + Create a SWAP gate + + + SWAP10 = SWAP(1, 0); SWAP10 + + python + 9 + 0 + + + pyout + SWAP + 1,0 + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUU4QUFBQWNDQVlBQUFBZ0x1TGZBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFCRGRKUkVGVQphSUh0Mkh1SVYxVVFCL0NQN3VyNjNEUnJlLzBSdUVUMlFIcFEw +c08wc2toSndoSktvaWlWSUFpRHBEQXF3WXdzaWg1WTlLU283RVZHClVWRXJiaVhhd3lpa0NJMG9r +dktQeU5JMHJWeGJzei9tL05pNzEvdjcvVzQrU25TL2NEbm56Snd6TTJmdXVUTnpMajNZSTJqRURD +ekEKUzNnZDB6QVE3NkFkSGRpT1Rpekg0TFIyRnI1UHZPMzRIRmRtWkYrRnRZbTNHWGVXc09jMVRL +M0I3NE5GK0RiSjNZREZhTU15ZkllMwpjR0lKWGJ1RS9rblJyZWlkb2QrTXI0VXo0ZTVrNkpNRk1s +b1Q3OVVxT2s3Rnh4aFV3cDZMazZ6WkplWmVtT1plbjZQM3dlUFlnbk5LCnlLbUwzbFhveitKSDNJ +Ry9NL1I1NG5TMXAvSGExRzRwa05HVTJyNVZkRnlVbnMxMWJCeUkyMVAvMERwellYUnEyM1AwdnpB +MzJUVzkKaEp5NktITGVBV0pUcjFSWjh5WGVUZjExTldUUFNPMndBdDd4K0VtWDgydmhOanlRK21X +Y053YnJzYXFBTnlDMWg1V1FVeGRGemp0VApIUEdqcXF4Wmh0V3B2NzdLbkhINEJwc1VPKzlhUEZM +Q3ZtUEU1LytNK0JUck9XOGdUc2FIYVg0ZW8xSzdvSVR1bmNKQklnRjA0RjVkCnppekNHY0xJaHpL +MEpoRXYrd29uLzV4Yk13a1RTdHJ5Tm9hbi9qb1I5R3ZodkdUUFRRVzhCbnlWYkJwY3dOOXR1RkZY +SnExa3hJY3gKSkRkdmhCMmROeHNUVS84ejhTSjZwWEVUNXBlMDRYSVJveXBZaFQvcXJKbWI3RGs5 +Uno5Q1ZBc0xSVmphNHhpQk9WaUtyY21vaGJrNQpMYm83cnhWdlpQaUxFbjlvR3MvRTBTVjBOK01U +WFRFSzNrdXlhbTErS2JhSjdQOW9lcDVPK3hoWFF1OGV3WEg0UVdTc2ZobDZvKzdPCmV6UE5yZUNG +eEc4VlFYcE9TWDBQWW5LTzltS1NWYzM1L1VUVy83U2tqbDFHUG1ITXFqSnZKWjRYeHZmSzBEdXhN +ZlVuaThKNFpZYi8KUzJxSDRRYmNWOEttRXpCRmxCTnRtZWUweEsrV05FYUpzTENraEk3ZGdzWk1m +eERHNHE0cWM1dXhBbi9tNk90RUFKNk5zd3Q0TUY0VQoxeHZWUmkvaDRERWl1R2N4VXlTd2FzNDdL +N1ZMNnVqb2c4ZEVEVnN2QVJIaGE1S29ISTRVKzh6N3dIaHhrbG9MQkxTSXVpenZIT0l6CjZkQlYx +MlZ4blRpdHkxVXZ5TE9ZSnBKVkVTNVZmSE9vb0YzWTMxeEQvbFJSY0hjS3A5UkRnMGhVaDZUeGRE +eFZOUEVlVVpzdHhMRVoKK25DeCtabFZGTFFsQlkwRnZDbGl3Nk1MZUhsY0lPSnFReFgrdVVuV3ZB +SmVNMzRYMmIwTXRpam52RXZ3VVdiY0lrN2RnUHpFNTNDZwpPRjJMeFlscUV4ZnlmT3JQNGdtY1g0 +VTNKc210aFpQRVM2dVVSY3QxZnhIOThiNElBZHZ4V3hxUFRNOHlyRW04VGZoQWxEbTFVTlo1CnQ5 +anhwdFVwQ3ZIOUZtV2RkNys0M1dTeFNmcXhVQ1lPN2M5WWJjZHIzZ0RwV3RyanZOcFlJZUpjQlMy +aUlsanovNWl6ZDZEb3N4MkoKdzNPMFFlTFhYQ1ZCWElHWEs4eHFtVzFmeFFUeEYzdXNjTXdRZkpG +NDgzR1o3Z2x1cXpobDE0Z2IwaW5pbHJUaFA3RjJMOE5RVVdSWApub016dkFaY1hXTnRVNTVRVkp2 +dHkvaTFCbStiMnY3bzJNMjI3Rk9ZS0s1ZlBkZ0o3RzlmWVE5NjBJTWUvQ3Y4QTk3RzZZNFE3TUxv +CkFBQUFBRWxGVGtTdVFtQ0MK + + $$SWAP_{1,0}$$ + 9 + + + + + Decompose and plot it + + + SWAP10.decompose() + python + 10 + 0 + + + pyout + CNOT ⋅CNOT ⋅CNOT + 1,0 0,1 1,0 + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU9RQUFBQWNDQVlBQUFCeGxoUDVBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFCVGhKUkVGVQplSnp0bTN1SVZVVWN4ejkzdDAxdGEwUEQyaDd1WnFRR1dXUmdT +dlorSzBRRVlVUVBlbUNSRWowa2tMVEFpRW9JQXd1V2lwRE5zcVJhCmdnaEN4WTBzTFhBVkNyUFdq +YzJnTXJRbnZTaHMrK1AzdTd0elorZWNNL2VlcytuZW1ROWN6ajN6KzgzcmUrYk0vYzNjY3lBU2lZ +d2EKcGdJUEFLOERId0xyZ2JYQVpLQUVkQUt0Nm5zUzBBM3NCZ2FBYlk3eVpnS2ZxMzBBNkFNdXRu +d2FnT3VBTG1DTmZ0WURqd05IV0w3ZApXczUrWUpQNi9hUnB2Y0M3bXI1SDB4NnFxdmZWRWJYeXB4 +cXRJT3BGSTdBRStCWllDRXd4YkpPQTk0RFZpQUEyaTRGUHRKR3pFOHJ2CkJxNTFwSjhDN0FRNmdH +WWp2UW01WUwxYVA4QUp3RDVnbHFQc2Y0RHhSdHBod0ViZzVvVDI1Q0ZxNVU4ZXJTQTh2UUJvQTdZ +Q1h3R24KSmZpY2pZanlyTU8yRnBpajlzNkUvSzg0MGlZQi9jQ3RDWG5HYVp1NjlQeGU0QnJMNTNE +Z0Q2VDlObzh3WE9DOFJLMzh5YXNWaEtVWApJSGY3eDBqamo4L3cvWjdoTTFFSldLZmZlNEEvZ1Ft +V3p3UmdsWlhXaXN4UXoyWFV1UWE1R08xYVQ2TmxMMStzRlk2OHoxQTVzK1VsCmF1VlBYcTBnRUww +YXJQTkhnWE9BaDRIdk12THVSbjdDVGFZallRRklhREFXdU0zeU9SLzR3RGh2UVg3eWp3VHV5Nml6 +VDQ5bkFlOEEKQnl6N2hYcDgzNUczQjFrREZFWFV5cCs4V2tGWWVnRXdReHV4aytFM3FvdnJIV21M +R0dwNE0vQXpJbkRKOEZsSjVZTDlRV1RtZWNLagp6cGZVMTFVM3lFTDdBSEMwUjFsNWlGcjVVNFJX +RUk1ZWd5elZCaTNJVVVZbk1uT1ZXYVZsWG02a3ZXcDhid0MrVnA5cEh1VnZVOStUCkhiWkc0RmRn +dTM5emF5WnE1VThSV2tFZ2Vwa3oxbmw2ekZQcFdPQXY0N3hEajNmcnNRWDR4YkMzSXd2dS9jQVhH +V1dQQjA0SDlpSUwKY0pzWndGRzRRNHFpaVZyNVU0UldFSWhlNWcwNUMvZ1grTXdqMzFSSDJoUWto +RERaaFd4bFh3MmNpRnljTFliOVZEMzJlOVM1RUxrbwpYUW4yQy9UNGZ3eXlxSlUvZWJXQ3NQUWFa +QWZ3ZzRmZlJOd3grUjNBRlk3MCtVZ29zQng0a3NxUTRFeTFiY2lvY3d3eWUvVWpNNVdMCnQ3U3Np +UmxsRlVIVXlwKzhXa0ZZZWczeXRGYmFsdUczSERqT2tmNGlzcHRsMDRSMCtCdmdUY3ZXZ094Ty9V +N2wrc0JtQlRMTFhwUmcKTHlHaGljOHMzQWE4NXVFM0Y5a1VXTXBRV0ZRbUJLM1MrdThpU2RlOFdz +SG8wQXVLR1Z1RHpFWmk5Q1VwQmQybEh4ZnJFdElCSGtNdQp5c3NPMi9OcW01dVFkekh5aCt6dEtl +VlAxekk2VW55YWdXWGFocjRVUDVBL3JqOWlhQWZ2RFdRMkxsUHZXbVgxM3lSTDE3eGF3YUd2ClY1 +RmpxNEtydElIM0lFOHZsSm1HaEFUekV2TGRDTHlkMG9nMlpNdjRUb2V0U2ZOdW9mS1AzblprMXZ3 +VVdYQ25zUXdSN2FZTVA0REwKeUJidEJlVHBpekszSU04eW10U3pWajc5dDBuVHRWYXRZSFRvVmFh +b3NWWEJUT0FwWUxNNmRtcWpKanQ4NXdGZk12UkE3dzRrZG5mUgpSZktpZlF4d1B4S2FyTlpQQi9K +ODRMaUVQQXVROWNGV0pPUVlRRUtYVGNnalZrbjRpTFlaV2JlWWVmWTUvT3BWSzkvK1kvbWs2VnFO +ClZqQzY5Q3BUNU5nS0JoL1JkZ0UzR09kemdMOUhyRVdISHJYMDMwZlhlaWYzMlBKNWNpSkUrcEZa +c1V3ejhPTkJhc3ZCSVBUK2p5U3AKMnNZYjBzMTI0RmpqdkJWNTZpTVVRdS8vU0pLcWJid2hoN2dV +MlFRQWVUUGhFc04ySmVtN2JQVkdWdjlOclNMWmVJOHQreFdUZXFhRQpQSkV4SDNudnJqd1o3VUhF +NmdGK1F3VHJSZDVPT0FNNEY5bkZXMGxscUZIUHBQWGYxaXBOMTFDSVk2dEdXcTFQaTJGclFyYWdU +UnFSCmQvbENKYW4vdGxacHVvWkNJV01ydE1HMk44VjJETVBmYWJQZmlRdU5wUDdiV3FYcEdncHhi +QlhNSXVLYTJwZW9WWFZFdldvZ3RHZ2gKRDFHcjZvaDZSU0tSU0NRU2lVUWlrVWlrY1A0RGNJbU5W +d2I2YnpNQUFBQUFTVVZPUks1Q1lJST0K + + $$CNOT_{1,0} CNOT_{0,1} CNOT_{1,0}$$ + 10 + + + + + circuit_plot(SWAP10.decompose(), nqubits=2) + python + 11 + 0 + + + pyout + &lt;sympy.physics.quantum.circuitplot.CircuitPlot object at 0x7f082c973650&gt; + 11 + + + display_data + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU5jQUFBQ09DQVlBQUFDaS9KMktBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFBQWx3U0ZsegpBQUFMRWdBQUN4SUIwdDErL0FBQUNybEpSRUZVZUp6dDNXdG9V +L2NmeC9GUC9rNU1VN3ZXU3kvTzBWUkJXcEZONnh5dVExMTNZVk9xCmlBVzEwd2RqVHF3R0ZjY1FW +K2NGdGoxeGJHeXNVeXVsRjhXaVZrVXBvclcyVnFadTBMS3RtNjNWVGV2TWRKdXhyZGlzTmtyUzcv +K0IKSUhaTm9zbjZ6VEhKNXdWNWtuTU9mSC8rK2lZbkY5QWtJbDBBNGtCRUE4b2tJbUwwRUVTUjZI +OUdEMEFVcVJnWGtSTEdSYVNFY1JFcApZVnhFU2hnWGtSTEdSYVNFY1JFcFlWeEVTaGdYa1JMR1Jh +U0VjUkVwWVZ4RVNoZ1hrUkxHUmFTRWNSRXBZVnhFU2hnWGtSTEdSYVNFCmNSRXBZVnhFU2hnWGtS +TEdSYVNFY1JFcFlWeEVTaGdYa1JMR1JhU0VjUkVwZWNyb0FlaS9FeEY4OTkxM0tDOHZoOTF1aDh2 +bFFueDgKUExLeXN2RGVlKzhoS1NuSjZCR2pFbCs1d3BpSW9MeThISk1tVGNLU0pVdVFrWkdCOTk5 +L0g5OSsreTNlZmZkZFhMNThHZW5wNlZpOAplREV1WExoZzlMalJSeWdzdWQxdVdiWnNtVXljT0ZG +cWEydWx0N2Yzd2JHSHQ3V3pzMU8yYk5raWlZbUpjdkxrU1NOR2pWcjgvN25DCmtJaGcxYXBWYUds +cFFWVlZGZUxpK3Y3ZmhTYVRDZi9lMXZyNmVpeFlzQURIamgzRGxDbFRRamx1MU9KdFlSaXFycTdH +aVJNbmNQancKNFg1aCtmTHFxNitpcUtnSWVYbDU2TzN0Vlo2UWdDaU1xNnVyQytmT25ZUFQ2VFI2 +bEtCdDNib1ZCUVVGaUkrUEQraTYzTnhjSkNRawpvS2FtUm1reWZWZXZYc1hGaXhmN3ZUSS9rUXk5 +S1EyaDN0NWVXYjkrdlpqTlpvbUxpNU9ZbUJqWnRHbFRuL2NxNGFDdHJVMUdqaHdwCmQrN2M4WG1P +djIwdEtTbVIyYk5uYTR5bTZ2cjE2L0xDQ3k5SVRFeU14TWJHU21wcXF2end3dzlHaitWWDFNUzFl +L2R1aVkyTkZRQVAKSHJHeHNWSlpXV24wYUFINTdMUFB4R2F6K1QzSFgxemQzZDFpc1ZqRTZYUU85 +R2lxSmsrZUxJTUdEZXF6ZjhPR0RaT2VuaDZqUi9NcAphbTRMQ3dzTDBkM2QzZWU1N3U1dWZQMzEx +d1pORkJ5SHd3R3IxUnIwOVJhTEJTTkdqRUJIUjhjQVRxWHJ5cFVyYUcxdGhjZmo2Zk84CngrUEI4 +ZVBIRFpycTBYeCtXbWd5bVVJOUMxRkU4Zm5LSmZkdkdTUG1zV1hMRnNURXhQUlpvOFZpd1pkZmZt +bjRiSUU4UHY3NFk2eGQKdTlidk9mNzJ6KzEyWStqUW9lanM3RFI4TFkvNzhIZzhHRDE2ZEwrLzBa +aVlHSFIwZEJnK244OTlrQ2poY3JuazlkZGZmL0MrS3pZMgpWdDU2NnkyNWUvZXUwYU1GcExHeFVk +TFMwc1R0ZHZzOEIzNjJ0YXFxU3FaT25hb3htcXFHaGdaSlNFaVF1TGc0QVNCbXMxbjI3dDFyCjlG +aCtSVTFjSXZjL01XeG9hQkFBMHRqWWFQUTRRWHZ4eFJmbHlKRWpQby83aTJ2bXpKbXljK2RPamJI +VWRYZDN5OEdEQndXQXRMZTMKR3ozT0kwWGxMelM4L1lJaG5PemN1Uk9scGFXb3E2dkRVMC8xLysy +MXIvWDkrT09QbURsekp1eDJPOHhtY3loR1ZSRXUreGMxbnhaRwpra1dMRm1ISWtDRll1WExsWS8v +YTRzcVZLNWc3ZHk2MmJ0MGExbUdGRThZVmhnWVBIb3dEQnc2Z3Via1ppeFl0d28wYk4zeWVLeUtv +CnJhM0Z0R25Uc0g3OWVzeWZQeitFazBZM3hoV21ubjc2YWRUVzFpSXBLUWtaR1JsNCsrMjNjZXJV +S1RnY0RnRDNmeWEwYmRzMlBQZmMKYzFpMWFoV0tpb3F3WXNVS2c2ZU9MbnpQRlFGdTM3Nk5YYnQy +b2F5c0RILzg4UWZhMjlzeGV2Um9aR1Zsd1dheklUczdPNksrdHd5WAovV05jRVlqcmV6THd0cEJJ +Q2VNaVVzSzRpSlF3TGlJbGpJdElDZU1pVXNLNGlKUXdMaUlsakl0SUNlTWlVc0s0aUpRd0xpSWxq +SXRJCkNlTWlVc0s0aUpRd0xpSWxqSXRJQ2VNaVVzSzRpSlF3TGlJbGpJdElDZU1pVXNLNGlKUXdM +aUlsakl0SUNlTWlVc0s0aUpRd0xpSWwKakl0SUNlTWlVc0s0aUpRd0xpSWxqSXRJQ2VNaVVzSzRp +SlF3TGlJbGpJdElTVlRFZGZmdVhlelpzd2ZaMmRsSVRrNEdBS1NrcE9DMQoxMTdEdm4zN2NPL2VQ +WU1uSkgvc2RqczJiTmlBOVBSMEpDUWtBQURTMHRKZ3M5bHc3dHc1ZzZmekxhTGpFaEY4OGNVWHNG +cXRLQzB0CnhlclZxOUhVMUFRQStPbW5uN0JpeFFyczJMRURWcXNWWDMzMUZVVEU0SW5wWVgvOTlS +ZHljM09SbVprSnA5T0p2WHYzb3EydERRQlEKVTFPRGxKUVV6Sm8xQ3pObXpNRFBQLzlzOExSZVNJ +VHllRHl5Wk1rU21USmxpclMydHZZNTl1OWx0N1MwU0dabXB1VG41NHZINHdubAptQ29pWVZ0Ly9m +VlhzVnF0c25IalJ2bm5uMy82SEh0NGZmZnUzWk9Ta2hKSlRFeVV1cnE2VUkvcFYvanZnZzhmZlBD +QlRKOCt2ZC9HCmlIai80K3ZxNnBLc3JDejU4TU1QUXpHZXFuQ1A2OGFOR3pKMjdGZ3BLaXJ5ZXR6 +Yit1cnI2eVV4TVZHYW1wcTB4M3RzNGIwTFB2enkKeXk4eWF0UW82ZWpvOEhyYzF4L2Z6WnMzSlRr +NXVkOHJYYmdKOTdoV3Jsd3BxMWV2OW5uYzEvcUtpNHRseG93WldtTUZMQ0xmYzIzYgp0ZzNMbHkv +SDhPSERBN3B1NU1pUldMcDBLYlp2MzY0MG1TNlB4NE9hbWhvQWVQRGVKTnc0blU1VVZGUmc3ZHEx +QVYvN3pqdnY0TGZmCmZrTnpjN1BDWkVFd3V1NkJkdnYyYlVsSVNKRHIxNi83UE1mZnNxOWV2U3JE +aHcvM2VqdjVKUHZ6eno5bDdOaXhFaGNYSndERWJEYkwKdW5YcmpCNHJZTnUzYjVkNTgrYjVQY2Zm +L20zYXRFbHNOdHRBanhXVWlIdmxPblBtRENaUG5veG5ubmttcU90VFUxTXhZY0lFZlAvOQo5d004 +bWE3OC9Ielk3WFk0blU0QWdNdmxRbUZoSWM2ZVBXdndaSUdwcnE3R3dvVUxnNzQrTHk4UDFkWFZB +emhSOENJdXJsdTNiajM0CkxpdFlTVWxKNk96c0hLQ0pRdVBZc1dOd3U5MTludXZwNmNIKy9mc05t +aWc0LzNYL2twT1RuNWk5TTRsNC8zTEhaREtGZWhhaWlPTHoKbFV2dWY1SVlkbys2dWpwTW5UclY3 +em1QV2w5bVppWk9uejV0K0ZvQ2VkaHNOcGpONWo1N2FMRlljT0hDQmNObkMrU3hjT0ZDbEpTVQpC +TDEvRFEwTkdEOSt2T0hyRUpISXV5MmNObTBhN0hZN3pwOC9IOVQxVFUxTmFHOXZ4MHN2dlRUQWsr +bjYvUFBQa1pPVGd5RkRobURvCjBLR0lqNDlIZVhrNTB0UFRqUjR0SVBQbnowZFpXVm5RMTVlVmxX +SEJnZ1VET0ZId2ZONFdoclBObXplanM3TVRoWVdGWG8rYlRDYjQKV25aK2ZqNVNVMVB4MFVjZmFZ +Nm94dUZ3d09Gd0lEMDlIWU1IRHpaNm5JQzUzVzZrcGFYaDZOR2plUDc1NTcyZTQydi91cnE2a0ph +VwpodWJtNXFBLzBCcElFUm5YdFd2WE1ISGlSSnc5ZXhZWkdSbjlqdnZhbkphV0ZreWZQaDNuejU5 +SFNrcEtLRVlsTHo3NTVCTTBOamJpCjBLRkRHRFJvVUwvanZ2YXZvS0FBbHk5ZlJtVmxaU2pHZkRT +SlVLV2xwVEptekJocGEydnJkOHpic2k5ZHVpUldxMVYyNzk0ZGl2SEkKRDVmTEphKzg4b29zWDc1 +YzNHNTN2K1BlOXUrYmI3NlJNV1BHeU45Ly94MktFUjlMeE1ZbGN2OGZmTlNvVVZKUlVTRXVsK3ZC +OHc5dgpUazlQait6YXRVdFNVbEpreDQ0ZFJveEpYdHk2ZFV1eXM3Tmw5dXpaL1g0ditQRCsvZjc3 +NzJLejJXVGN1SEZ5NmRLbFVJL3BWMFRICkpTSlNXMXNyYjd6eGhpUWxKVWxCUVlGVVZWVUpBS21x +cXBKMTY5WkpZbUtpdlBubW0xSmZYMi8wcVBRdkxwZExQdjMwVTNuMjJXZmwKNVpkZmx1TGlZamwr +L0xnQWtJcUtDcGt6WjQ2TUdERkMxcXhaSXpkdjNqUjYzSDRpOGoyWE54Y3ZYa1J4Y1RGYVcxdHg5 +T2hSNU9UawpZUHo0OFZpMmJCbkdqUnRuOUhqa2g5dnR4cEVqUjFCWldRbUh3NEc2dWpyazV1WWlK +eWNIZVhsNXNGZ3NSby9vVmRURVJSUnFFZmM5CkY5R1RnbkVSS1dGY1JFb1lGNUVTeGtXa2hIRVJL +V0ZjUkVvWUY1RVN4a1draEhFUktXRmNSRW9ZRjVFU3hrV2toSEVSS1dGY1JFb1kKRjVFU3hrV2to +SEVSS1dGY1JFb1lGNUVTeGtXa2hIRVJLV0ZjUkVvWUY1RVN4a1draEhFUktXRmNSRW9ZRjVFU3hr +V2toSEVSS1dGYwpSRW9ZRjVFU3hrV2toSEVSS1dGY1JFb1lGNUVTeGtXazVQOENrR2JYaWgwNml3 +QUFBQUJKUlU1RXJrSmdnZz09Cg== + + + + + + <h2>All together now</h2> + + + gates = [CGate(1,Y(0)), CGate(0,Z(1)), SWAP(1, 0)] + python + 12 + 1 + + + + for g in gates: + dg = g.decompose() + display(Eq(g, dg)) + circuit_plot(g, nqubits=2) + circuit_plot(dg, nqubits=2) + python + 16 + 0 + + + display_data + C ⎛Y ⎞ = S ⋅CNOT ⋅S ⋅Z + 1⎝ 0⎠ 0 1,0 0 0 + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU5NQUFBQWNDQVlBQUFEN3VZcTRBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFDQzlKUkVGVQplSnp0bkhtc0ZkVWR4ei8zdmVjVFJCRnhBVGRjb0tMR0Jka2lv +czgxaWhhSk5rWU1Td1hYaWx1ck5aUmFVdmNGMTZqRUpSVTFiS1pvCkxKcFd4QzVVQlJWY1VJdTdn +bHFyYUlOMXhZcjQvT043Sm5mZXVYTm16cDE3N3NXVytTU1R4NTF6NWpmbmZ1Y3N2OS92ekFVS0Nn +b2EKd2k3QWVjQWNZQ0V3SDVnRjdBU1VnSHVBbmpuc25nZThETFNiNDUvQWxJUjZvNEh2VEowdmdi +dHozS3ZlOUFkdUFtWUM5NXUvV3dHagpnTk55Mk11aitWemdPYVRURjBBM3E3d3I4QXl3eHRUNUFE +Zzc0ZDVEZ0JuQWJHQ2F1ZmVkd0xaV3ZVdU5uYStBSjRGNXdEdm0zRXB6CjNhUEFTK2Jjbi95K2V0 +V0UwbjRTNWI3NEtkSnFuamtlcDZ4WlM1NUdOZ08vQXY0RlRBQitGQ3ZiSGxnQTNBVzhXb1hOYnNC +UHJYTnoKVFVOSHBGejNCK0JhWUlPRXNuT0FwaXJhRUpwaHdGS2dkK3pjdHNCZmdmOEN1MVpocTFi +Tmh3SXZJajEvN3FoemxUbHNOZ0wrQ1B3RgoyQzUydm9RRzlpZkFRYkh6cndQalRKc2pvZ0UyekxK +OUdYQzdvejIxRUZMN3A0RmxRRC9yZkRQd0VKcklCK1pwWkM4MDI2eElhVkIvCkpOd3RuamE3QXRP +QlRhM3p4eGs3TXh6WGpVTVAwOFhCd0kyZWJRaE5QMkExMHN2bU5MVGEraEpDODBsQUcvQVo3Z0Yz +SzNvV2NUb0IKZndhbTRwNlk1Z0p2bWJvRGdHc1M2dndkZGVMTzF2bERnUE1kZHZNU1V2c2VTSytO +RXNxbUFtdEpuK3lkdEtCUnVoellPcVB1U3VCWQpUN3QzVVRucVFRL25VK1NhZExISzJ0QVNuc1Uw +dEVJMW1pbkFJa2ZaRU9TTytSQks4M3ZSWUppS0J0MGhDWFZtV3A5YjBZcTBoT1NWClArSk1ZM01r +V3RuNldPVWJvczY5TU9IYWtjRFJLYmJ6RUVwN2dKT0FVeFBPL3hKOTU5eDk2d3BqWUl4SDNTZW85 +TTJUNkllV1NoZlQKekQxSHg4NzFScDNEeDBmdGptWVdlMGFzTjB0dys5Rjc0VCtiaGRDOEdjVTVB +SHNZZTNPc09qMkE2Nnh6YzFCTXVsdkdmWTh3Tmk5SApuYyttelpSZm1WQjJLQjFkeHhDRTBoNmsr +NGJXdWVPUUxybTlubjNRa3JZTXZ6aGtwS2ZkMmNEd2xQTEQ2QmlrZGdNZXdHK2dSbHdHCmpLK2lm +Z2h1Uk8xK0hoaExaWkR1UXlqTkJ3QVRZNThmUjhtRytFcDNQSEJNN1BNQnFQMS84N2p2QkZQM0Jr +ZjViMHo1a1I2MlFoQkMKZXhkRDBDcjdBRFhFNHhlaUJpWXRlWGxwQWY1TnBaOGVwd2tGM1d1QWJk +RGc2NTFTUDRreHlGVktZekFLV0tzNTdrMnh0eFB3TE9VcwpVTHU1NXFncTJoMUs4MStnVGhBeHl0 +aWRIRHQzTTdCNTdQTjlwczZKSHZadk1YVlBjSlRQQjc0bC9UbUhKSVQyU2ZRQlBnWVdreHhECmVm +T3dhZFNBR2hzVVp5andna2U5NjgyOWx5R1hvVm9Hb29lWkszVlpBeTFvSU44RHZJZSt3emRveGZF +aGxPWXo2Qmp6dEFJZkFlOVMKenJqTnRxNVphZTd0TTNFdE5YVjNTQ2hyQVQ1SDZlUkdVcXYyTmxz +QWI2RFl0VWV0alZ1RlhBNmYyR01YVDV0ajhkdGpHSUhFK0xXbgpYWnROelBVNzVydytCTTNBMVpS +akN4OUNhRjRpZVFXOTByVGxHTFFpeGJPQWtWN2ZrcDU0QU1VODdXZ2xTR0t3S2I4K3cwNDl5YU45 +Cm5FNG9lYktLeW16cWdjREdQa2JpUHVFN3dIK1F2NWpHbHZqSEp6Mk56U3o2bTc5NU4vYytSd0Zw +MHN3Wm12MVF2R0d6RnUyMVJCdWoKUG9UUWZIZTBBVzV6T3dxaXowRHRmU0pXOWhYUzdFczBvTks0 +QUtXOFhlNWc1RWs4bG1FbkJDRzFqeWloYlp1QktGTnFieXVjajNUSwpKTzRXTFVDYmZiMlFlK0Rp +TENxekhMMVF1dEwycVZ2eGM3M2FVS2Q2TWFGc2E3VENmWVptalNrb3hyTDVndlFaWkJEYVo2bUcx +K2lZClpRU2xlVjJEdmpPYTZhT09tOVgyQmVUWFBLS041STY4QXUzZ0g0a0d3ODlpWld2UnZ0YmhT +SmZGRHRzL1FabThpY0EvVXU3ZmpwSWUKYWJqNlNKd3N2VUpxSHpFRlplL0dvTDJ5T0lPQUR5a1BV +RitiN0F0OGpYYmhYWnh1am9ndUtKTXpBM2d6b2Y2cFpNZE1HNkNaMHBVKwpuMHQ1OTMxZmtoTU5y +V2hXR3BSeHJ4QThqZnUxcGt2UVd3UWw4em1yN1hrMHQ3a2J1U2xKREVjZEllblpuR1RLTG5aY2V5 +aGFNVy9BCm5kVnFRcTdSU3ludHkrb2pjYkwwQ3FrOWxMT1VreFBLT2dHUEFEK3VvbjBkR0lZNjl0 +bDA5T1A3b3MwNlY3YmtNSktGT3NyWUt5V1UKUlVRcDJva0paWDNSdzRxQzZCSUtuUGV5NnUxdWJJ +VGV6N0RwaW1iNWw5R3NIYTJFSlpSUmV6N1dCdCsyNTlVY1lFK2t1eXZ1YVVJcgoxRFJIK2NYQSsw +aS9pTTJBazFFZ25yYWxBZXBZN2NCdEdmWEEzVWNpc3ZRS3JmMXc1T0xhMnJRaVhSY2lieWVhcURK +dDJpN1lQQlJ3CmpVVHB6dFVvRm5rRCtlRExFMlZ3ODZScDNBN29vY1laaTl5WGFEZDlBbklweHFO +WUFyU1Vya1J1Q1pSZk9OeUhqaTVoWCtCdHFudU4KSkEvN29aM3hPMUdnT3duRkhtdlFSdUlRdE5K +VTAvWThtdThJUElnR1FUUHdDcHI5N1VURWQ4aTFmZC94Zlg2TFhObHowY2JsR2pRdwpGNXZ2K29G +RGc0dFFKNHN5WjZQUXh1L1hLTGI2MEhHL05MTDBDcWw5ZDZSVk03QTM4SlNwMXgzWW1mS0FtVk9G +emNSNFpvazVRdkFKCldncjdVam1ZcHBzampTM1FyQjFuTlpYditPMkswc3oxSm5xVEdEUWJwdUhi +ZHFoZTh4VlVybkF1cnM0b24yVU9YeGFoV0NzMFdYcUYKMUg0Vm5obTZLbXcyNUkzck8xQ0FsNGZs +VkdabnVpQXhJcHBRYXYxM09lOVJMM3phWGxBbXBGNzEwRDdUWmlNRzAzUzBLWGxnam11ZgpRMm5o +T0Qzb21QazZDN2xFUzNPMXJuNzR0TDJnVEVpOTZxRjl3NTVuVm5BNUFMa3g5Z3VGUHJ4SytiYzlr +WDhhVFFLOVVDWnBteHgyCkcwRmEyOWMzWEgxa0lIS2hJS3hlOWRDK3JzK3poQklIOXlOL2NqTHUx +NEgySnpsamw4VWd0THFOUXo4dkdCd3JtNHJlMC9xaGt0YjIKOVlXc1BqSWYrTDM1ZDBpOTZxRjkz +WjluVCt0SWU5a3h6OHFVZG0wdDlockovMG83NjBWYUgybEJuVE5PU0wzcW9mMzYvandMZnFBMApB +YWVzNjBZVUZQdy9jRHo2VDFBS0NncHFwTkUvbXlrb0tDZ29LQ2dvS0Nnb0tDaFlCM3dQaGh0a2J0 +QVNBTWNBQUFBQVNVVk9SSzVDCllJST0K + + $$C_{1}{\left(Y_{0}\right)} = S_{0} CNOT_{1,0} S_{0} Z_{0}$$ + + + display_data + C ⎛Z ⎞ = H ⋅CNOT ⋅H + 0⎝ 1⎠ 1 0,1 1 + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU1rQUFBQWNDQVlBQUFETE5adVpBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFCMjFKUkVGVQplSnp0bTJsc0ZWVVVnRDlvS2F1VktpQWxJcHNXaUlRZ0FnR3Fv +WUNJVmdPaXNzUUlOa1JFUlNVYVVBU0ZvR0ZKd0lCSUlxTFNZSldtCjFrUVNnWXFWUlJaWmxCSndR +MFZSUVJEYzZnb3Fpei9PbmI3M3BuZG03cnczVTBxWUwzay8zcHo3emwzT25YdlBPZmMraUlpSVNJ +a2MKNEJHZ0ZOZ0t2QU9zQU5vQmRZRGxRTXNBNmhrSG5GR2ZQNERkd052cXMwNDlyd1F5QTZncmFF +WWhZM01jYWVjaDliMjdrczhHUGlEVwp2MzFJbitvblVaY2ZlL1FETmdIZnEzcGYwdWk3QXppbzVD +ZUJ2Y0JsdGpJTmdBbkFTbUFaVUFLc0JSNEM2c2FWU3dPT0VCdURjbUE5CmNFSTkyNFhZOHozZ21I +bzJ4TzhBZUZDVHRpQU5tQUljQnU0SHJvaVR0UVkyQW9XcUVsT2FBbU1jWkt1QnI0RytHdGx5NEY5 +Z29JdnUKaVQ3YUVSWmJnTCtCQ3pXeVJzQi93TTRrZGFkaWowTGdVOVcyTEkwOEF4bjdLeld5ZnNC +M3dDVFZCb3RNWk5KdkpEYkJCcW42MjlsMApIRlA2NDErb0pzQTN3RldhT29NZ1RGc0FzcEpzUXpy +UnlhRk1kK1JOWEd5b014TW93cm5SQnh4a00xVTlCUjc2YndabUdiWWxEQm9nCksyYTVnM3dRMG8r +bms5Q2RxajFLZ1h1VS9HR052Q0g2WGFZUE1zRjdPOVRaR3BsczA5WDNGMGg4ZVFFNnEzcGYxUHkr +Qkdqc29Ec1YKd3JRRkFPbkFEbVRTWm51VVBRb01NOVJiQ0hSemtBMEJIdGM4TDBBNjg1UmhIU1hB +V01PeVFaT0h0SFdxZzN5MmtsL25VMitxOW1nRAp6RWNtNDIvQTU0aGJGazkvNEc3YnMrNkllM3Vm +UjUwZkFiK3FkaFpyNU9PUmZvL1d5RjcxMEowc2VZUmppMm9LN2pRb3V3VnhvYnpvCkJyemxJcitO +NnJ2SVFNVEZLakxRYjlFU2NTdnErZmhOVUV4SHhxMlBnL3g5cEQ5K1Y4NVU3VEdhbU4rL1dPbXl1 +NjB6a0ZqSElnZjQKQ2RoZ1VPZWJTbWRyOUpOdWhaSzMwY2dLRFBRblExaTJBTVEvUEFWOFFxTC82 +TVJJUTczRmlEdGtTaGRrRmR1QStNdCtXQWdNOS9tYgpJRmdIL0ltc3FIWWFJMjdKTnA4Nmc3REhF +bUp4U0JkazhyeGhLN1BDOXYwMVZjN0V2bnRWMlk0TzhvUEF0d1o2Z2lSd1c4UXJ5a2VNCnNSQTRi +ZkRiRWtQOWc1QnQxNFJzWUEyU0pia1ZlZVA5c0ErNEYvSERuYmdXZU02bjNyMDRKeDNxSVg3N2NX +Q1ZSdDRNR1lkTlB1c00Kd2g0WEllNFF3TWZBWm1BbzBBcEpBbVNRT01iWnlDSlRpV1N6M0VoRGRw +MUs0QXVOdkQxd0tmNjhnVlFKeXhaVmxDR3J3dFhKS3RDUQpDK3d4TE5zRXFFQjhhM3VHeEpROFpC +V3BTZm9pNC9ha2c5eHltZko5NmszVkhwY0FpMnpQUmltZFZyQ2RDendRSngrbTVFNUJieng5ClZO +a3lCM21Ca3R2am5UQUp5eFpWL0lKczd3ME55dVo0RndIRUoxNWpVQzVObGZzTDZHbVQ5VUFNYmtJ +Mk1nak5ETXNId1JSVlozOEgKK1Naa1hQMmU4YVJxaitIQTdiWm5HY2dpZEFnWjg2bEExemo1WktR +dlN3M3FMRlZseHpuSWx5bTU2VndKZ3JCc1VjVnU0R2VEY3MyQgpPWVk2SjFQZDU5V3hCR244VUky +c0ZFbnJtZkk3d2U2R1hwUWhMa3NqalN3RDJmcDNKYUUzVlhzc0FscG9ubHVyNlRERU52SFpyakZL +Ck5zK2p6ZzZJdmQ2bGVyYk1Zai9pTnRja1lkbWlpZ1hJQU5sUFhPM01KSEZsejBYZTRFbFVUN3RO +QTE3MzBQZVlxbGQzSU5pQnhFQ3oKSHJKQ3RYZlJkeGc1QkhNaUYvalE1NmZRUVZjYWtscmQ3aUMz +WEpJRkRuSzMvaVJyRHd1bm1MRXRNc0hYSTBGNlBPMVVuUlV1OWFVagpoNytWU0ZaTFJ5dWx4OHYy +Ym5QSGpwZnR3N1JGRmIyUlE1Z3BMbVhHa3hpRU4wZUNaZXMwZGlGeWJjSmlITzR4eVVna0tIMVdJ +MHRICkRIMlgrajRXT1RNNWlmT2hXaVl5RUoxZDZneVNIcXErK1E1eXkzMjVSU1B6Nms4eTlyRElB +cDUzK2QwcTFhNUpHdGxPSld1bGtkVUIKWGtGMkNDZVhCbUt4endTWE1sNXpKeDRUMjRkcGl3UnVR +STd6SHlUUkYrNEl6S1Y2d0RPRFJQOTFBSEpXWVpHdjlPbTI1R3VRU2JDUwp4QlJudW1wb21XcjB4 +YmJmblhEcFNDOWtJRXpPYjRKZ0dqSFhSVWM1M2pHU1czLzgyc05pSHU0bnlqZXBkdlhTeUpvaG1i +QWlFcytjCnVpSlhoTmFpZCtQaUtWYjZuUTZRd1h2dTZIQWJxN0J0a1VCUDVHM2NqRnlnV3c0OGdU +N2pWSXgwMXFLVGFvaDFueWNMbWVodGJiL0wKUUE2c3ppQTd6WGIxK1F6eEthMExhT3Q5ZG1RMDV0 +bTBWSmlEK0xiVzViMnZrTEdxanl3SXE1R0padldqQXYxdUNkNkc4V09QaWNRdQpHZjZESEp4ZG9D +bFhWN1ZmZDVZQTRyNU5SOXpNbDVFWDVoa2tablNLUVdZaE1jb2VZdjMrVWoyYnJTbnZOWGQwNk1h +cUptMlJGT1hJCk5tYlJSalVrZnFYWkNnd09zRTYzanN4Q1Z0aHppVkFNY3c1Z01uZnNoRDFXV3Yw +bUo3bHVIRUE2WnRHWTJMVjJpNlZVVDBXR1FUcHcKSXhKOFJkUitUT1pPclNEVmw2U0N4RGUvSmZB +RGlhZTRSVWhLMWkzakZBU1BJaTZiN3ZRM292WmhNbmRxQmFtK0pEdEp6SElNcG5wVwo1VFNTNVpw +UGtuOXVNU0FIR0VIc0pEbWk5dU0yZDlKSjRaWnUwS1I1RjNIbENKSXR1Qjc1MDA0TEpFaXpyd1pI +a0tCOEJCS2pKRU0rCmN0VWhEN25DMHBSWWtENFgrYy9FMFNSMW53M2Mrbk0rNERaM0xrZHVOZTlB +L3JBVjlsaTU2bmZLVlBpbERwSXU5Tm9xNnlOWmwyVEkKSW5Fbk9nWDhHSURlczRWYmY4NG5uT1pP +SnJLN2xCTCtXRVcyaURnbkdZRHNLR2VkVkdPU2lJZ3dxSXZjbXRoL3Roc1NFVkdiY1RybwpqSWlJ +aUlpSWlJaUlpSWlJT0svNEgyR1pJUFRKVVRpYkFBQUFBRWxGVGtTdVFtQ0MK + + $$C_{0}{\left(Z_{1}\right)} = H_{1} CNOT_{0,1} H_{1}$$ + + + display_data + SWAP = CNOT ⋅CNOT ⋅CNOT + 1,0 1,0 0,1 1,0 + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVVZQUFBQWNDQVlBQUFBZHRSYlZBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFDTVZKUkVGVQplSnp0bkhtUUZjVWR4ejhybDRBdUlJcEdUVUFwU3dJSjVSbE5Q +RERlNGxWR3E2S0ZRU0pSUzBRdGcwbU1XbW9PUWp6S1JCQkZRVW5FCkk1U2F5NFFqRUxNQ0doUzB2 +TkR5S1BFSUtzR05paGVzbU0wZjM1NjhtWjZlbVg2N0QvY2QvYWw2TmU5MTkvVHhuZDkwOS95NjUw +RWcKRUFnRXZPa09YQURjQ2Z3TytDTXdIdWdMekFjV0F4dUJkbUFUc0J6WTJweDdDZkNhaVdzSG5n +VEd4dkllQi96YnhIMEkvTUtqUG44QQp6c3lKN3dFc0JGNDIrYjRITEFJV0FFdUJWNEMvQUh0NmxG +VXQ5QVpPQjZZRFMxRDdXb0JUVFB3UndBOWk2YWVoNjdBSitBd1k2Y2h6ClB2QXgwdWhkNEhwSG1t +SEFMY0M5d0N4Z0hqQVgrR3BHUGM4dytXMEVWaUxObjZkMEhSYWJ1ajhPL0JkNE1hZk5uYUVXOUFw +YTFaNVcKLzZjMzZrUXVCN2FJaGY4WWVBRjFsQUJYbTByT2N1UXgxTVRkbjFIRzE0Qi9BbHQ1MU9k +YkpxOHJQTkllWjlKZWFJWDNBRzRGTmdDSApldVRUMWV5UHRKNEpIQUwwTk9GYkF0Y0J2MGFEeW9I +V2Vkc0NUeUVOWm1Ua1BRNE5ORTFXK0JiQXplWjgyL0JQUUVZL2xqUUwwYlhwCkdRdUxqSHFpbyt5 +L1o5U3JNOVNLWGtHcjJ0SXF3YjFJTkJkdkF0OHozeWVoU3Q3b1NEZmN4RDJRa2M5a1lKQkhYZm9D +ejVxOGJ2SkkKSDNYV0l4eHhYelJ4ZDN2azA1Vk1CdHJRak4xRk4yQUY4QUhxOE9PY0JJd0JWcG40 +clVuemZXQnZLNndKWGZQNTZBWnhjVFd3SHRneApGallRMll2TmJVanIzYTN3TDZFYnBKTFVpbDVC +cTlyU0trRS9KTnlSR2ZFTGdWM005M0ZrZDR3elROd2pqcml2a0gxaGJINkpPdUoyCjRQY2U2WmNE +cmFSSExKQ1k3Y0EvUE12dUNpYWdPcDVla0c0eThGZEgrUFhBenNENUpwOEpqalIzb0JzZ3psUmdE +Wm9WWkhHWXlmUEsKV05oWndGR090QzhCYnp2Qzl3WXV5aW1qWEdwSnI2QlZOdFdtVllwalVRWFB5 +NGkvUFBiOUJOd2Q0K0ZvTnJrZVRkbHRwcE1lalZ4OApHWTBhUFpBUHdkWEp4dWtMZkFyOE9TTity +S252ZUkreXU0SVI2SkdpeFNQdGVOeUdFSTJ5L1lDUGdHZXMrQ1pnamhYMk02VExpUVZsCkRpYnRI +am1EcExzRk5PcTM0eDd4UndEN0ZwVGpTNjNwRmJUS3BwcTBjckl0Y3JCdVJQNkdBOG51eEE0ZzNU +SDJRdjdKbnNCcVlKMTEKemtuQWFNKzZ6QU4yTmQ5YjBRSktIa2VZK3Z6UUVkY05PVzVYNDM0RXFB +WldvUHJidmgwWCt3RkRyTEJta3Y3ZW1ZNzhScUxGc1lnZAowUlBDdjBpUDlEYUhtdnptRjZRNzFh +UTd2eUJkWjZrSHZZSldvcHEwU3ZYSUFPK2dSUmJRckc4cFdtR2FEdlMzMHJZNnp2OFJXblZxCk0v +RURLRDNXOWtJQ3pQT28yeGkwMmhSMWhtdUJIUXJPT2RnY2wxbmhPNkdSYUJXd0IvS1BWSkxSYU9X +OW5NOTBLNC90Z1gyQXh4ejEKZC9FbzhLb1ZkZ0R3Y094MzVITTVOeFkyQ3ExQ1JreEFBOThjdE5x +WXgvQlkyWGxFMStHaGduU2RvVjcwQ2xxSmF0R3FrR0hBVDFCRAoyMUJQZlorVlpoREpHZU5Ra28r +eEMwMzhBUE43RW1tbnFZdG1KRkNmV05pREpxOStPZWN0UVJkZ0Z2Snh6Z0JtbTNZYzdsRnVWM0l5 +CmFsOW5ITWhUMERXSXN4ek4vcmN6djM5TDhnbmdJVlB1c1I3NXp6VnBYYjZmT004Qy84SHQ1NjBV +OWFKWDBFcFVpMVpsTVFKNEhmbnYKNHF0SzNVbDJqQStRWEEyKzI4UVBCYjZBT2lnZmJxQzBueXJp +SHR5clVSRmJvcTA0S3p6THFEYXVJZCszRzJjN1NvTk5uTG1Pc0doNwpRL1NJYzQ4VnY4YkVEeWVm +d2VqNnYwMitLMklnOGdkbitYa3JSVDNvRmJRUzFhUVZrSDZVdnNTWlNvK2dkNkZHeG52clRjRDc1 +dnNwCmFGUDNxbGo4TytZNEVDM2p1elo4MnV3Qm5JWldvaGZFUGw4MzhWbVAwL3VoUi9VV2p6S3Fr +ZGZNOFUyUHRKY2lRNHJUR3puWGJlYWkKVWZZY1pLRDJZdGhhYzN5ZmZDNUNBK0ZaNUxzaURrSTJz +aVFuVFNXb0I3MkNWcUthdEFLU0hlTldhTE5uRnMzQUU4QW5WbmdyNnVXdgpJTG1OSTRvRE9BYUpW +aVJRRStvOFJ3RkhXNTlwSmsxV3h4ajVIMW9LeXVnQjNFNXBVYWVJWWNqbk9oRzRGaG1KemRGb1oz +NDVuNmxXCkhsRzlpOTdNR1k0V2tENjB3dmZIN1ovWkFQd0dPZE9ua0Rhc3BlWjRXRTZaK3lDam5V +MzJ2dFNJNkRwa0dYQ2w5Rzh4eDFyV3EwZ3IKOExPL2lDeHRXOHl4M3JVcXg3YThkVDBHelFCdFB3 +TElsN2dXK0tZamJnWHlNN2oySlU1RXM4emx1QmQ2Yk1hVGZBMHB6cmR4djlFUwpzUmpWdnprbi96 +T0JuNXAwd3p6cTB3MTREam12UWJQWTJ6M082d2hOU011blNmcFc0K3lPRExHWEkrNHF0TDNKeFc3 +b01hU050QUVjCmpQUndQU3FCZEZxSC9NcytieW10UktOK2QwZGNKZld2QjczeXRJTHk3QzlQMjBi +UXFoemJLdXUrdmhadG5yeVBwRTlnVjlTeFRjbzQKYjRFcHhGWGgwMUJuZGxCQlJVR3pydGZKWHRh +UE5vQk9jY1ExbzMxVkt6M0tBWTEwUGpmbXlTVDNUZzVDTStZczQrb3NBNUFCUDRoVwowaVA2bzFY +NktTUmZqNHJYNncxS1RuQVhpOGplQnpvR0dWMThaTytEMnY4Q3laWEhQQVlqdzF4Y2tLNVMrdGV5 +WGo1YWRjVCtzclN0CmQ2MGlmR3lyTEYzbkFOdWdXZUVpSk9JQzlON2pOM0lLbVVuMld6S2pTRy80 +dE5rTGRjanRsR2FYOFU2Mk4zcFRwZFhFcnplL1I1clAKVW5UaDJ0RUZXSVl1Umg2K04rWmxwRGVU +YmlMOXlsTWw2UWRjRFB3SmJhKzRBejEydS9aKzlrTHZtMjlBN1YrRHRrdTVPQkg0ZVU2NQpSNkl0 +UkxQUk5iMFREWWE3RmRSM0NLVS9JRmhINmFYL1pjRGYwUFcxcWFUK3RhVFhFTXJUcWlQMmw2ZHRQ +V3NWNFdOYlhYRmYxd1MrCk4rYXYwQmFFT0I5UUczOUNVYzBFL2Yzb1NQdDl0YTFYZk5wZnFLdVAz +NitSV1kxR3FqaDkwRXBjWVBQVDZQbzNldnMzRjRXNmhvNHgKbnlkSS9nUFFJT1RJZnFOcnF0TndO +THIramQ3K3pVWFFOUVBYZEhza3liL1RBcTJVdlVYSktmc2RzbGZZQXY0RS9mM0lhNzlMTHdpUAow +ajYyVldoWFJTOTIxeHVqMFYrbEhZTEU2WS8rT0JPMFQvSlVrb3RGYldnVU9SdTl1Yk12ZW52bnZj +K2x0dlZIMEw4ODh0cHY2NVduCmJTTlFqbTAxdWwybEdJQTJpRWVmK0JhRWJzQjNjODUxN2U4S2xF +ZlF2K1BZN2JmMXl0TzJFZWlvYlRudEttdXpaTDN5Yms3Y1orVHIKc2JIQ2RXbEVndjRkeDI2L3JW +ZWV0bzFBUjIycjBlMnFrT1BSUnRKQTF4RDBMNCtnbHo5QnEwN1FhTFBuYWlQb1h4NUJMMytDVm9G +QQpJQkFJQkFLQlFDQVFDQVFDZ1VEZ2MrVi9xazJaZlg2Uys5WUFBQUFBU1VWT1JLNUNZSUk9Cg== + + $$SWAP_{1,0} = CNOT_{1,0} CNOT_{0,1} CNOT_{1,0}$$ + + + display_data + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUo4QUFBQ09DQVlBQUFBdmtkcmVBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFBQWx3U0ZsegpBQUFMRWdBQUN4SUIwdDErL0FBQUJFSkpSRUZVZUp6dDNiMUxJ +MXNBaHZGM2todkJ4SXVhUW0xc2JRU3hFUEVUc1JNRXNSRUxDOEZHCnJOTUlGbmFDTmxZV1ZoYlJ5 +azcvQTIzOHJBU3hFd3ZGbEVZaUdORFpRdHg3Wlc4Vzc2N3VhMmFlSDB5VHhNT1o4REJubklGTUVJ +WmgKVWRMZkF2NndJQXpEMEQwSnhGUENQUUhFRi9IQmh2aGdRM3l3SVQ3WUVCOXNpQTgyeEFjYjRv +TU44Y0dHK0dCRGZMQWhQdGdRSDJ5SQpEemJFQnh2aWd3M3h3WWI0WUVOOHNDRSsyQkFmYklnUE5z +UUhHK0tERGZIQmh2aGdRM3l3SVQ3WUVCOXNpQTgyeEFjYjRvTk43T0lyCkZvczZPenZUL2YyOWV5 +cXhGNXY0d2pEVXdzS0NtcHViMWQvZnIrYm1aaTB1TG9wZkJmYUp6Vzh5YjIxdGFYWjJWcVZTNmZ0 +cm1VeEcKR3hzYm1waVlNTTRzdm1JVFgwOVBqdzRQRDM5NGZXQmdRUHY3KzRZWm9XSjhRUkQ4NmJr +Z1ppcWU4NFZoR0tsdGVYbFp0YlcxYi9ZeApuVTVyZFhYVlByZTRickZaZGg4Zkh6VTZPcXFEZ3dP +VlNpVmxNaGtOREF4b1oyZEhOVFUxN3VuRlVtemlrMTZPNWljbkorcnU3dGJ4CjhiRzZ1cnJjVTRx +MVdNWDNLZ2dDeFhDM3Y1ellYT2ZEMTBOOHNDRSsyQkFmYklnUE5zUUhHK0tERGZIQmh2aGdRM3l3 +SVQ3WUVCOXMKaUE4MnhBY2I0b01OOGNHRytHQkRmTEFoUHRnUUgyeUlEemJFQnh2aWd3M3h3WWI0 +WUVOOHNDRSsyQkFmYklnUE5zUUhHK0tERGZIQgpodmhnUTN5d0lUN1lFQjlzaUE4MnhBY2I0b01O +OGNFbU12RmxzMWtGUWZDdVRkSzdQNXZOWnMxN0ZsMlJlUUxSWnoxVmlLY1ZmWjdJCkhQbFFmU0la +MytucHFmcjcrMVZUVTZORUlxRzZ1am9ORHcvcjRlSGh6ZWNLaFlLeTJhd1NpWVNTeWFRNk96dDFl +M3RybW5VTWhSSHgKWDd1U3orZkRJQWpDNmVucGluK1h6K2ZEM3Q3ZThQcjYrdDNqNG1ORStwenY0 +ZUZCVFUxTlNxVlNLaFFLUHp4WDkvTHlVdlB6ODlyYwozRlFxbFhyM3VQZ1lrVngyWDZYVGFZMlBq +K3Z1N2s2N3U3dHYzaXNXaThybGNscGZYNjhZSGo1WHBPT1RwS21wS1VuUzF0Ylc5OWVlCm5wNDBO +emVubFpVVk5UUTB1S1lXZTVGZWRxV1gwRnBhV25SL2Y2OUNvYUQ2K25ybGNqbU5qWTFwYUdqb2w4 +ZkY3NHY4a1MrWlRHcHkKY2xMbGNsbmIyOXRhVzF0VGUzdjd1OExENTRwOGZOSS9TKy9TMHBKdWJt +NDBNek5qbmhHa255eTdyN2VocWttbDVmSDUrVm5wZEZvZApIUjA2T2pyNlgyTlc0L2RRTGY2cTlF +YTFuZWY4TEpMejgzT1Z5MldOakl6ODB0alY5bDFVaTFnc3UzdDdlNUxFZWQ0WEU1djRVcW1VCit2 +cjYzRlBCdjhUaVVrdHJhNnRhVzF0MWVIajRZZVBpOTBYMnlIZDFkYVdob1NHMXRiV3BVQ2pvNHVK +Q2c0T0RieTQyd3l2eVI3NnYKT2k0aWZPVEQxMGQ4c0NFKzJCQWZiQ3JlNGFoR24zRXJyTEd4OGNQ +SHhJdkl4TWQvcE5XSFpSYzJ4QWNiNG9NTjhjR0crR0JEZkxBaApQdGdRSDJ5SUR6YkVCeHZpZ3cz +eHdZYjRZRU44c0NFKzJCQWZiSWdQTnNRSEcrS0REZkhCaHZoZ1EzeXdJVDdZRUI5c2lBODJ4QWNi +CjRvTU44Y0dHK0dCRGZMQWhQdGdRSDJ5SUR6YkVCNXR2WUJZc3hJKzRoTXdBQUFBQVNVVk9SSzVD +WUlJPQo= + + + + display_data + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVE4QUFBQ09DQVlBQUFBdnRJMzNBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFBQWx3U0ZsegpBQUFMRWdBQUN4SUIwdDErL0FBQUNUNUpSRUZVZUp6dDNFdElW +SDhZeHZIMzJEQ2psZUNGTGhob0dCUkJFR0ZFRUZtTFNNelNMTHU0CmtHaFRVRkl0dWkyc0lJcWlG +a0VVRmFVdXdxZzJicnFIMVNLNi9CZWhkTEVMMnQwd0tteTZwL2IrZDVIbHFQTjY5TXlNM3cvTTVw +d3oKUDU3ZmVlTnBqb002cWhvVWtVUUJnREE0cXFwZWh3QVFmZUs4RGdBZ09sRWVBRXdvRHdBbWxB +Y0FFOG9EZ0FubEFjQ0U4Z0JnUW5rQQpNS0U4QUpoUUhnQk1LQThBSnBRSEFCUEtBNEFKNVFIQWhQ +SUFZRUo1QURDaFBBQ1lVQjRBVENnUEFDYVVCd0FUeWdPQUNlVUJ3SVR5CkFHQkNlUUF3b1R3QW1G +QWVBRXdvRHdBbWxBY0FFOG9EZ0FubEFjQ0U4Z0JnUW5rQU1LRThBSmhRSG9ncXo1OC9sMGVQSG9t +cWVoMWwKd0tNOEVCV2FtcHBrOHVUSk1uNzhlTW5LeXBMUm8wZkxuVHQzdkk0MW9EbEtoU01LWkdW +bFNWMWRuYlMzdC84K2xweWNMRTFOVFJJZgpIKzloc29HTFR4NkllRStmUHBYNit2b094U0VpMHQ3 +ZUxoY3ZYdlFvRlVKKzhuQWNwNyt6QUlnaXZsQW5lSnBCcFBqMTY1ZWtwNmZMCjY5ZXZPeHhQU0Vp +UVY2OWVTVXBLaWtmSkJqWWVXeER4NHVMaXBMcTZXcEtTa2lReE1WRkVST0xqNDZXeXNwTGk4QkEv +TUVYVStQcjEKcTF5NGNFRVdMbHdvNzk2OWs5VFVWSzhqRFdpVUI2S080emc4VmtjQUhsc0FtRkFl +QUV3b0R3QW1sQWNBRThvRGdBbmxBY0NFOGdCZwpRbmtBTUtFOEFKaFFIZ0JNS0E4QUpwUUhBQlBL +QTRBSjVRSEFoUElBWUVKNUFEQ2hQQUNZVUI0QVRDZ1BBQ2FVQndBVHlnT0FDZVVCCndJVHlBR0JD +ZVFBd29Ud0FtRkFlQUV3b0R3QW1sQWNBRThvRGdBbmxBY0NFOGdCZ1Fua0FNS0U4QUpoUUhnQk1L +QThBSnBRSEFCUEsKQTRBSjVRSEFoUElBWUVKNUFEQ0pxZkpJU1VrUngzRmNmYVdrcEhpOXJRN2Mz +R09rN1MzV3hkcnNIRlZWcjBPNHhYRWNjWHM3ZmJGbQpiN2laSjlMMjFsUGtqb3g3RUZPZlBCQ2JY +cng0SVdWbFpUSnUzRGhKU2tvU0VaSFJvMGZMcWxXcjVPN2R1eDZuRzdnR1JIbThmZnRXCi9INi94 +TVhGaWQvdmw3Rmp4OHJzMmJNbE56ZFhjbk56SlRVMVZlTGk0cVM2dXRycnFMM1MxdFltKy9mdmw1 +S1NFaWt1THBiQ3drS3AKcUtpUUwxKyt5THg1ODd5T0Y3WTNiOTdJZ2dVTFpOS2tTZkxwMHljNWVm +S2tORFkyaW9qSXBVdVhaT1RJa1pLYm15dloyZGxTVjFmbgpjZHJlaTdyNWFRd0p0WjJLaWdvTkJB +SzZmLzkrYld0cjYzQ3V1cnBhQncwYXBHdlhyZzFyVGErRXl2UDE2MWZOeTh2VG5UdDNkamkrCmE5 +Y3VIVHQyckJZWEYvZDRyVWp3K1BGanpjakkwQzFidHVqbno1ODduUHN6OTgrZlA3Vzh2RnlIRFJ1 +bU5UVTEvUjB6TEYzZDczRG4KRndtejh6NkJpMExkMElVTEYrclpzMmYvT1g3cjFpMU5TRWpRK2ZQ +bmg3Mm1WMExsS1NvcTBoVXJWblI2TGkwdFRjdkx5M3U4bHRlYQptNXMxTXpOVER4OCszT241em5K +ZnZYcFZodzBicHJXMXRYMGR6NnlyK3gzdS9DSmhkdDRuY0ZGbk4vVEhqeDg2YytiTWY0NDNORFRv +CjhPSERkY3FVS2ZydDI3ZXcxdlJTWjNsYVdsclU3L2ZyNWN1WE8zMVBUazZPUG52MnJFZHJSWUxT +MGxKZHMyWk55UE9oY2g4OWVsU3oKczdQN0tsYXZoY3B0bVY4a3pDN21mK2JSM053c1pXVmxIWTU5 +K1BCQjVzeVpJME9HREpFelo4NUlmSHk4UituY2NmMzZkV2x0YlpYSApqeDkzZW43NjlPbVNrWkhS +ejZsc1BuMzZKRlZWVmJKaHc0YXczN3RzMlRKNTh1U0ozTHQzcncrUzlaMm9uWi9YN2VXbW5tem4r +L2Z2Ck9uMzZkRTFKU2RINitucFgxdXhQbmVWNTkrNmQrbncrRFFRQ3VuNzllcjErL2JxMnRyYWEx +dkxhb1VPSHRMQ3dzTXRydXNxOWRldFcKWGJWcWxkdXhYQkVxdDJWK2tUQTc3eE80cUxzYit1dlhM +eTB1THRaQUlLQlhyMTUxWmMzK0ZpclAzcjE3TlJBSXFPTTQ2amlPRGhreQpSRmV2WHEwdExTMWhy +K1dsZ29JQ1BYbnlaSmZYZEpYN3dZTUhtcG1aNlhZc1YzU1ZPOXo1UmNMc3ZFL2dvdTV1Nk9iTm05 +VnhIRDErCi9MaHJhL2EzcnZJOGZQaFF0MjNicHRuWjJlcjMrOVZ4SEMwcUtqS3Q1WlhzN094dWk3 +MnIzTy9mdjlla3BDU1hVN21qdS9zZHp2d2kKWVhZaEU0aElWTDVDT1hMa2lEcU9vOXUzYis5dy9O +dTNiM3JseXBYUU55Z0M5dFRUUGY3cC92MzdtcDZlcm42L1gzLzgrQkUxZTR2MQpWMDkxTnordjl5 +RWlBK09UeC9uejU5WG44K255NWN2L09WZGVYcTdWMWRWaHIrbVZ2L1BzM3IwNzVMV2JOMjlXdjkr +djM3OS83OUZhCmtXREpraVdkZnEzOHA2NXkvL2ZmZnpwKy9IaTNZN21pczl6VytVWEM3R0wrMjVi +YTJscFp2SGl4ekp3NVU0NGVQZnJQK2NyS1NzbkoKeWZFZ1dlOTkvdnhacmwyN0Z2SjhNQmlVckt3 +c0NRUUMvUmVxbHhZdFdpU1ZsWlhtOTFkV1Zzcml4WXRkVE5SM29uNStYcmVYbS83ZQp6c3VYTHpV +dExVMG5USmlnd1dEd24rdXJxcW8wUHo4L3JEVzk5bWVlYytmT3FjL24wNGFHaG4rdWEyNXUxaEVq +UnVpMWE5ZDZ0RmFrCmFHMXQxVkdqUm1sZFhWM0lhMExsL3ZqeG95WW5KK3ZyMTYvN0tsNnYvSjI3 +Ti9PTGhObkY3Q2VQWURBb2MrYk1FVldWczJmUFNtSmkKNHU5elRVMU5zbnYzYmlrcEtaR0NnZ0lQ +VS9iT2xTdFhKRE16VXpadDJpVDE5ZlcvanpjMk5rcEJRWUZzMnJSSlpzeVk0V0hDOFBsOApQbG01 +Y3FXVWxaVkplM3Q3V08vZHRXdVh6Sm8xUzlMUzB2b29uYnVpZlg0K3J3UDBsWFhyMXNuOSsvZGwx +S2hSc21USkVoRVIrZm56CnB6UTBORWd3R0JRUkViL2ZINW0vY05SRHpjM05jdnYyYmFtdHJaVzFh +OWRLUzB1THBLYW1Ta0pDZ3V6YnQwK21UcDNxZFVTVGpSczMKU2s1T2pwU1dsc3FCQXdkazBLQkIz +YjduNE1HRGN1clVLYmw1ODJZL0pIUkh0TStQditmaHdacTlFV3QvRXlLVWxwWVdLU3dzbEtGRApo +OHFPSFR0azRzU0p2OC85bWZ2NTgrZXlaODhldVh6NXNwdy9mMTdHakJualZlUnV4ZHJzWXZheEJk +RXRLU2xKTGx5NElGT25UcFc1CmMrZkt0R25UNU5peFkzTHAwaVVSRVRseDRvVGs1K2RMVmxhVytQ +MSt1WEhqUmtRWFJ5emlrNGNIYS9aR3JQM3YxUk50YlcxeTVzd1oKT1gzNnRMeDkrMVpxYW1wa3dZ +SUZrcGVYSjB1WExwWEJnd2Q3SGJGSFltMTJsSWNIYS9aR3JQMERIRWhpYlhZOHRnQXdpYmx2V3h6 +SApjWFc5NU9Sa1Y5ZHpnMXQ3ak1TOXhicFltbDFNUGJZQTZEODh0Z0F3b1R3QW1GQWVBRXdvRHdB +bWxBY0FFOG9EZ0FubEFjQ0U4Z0JnClFua0FNS0U4QUpoUUhnQk1LQThBSnBRSEFCUEtBNEFKNVFI +QWhQSUFZRUo1QURDaFBBQ1lVQjRBVENnUEFDYVVCd0FUeWdPQUNlVUIKd0lUeUFHQkNlUUF3b1R3 +QW1GQWVBRXdvRHdBbWxBY0FFOG9EZ0FubEFjQ0U4Z0JnUW5rQU1LRThBSmo4RHdBb24zcHVmNG1n +QUFBQQpBRWxGVGtTdVFtQ0MK + + + + display_data + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUo4QUFBQ09DQVlBQUFBdmtkcmVBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFBQWx3U0ZsegpBQUFMRWdBQUN4SUIwdDErL0FBQUJJUkpSRUZVZUp6dDNURkls +SDhjeC9IUDgxZlVRMjd3d0VuQkcxMGNtcUpBa1VRU0cxUjBDZ0oxCmJTaHdjV2xwY3RWQmFBa2lj +UkRVNmVCd01FUVVQVVFhYWdrVXhIQm9TRHlROEJCK0RWSmhvbi9MczQ4K3ovc0Z6L0ljL1BnKyt1 +YWUKNS9FQm55aUVVSlNVRnZDUFJTR0U0QjRDeWZTZmV3QWtGL0hCaHZoZ1EzeXdJVDdZRUI5c2lB +ODJ4QWNiNG9NTjhjR0crR0JEZkxBaApQdGdRSDJ5SUR6YkVCeHZpZ3czeHdZYjRZRU44c0NFKzJC +QWZiSWdQTnNRSEcrS0REZkhCSmxieFpUSVpSVkZVMWkyVHliZ1BLN1ppCjliOWFvaWhTdVEvbk90 +YkVpVmg5OCtGMklUN1lWTG9IK0JlK2ZQbWl4c1pHSFI4ZnE3S3lVdGxzVnRsc1ZoVVZGWktrUXFH +Zy9mMTkKemM3T3FxK3Z6enh0Z29RWU9lOXdYcjkrSGFxcnE4UEV4RVE0UGo0KzlkbjgvSHlvcUtn +SXo1NDkrNk0xY1hXeCtzbWVGMHAvZjMvSQo1WEpuOXErdHJZVlVLaFY2ZTN2L2VFMWNYZXp2ZGt1 +bGtoNCtmS2gzNzk2ZDJyKzl2YTE3OSs0cG04MXFhV2xKTlRVMWwxNFQ1Ukg3CitIWjNkL1hwMHlk +MWRIVDgzUGYxNjFmZHYzOWZwVkpKNit2cnFxK3YvNk0xVVI2eGorOTNSMGRINnV6czFNZVBIN1d5 +c3FMbTV1WXIKcjRtL2s0aTczUjlDQ0JvYUdsS2hVRkErbi8vZjhIRE56cnNZbEhRcnQ0dU1qbzZH +S0lyQzI3ZHZMMzFSN0Q2ZVdHK1gvaTNjQWhmRgo5K3JWcXhCRlVYajU4dVdwL2QrK2ZRdUxpNHQv +dFNhdUpoRlBPUEw1dko0K2ZhckJ3VUc5ZVBIaTFHZlQwOU02T0Rnd1RaWnNzYi9oCmVQLyt2ZHJh +Mm5UMzdsM2w4L21mVHpWK2FHMXQxY0xDZ2xLcDFLWFhSSG5FK3B2djgrZlBldlRva1pxYW1qUTNO +M2Ntdk9ucGFXVXkKbVhQRHcvV0tiWHpGWWxIZDNkMEtJU2lYeXltZC92VjZ1YjI5UFkyTmplbkpr +eWZxNmVreFRwbHNzVDN0RGc4UDY4MmJOMnBvYUZCRApRNE9razZjZFcxdGJLaGFMa3FTcXFpcnQ3 +dTd5UjJhVDJNWjNrOWZFaWRpZWRuSHpFUjlzaUE4MnNYdTJHMFZSV2RlcnE2c3I2M3I0CkpWYnhY +ZmJHZ0p1SW00SFRMbXlJRHpiRUJ4dmlndzN4d1liNFlFTjhzQ0UrMkJBZmJJZ1BOc1FIRytLRERm +SEJodmhnUTN5d0lUN1kKRUI5c2lBODJ4QWNiNG9NTjhjR0crR0JEZkxBaFB0Z1FIMnlJRHpiRUJ4 +dmlndzN4d1liNFlFTjhzQ0UrMkJBZmJJZ1BOc1FIRytLRApEZkhCaHZoZ1EzeXdTVlI4SVFRVkNn +Vkowc2JHaG5rYUpDYStvNk1qZFhaMjZzR0RCNUtrOXZaMmRYVjFxVlFxbVNkTHJzVEVOejQrCnJ0 +WFZWUjBlSGtxU0RnOFB0Ynk4ck1uSlNmTmt5UldyOSsxZXBLV2xSUjgrZkRpei84NmRPOXJjM0RS +TWhIUGpLL2NMOUlEZm5YdmEKRFNIRWFwdWFtbEp0YmUycFk2eXRyZFhNekl4OXRxUnVpYm5tZS96 +NHNaNC9mNjVVS3FWME9xMVVLcVdSa1JFTkRBeTRSMHVzeEZ6egovVkFzRnJXenM2TnNOcXQwT3Uw +ZUo5RVNGeDl1anNTY2RuSHpFQjlzaUE4MnhBY2I0b01OOGNHRytHQkRmTEFoUHRnUUgyeUlEemJF +CkJ4dmlndzN4d1liNFlFTjhzQ0UrMkJBZmJJZ1BOc1FIRytLRERmSEJodmhnUTN5d0lUN1lFQjlz +aUE4MnhBY2I0b01OOGNHRytHQkQKZkxBaFB0Z1FIMnlJRHpiRUJ4dmlndzN4d1liNFlFTjhzQ0Ur +MkJBZmJMNERCMXZyL0lRTUZPQUFBQUFBU1VWT1JLNUNZSUk9Cg== + + + + display_data + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU5jQUFBQ09DQVlBQUFDaS9KMktBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFBQWx3U0ZsegpBQUFMRWdBQUN4SUIwdDErL0FBQUIxTkpSRUZVZUp6dDNVMUlW +RzBid1BIclRJOVprMlZaazVDTEtLaVJYR2lVQzVueVl4T1ZWQWlSClVxc0tETVlXdFluMkxTSnBx +N1hLb1hiWklvSlNORFFzb3pBRE45R21ORnRVUXdiMm9WYk9YTS9xaWQ3WEdkUEp5ek56NXY4RE45 +N04KNlRyZS9wMDduY3BSMWM4aXNsSUFMQ2hIVmRYdElRQXY4cms5QU9CVnhBVVlJUzdBQ0hFQlJv +Z0xNRUpjZ0JIaUFvd1FGMkNFdUFBagp4QVVZSVM3QUNIRUJSb2dMTUVKY2dCSGlBb3dRRjJDRXVB +QWp4QVVZSVM3QUNIRUJSb2dMTUVKY2dCSGlBb3dRRjJDRXVBQWp4QVVZCjhVUmNCUVVGNGppTzJW +dEJRWUhidCtocFh0MC9UL3hiOFk3amlPVnRXRjgvMjNsMS8vNVo5TjhSQzA1VjVmSGp4eEtKUkdS +MGRGU20KcHFZa1B6OWZLaW9xNU9USms3SisvWHEzUjh4S25qZ1daaXRWbFVna0ltVmxaWExpeEFr +cExpNldzMmZQU2w5Zm54dy9mbHhldlhvbAp3V0JRamgwN0ppOWZ2blI3M095akhqRGJiZFRWMVds +eGNiRTZqcU01T1RsYVZsYW1qWTJOcXFvNk1qS2lOVFUxV2xSVXBJN2o2S3BWCnE3Uzh2RnhiV2xy +bWZIMjNURTlQYTJOam81YVdsdXI5Ky9jMUhvLy9XdnQ5M2srZlB1bWxTNWMwRUFob1QwK1BHNlAr +a1ZmM0wvMCsKYTFMd3B3L2VreWRQMUhFY1BYUG1UTUwxaXhjdnF1TTRldlBtelpTdXY5amk4Ymcy +TlRWcGRYVzFmdjc4ZWNaNm9ubDdlbnAwM2JwMQpPakF3c0JnanpvdFg5eThyam9WOWZYMGlJckov +Ly82RTY3Mjl2YkpreVJMWnMyZlBZbzZWc3M3T1R1bnU3cGJidDIvTHlwVnorMDlCCmEycHE1T3JW +cTlMUTBDRHhlTng0d29XVnNmdm5TdElMN0UrM1VWdGJxN201dVRveE1URmo3Y2VQSDdwaXhRcmR2 +bjE3eXRkZmJMVzEKdGRyVzFwWjBQZG04OFhoY2QrellvUjBkSFVhVHBjYXIrK2Y1WjY1NFBDNzkv +ZjFTWGw0dXk1Y3ZuN0UrTURBZ0V4TVRVbGxaNmNKMAo4emM4UEN4UG56NlYrdnI2ZVQvV2NSd0po +OFBTMHRKaU1KbU5UTjQvejhjMU5EUWs0K1BqVWwxZG5YQzl0N2RYUkVTcXFxb1djYXJVCjNicDFT +NDRjT1pMd0UyMHVHaG9hcEtlblI3NSsvYnJBazluSTVQM3ovTSs1L2p1dmQzVjF5Yk5uejJhc0R3 +d01pT000YWZtVkw1Rm8KTkNvYk4yNU0rZkYrdjEvV3JsMHJZMk5qa3BlWHQ0Q1QyY2pvL1V0Mlho +U1JqSHBMcHE2dVRuTnljdlRidDI4ejFxYW5wOVh2OTJ0SgpTY21zWjJlMzd5MGIzcnk0ZjBtZnVU +U0RYdTdqT0U3Qzk2dXFQSHo0VUVwTFM4WHY5ODlZSHh3Y2xNbkp5VGw5MVV1WGo4ZUZDeGZrCnk1 +Y3YwdHpjblBUWHpQWnluMWdzSnF0WHI1YlIwVkZaczJhTjFaano0dFg5OC9TZnVWNjhlQ0ZqWTJP +eWUvZnVoT3VQSGowU2tmUTgKcnllemI5OCthVzl2bDFnc2x0TGo3OTI3SnlVbEpXa1QxbXd5ZmY4 +OEhkZC81L1ZkdTNZbFhPL3Y3eGNSU2MvemVoSTdkKzZVUUNBZwpuWjJkS1QyK3RiVlZ3dUh3QWs5 +bEkrUDNiOWJEYW9aSWRodjE5ZlhxOC9uMHc0Y1BDZGNMQ3d0MXk1WXRLVi9mTFpGSVJDc3JLL1hu +Cno1OEoxNVBOT3pnNHFJRkFRQ2NuSnkzSG16ZXY3cDlubjdtK2YvOHVEeDQ4a00yYk55ZDhWZmpR +MEpCRW8xRUpoVUl1VFBkM2poNDkKS3JtNXVYTDY5T2s1djlwaWVIaFlEaDA2SkMwdExiSnMyVExq +Q2YrZUovYlBsYVFYMk8rMzhlYk5HNjJzck5STm16YXB6K2ZUcFV1WAphaWdVMGl0WHJxaXE2cDA3 +ZDdTaW9rSURnWUQ2ZkQ0dEtDalFxcW9xN2Uvdm45UDEwOFg0K0xpR1FpR3RyNi9YOSsvZi84L2E3 +L1BHCjQzSHQ3dTdXRFJzMmFHdHI2MktQT1NkZTNULytzbVFhWEQ5VlUxTlRjdTdjT2JseDQ0YnMz +YnRYVHAwNkpkdTJiWlBDd2tJWkdSbVIKdTNmdlNtdHJxOFJpTVdsdWJwWURCdzY0UFhKQ1h0MC80 +a3FENi8rdDhmRnh1WDc5dXJTMXRjbmJ0Mi9sNDhlUFVsUlVKQlVWRlJJTwpoNlc2dWpycHQ3dlRn +VmYzajdqUzRQb0xqWGtYOS9ySmVQWWJHb0RiUFBQYVFzdGpUeWI4d0RYVGVYSC9QQkZYSmgyQk1K +Tlg5NDlqCklXQ0V1QUFqeEFVWUlTN0FDSEVCUm9nTE1FSmNnQkhpQW93UUYyQ0V1QUFqeEFVWUlT +N0FDSEVCUm9nTE1FSmNnQkhpQW93UUYyQ0UKdUFBanhBVVlJUzdBQ0hFQlJvZ0xNRUpjZ0JIaUFv +d1FGMkNFdUFBanhBVVlJUzdBQ0hFQlJvZ0xNRUpjZ0JIaUFvd1FGMkNFdUFBagp4QVVZSVM3QUNI +RUJSb2dMTUVKY2dCSGk4cEJZTENaZFhWMGlJdkw2OVd1WHB3RnhlY1M3ZCs5azY5YXRjdmp3WVJF +UktTa3BrZlBuCno3czhWWFp6VkZYZEhnSi83K0RCZzlMUjBTSFQwOU8vM3VmMys2V3JxMHRDb1pD +TGsyVXZucms4NHYvREVoR1puSnlVOXZaMmx5WkMKMG1jdXgzRVdleGJBVS81SnRzQnBNYk0wTlRY +SnRXdlhaR3BxNnRmNy9INi9QSC8rWElMQm9JdVRaUytPaFI1eCtmSmxxYTJ0bGR6YwpYTW5MeTVQ +OC9IeUpSQ0tFNVNLK29lRXgwV2hVb3RHb0JJTkJ5Y25KY1h1Y3JFWmNnQkdPaFlBUjRnS01FQmRn +aExnQUk4UUZHQ0V1CndBaHhBVWFJQ3pCQ1hJQVI0Z0tNRUJkZ2hMZ0FJOFFGR0NFdXdBaHhBVWFJ +Q3pCQ1hJQVI0Z0tNRUJkZ2hMZ0FJOFFGR0NFdXdBaHgKQVVhSUN6QkNYSUFSNGdLTUVCZGdoTGdB +SThRRkdDRXV3QWh4QVVhSUN6QkNYSUFSNGdLTUVCZGdoTGdBSThRRkdDRXV3QWh4QVVhSQpDekJD +WElBUjRnS00vQXZuK01DMi9PUDM1Z0FBQUFCSlJVNUVya0pnZ2c9PQo= + + + + display_data + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUo4QUFBQ09DQVlBQUFBdmtkcmVBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFBQWx3U0ZsegpBQUFMRWdBQUN4SUIwdDErL0FBQUF6eEpSRUZVZUp6dDNURk9L +bUVZUnVGM3lDMnh0VFUwYXNNRzJJQVRYUWNoTVM3SDBMZ0JDeE5qCkFnUmJ0a0NEY1RaQVlYT3hO +RE8zZ3NUQzF1UDFQMDg1TkY4bWgzKythYURxdXU1dmtxTkkzNnpxdXE2amgxQ1pldlFBS3BmeENX +TjgKd2hpZk1NWW5qUEVKWTN6Q0dKOHd4aWVNOFFsamZNSVluekRHSjR6eENXTjh3aGlmTU1ZbmpQ +RUpZM3pDR0o4d3hpZU04UWxqZk1JWQpuekRHSjR6eENXTjh3aGlmTU1ZbmpQRUpZM3pDR0o4d3hp +ZE1NZkZ0TnB1MGJmdnBXdHUyZVhsNWdTWlNFVCtMMjNWZDZyck9ZRERJCmREcE5yOWRMMjdZWmo4 +ZlpicmVaeldiMGlFVXE0dVNycWlvUER3OVpyOWU1dnI3T3g4ZEh4dU54bXFiSi9mMDlQVjZ4aWpq +NTluYTcKWGVxNnp0dmJXNDZQajdOWUxOTHY5K214aXZWbGZGVlZmZmNzS3N5ZnJ6NzRiUWZpZnNk +cm1pYXIxU3FqMFNqRDRmQ3dBK3I3RlhIWAp1NjdMWkRKSjB6U1p6K2RKa3VWeW1mVjZuWnViRzNp +NmNoVVJYMVZWdWJ5OHpIdytQK3g0UjBkSFdTNlh1Ymk0Z0tjclYxRXZISHRWClZmMjZ0ZUovVk1U +SnA1L0orSVF4UG1HTVR4ampFOGI0aERFK1lZeFBHT01UeHZpRU1UNWhqRThZNHhQRytJUXhQbUdN +VHhqakU4YjQKaERFK1lZeFBHT01UeHZpRU1UNWhqRThZNHhQRytJUXhQbUdNVHhqakU4YjRoREUr +WVl4UEdPTVR4dmlFTVQ1aGpFOFk0eFBHK0lReApQbUdNVHhqakU4YjRoREUrWVl4UEdPTVR4dmlF +TVQ1aGlvbnY4ZkV4Nysvdm42N3RkcnM4UFQxQkU2bUkrTHF1eTJLeHlOWFYxU0hBCjNXNlh1cTd6 +L1B3TVQxZXVZdjVwdkczYmpNZmpORTJUMVdxVjBXaVU0WENZNlhTYVhxK0k3K0NQVTh4ZDcvVjZ1 +YnU3eThuSlNaTGsKL1B6YzhHQmZubnhWVlgzM0xDck1uNjgrK0cxUDQvMk9OeHdPYzN0N204bGtr +cVpwTXAvUDArLzM2ZkdLVk1UTzEzVmQ2cnJPWURBNApQR3IzTytCMnU4MXNOcU5ITEZJUjhTWEpa +clBKNmVucHB4MnZiZHU4dnI3bTdPd01uS3hjeGNTbm44ZFhQV0dNVHhqakU4YjRoREUrCllZeFBH +T01UeHZpRU1UNWhqRThZNHhQRytJUXhQbUdNVHhqakU4YjRoREUrWVl4UEdPTVR4dmlFTVQ1aGpF +OFk0eFBHK0lReFBtR00KVHhqakU4YjRoREUrWVl4UEdPTVR4dmlFTVQ1aGpFOFk0eFBHK0lReFBt +R01UeGpqRThiNGhERStZWXhQbUg4TUV0VnhWRm41VGdBQQpBQUJKUlU1RXJrSmdnZz09Cg== + + + + display_data + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU5jQUFBQ09DQVlBQUFDaS9KMktBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFBQWx3U0ZsegpBQUFMRWdBQUN4SUIwdDErL0FBQUNybEpSRUZVZUp6dDNXdG9V +L2NmeC9GUC9rNU1VN3ZXU3kvTzBWUkJXcEZONnh5dVExMTNZVk9xCmlBVzEwd2RqVHF3R0ZjY1FW +K2NGdGoxeGJHeXNVeXVsRjhXaVZrVXBvclcyVnFadTBMS3RtNjNWVGV2TWRKdXhyZGlzTmtyUzcv +K0IKSUhaTm9zbjZ6VEhKNXdWNWtuTU9mSC8rK2lZbkY5QWtJbDBBNGtCRUE4b2tJbUwwRUVTUjZI +OUdEMEFVcVJnWGtSTEdSYVNFY1JFcApZVnhFU2hnWGtSTEdSYVNFY1JFcFlWeEVTaGdYa1JMR1Jh +U0VjUkVwWVZ4RVNoZ1hrUkxHUmFTRWNSRXBZVnhFU2hnWGtSTEdSYVNFCmNSRXBZVnhFU2hnWGtS +TEdSYVNFY1JFcFlWeEVTaGdYa1JMR1JhU0VjUkVwZWNyb0FlaS9FeEY4OTkxM0tDOHZoOTF1aDh2 +bFFueDgKUExLeXN2RGVlKzhoS1NuSjZCR2pFbCs1d3BpSW9MeThISk1tVGNLU0pVdVFrWkdCOTk5 +L0g5OSsreTNlZmZkZFhMNThHZW5wNlZpOAplREV1WExoZzlMalJSeWdzdWQxdVdiWnNtVXljT0ZG +cWEydWx0N2Yzd2JHSHQ3V3pzMU8yYk5raWlZbUpjdkxrU1NOR2pWcjgvN25DCmtJaGcxYXBWYUds +cFFWVlZGZUxpK3Y3ZmhTYVRDZi9lMXZyNmVpeFlzQURIamgzRGxDbFRRamx1MU9KdFlSaXFycTdH +aVJNbmNQancKNFg1aCtmTHFxNitpcUtnSWVYbDU2TzN0Vlo2UWdDaU1xNnVyQytmT25ZUFQ2VFI2 +bEtCdDNib1ZCUVVGaUkrUEQraTYzTnhjSkNRawpvS2FtUm1reWZWZXZYc1hGaXhmN3ZUSS9rUXk5 +S1EyaDN0NWVXYjkrdlpqTlpvbUxpNU9ZbUJqWnRHbFRuL2NxNGFDdHJVMUdqaHdwCmQrN2M4WG1P +djIwdEtTbVIyYk5uYTR5bTZ2cjE2L0xDQ3k5SVRFeU14TWJHU21wcXF2end3dzlHaitWWDFNUzFl +L2R1aVkyTkZRQVAKSHJHeHNWSlpXV24wYUFINTdMUFB4R2F6K1QzSFgxemQzZDFpc1ZqRTZYUU85 +R2lxSmsrZUxJTUdEZXF6ZjhPR0RaT2VuaDZqUi9NcAphbTRMQ3dzTDBkM2QzZWU1N3U1dWZQMzEx +d1pORkJ5SHd3R3IxUnIwOVJhTEJTTkdqRUJIUjhjQVRxWHJ5cFVyYUcxdGhjZmo2Zk84CngrUEI4 +ZVBIRFpycTBYeCtXbWd5bVVJOUMxRkU4Zm5LSmZkdkdTUG1zV1hMRnNURXhQUlpvOFZpd1pkZmZt +bjRiSUU4UHY3NFk2eGQKdTlidk9mNzJ6KzEyWStqUW9lanM3RFI4TFkvNzhIZzhHRDE2ZEwrLzBa +aVlHSFIwZEJnK244OTlrQ2poY3JuazlkZGZmL0MrS3pZMgpWdDU2NnkyNWUvZXUwYU1GcExHeFVk +TFMwc1R0ZHZzOEIzNjJ0YXFxU3FaT25hb3htcXFHaGdaSlNFaVF1TGc0QVNCbXMxbjI3dDFyCjlG +aCtSVTFjSXZjL01XeG9hQkFBMHRqWWFQUTRRWHZ4eFJmbHlKRWpQby83aTJ2bXpKbXljK2RPamJI +VWRYZDN5OEdEQndXQXRMZTMKR3ozT0kwWGxMelM4L1lJaG5PemN1Uk9scGFXb3E2dkRVMC8xLysy +MXIvWDkrT09QbURsekp1eDJPOHhtY3loR1ZSRXUreGMxbnhaRwpra1dMRm1ISWtDRll1WExsWS8v +YTRzcVZLNWc3ZHk2MmJ0MGExbUdGRThZVmhnWVBIb3dEQnc2Z3Via1ppeFl0d28wYk4zeWVLeUtv +CnJhM0Z0R25Uc0g3OWVzeWZQeitFazBZM3hoV21ubjc2YWRUVzFpSXBLUWtaR1JsNCsrMjNjZXJV +S1RnY0RnRDNmeWEwYmRzMlBQZmMKYzFpMWFoV0tpb3F3WXNVS2c2ZU9MbnpQRlFGdTM3Nk5YYnQy +b2F5c0RILzg4UWZhMjlzeGV2Um9aR1Zsd1dheklUczdPNksrdHd5WAovV05jRVlqcmV6THd0cEJJ +Q2VNaVVzSzRpSlF3TGlJbGpJdElDZU1pVXNLNGlKUXdMaUlsakl0SUNlTWlVc0s0aUpRd0xpSWxq +SXRJCkNlTWlVc0s0aUpRd0xpSWxqSXRJQ2VNaVVzSzRpSlF3TGlJbGpJdElDZU1pVXNLNGlKUXdM +aUlsakl0SUNlTWlVc0s0aUpRd0xpSWwKakl0SUNlTWlVc0s0aUpRd0xpSWxqSXRJQ2VNaVVzSzRp +SlF3TGlJbGpJdElTVlRFZGZmdVhlelpzd2ZaMmRsSVRrNEdBS1NrcE9DMQoxMTdEdm4zN2NPL2VQ +WU1uSkgvc2RqczJiTmlBOVBSMEpDUWtBQURTMHRKZ3M5bHc3dHc1ZzZmekxhTGpFaEY4OGNVWHNG +cXRLQzB0CnhlclZxOUhVMUFRQStPbW5uN0JpeFFyczJMRURWcXNWWDMzMUZVVEU0SW5wWVgvOTlS +ZHljM09SbVprSnA5T0p2WHYzb3EydERRQlEKVTFPRGxKUVV6Sm8xQ3pObXpNRFBQLzlzOExSZVNJ +VHllRHl5Wk1rU21USmxpclMydHZZNTl1OWx0N1MwU0dabXB1VG41NHZINHdubAptQ29pWVZ0Ly9m +VlhzVnF0c25IalJ2bm5uMy82SEh0NGZmZnUzWk9Ta2hKSlRFeVV1cnE2VUkvcFYvanZnZzhmZlBD +QlRKOCt2ZC9HCmlIai80K3ZxNnBLc3JDejU4TU1QUXpHZXFuQ1A2OGFOR3pKMjdGZ3BLaXJ5ZXR6 +Yit1cnI2eVV4TVZHYW1wcTB4M3RzNGIwTFB2enkKeXk4eWF0UW82ZWpvOEhyYzF4L2Z6WnMzSlRr +NXVkOHJYYmdKOTdoV3Jsd3BxMWV2OW5uYzEvcUtpNHRseG93WldtTUZMQ0xmYzIzYgp0ZzNMbHkv +SDhPSERBN3B1NU1pUldMcDBLYlp2MzY0MG1TNlB4NE9hbWhvQWVQRGVKTnc0blU1VVZGUmc3ZHEx +QVYvN3pqdnY0TGZmCmZrTnpjN1BDWkVFd3V1NkJkdnYyYlVsSVNKRHIxNi83UE1mZnNxOWV2U3JE +aHcvM2VqdjVKUHZ6eno5bDdOaXhFaGNYSndERWJEYkwKdW5YcmpCNHJZTnUzYjVkNTgrYjVQY2Zm +L20zYXRFbHNOdHRBanhXVWlIdmxPblBtRENaUG5veG5ubmttcU90VFUxTXhZY0lFZlAvOQo5d004 +bWE3OC9Ielk3WFk0blU0QWdNdmxRbUZoSWM2ZVBXdndaSUdwcnE3R3dvVUxnNzQrTHk4UDFkWFZB +emhSOENJdXJsdTNiajM0CkxpdFlTVWxKNk96c0hLQ0pRdVBZc1dOd3U5MTludXZwNmNIKy9mc05t +aWc0LzNYL2twT1RuNWk5TTRsNC8zTEhaREtGZWhhaWlPTHoKbFV2dWY1SVlkbys2dWpwTW5UclY3 +em1QV2w5bVppWk9uejV0K0ZvQ2VkaHNOcGpONWo1N2FMRlljT0hDQmNObkMrU3hjT0ZDbEpTVQpC +TDEvRFEwTkdEOSt2T0hyRUpISXV5MmNObTBhN0hZN3pwOC9IOVQxVFUxTmFHOXZ4MHN2dlRUQWsr +bjYvUFBQa1pPVGd5RkRobURvCjBLR0lqNDlIZVhrNTB0UFRqUjR0SVBQbnowZFpXVm5RMTVlVmxX +SEJnZ1VET0ZId2ZONFdoclBObXplanM3TVRoWVdGWG8rYlRDYjQKV25aK2ZqNVNVMVB4MFVjZmFZ +Nm94dUZ3d09Gd0lEMDlIWU1IRHpaNm5JQzUzVzZrcGFYaDZOR2plUDc1NTcyZTQydi91cnE2a0ph +VwpodWJtNXFBLzBCcElFUm5YdFd2WE1ISGlSSnc5ZXhZWkdSbjlqdnZhbkphV0ZreWZQaDNuejU5 +SFNrcEtLRVlsTHo3NTVCTTBOamJpCjBLRkRHRFJvVUwvanZ2YXZvS0FBbHk5ZlJtVmxaU2pHZkRT +SlVLV2xwVEptekJocGEydnJkOHpic2k5ZHVpUldxMVYyNzk0ZGl2SEkKRDVmTEphKzg4b29zWDc1 +YzNHNTN2K1BlOXUrYmI3NlJNV1BHeU45Ly94MktFUjlMeE1ZbGN2OGZmTlNvVVZKUlVTRXVsK3ZC +OHc5dgpUazlQait6YXRVdFNVbEpreDQ0ZFJveEpYdHk2ZFV1eXM3Tmw5dXpaL1g0ditQRCsvZjc3 +NzJLejJXVGN1SEZ5NmRLbFVJL3BWMFRICkpTSlNXMXNyYjd6eGhpUWxKVWxCUVlGVVZWVUpBS21x +cXBKMTY5WkpZbUtpdlBubW0xSmZYMi8wcVBRdkxwZExQdjMwVTNuMjJXZmwKNVpkZmx1TGlZamwr +L0xnQWtJcUtDcGt6WjQ2TUdERkMxcXhaSXpkdjNqUjYzSDRpOGoyWE54Y3ZYa1J4Y1RGYVcxdHg5 +T2hSNU9UawpZUHo0OFZpMmJCbkdqUnRuOUhqa2g5dnR4cEVqUjFCWldRbUh3NEc2dWpyazV1WWlK +eWNIZVhsNXNGZ3NSby9vVmRURVJSUnFFZmM5CkY5R1RnbkVSS1dGY1JFb1lGNUVTeGtXa2hIRVJL +V0ZjUkVvWUY1RVN4a1draEhFUktXRmNSRW9ZRjVFU3hrV2toSEVSS1dGY1JFb1kKRjVFU3hrV2to +SEVSS1dGY1JFb1lGNUVTeGtXa2hIRVJLV0ZjUkVvWUY1RVN4a1draEhFUktXRmNSRW9ZRjVFU3hr +V2toSEVSS1dGYwpSRW9ZRjVFU3hrV2toSEVSS1dGY1JFb1lGNUVTeGtXazVQOENrR2JYaWgwNml3 +QUFBQUJKUlU1RXJrSmdnZz09Cg== + + + + + + + +
727 docs/examples/notebooks/dense_coding.ipynb
 @@ -1 +1,726 @@ -{"cells":[{"cell_type":"text","text":"

Dense Coding\n

"},{"code":"%load_ext sympy_printing","cell_type":"code","prompt_number":1},{"code":"from sympy import sqrt, symbols, Rational\nfrom sympy import expand, Eq, Symbol, simplify, exp, sin\nfrom sympy.physics.quantum import *\nfrom sympy.physics.quantum.qubit import *\nfrom sympy.physics.quantum.gate import *\nfrom sympy.physics.quantum.grover import *\nfrom sympy.physics.quantum.qft import QFT, IQFT, Fourier\nfrom sympy.physics.quantum.circuitplot import circuit_plot","cell_type":"code","prompt_number":2},{"code":"psi = Qubit('00')/sqrt(2) + Qubit('11')/sqrt(2); psi\n","cell_type":"code","prompt_number":3},{"code":"circuits = [H(1)*CNOT(1,0), H(1)*CNOT(1,0)*X(1), H(1)*CNOT(1,0)*Z(1), H(1)*CNOT(1,0)*Z(1)*X(1)]","cell_type":"code","prompt_number":4},{"code":"for circuit in circuits:\n circuit_plot(circuit, nqubits=2)\n display(Eq(circuit*psi,qapply(circuit*psi)))","cell_type":"code","prompt_number":5},{"code":"%notebook save dense_coding.ipynb","cell_type":"code","prompt_number":28},{"code":"%notebook load teleportation.ipynb","cell_type":"code","prompt_number":181}]} + + + dense_coding + 2 + + + + + <h1>Dense Coding +</h1> + + + %load_ext sympyprinting + python + 2 + 1 + + + + from sympy import sqrt, symbols, Rational +from sympy import expand, Eq, Symbol, simplify, exp, sin +from sympy.physics.quantum import * +from sympy.physics.quantum.qubit import * +from sympy.physics.quantum.gate import * +from sympy.physics.quantum.grover import * +from sympy.physics.quantum.qft import QFT, IQFT, Fourier +from sympy.physics.quantum.circuitplot import circuit_plot + python + 3 + 1 + + + + psi = Qubit('00')/sqrt(2) + Qubit('11')/sqrt(2); psi + + python + 4 + 0 + + + pyout + ⎽⎽⎽ ⎽⎽⎽ +╲╱ 2 ⋅❘00⟩ ╲╱ 2 ⋅❘11⟩ +────────── + ────────── + 2 2 + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUx3QUFBQWtDQVlBQUFBemZGQ0ZBQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFCWlJKUkVGVQplSnp0bTN1b0ZVVWN4ei9uZHRLajFkVWUxc2x1NlI5WkJua3ZV +WlJhNlNraktId2tGR1lVeHVWaTlsRENJTXNvYmxGSlJDLzZKeW1vCnVFSVlScEhSU3dLTmdpQUp1 +bVQvRk1TbGgwVVBVSzVrcVp6KytPMXlkL2ZNUG1aM1ovZWMwM3hnT1p5WjMrek03bmQyWm42LzJR +V0wKeFdLeGRDZVZzaHNRUXpPSGM3VDdOWFlxWndFLzVYQ2V0dFZuRmxBcnVNNGR3Q2tGMTltSldH +MFMwcFBBcGcrNEJkZ0wxTTAyeDhkRgp3Qmp3VjRGMWRocFdHd05jQnd3Z3k0dlpCZGE3RFprMkxl +RlliVFNwSnJENXdIZ3JXamtQT0FUOFhFTGRuWVRWeGlCRmppSXZBM01LCnFxc2JzTm9rSk1rYXZt +ak9SaHl3NzhwdVNBeHJ5bTVBQ1hTS05oQ2lUNUlsVGRIY0J6d1RrZDhQRENFTzI1ZkF1OEEraGQy +QTgvdDEKSVAwMjRGTEU0ZG9QdkFYOHJpZ2ZaM2M4RWgwWmkyaHJ0eEduRFdUWHgrVUtZQkh3WkV4 +OVlYYVo5U2xpMnB5QmhMdkNXQTY4QTF5TQpSQ1cyQUg4REt4UzJEZWZ3OGpEd0dUREorWDg3Y3NP +bnBMQTdFZGdVMGRZaWFRZHRJTHMrSUhINWE0Q0R3Q3NSZGNYWlpkSm5FbkpUCnowOTdnb1E4RGx3 +WmtuY0M4QTF3Y2lEOVErQW84alI3YWVDL29kT0FBOEFxVDFvUDhBZndYQW83Z0VlUWtVU1hxZVFY +TjI4SGJTQzcKUGdEM0FydVJLRkNUOEE2ZjFDNlZQbXVBcmNpVCs2cFRtUWw2Z1owUitZdVFuYjFW +Z2ZSMXlFVVBCZEliK0cvb0E4aU5EMjZXdklFLwo0cERVRG1DZW9qMUpHQVJXcHlnWHBGMjBnZXo2 +ZUtrUzNaR1QycVhWSnhmdVI1WUtZV3dDcm8vSXZ3cTV1RThENlV1ZDlPY0Q2UTM4Ck4vUmo0SWVR +ZXB2QUJacDJMazlFdERtTUllRFdGT1ZNa1ZVYnlLNlBsN3c2UEFUMEtTSktVd1dHRVNmbEx0UlRU +QTI1WWU5SG5HYzMKc0l4VzcvdGM1emZNK1hHcEErT0s5RVBPN3l4Tk81ZHZhWDBJT29XOHRJSHMr +cGpDcDA4UkhmNG84cFJ0Qms0SGJsTFlEQ0pUY2hSTgo0RDFhUjkrYmdUK0puM0xyVEhSYUwyN2Fk +RTA3bHgzQWpURjF0eXQ1YVFQWjlUR0ZUeCszd3pjTkhGNk9JT0dobmNENlFGNFZXRWw4CkJFREZD +aVIwZURmaVZFWlJSUVFPVXZIazY5aTU5Q1BPbWlsTWFPUFZ4NVEyb0tlUEtYejZ1QjIrWXVCUThT +SXdIN2pFazdZYWVCTTQKcG5raFp5SU8yejNBOWdUMnFsZ3dTSFFCNERkTk81ZGxtQjI5VEdpajBp +ZFBiVUJmSDFQNDlDbDY0K2tUWkUyMUhsbnJWWkFObnFXYQo1NmtCYnlQcno1Y1NsaGtGTGxla1Qz +Vis5MnZhZ1N4dnhsSFBDQUIzSUNOa2tENmtFNmtjMTIzT1VUUjVhUVBwOURGQm5ENkZjQ2R3CkdO +bkl1QUhZcUZtK2dvd1lRZWRvUWVCL0EzOFVZQjJ5bGd3eUF2eUx4TjkxN0VBY3ZhaTNCbXVJVHhB +OE5pTFR2Q3B2Y3NUNVRKTlYKRzBpdmo1ZThvalF0K3BUeExzMEljbFBYT3NkV3pmSmJrTkRoNjU2 +MFBtQkpUTGxSSkxZZTNLQlo0clRwZ0tZZHdFeWkzeG84RFB5cQpPQTQ2NTFIbC9STnpIU2JKcWcy +azE4Y0VMZnFVOFM3Tk9QQWE4Q0R3Tk9xSVNCaHJrWFhtOTB4c1pGUVF4K2lqbUxKN2dTK1FrWFdE +Cms3WVFPQU40S29YZFltQ1BSdHM3Z1N6YVFEWjl2QnpuL01idGtrYlpwZFpuQnZBUTh1UStobjlL +VDhzY1pKVFQrVVRzTWlTaUVCWjEKbUJld1grd2NYdXJJV25VRTJaVWNSZGFwUVpMWVBVcjY3ekh6 +Mm5ocUYyMGdIMzJ1UldhVnI1d3l4NUNYOWw1QWRudDE3SlQ2eEFsVwpSYnozRGM3RmJFYUVIMERX +czFtWUNmeWlZVjhINWtia2Y0NjAwY1Y5Nm84b2JLY2dJL1lZMFIrS1I5bjFJaDBqRFVQSTBpR0xj +OXBPCjJrQSsrcmgraklwOUh0c2tkcW4wNlFkK1pHTGhmeG9pL05XNko3TDRHRVMrUmMyQzFjWUFO +ZVFkYVBlMTJEN2twaTRzclVYZFFSNXYKUzFwdENtQVkyRVY3ZmluMWYyY1lxMDJ1ekVjODdkNDRR +MHZoV0cxeVppN3dMUEt4UVE5d1Vybk5zWGl3MnVUTU9VaG96bzNvTEtDYwpUUVJMSzFZYlRlTENr +cWNpMzNaNkEvdlRnUXVSWFVGTGVWaHRVaERYNGFmUnVtSFFSR0txbG5LeDJsZ3NGb3ZGWXJGWUxK +YXU1ejl2CjByak9nS2lER3dBQUFBQkpSVTVFcmtKZ2dnPT0K + + $$\frac{1}{2} \sqrt{2} {\left|00\right\rangle } + \frac{1}{2} \sqrt{2} {\left|11\right\rangle }$$ + 4 + + + + + circuits = [H(1)*CNOT(1,0), H(1)*CNOT(1,0)*X(1), H(1)*CNOT(1,0)*Z(1), H(1)*CNOT(1,0)*Z(1)*X(1)] + python + 5 + 1 + + + + for circuit in circuits: + circuit_plot(circuit, nqubits=2) + display(Eq(circuit*psi,qapply(circuit*psi))) + python + 6 + 0 + + + display_data + ⎛ ⎽⎽⎽ ⎽⎽⎽ ⎞ + ⎜╲╱ 2 ⋅❘00⟩ ╲╱ 2 ⋅❘11⟩⎟ +H ⋅CNOT ⋅⎜────────── + ──────────⎟ = ❘00⟩ + 1 1,0 ⎝ 2 2 ⎠ + aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVdVQUFBQW1DQVlBQUFBY1Bvck5BQUFBQkhOQ1NWUUlD +QWdJZkFoa2lBQUFESDlKUkVGVQplSnp0blh1MEZWVWR4ei8zQWhmaUlWZEpGRlF3VVRSSVVhTTBJ +YTRQYUdtWnBsbGsrVWd5OUlMWnc5VUNuNVhTUXpPU1FJMjBSTHhHCnFZdlZhNEd2MHBKOHhTTzFG +QVVWU3hOTE5FVXlKYmo5OFoxWlo4NmNQVE43enBremN3N3N6MXBublh0bmZqUHptL250K2UyOWYv +dTMKOXdHSHcrRndPQnhWMHdyMEtGb0poeU1IV3IzUGRzVjJkOFBiQVBPQmR4ZXRoTU9SQSs4Q2Jn +QmFpbFlrVDF5THE3bTRHSGdhV0ZLMApJakYwQUs4Qi95MWFFVWNGeldhYlY0RWRnTW5BYnd2V3hl +R29ZREp3UzlGS0pOQUtkR2Z3Y1dSUEszQUh6V21mQmNCcEJWelg0WWhrCk1QQWNNRERGTWFjQk0r +dWpUaVNmQktibGZNMW14TmttSGYxUUQzRzNvaFZ4T0h5K0JWeHVLZnMrNEJKZ09UQ3JiaHFaV1Fy +MHlmbWEKellTelRmVmNESHkvYUNVY0RsQk03UlZncjVUSFhVKytMLzR4d0l3Y3I5Zk1PTnVrWjFj +VVl4NVV0Q0wxeG1WZk5ENmR3RVBBTTBVcgpra0FuY0czUlNqaU1iQXUyV1EvY0NYeXhhRVhxalhQ +S2pjK25nVVZGSzVIQU9PQlI0UFdpRlVsZ3UwcXQ4bWdXMjBDeWZSWUJKK2VoClNFNFk3emZLS2Zj +QitvYyt3WGhVUDhQK1hqVW9aMHJOQytyV08zQ2R2cFk2OTY3aW1tRmFxTHpQdUUvV01idDI0RDNB +bnpJK2I5WjgKQ1ppVHczVnNHeEZSY2hkbHBVZ1RrWmR0ZkhyV0lKZGtuK1hBM2lpVTBRalVwVHhH +UGNDZkFQc0JCd0Z2STZld0VqZ1hHQTVjRFl4Qwp5ZDJ2b0pyNHA4QjFsa29PQUQ0RGZBQVlTU2tm +OFRyZ1J1QTQ3L3BYZVBLelBGME9SODUwTExBaWRNNUZ3RkhldVY4QUZnSVhoR1FPClJvWDBIWjdl +ZXdCYmdVdUJodzE2bmduOENOam8zZi9MS0xaN0VMQUJXQVpzQWQ2SldpVFBBdnRZUGdNYnhnT2Jn +Q2N6UEdmV2pBSCsKQWZ3clJtWTZjQUtxelArTmJMWFFJRGZKMngrc2hBWUNWNkhjMmhkUlRIRUJz +Q3AwckkzY1dsUnVIMCs2cVcwRUc5dEFiZllKTWdQWQpCZmhLd3ZXaTVKTHM4endLWTN3UXVEWGhH +bG5RY09WeEhNcEp2REppLzBYZS9oTnRUK2h4SkxBT2phU09wVlNMOUFDK2dRWkIza1FPCk84aGc5 +SEM2Z1I5SG5QdFVWRG1FNlFuY2hCenYzcUY5UjZFSGQ3Ymh1THRSd1FuV2RGTThIYzRLeVo0TTNC +V2hWN1ZjQWZ5K3ltUHoKR2t5NkNWVnVVWHdUWlJ5MGVmOGZoeXBDazI1SEE0ZUd0aTJtUEI0NkNW +VzZnNnVRYTBPaitOV3dGOW0xMEJyRk5sQzdmVnFBQTRCdgpvL2ZpcW9qcjJNaloyT2ZYNU5meWI3 +anlPQk05dklrUisrOUdyY1FkTE0vWGdoN20yOERuWW1UdVI3T093dUdGazlBRWlrZFE2N0hkCmNQ +eFhnUU5EMjFxUm8xNU1kSWhsbG5mTzRZRnRnekU3K0FYb3VZU2QrekRVZzhpU3BjQTFLWS9aRHhu +Nk9lQUo0RUtTWDh3b1dqRS8KWjUrOWtZT0pZbmMwU0JudXZpMUV6ekE4WFR6OEVveENEdUt3d0xZ +VzFGcGFVSVVjd1BsRWg4RGlPQWVWd1Zwb0pOdEE3ZllCK1ltcgpVUTgwemluYnlpWFo1N3ZBNzJM +MlowbkRsY2Vsd0Z1b3F4K21EZmdQbFNHRU9NN0RybVY5R2ZBcncvWTV3QkRVb3UzR1BBcDdFK1VG +CnJBVzFxdGNSWDRBUDk4NTVhV0JiSjJwRmgza0cxWGhoeGtib1ZBc1BvNVpNR25wU0dldXVaanI5 +am1nNjl3OWlaT1lqUnhQRmljQm0KMUFNS2NpWjYzbDhJYlErL0JOZWowRlpZLzRXb2dMZWtsQU8x +ZU0rSTBUbUtMSnh5STlrR2FyZFBrSGJpbmEydFhKSjlMa0lOc3p3bwpwRHhHQmFCN0lDLy9FQW9s +aERrRU9lcy9SQndmNWtBMEFlSXUxR0tOWXgxcWhZY1ppbUl6WFNqR0d3NDMrUGV5TmJEdFNoUnVt +SVppClEzSFhCTmcvc08xVkttdmszVkVjL1Q3RE9UWmkvenhzMlFuMUd0THdQK0NOMEdkTHluTzBB +Vk5ScGZCWkZLY1BzeHR5S3F0anpyTU8KdllEaE9Qc203M3ZuQkQwT1JLM0tzUDdQb3Bqa3ZpbmxR +SlhxaUlUcjFvdEdzZzNVYnA5NmtHU2YxOUI3VVFTNWxNY29wM3dRQ2t2YwpHN0gvQ08vYjFna3R3 +RDUrc29wS3g5Mk9uQ1NvSUhlaFZzQVJBWmt4YU1EUlp4Z2FtUHdiY0h2Q05mMVFSRnRnMjgrb25P +ZmY0WDJiCjd2dEpLb1A5dGJJVDhaVkp2WGdielNDY2gwSStweHRremdObUo1eG5KZXJkbkJMYTds +ZCtEeVVjdnlzbEJ4SEUzN1pMU2ptZjVXaDIKWFRPU2xXMmdkdnZVaXpqNzJEcmw5NkwzOGM4cFBy +Y2xuRE9YOGhpVmZUSEIrLzRROEg3RC9rT1F3N0p4eWtPUnczd0FPeU92Tkd3YgpqeklkZks1RjRZ +Vk80QjV2VzBkSW4ybm8vaFpTM25vMk1jcjdmakJCem44dVdiZUlveGlBMmJoNThUSWFpWitPNG9G +K0pUVUl4ZDl0CndsY2JRdi8zUWQyMUZjUlhsaTBvcm04YW1mYWZTWHNLdVNCM0FsK204Vk1ONDhq +Q05sQzlmZXBKbkgwMm9SaHNEK0o3R1N0UTR6SXIKY2l1UFVVNjVBM1cxamtTeDR5QnRxTFo2bkVx +RG1oanZmZGZTaXB4QStZRFhZOEFmZ1kraFdtazlTbmViRjVEeGcrd1BXSnpmYndFbgp5VTVBOS94 +WGkzTm13VWFVcG1TaUhxdDFtWkxaNTZHWGRDS2w3Skp6Z2JsVlh1TjhsRU4rT3ZFdlZUY0tuWmtx +Vkw5SHN5V0ZYSkRqCk1ZOWJaRVc5VmxJTDJ5ZHIyNEM5ZmVwSm5IMEdJSitVdDI2NWxVZFQrS0lG +T2RKVlZEcGtVTGVnRC9hcFduNnovQzhXc2tNd3oyMGYKVGludTYzTU42cjZkaVhUdWlTb1NIejhr +a1RROWVRUnk3aThRNzVSM1JpR1QrOGh2K2NJTlJLOE0xMUtIajRtVktDUEdIL1RwandZMQo3NjNp +ZmpwUUQyWVNkaFhiWXhIYi9kSHFGMVBLK2V3ZmM4d016RjNibVdqazM3UXZ2S3hrUFd4anNrK1d0 +b0gwOXFrWGNmWVppRjFqCnNCN2tVaDVOTGVYOVVjem14b2dUK3kxZjJ5NzgwOTczU3hheTUxTzVw +R0ZmRkVjT2N4c2F3WjJLYXBrblF2dGZRRTQrcWZ2djV5RlAKU1pETk8zUUJtdUFTbHpXU0YzT0Jt +OUVnNTBuQUQ2czR4d2p2dUVuSWtkbndHR29FaFBFSHQ5YW5sQU9GcXVJY3p1V1lWK1E3eHp0UApV +dHd4YjdLd0RWUm5uM3FRWkorQjZMMUk0bUNVZ1pKbWF2MWE0Rk14KzRzb2o0QUtYemVhNFdQaUY5 +NStVeUs5YVozWS9UejVwTlN1Ck1aZ25jRXdFUGg5eHpIZThjOTlCS1FUaE05dmJGNWRlTXc1MU5X +eHlnZWQ0NXpNOWJKODA2K1NPUkFPZm5kNzFUU1BkU3l4MXF6ZTkKME15d2VTaitsWFlOaVozUW1N +RG93TGJlVkw0QTRSU2tUc29Mc004OXFMWFJJNlVjNkprblRjRTNrVVZLWEQybzFUWlF2WDJDWkpV +UwpsMlNmMmVUM0t5U0ZsRWRUK01KM2Jzc00rMENPYkUzb292NDZzZWVpTGxTUTFTaitld0xSRTAz +R2VNZWFadXBOSURwVU1oL0ZianFvCkhFUzhGWTFVSHh0eDdBSEFiOUN2ZVp3WElSUFc0M1hNcllp +NCs0K2l5N3YydGNBdlViWkhtRWNwRFVJV3lXYlVpcHFPZWxCcHdqZHQKS0c5ekd1VXRndEVrajZJ