Function roqoqo_qasm::call_circuit

source ·
pub fn call_circuit(
    circuit: &Circuit,
    qubit_register_name: &str,
    qasm_version: QasmVersion
) -> Result<Vec<String>, RoqoqoBackendError>
Expand description

Translate the qoqo circuit into QASM ouput.

The qoqo_qasm interface iterates through the qoqo circuit and translates each qoqo operation to QASM output (strings).

§Arguments

  • circuit - The qoqo Circuit that is translated.
  • qubit_register_name - Name of the quantum register used for the roqoqo address-space

§Returns

  • Ok(Vec<&str>) - Vector containing converted operations as strings.
  • Err(RoqoqoBackendError) - Operation not supported by QASM backend.

§Example

use roqoqo::{Circuit, operations::{DefinitionBit, PauliX, MeasureQubit}};
use roqoqo_qasm::{call_circuit, QasmVersion, Qasm3Dialect};
use std::collections::HashMap;

let mut circuit = Circuit::new();
circuit += DefinitionBit::new("ro".to_string(), 1, false);
circuit += PauliX::new(0);
circuit += MeasureQubit::new(0, "ro".to_string(), 0);
let circuit: Vec<String> = call_circuit(&circuit, "q", QasmVersion::V3point0(Qasm3Dialect::Roqoqo)).unwrap();

let manual_circuit: Vec<String> = vec![
    "bit[1] ro;".to_string(),
    "x q[0];".to_string(),
    "measure q[0] -> ro[0];".to_string()
];

assert_eq!(circuit, manual_circuit);