pub fn call_circuit(
    circuit: &Circuit,
    qubit_register_name: &str
) -> 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;
use std::collections::HashMap;

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

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

assert_eq!(circuit, manual_circuit);