Skip to content

Instantly share code, notes, and snippets.

@nelimee
Created June 22, 2018 13:56
Show Gist options
  • Save nelimee/31a84435ad649471405d2afc3d9b13ff to your computer and use it in GitHub Desktop.
Save nelimee/31a84435ad649471405d2afc3d9b13ff to your computer and use it in GitHub Desktop.
A quantum circuit that illustrate an issue in QISKit
// ======================================================================
// Copyright CERFACS (February 2018)
// Contributor: Adrien Suau (suau@cerfacs.fr)
//
// This software is governed by the CeCILL-B license under French law and
// abiding by the rules of distribution of free software. You can use,
// modify and/or redistribute the software under the terms of the
// CeCILL-B license as circulated by CEA, CNRS and INRIA at the following
// URL "http://www.cecill.info".
//
// As a counterpart to the access to the source code and rights to copy,
// modify and redistribute granted by the license, users are provided
// only with a limited warranty and the software's author, the holder of
// the economic rights, and the successive licensors have only limited
// liability.
//
// In this respect, the user's attention is drawn to the risks associated
// with loading, using, modifying and/or developing or reproducing the
// software by the user in light of its specific status of free software,
// that may mean that it is complicated to manipulate, and that also
// therefore means that it is reserved for developers and experienced
// professionals having in-depth computer knowledge. Users are therefore
// encouraged to load and test the software's suitability as regards
// their requirements in conditions enabling the security of their
// systems and/or data to be ensured and, more generally, to use and
// operate it in the same conditions as regards security.
//
// The fact that you are presently reading this means that you have had
// knowledge of the CeCILL-B license and that you accept its terms.
// ======================================================================
OPENQASM 2.0;
include "qelib1.inc";
qreg qb[2];
qreg qC[4];
qreg ancilla[1];
creg classicalx[2];
creg cc[4];
creg cr[1];
h qb[0];
h qb[1];
h qC[0];
h qC[1];
h qC[2];
h qC[3];
h qb[1];
ccx qC[3],qb[0],qb[1];
h qb[1];
cu3(0.196349530000000,pi/2,3*pi/2) qC[3],qb[1];
cu1(pi) qC[3],qb[1];
cx qC[3],qb[1];
cu1(pi) qC[3],qb[1];
cx qC[3],qb[1];
h qb[1];
t qb[1];
cx qC[3],qb[1];
t qC[3];
tdg qb[1];
h qb[1];
cz qC[3],qb[1];
cx qC[3],qb[1];
cu1(0.379009870000000) qC[3],qb[1];
cx qC[3],qb[1];
cu1(0.379009870000000) qC[3],qb[1];
cx qC[3],qb[1];
cu3(0.981747700000000,pi/2,3*pi/2) qC[3],qb[0];
cu1(pi) qC[3],qb[0];
cx qC[3],qb[0];
cu1(pi) qC[3],qb[0];
cx qC[3],qb[0];
cu1(1.87900984000000) qC[3],qb[0];
cx qC[3],qb[0];
cu1(1.87900984000000) qC[3],qb[0];
cx qC[3],qb[0];
ccx qC[3],qb[0],qb[1];
cu3(0.589048620000000,pi/2,3*pi/2) qC[3],qb[0];
cu1(pi) qC[3],qb[0];
cx qC[3],qb[0];
cu1(pi) qC[3],qb[0];
cx qC[3],qb[0];
ccx qC[3],qb[0],qb[1];
h qb[1];
ccx qC[3],qb[0],qb[1];
h qb[1];
h qb[1];
ccx qC[2],qb[0],qb[1];
h qb[1];
cu3(1.96349540000000,pi/2,3*pi/2) qC[2],qb[1];
cu1(pi) qC[2],qb[1];
cx qC[2],qb[1];
cu1(pi) qC[2],qb[1];
cx qC[2],qb[1];
h qb[1];
t qb[1];
cx qC[2],qb[1];
t qC[2];
tdg qb[1];
h qb[1];
cz qC[2],qb[1];
cx qC[2],qb[1];
cu1(1.11532058000000) qC[2],qb[1];
cx qC[2],qb[1];
cu1(1.11532058000000) qC[2],qb[1];
cx qC[2],qb[1];
cu3(1.96349540000000,pi/2,3*pi/2) qC[2],qb[0];
cu1(pi) qC[2],qb[0];
cx qC[2],qb[0];
cu1(pi) qC[2],qb[0];
cx qC[2],qb[0];
cu1(2.61532069000000) qC[2],qb[0];
cx qC[2],qb[0];
cu1(2.61532069000000) qC[2],qb[0];
cx qC[2],qb[0];
ccx qC[2],qb[0],qb[1];
cu3(1.17809726000000,pi/2,3*pi/2) qC[2],qb[0];
cu1(pi) qC[2],qb[0];
cx qC[2],qb[0];
cu1(pi) qC[2],qb[0];
cx qC[2],qb[0];
ccx qC[2],qb[0],qb[1];
h qb[1];
ccx qC[2],qb[0],qb[1];
h qb[1];
h qb[1];
ccx qC[1],qb[0],qb[1];
h qb[1];
cu3(-0.785398160000000,pi/2,3*pi/2) qC[1],qb[1];
cu1(pi) qC[1],qb[1];
cx qC[1],qb[1];
cu1(pi) qC[1],qb[1];
cx qC[1],qb[1];
h qb[1];
t qb[1];
cx qC[1],qb[1];
t qC[1];
tdg qb[1];
h qb[1];
cz qC[1],qb[1];
cx qC[1],qb[1];
cu1(1.01714584000000) qC[1],qb[1];
cx qC[1],qb[1];
cu1(1.01714584000000) qC[1],qb[1];
cx qC[1],qb[1];
cu3(3.92699082000000,pi/2,3*pi/2) qC[1],qb[0];
cu1(pi) qC[1],qb[0];
cx qC[1],qb[0];
cu1(pi) qC[1],qb[0];
cx qC[1],qb[0];
cu1(2.51714589000000) qC[1],qb[0];
cx qC[1],qb[0];
cu1(2.51714589000000) qC[1],qb[0];
cx qC[1],qb[0];
ccx qC[1],qb[0],qb[1];
cu3(2.35619449000000,pi/2,3*pi/2) qC[1],qb[0];
cu1(pi) qC[1],qb[0];
cx qC[1],qb[0];
cu1(pi) qC[1],qb[0];
cx qC[1],qb[0];
ccx qC[1],qb[0],qb[1];
h qb[1];
ccx qC[1],qb[0],qb[1];
h qb[1];
h qb[1];
ccx qC[0],qb[0],qb[1];
h qb[1];
cu3(-9.01416169000000e-9,pi/2,3*pi/2) qC[0],qb[1];
cu1(pi) qC[0],qb[1];
cx qC[0],qb[1];
cu1(pi) qC[0],qb[1];
cx qC[0],qb[1];
h qb[1];
t qb[1];
cx qC[0],qb[1];
t qC[0];
tdg qb[1];
h qb[1];
cz qC[0],qb[1];
cx qC[0],qb[1];
cu1(-0.750000046000000) qC[0],qb[1];
cx qC[0],qb[1];
cu1(-0.750000046000000) qC[0],qb[1];
cx qC[0],qb[1];
cu3(1.57079632000000,pi/2,3*pi/2) qC[0],qb[0];
cu1(pi) qC[0],qb[0];
cx qC[0],qb[0];
cu1(pi) qC[0],qb[0];
cx qC[0],qb[0];
cu1(0.750000039000000) qC[0],qb[0];
cx qC[0],qb[0];
cu1(0.750000039000000) qC[0],qb[0];
cx qC[0],qb[0];
ccx qC[0],qb[0],qb[1];
cu3(-1.57079633000000,pi/2,3*pi/2) qC[0],qb[0];
cu1(pi) qC[0],qb[0];
cx qC[0],qb[0];
cu1(pi) qC[0],qb[0];
cx qC[0],qb[0];
ccx qC[0],qb[0],qb[1];
h qb[1];
ccx qC[0],qb[0],qb[1];
h qb[1];
h qC[0];
cu1(-pi/2) qC[0],qC[1];
cu1(-pi/4) qC[0],qC[2];
cu1(-pi/8) qC[0],qC[3];
h qC[1];
cu1(-pi/2) qC[1],qC[2];
cu1(-pi/4) qC[1],qC[3];
h qC[2];
cu1(-pi/2) qC[2],qC[3];
h qC[3];
swap qC[2],qC[1];
cu3(0.25*pi,0,0) qC[0],ancilla[0];
cu3(0.125*pi,0,0) qC[1],ancilla[0];
cu3(0.0625*pi,0,0) qC[2],ancilla[0];
cu3(0.03125*pi,0,0) qC[3],ancilla[0];
swap qC[2],qC[1];
h qC[3];
cu1(pi/2) qC[2],qC[3];
h qC[2];
cu1(pi/4) qC[1],qC[3];
cu1(pi/2) qC[1],qC[2];
h qC[1];
cu1(pi/8) qC[0],qC[3];
cu1(pi/4) qC[0],qC[2];
cu1(pi/2) qC[0],qC[1];
h qC[0];
h qb[1];
ccx qC[0],qb[0],qb[1];
h qb[1];
ccx qC[0],qb[0],qb[1];
cx qC[0],qb[0];
cu1(-pi) qC[0],qb[0];
cx qC[0],qb[0];
cu1(-pi) qC[0],qb[0];
cu3(1.57079633000000,-3*pi/2,-pi/2) qC[0],qb[0];
ccx qC[0],qb[0],qb[1];
cx qC[0],qb[0];
cu1(-0.750000039000000) qC[0],qb[0];
cx qC[0],qb[0];
cu1(-0.750000039000000) qC[0],qb[0];
cx qC[0],qb[0];
cu1(-pi) qC[0],qb[0];
cx qC[0],qb[0];
cu1(-pi) qC[0],qb[0];
cu3(-1.57079632000000,-3*pi/2,-pi/2) qC[0],qb[0];
cx qC[0],qb[1];
cu1(0.750000046000000) qC[0],qb[1];
cx qC[0],qb[1];
cu1(0.750000046000000) qC[0],qb[1];
cx qC[0],qb[1];
cz qC[0],qb[1];
h qb[1];
t qb[1];
tdg qC[0];
cx qC[0],qb[1];
tdg qb[1];
h qb[1];
cx qC[0],qb[1];
cu1(-pi) qC[0],qb[1];
cx qC[0],qb[1];
cu1(-pi) qC[0],qb[1];
cu3(9.01416169000000e-9,-3*pi/2,-pi/2) qC[0],qb[1];
h qb[1];
ccx qC[0],qb[0],qb[1];
h qb[1];
h qb[1];
ccx qC[1],qb[0],qb[1];
h qb[1];
ccx qC[1],qb[0],qb[1];
cx qC[1],qb[0];
cu1(-pi) qC[1],qb[0];
cx qC[1],qb[0];
cu1(-pi) qC[1],qb[0];
cu3(-2.35619449000000,-3*pi/2,-pi/2) qC[1],qb[0];
ccx qC[1],qb[0],qb[1];
cx qC[1],qb[0];
cu1(-2.51714589000000) qC[1],qb[0];
cx qC[1],qb[0];
cu1(-2.51714589000000) qC[1],qb[0];
cx qC[1],qb[0];
cu1(-pi) qC[1],qb[0];
cx qC[1],qb[0];
cu1(-pi) qC[1],qb[0];
cu3(-3.92699082000000,-3*pi/2,-pi/2) qC[1],qb[0];
cx qC[1],qb[1];
cu1(-1.01714584000000) qC[1],qb[1];
cx qC[1],qb[1];
cu1(-1.01714584000000) qC[1],qb[1];
cx qC[1],qb[1];
cz qC[1],qb[1];
h qb[1];
t qb[1];
tdg qC[1];
cx qC[1],qb[1];
tdg qb[1];
h qb[1];
cx qC[1],qb[1];
cu1(-pi) qC[1],qb[1];
cx qC[1],qb[1];
cu1(-pi) qC[1],qb[1];
cu3(0.785398160000000,-3*pi/2,-pi/2) qC[1],qb[1];
h qb[1];
ccx qC[1],qb[0],qb[1];
h qb[1];
h qb[1];
ccx qC[2],qb[0],qb[1];
h qb[1];
ccx qC[2],qb[0],qb[1];
cx qC[2],qb[0];
cu1(-pi) qC[2],qb[0];
cx qC[2],qb[0];
cu1(-pi) qC[2],qb[0];
cu3(-1.17809726000000,-3*pi/2,-pi/2) qC[2],qb[0];
ccx qC[2],qb[0],qb[1];
cx qC[2],qb[0];
cu1(-2.61532069000000) qC[2],qb[0];
cx qC[2],qb[0];
cu1(-2.61532069000000) qC[2],qb[0];
cx qC[2],qb[0];
cu1(-pi) qC[2],qb[0];
cx qC[2],qb[0];
cu1(-pi) qC[2],qb[0];
cu3(-1.96349540000000,-3*pi/2,-pi/2) qC[2],qb[0];
cx qC[2],qb[1];
cu1(-1.11532058000000) qC[2],qb[1];
cx qC[2],qb[1];
cu1(-1.11532058000000) qC[2],qb[1];
cx qC[2],qb[1];
cz qC[2],qb[1];
h qb[1];
t qb[1];
tdg qC[2];
cx qC[2],qb[1];
tdg qb[1];
h qb[1];
cx qC[2],qb[1];
cu1(-pi) qC[2],qb[1];
cx qC[2],qb[1];
cu1(-pi) qC[2],qb[1];
cu3(-1.96349540000000,-3*pi/2,-pi/2) qC[2],qb[1];
h qb[1];
ccx qC[2],qb[0],qb[1];
h qb[1];
h qb[1];
ccx qC[3],qb[0],qb[1];
h qb[1];
ccx qC[3],qb[0],qb[1];
cx qC[3],qb[0];
cu1(-pi) qC[3],qb[0];
cx qC[3],qb[0];
cu1(-pi) qC[3],qb[0];
cu3(-0.589048620000000,-3*pi/2,-pi/2) qC[3],qb[0];
ccx qC[3],qb[0],qb[1];
cx qC[3],qb[0];
cu1(-1.87900984000000) qC[3],qb[0];
cx qC[3],qb[0];
cu1(-1.87900984000000) qC[3],qb[0];
cx qC[3],qb[0];
cu1(-pi) qC[3],qb[0];
cx qC[3],qb[0];
cu1(-pi) qC[3],qb[0];
cu3(-0.981747700000000,-3*pi/2,-pi/2) qC[3],qb[0];
cx qC[3],qb[1];
cu1(-0.379009870000000) qC[3],qb[1];
cx qC[3],qb[1];
cu1(-0.379009870000000) qC[3],qb[1];
cx qC[3],qb[1];
cz qC[3],qb[1];
h qb[1];
t qb[1];
tdg qC[3];
cx qC[3],qb[1];
tdg qb[1];
h qb[1];
cx qC[3],qb[1];
cu1(-pi) qC[3],qb[1];
cx qC[3],qb[1];
cu1(-pi) qC[3],qb[1];
cu3(-0.196349530000000,-3*pi/2,-pi/2) qC[3],qb[1];
h qb[1];
ccx qC[3],qb[0],qb[1];
h qb[1];
h qC[3];
h qC[2];
h qC[1];
h qC[0];
measure ancilla[0] -> cr[0];
measure qC[0] -> cc[0];
measure qC[1] -> cc[1];
measure qC[2] -> cc[2];
measure qC[3] -> cc[3];
measure qb[0] -> classicalx[0];
measure qb[1] -> classicalx[1];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment