creg name[size];
qreg name[size];
U(theta, phi, lambda) name[n];
U(pi / 4 + ln(pi), 0, 0) bar[1];
CX bar[0], baz[2];
measure qbar[2] -> rbar[1];
gate name(params) qargs
{
body
}
gate cu1(lambda) a,b
{
U(0,0,lambda/2) a;
CX a,b;
U(0,0,-lambda/2) b;
CX a,b;
U(0,0,lambda/2) b;
}
gate ccx a,b,c
{
h c;
cx b,c;
tdg c;
cx a,c;
t c;
cx b,c;
tdg c;
cx a,c;
t b;
t c;
h c;
cx a,b;
t a;
tdg b;
cx a,b;
}
qreg bar[8];
U(1., 1., 1.) bar[0];
U(1., 1., 1.) bar[1];
U(1., 1., 1.) bar[2];
U(1., 1., 1.) bar[3];
U(1., 1., 1.) bar[4];
U(1., 1., 1.) bar[5];
U(1., 1., 1.) bar[6];
U(1., 1., 1.) bar[7];
qreg bar[8];
U(1., 1., 1.) bar;
qreg bar[8];
qreg baz[8];
CX bar[0], baz[0];
CX bar[1], baz[1];
CX bar[2], baz[2];
CX bar[3], baz[3];
CX bar[4], baz[4];
CX bar[5], baz[5];
CX bar[6], baz[6];
CX bar[7], baz[7];
qreg bar[8];
qreg baz[8];
CX bar, baz;
qreg bar[8];
qreg baz[8];
CX bar[0], baz[4];
CX bar[1], baz[4];
CX bar[2], baz[4];
CX bar[3], baz[4];
CX bar[4], baz[4];
CX bar[5], baz[4];
CX bar[6], baz[4];
CX bar[7], baz[4];
qreg bar[8];
qreg baz[8];
CX bar, baz[4];
qreg bar[8];
qreg baz[8];
qreg fiz[5];
ccx bar, fiz[3], baz;
measure qbar[0] -> cbar[0]; measure qbar -> cbar;
measure qbar[1] -> cbar[1];
measure qbar[2] -> cbar[2];
measure qbar[3] -> cbar[3]; <=>
measure qbar[4] -> cbar[4];
measure qbar[5] -> cbar[5];
measure qbar[6] -> cbar[6];
measure qbar[7] -> cbar[7];
reset qbar[0]; reset qbar;
reset qbar[1];
reset qbar[2];
reset qbar[3]; <=>
reset qbar[4];
reset qbar[5];
reset qbar[6];
reset qbar[7];
if(cbar==10) U(1., 1., 1.) qbar;
qreg qbar[1];
creg cbar[1];
...
// Здесь мы делаем некоторые операции, которые выводят кубит qbar[0] из стандартного состояния.
// Далее следует "сброс".
...
measure qbar[0] -> cbar[0];
if (cbar==1)`U(pi,0,pi)` qbar[0];
qreg qbar[1];
...
// Здесь мы делаем некоторые операции, которые выводят кубит qbar[0] из стандартного состояния.
// Далее следует "сброс".
...
reset qbar[0];
// Quantum Experience (QE) Standard Header
// file: qelib1.inc
// --- QE Hardware primitives ---
// 3-parameter 2-pulse single qubit gate
gate u3(theta,phi,lambda) q { U(theta,phi,lambda) q; }
// 2-parameter 1-pulse single qubit gate
gate u2(phi,lambda) q { U(pi/2,phi,lambda) q; }
// 1-parameter 0-pulse single qubit gate
gate u1(lambda) q { U(0,0,lambda) q; }
// controlled-NOT
10
gate cx c,t { CX c,t; }
// idle gate (identity)
gate id a { U(0,0,0) a; }
// --- QE Standard Gates ---
// Pauli gate: bit-flip
gate x a { u3(pi,0,pi) a; }
// Pauli gate: bit and phase flip
gate y a { u3(pi,pi/2,pi/2) a; }
// Pauli gate: phase flip
gate z a { u1(pi) a; }
// Clifford gate: Hadamard
gate h a { u2(0,pi) a; }
// Clifford gate: sqrt(Z) phase gate
gate s a { u1(pi/2) a; }
// Clifford gate: conjugate of sqrt(Z)
gate sdg a { u1(-pi/2) a; }
// C3 gate: sqrt(S) phase gate
gate t a { u1(pi/4) a; }
// C3 gate: conjugate of sqrt(S)
gate tdg a { u1(-pi/4) a; }
// --- Standard rotations ---
// Rotation around X-axis
gate rx(theta) a { u3(theta,-pi/2,pi/2) a; }
// rotation around Y-axis
gate ry(theta) a { u3(theta,0,0) a; }
// rotation around Z axis
gate rz(phi) a { u1(phi) a; }
// --- QE Standard User-Defined Gates ---
// controlled-Phase
gate cz a,b { h b; cx a,b; h b; }
// controlled-Y
// controlled-Y
gate cy a,b { sdg b; cx a,b; s b; }
// controlled-H
gate ch a,b {
h b; sdg b;
cx a,b;
h b; t b;
cx a,b;
t b; h b; s b; x b; s a;
}
11
// C3 gate: Toffoli
gate ccx a,b,c
{
h c;
cx b,c; tdg c;
cx a,c; t c;
cx b,c; tdg c;
cx a,c; t b; t c; h c;
cx a,b; t a; tdg b;
cx a,b;
}
// controlled rz rotation
gate crz(lambda) a,b
{
u1(lambda/2) b;
cx a,b;
u1(-lambda/2) b;
cx a,b;
}
// controlled phase rotation
gate cu1(lambda) a,b
{
u1(lambda/2) a;
cx a,b;
u1(-lambda/2) b;
cx a,b;
u1(lambda/2) b;
}
// controlled-U
gate cu3(theta,phi,lambda) c, t
{
// implements controlled-U(theta,phi,lambda) with target t and control c
u1((lambda-phi)/2) t;
cx c,t;
u3(-theta/2,0,-(phi+lambda)/2) t;
cx c,t;
u3(theta/2,phi,0) t;
}