Skip to content

v8.1.14 - Qiskit/PennyLane interop bridge

Choose a tag to compare

@tatopenn-cell tatopenn-cell released this 20 Jul 21:56

Added

  • Interop bridge for Qiskit and PennyLane — from_qiskit/from_pennylane convert an existing circuit to a QASMCircuit by reusing the existing QASMParser (via qiskit.qasm2.dumps / qml.to_openqasm) instead of a bespoke gate-by-gate translator; run_qiskit_circuit/run_pennylane_circuit execute it directly on DenseSVSimulator.
  • Bit-order mismatch handled explicitly: Qiskit indexes arrays little-endian (qubit 0 = LSB), Dense-Evolution is MSB-first everywhere else, so run_qiskit_circuit reorders its output to match Qiskit's own convention (verified against Statevector(...).probabilities()). PennyLane's own wire order already matches Dense-Evolution's natively (verified the same way), so run_pennylane_circuit does not reorder — kept as two separate code paths on purpose.
  • New optional extras: dense-evolution[qiskit], dense-evolution[pennylane].

Fixed

  • Found while building the Qiskit bridge: qiskit.qasm2.dumps exports composite gates (e.g. mcx) as a gate NAME params { ... } definition on a single line — the same brace-delimited block corruption already fixed for QASM3 for/if/while/def in v8.1.13, just not covered because gate wasn't in that fix's keyword set (verified: before the fix, a 4-qubit circuit using mcx silently inflated to n_qubits=5 with a ghost op). Extended the same brace-matching preprocessor to also strip gate definitions cleanly.

PyPI: https://pypi.org/project/dense-evolution/8.1.14/