Skip to content

Commit 0b846b0

Browse files
committed
fixed quirk bug
1 parent 371066a commit 0b846b0

File tree

1 file changed

+47
-1
lines changed

1 file changed

+47
-1
lines changed

lib/quantum-circuit.js

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
* the LICENSE.txt file in the root directory of this source tree.
88
*/
99

10+
const { i, typeOf } = require("mathjs");
1011
var math = require("mathjs");
1112

1213
var QASMImport = require("./qasm_import/QASMImport.js");
@@ -5754,6 +5755,51 @@ QuantumCircuit.prototype.exportQuirk = function(decompose) {
57545755
var gateLocations = {};
57555756
var customGateCircuit = new QuantumCircuit();
57565757

5758+
var tempCircuit = new QuantumCircuit();
5759+
tempCircuit.load(this.save(decompose));
5760+
5761+
var gatesToBeAdded = [];
5762+
5763+
if(!decompose) {
5764+
var numCols = tempCircuit.numCols();
5765+
for(var column = numCols - 1; column >= 0; column--) {
5766+
for(var wire = 0; wire < tempCircuit.numQubits; wire++) {
5767+
var gate = tempCircuit.gates[wire][column];
5768+
if(gate && gate.connector == 0 && !tempCircuit.basicGates[gate.name]) {
5769+
customDecomposedCircuit = tempCircuit.decomposeGateAt(column, wire);
5770+
var isDecomposeCustomCircuit = false;
5771+
for(var decomposedColumn = 0; decomposedColumn < numCols; decomposedColumn++) {
5772+
for(var decomposedWire = 0; decomposedWire < customDecomposedCircuit.numQubits; decomposedWire++) {
5773+
var gateInCustomCircuit = customDecomposedCircuit.getGateAt(decomposedColumn, decomposedWire);
5774+
gatesToBeAdded.push(gateInCustomCircuit);
5775+
if(gateInCustomCircuit){
5776+
var basicGateInCustomCircuit = customDecomposedCircuit.basicGates[gateInCustomCircuit.name];
5777+
if(basicGateInCustomCircuit.exportInfo && !basicGateInCustomCircuit.exportInfo.quirk){
5778+
isDecomposeCustomCircuit = true;
5779+
}
5780+
}
5781+
5782+
if(isDecomposeCustomCircuit){
5783+
var tempGates = circuit.gates;
5784+
circuit.gates.map(function(circuitGate, index){
5785+
if(circuitGate[0] && circuitGate[0].name == gate.name){
5786+
circuit.removeGate(circuitGate[0].id);
5787+
}
5788+
});
5789+
}
5790+
}
5791+
}
5792+
}
5793+
}
5794+
}
5795+
}
5796+
5797+
gatesToBeAdded.map(function(gateToAdd){
5798+
if(gateToAdd){
5799+
circuit.addGate(gateToAdd.name, gateToAdd.column, gateToAdd.wires, gateToAdd.options);
5800+
}
5801+
})
5802+
57575803
var numCols = circuit.numCols();
57585804
for(var column = 0; column < numCols; column++) {
57595805
var quirkColumn = [];
@@ -5863,7 +5909,6 @@ QuantumCircuit.prototype.exportQuirk = function(decompose) {
58635909
}
58645910
quirkColumn.push(quirkName);
58655911
} else {
5866-
// wireRange = range(gate.wires.length);
58675912
var changeWires = JSON.stringify(gateWires.sort()) == JSON.stringify(wireRange);
58685913
if(!changeWires && isWireInRange(gate.wire, wireRange)){
58695914
quirkColumn.push(1);
@@ -5895,6 +5940,7 @@ QuantumCircuit.prototype.exportQuirk = function(decompose) {
58955940
quirk.cols.push(quirkColumn);
58965941
}
58975942

5943+
58985944
// user defined gates
58995945
if(!decompose) {
59005946
var usedGates = circuit.usedGates();

0 commit comments

Comments
 (0)