diff --git a/quantum_sparse_sim/all.html b/quantum_sparse_sim/all.html index 79f71c37..20610ea6 100644 --- a/quantum_sparse_sim/all.html +++ b/quantum_sparse_sim/all.html @@ -1 +1 @@ -List of all items in this crate

List of all items

Structs

Enums

Type Aliases

\ No newline at end of file +List of all items in this crate

List of all items

Structs

Enums

Functions

Type Aliases

\ No newline at end of file diff --git a/quantum_sparse_sim/fn.controlled.html b/quantum_sparse_sim/fn.controlled.html new file mode 100644 index 00000000..82359e0d --- /dev/null +++ b/quantum_sparse_sim/fn.controlled.html @@ -0,0 +1,3 @@ +controlled in quantum_sparse_sim - Rust

Function quantum_sparse_sim::controlled

source ·
pub fn controlled(u: &Array2<Complex64>, num_ctrls: u32) -> Array2<Complex64>
Expand description

Extends the given unitary matrix into a matrix corresponding to the same unitary with a given number of controls +by inserting it into an identity matrix.

+
\ No newline at end of file diff --git a/quantum_sparse_sim/index.html b/quantum_sparse_sim/index.html index d9320d3c..13655c16 100644 --- a/quantum_sparse_sim/index.html +++ b/quantum_sparse_sim/index.html @@ -1,5 +1,6 @@ -quantum_sparse_sim - Rust

Crate quantum_sparse_sim

source ·
Expand description

§Sparse State Quantum Simulator

+quantum_sparse_sim - Rust

Crate quantum_sparse_sim

source ·
Expand description

§Sparse State Quantum Simulator

This libary implements sparse state simulation, based on the design from Leveraging state sparsity for more efficient quantum simulations.

Modules§

Structs§

  • The QuantumSim struct contains the necessary state for tracking the simulation. Each instance of a -QuantumSim represents an independant simulation.

Type Aliases§

\ No newline at end of file +QuantumSim represents an independant simulation.

Functions§

  • Extends the given unitary matrix into a matrix corresponding to the same unitary with a given number of controls +by inserting it into an identity matrix.

Type Aliases§

\ No newline at end of file diff --git a/quantum_sparse_sim/sidebar-items.js b/quantum_sparse_sim/sidebar-items.js index 49dc251f..40a1ec10 100644 --- a/quantum_sparse_sim/sidebar-items.js +++ b/quantum_sparse_sim/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"mod":["exp"],"struct":["QuantumSim"],"type":["SparseState"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"fn":["controlled"],"mod":["exp"],"struct":["QuantumSim"],"type":["SparseState"]}; \ No newline at end of file diff --git a/quantum_sparse_sim/struct.QuantumSim.html b/quantum_sparse_sim/struct.QuantumSim.html index 238f87d4..e04b20b2 100644 --- a/quantum_sparse_sim/struct.QuantumSim.html +++ b/quantum_sparse_sim/struct.QuantumSim.html @@ -1,4 +1,4 @@ -QuantumSim in quantum_sparse_sim - Rust

Struct quantum_sparse_sim::QuantumSim

source ·
pub struct QuantumSim { /* private fields */ }
Expand description

The QuantumSim struct contains the necessary state for tracking the simulation. Each instance of a +QuantumSim in quantum_sparse_sim - Rust

Struct quantum_sparse_sim::QuantumSim

source ·
pub struct QuantumSim { /* private fields */ }
Expand description

The QuantumSim struct contains the necessary state for tracking the simulation. Each instance of a QuantumSim represents an independant simulation.

Implementations§

source§

impl QuantumSim

source

pub fn exp(&mut self, paulis: &[Pauli], theta: f64, targets: &[usize])

Exp multi-qubit rotation gate.

source

pub fn mcexp( @@ -10,61 +10,73 @@ )

Multi-controlled Exp multi-qubit rotation gate.

§Panics

Panics if any of the qubit ids in ctls or targets are not allocated.

-
source§

impl QuantumSim

Provides the common set of functionality across all quantum simulation types.

-
source

pub fn new(rng: Option<StdRng>) -> Self

Creates a new sparse state quantum simulator object with empty initial state (no qubits allocated, no operations buffered).

-
source

pub fn set_rng_seed(&mut self, seed: u64)

Sets the seed for the random number generator used for probabilistic operations.

-
source

pub fn take_rng(&mut self) -> StdRng

source

pub fn get_state(&mut self) -> (Vec<(BigUint, Complex64)>, usize)

Returns a sorted copy of the current sparse state as a vector of pairs of indices and complex numbers, along with +

source§

impl QuantumSim

Provides the common set of functionality across all quantum simulation types.

+
source

pub fn new(rng: Option<StdRng>) -> Self

Creates a new sparse state quantum simulator object with empty initial state (no qubits allocated, no operations buffered).

+
source

pub fn set_rng_seed(&mut self, seed: u64)

Sets the seed for the random number generator used for probabilistic operations.

+
source

pub fn take_rng(&mut self) -> StdRng

source

pub fn get_state(&mut self) -> (Vec<(BigUint, Complex64)>, usize)

Returns a sorted copy of the current sparse state as a vector of pairs of indices and complex numbers, along with the total number of currently allocated qubits to help in interpreting the sparse state.

-
source

pub fn allocate(&mut self) -> usize

Allocates a fresh qubit, returning its identifier. Note that this will use the lowest available +

source

pub fn allocate(&mut self) -> usize

Allocates a fresh qubit, returning its identifier. Note that this will use the lowest available identifier, and may result in qubits being allocated “in the middle” of an existing register if those identifiers are available.

-
source

pub fn release(&mut self, id: usize)

Releases the given qubit, collapsing its state in the process. After release that identifier is +

source

pub fn release(&mut self, id: usize)

Releases the given qubit, collapsing its state in the process. After release that identifier is no longer valid for use in other functions and will cause an error if used.

§Panics

The function will panic if the given id does not correpsond to an allocated qubit.

-
source

pub fn dump(&mut self) -> String

Prints the current state vector to standard output with integer labels for the states, skipping any +

source

pub fn dump(&mut self) -> String

Prints the current state vector to standard output with integer labels for the states, skipping any states with zero amplitude.

-
source

pub fn joint_probability(&mut self, ids: &[usize]) -> f64

Checks the probability of parity measurement in the computational basis for the given set of +

source

pub fn joint_probability(&mut self, ids: &[usize]) -> f64

Checks the probability of parity measurement in the computational basis for the given set of qubits.

§Panics

This function will panic if the given ids do not all correspond to allocated qubits. This function will panic if there are duplicate ids in the given list.

-
source

pub fn qubit_is_zero(&mut self, id: usize) -> bool

Checks the internal state of the given qubit and returns true only if the given qubit is in exactly the |0⟩ state.

-
source

pub fn measure(&mut self, id: usize) -> bool

Measures the qubit with the given id, collapsing the state based on the measured result.

+
source

pub fn qubit_is_zero(&mut self, id: usize) -> bool

Checks the internal state of the given qubit and returns true only if the given qubit is in exactly the |0⟩ state.

+
source

pub fn measure(&mut self, id: usize) -> bool

Measures the qubit with the given id, collapsing the state based on the measured result.

§Panics

This funciton will panic if the given identifier does not correspond to an allocated qubit.

-
source

pub fn joint_measure(&mut self, ids: &[usize]) -> bool

Performs a joint measurement to get the parity of the given qubits, collapsing the state +

source

pub fn joint_measure(&mut self, ids: &[usize]) -> bool

Performs a joint measurement to get the parity of the given qubits, collapsing the state based on the measured result.

§Panics

This function will panic if any of the given identifiers do not correspond to an allocated qubit. This function will panic if any of the given identifiers are duplicates.

-
source

pub fn swap_qubit_ids(&mut self, qubit1: usize, qubit2: usize)

Swaps the mapped ids for the given qubits.

+
source

pub fn swap_qubit_ids(&mut self, qubit1: usize, qubit2: usize)

Swaps the mapped ids for the given qubits.

§Panics

This function will panic if either of the given identifiers do not correspond to an allocated qubit.

-
source

pub fn x(&mut self, target: usize)

Single qubit X gate.

-
source

pub fn mcx(&mut self, ctls: &[usize], target: usize)

Multi-controlled X gate.

-
source

pub fn y(&mut self, target: usize)

Single qubit Y gate.

-
source

pub fn mcy(&mut self, ctls: &[usize], target: usize)

Multi-controlled Y gate.

-
source

pub fn mcphase(&mut self, ctls: &[usize], phase: Complex64, target: usize)

Multi-controlled phase rotation (“G” gate).

-
source

pub fn z(&mut self, target: usize)

Single qubit Z gate.

-
source

pub fn mcz(&mut self, ctls: &[usize], target: usize)

Multi-controlled Z gate.

-
source

pub fn s(&mut self, target: usize)

Single qubit S gate.

-
source

pub fn mcs(&mut self, ctls: &[usize], target: usize)

Multi-controlled S gate.

-
source

pub fn sadj(&mut self, target: usize)

Single qubit Adjoint S Gate.

-
source

pub fn mcsadj(&mut self, ctls: &[usize], target: usize)

Multi-controlled Adjoint S gate.

-
source

pub fn t(&mut self, target: usize)

Single qubit T gate.

-
source

pub fn mct(&mut self, ctls: &[usize], target: usize)

Multi-controlled T gate.

-
source

pub fn tadj(&mut self, target: usize)

Single qubit Adjoint T gate.

-
source

pub fn mctadj(&mut self, ctls: &[usize], target: usize)

Multi-controlled Adjoint T gate.

-
source

pub fn rz(&mut self, theta: f64, target: usize)

Single qubit Rz gate.

-
source

pub fn mcrz(&mut self, ctls: &[usize], theta: f64, target: usize)

Multi-controlled Rz gate.

-
source

pub fn h(&mut self, target: usize)

Single qubit H gate.

-
source

pub fn mch(&mut self, ctls: &[usize], target: usize)

Multi-controlled H gate.

-
source

pub fn rx(&mut self, theta: f64, target: usize)

Single qubit Rx gate.

-
source

pub fn mcrx(&mut self, ctls: &[usize], theta: f64, target: usize)

Multi-controlled Rx gate.

-
source

pub fn ry(&mut self, theta: f64, target: usize)

Single qubit Ry gate.

-
source

pub fn mcry(&mut self, ctls: &[usize], theta: f64, target: usize)

Multi-controlled Ry gate.

-

Trait Implementations§

source§

impl Default for QuantumSim

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

source

pub fn x(&mut self, target: usize)

Single qubit X gate.

+
source

pub fn mcx(&mut self, ctls: &[usize], target: usize)

Multi-controlled X gate.

+
source

pub fn y(&mut self, target: usize)

Single qubit Y gate.

+
source

pub fn mcy(&mut self, ctls: &[usize], target: usize)

Multi-controlled Y gate.

+
source

pub fn mcphase(&mut self, ctls: &[usize], phase: Complex64, target: usize)

Multi-controlled phase rotation (“G” gate).

+
source

pub fn z(&mut self, target: usize)

Single qubit Z gate.

+
source

pub fn mcz(&mut self, ctls: &[usize], target: usize)

Multi-controlled Z gate.

+
source

pub fn s(&mut self, target: usize)

Single qubit S gate.

+
source

pub fn mcs(&mut self, ctls: &[usize], target: usize)

Multi-controlled S gate.

+
source

pub fn sadj(&mut self, target: usize)

Single qubit Adjoint S Gate.

+
source

pub fn mcsadj(&mut self, ctls: &[usize], target: usize)

Multi-controlled Adjoint S gate.

+
source

pub fn t(&mut self, target: usize)

Single qubit T gate.

+
source

pub fn mct(&mut self, ctls: &[usize], target: usize)

Multi-controlled T gate.

+
source

pub fn tadj(&mut self, target: usize)

Single qubit Adjoint T gate.

+
source

pub fn mctadj(&mut self, ctls: &[usize], target: usize)

Multi-controlled Adjoint T gate.

+
source

pub fn rz(&mut self, theta: f64, target: usize)

Single qubit Rz gate.

+
source

pub fn mcrz(&mut self, ctls: &[usize], theta: f64, target: usize)

Multi-controlled Rz gate.

+
source

pub fn h(&mut self, target: usize)

Single qubit H gate.

+
source

pub fn mch(&mut self, ctls: &[usize], target: usize)

Multi-controlled H gate.

+
source

pub fn rx(&mut self, theta: f64, target: usize)

Single qubit Rx gate.

+
source

pub fn mcrx(&mut self, ctls: &[usize], theta: f64, target: usize)

Multi-controlled Rx gate.

+
source

pub fn ry(&mut self, theta: f64, target: usize)

Single qubit Ry gate.

+
source

pub fn mcry(&mut self, ctls: &[usize], theta: f64, target: usize)

Multi-controlled Ry gate.

+
source

pub fn apply( + &mut self, + unitary: &Array2<Complex64>, + targets: &[usize], + controls: Option<&[usize]>, +)

Applies the given unitary to the given targets, extending the unitary to accomodate controls if any.

+
§Panics
+

This function will panic if given ids in either targets or optional controls that do not correspond to allocated +qubits, or if there is a duplicate id in targets or controls. +This funciton will panic if the given unitary matrix does not match the number of targets provided. +This function will panic if the given unitary is not square. +This function will panic if the total number of targets and controls too large for a u32.

+

Trait Implementations§

source§

impl Default for QuantumSim

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl !Freeze for QuantumSim

§

impl !RefUnwindSafe for QuantumSim

§

impl Send for QuantumSim

§

impl !Sync for QuantumSim

§

impl Unpin for QuantumSim

§

impl UnwindSafe for QuantumSim

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/quantum_sparse_sim/type.SparseState.html b/quantum_sparse_sim/type.SparseState.html index 3aa63f3c..9f6662b8 100644 --- a/quantum_sparse_sim/type.SparseState.html +++ b/quantum_sparse_sim/type.SparseState.html @@ -1 +1 @@ -SparseState in quantum_sparse_sim - Rust

Type Alias quantum_sparse_sim::SparseState

source ·
pub type SparseState = FxHashMap<BigUint, Complex64>;

Aliased Type§

struct SparseState { /* private fields */ }
\ No newline at end of file +SparseState in quantum_sparse_sim - Rust

Type Alias quantum_sparse_sim::SparseState

source ·
pub type SparseState = FxHashMap<BigUint, Complex64>;

Aliased Type§

struct SparseState { /* private fields */ }
\ No newline at end of file diff --git a/search-index.js b/search-index.js index 76acb1f6..ce3412be 100644 --- a/search-index.js +++ b/search-index.js @@ -1,4 +1,4 @@ -var searchIndex = new Map(JSON.parse('[["qir_backend",{"t":"FPSSFGFFPPPHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHCCNNCHNNNOCNNNCCCCHHHCHHCHOOCNNNCNNFHHHHHHHNNNNNNNNNNNNNHHHHHHHHHHHHHHHHHHHHHFHHHHHHHHHNNNNNNNNNNNNHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHSSFHHHHHHNNNNNNNCNHHNNNNNNNHHHHHHHHHFNNONNHHOONNNNHHHHHHHHHHHHHHHHHHHH","n":["Callable","I","LINE_ENDING","OUTPUT","OutputRecorder","Pauli","QirArray","Range","X","Y","Z","__quantum__qis__arccos__body","__quantum__qis__arcsin__body","__quantum__qis__arctan2__body","__quantum__qis__arctan__body","__quantum__qis__assertmeasurementprobability__body","__quantum__qis__assertmeasurementprobability__ctl","__quantum__qis__ccx__body","__quantum__qis__cnot__body","__quantum__qis__cos__body","__quantum__qis__cosh__body","__quantum__qis__cx__body","__quantum__qis__cy__body","__quantum__qis__cz__body","__quantum__qis__drawrandomdouble__body","__quantum__qis__drawrandomint__body","__quantum__qis__dumpmachine__body","__quantum__qis__h__body","__quantum__qis__h__ctl","__quantum__qis__ieeeremainder__body","__quantum__qis__infinity__body","__quantum__qis__isinf__body","__quantum__qis__isnan__body","__quantum__qis__isnegativeinfinity__body","__quantum__qis__log__body","__quantum__qis__m__body","__quantum__qis__measure__body","__quantum__qis__mresetz__body","__quantum__qis__mz__body","__quantum__qis__nan__body","__quantum__qis__r__adj","__quantum__qis__r__body","__quantum__qis__r__ctl","__quantum__qis__r__ctladj","__quantum__qis__read_result__body","__quantum__qis__reset__body","__quantum__qis__rx__body","__quantum__qis__rx__ctl","__quantum__qis__rxx__body","__quantum__qis__ry__body","__quantum__qis__ry__ctl","__quantum__qis__ryy__body","__quantum__qis__rz__body","__quantum__qis__rz__ctl","__quantum__qis__rzz__body","__quantum__qis__s__adj","__quantum__qis__s__body","__quantum__qis__s__ctl","__quantum__qis__s__ctladj","__quantum__qis__sin__body","__quantum__qis__sinh__body","__quantum__qis__sqrt__body","__quantum__qis__swap__body","__quantum__qis__t__adj","__quantum__qis__t__body","__quantum__qis__t__ctl","__quantum__qis__t__ctladj","__quantum__qis__tan__body","__quantum__qis__tanh__body","__quantum__qis__x__body","__quantum__qis__x__ctl","__quantum__qis__y__body","__quantum__qis__y__ctl","__quantum__qis__z__body","__quantum__qis__z__ctl","__quantum__rt__array_concatenate","__quantum__rt__array_copy","__quantum__rt__array_create_1d","__quantum__rt__array_get_element_ptr_1d","__quantum__rt__array_get_size_1d","__quantum__rt__array_record_output","__quantum__rt__array_update_alias_count","__quantum__rt__array_update_reference_count","__quantum__rt__bigint_add","__quantum__rt__bigint_bitand","__quantum__rt__bigint_bitnot","__quantum__rt__bigint_bitor","__quantum__rt__bigint_bitxor","__quantum__rt__bigint_create_array","__quantum__rt__bigint_create_i64","__quantum__rt__bigint_divide","__quantum__rt__bigint_equal","__quantum__rt__bigint_get_data","__quantum__rt__bigint_get_length","__quantum__rt__bigint_greater","__quantum__rt__bigint_greater_eq","__quantum__rt__bigint_modulus","__quantum__rt__bigint_multiply","__quantum__rt__bigint_negate","__quantum__rt__bigint_power","__quantum__rt__bigint_shiftleft","__quantum__rt__bigint_shiftright","__quantum__rt__bigint_subtract","__quantum__rt__bigint_to_string","__quantum__rt__bigint_update_reference_count","__quantum__rt__bool_record_output","__quantum__rt__bool_to_string","__quantum__rt__callable_copy","__quantum__rt__callable_create","__quantum__rt__callable_invoke","__quantum__rt__callable_make_adjoint","__quantum__rt__callable_make_controlled","__quantum__rt__callable_update_alias_count","__quantum__rt__callable_update_reference_count","__quantum__rt__capture_update_alias_count","__quantum__rt__capture_update_reference_count","__quantum__rt__double_record_output","__quantum__rt__double_to_string","__quantum__rt__fail","__quantum__rt__initialize","__quantum__rt__int_record_output","__quantum__rt__int_to_string","__quantum__rt__memory_allocate","__quantum__rt__message","__quantum__rt__message_record_output","__quantum__rt__pauli_to_string","__quantum__rt__qubit_allocate","__quantum__rt__qubit_allocate_array","__quantum__rt__qubit_release","__quantum__rt__qubit_release_array","__quantum__rt__qubit_to_string","__quantum__rt__result_record_output","__quantum__rt__string_concatenate","__quantum__rt__string_create","__quantum__rt__string_equal","__quantum__rt__string_get_data","__quantum__rt__string_get_length","__quantum__rt__string_update_reference_count","__quantum__rt__tuple_copy","__quantum__rt__tuple_create","__quantum__rt__tuple_record_output","__quantum__rt__tuple_update_alias_count","__quantum__rt__tuple_update_reference_count","arrays","bigints","borrow","borrow_mut","callables","capture_quantum_state","clone","clone_into","clone_to_uninit","end","exp","fmt","from","into","legacy","legacy_output","math","output_recording","quantum__rt__array_slice_1d","quantum__rt__range_to_string","qubit_is_zero","range_support","record_output","record_output_str","result_bool","set_rng_seed","start","step","strings","to_owned","try_from","try_into","tuples","type_id","vzip","QirArray","__quantum__rt__array_concatenate","__quantum__rt__array_copy","__quantum__rt__array_create_1d","__quantum__rt__array_get_element_ptr_1d","__quantum__rt__array_get_size_1d","__quantum__rt__array_update_alias_count","__quantum__rt__array_update_reference_count","borrow","borrow_mut","clone","clone_into","clone_to_uninit","fmt","from","into","to_owned","try_from","try_into","type_id","vzip","__quantum__rt__bigint_add","__quantum__rt__bigint_bitand","__quantum__rt__bigint_bitnot","__quantum__rt__bigint_bitor","__quantum__rt__bigint_bitxor","__quantum__rt__bigint_create_array","__quantum__rt__bigint_create_i64","__quantum__rt__bigint_divide","__quantum__rt__bigint_equal","__quantum__rt__bigint_get_data","__quantum__rt__bigint_get_length","__quantum__rt__bigint_greater","__quantum__rt__bigint_greater_eq","__quantum__rt__bigint_modulus","__quantum__rt__bigint_multiply","__quantum__rt__bigint_negate","__quantum__rt__bigint_power","__quantum__rt__bigint_shiftleft","__quantum__rt__bigint_shiftright","__quantum__rt__bigint_subtract","__quantum__rt__bigint_update_reference_count","Callable","__quantum__rt__callable_copy","__quantum__rt__callable_create","__quantum__rt__callable_invoke","__quantum__rt__callable_make_adjoint","__quantum__rt__callable_make_controlled","__quantum__rt__callable_update_alias_count","__quantum__rt__callable_update_reference_count","__quantum__rt__capture_update_alias_count","__quantum__rt__capture_update_reference_count","borrow","borrow_mut","clone","clone_into","clone_to_uninit","from","into","to_owned","try_from","try_into","type_id","vzip","__quantum__qis__exp__adj","__quantum__qis__exp__body","__quantum__qis__exp__ctl","__quantum__qis__exp__ctladj","__quantum__rt__array_end_record_output","__quantum__rt__array_record_output","__quantum__rt__array_start_record_output","__quantum__rt__bool_record_output","__quantum__rt__double_record_output","__quantum__rt__int_record_output","__quantum__rt__tuple_end_record_output","__quantum__rt__tuple_record_output","__quantum__rt__tuple_start_record_output","__quantum__rt__result_record_output","__quantum__qis__arccos__body","__quantum__qis__arcsin__body","__quantum__qis__arctan2__body","__quantum__qis__arctan__body","__quantum__qis__cos__body","__quantum__qis__cosh__body","__quantum__qis__drawrandomdouble__body","__quantum__qis__drawrandomint__body","__quantum__qis__ieeeremainder__body","__quantum__qis__infinity__body","__quantum__qis__isinf__body","__quantum__qis__isnan__body","__quantum__qis__isnegativeinfinity__body","__quantum__qis__log__body","__quantum__qis__nan__body","__quantum__qis__sin__body","__quantum__qis__sinh__body","__quantum__qis__sqrt__body","__quantum__qis__tan__body","__quantum__qis__tanh__body","LINE_ENDING","OUTPUT","OutputRecorder","__quantum__rt__array_record_output","__quantum__rt__bool_record_output","__quantum__rt__double_record_output","__quantum__rt__int_record_output","__quantum__rt__message_record_output","__quantum__rt__tuple_record_output","borrow","borrow_mut","default","drain","flush","from","into","legacy","read","record_output","record_output_str","try_from","try_into","type_id","use_std_out","vzip","write","write_newline","__quantum__rt__array_end_record_output","__quantum__rt__array_record_output","__quantum__rt__array_start_record_output","__quantum__rt__bool_record_output","__quantum__rt__double_record_output","__quantum__rt__int_record_output","__quantum__rt__tuple_end_record_output","__quantum__rt__tuple_record_output","__quantum__rt__tuple_start_record_output","Range","borrow","borrow_mut","end","from","into","quantum__rt__array_slice_1d","quantum__rt__range_to_string","start","step","try_from","try_into","type_id","vzip","__quantum__rt__result_equal","__quantum__rt__result_get_one","__quantum__rt__result_get_zero","__quantum__rt__result_to_string","__quantum__rt__result_update_reference_count","__quantum__rt__bigint_to_string","__quantum__rt__bool_to_string","__quantum__rt__double_to_string","__quantum__rt__int_to_string","__quantum__rt__pauli_to_string","__quantum__rt__string_concatenate","__quantum__rt__string_create","__quantum__rt__string_equal","__quantum__rt__string_get_data","__quantum__rt__string_get_length","__quantum__rt__string_update_reference_count","__quantum__rt__tuple_copy","__quantum__rt__tuple_create","__quantum__rt__tuple_update_alias_count","__quantum__rt__tuple_update_reference_count"],"q":[[0,"qir_backend"],[178,"qir_backend::arrays"],[199,"qir_backend::bigints"],[220,"qir_backend::callables"],[242,"qir_backend::exp"],[246,"qir_backend::legacy"],[255,"qir_backend::legacy_output"],[256,"qir_backend::math"],[276,"qir_backend::output_recording"],[303,"qir_backend::output_recording::legacy"],[312,"qir_backend::range_support"],[326,"qir_backend::result_bool"],[331,"qir_backend::strings"],[342,"qir_backend::tuples"],[346,"qir_stdlib::arrays"],[347,"core::ffi"],[348,"alloc::ffi::c_str"],[349,"alloc::vec"],[350,"qir_stdlib"],[351,"num_bigint::bigint"],[352,"qir_stdlib::callables"],[353,"num_bigint::biguint"],[354,"num_complex"],[355,"core::fmt"],[356,"core::result"],[357,"qir_stdlib::range_support"],[358,"std::io::error"],[359,"core::any"],[360,"std::os::raw"],[361,"qir_stdlib::output_recording"],[362,"alloc::vec::drain"],[363,"qir_stdlib::math"],[364,"qir_stdlib::bigints"],[365,"qir_stdlib::strings"],[366,"qir_stdlib::tuples"],[367,"qir_stdlib::output_recording::legacy"]],"i":"`Ad``````000``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````00``000Ch`111````````````00`111`11````````d000000000000```````````````````````````````Bb00000000000```````````````````````````````````````````Dd000000`0``0000000``````````33333``333333````````````````````","f":"```````````{bb}0{{bb}b}1{{ddfhjh}l}{{dn}l}{{fff}l}{{ff}l}550004{{A`A`}A`}{fl}0{{df}l}7{{}b}{bAb}00:{ff}{{dd}f}773{{Adhf}l}0::{fAb}7{{hf}l}<{{hff}l}1=01=09988{bb}00<::9900:9:9:9{{dd}d}{{dAb}d}{{AfAh}d}{{dAh}Aj}{dAh}{{A`Aj}l}{{dAl}l}0{{AnAn}An}0{AnAn}11{{AfB`}An}{A`An}3{{AnAn}Ab}{AnB`}{AnAf}22665{{AnAf}An}{{AnAh}An}08{Anj}{{AnAl}l}{{AbAj}l}{Abj}{{BbAb}Bb}{{B`B`B`}Bb}{{BbB`B`}l}{Bbl}0{{BbAl}l}000{{bAj}l}{bj}{jl}{Bdl}{{A`Aj}l}{A`j}{AhB`}44{Adj}{{}f}{Ahd}{fl}{dl}{fj}{{fBd}l}{{jj}j}{Ajj}{{jj}Ab}{jAj}{jAf}{{jAl}l}{{nAb}n}{Ahn}{{A`Aj}l}{{nAl}l}0``{Bf{{Bf{c}}}{}}{{{Bf{Bh}}}{{Bf{Bhc}}}{}}`{{}{{Bn{{n{{Bn{BjBl}}}}C`}}}}{{{Bf{Ad}}}Ad}{{Bf{Bf{Bhc}}}l{}}{Bfl}``{{{Bf{Ad}}{Bf{BhCb}}}{{Cf{lCd}}}}{cc{}}{{}c{}}````{{dCh}d}{Chj}{fAb}`{{{Bf{Cj}}{Bf{Cl}}Aj}{{Cf{lCn}}}}{{{Bf{Cj}}}{{Cf{lCn}}}}`{Ahl}```{Bfc{}}{c{{Cf{e}}}{}{}}{{}{{Cf{c}}}{}}`{BfD`}:`{{dd}d}{{dAb}d}{{AfAh}d}{{dAh}Aj}{dAh}{{dAl}l}0{Bf{{Bf{c}}}{}}{{{Bf{Bh}}}{{Bf{Bhc}}}{}}{{{Bf{d}}}d}{{Bf{Bf{Bhc}}}l{}}{Bfl}{{{Bf{d}}{Bf{BhCb}}}{{Cf{lCd}}}}{cc{}}{{}c{}}{Bfc{}}{c{{Cf{e}}}{}{}}{{}{{Cf{c}}}{}}{BfD`}4{{AnAn}An}0{AnAn}11{{AfB`}An}{A`An}3{{AnAn}Ab}{AnB`}{AnAf}22665{{AnAf}An}{{AnAh}An}08{{AnAl}l}`{{BbAb}Bb}{{B`B`B`}Bb}{{BbB`B`}l}{Bbl}0{{BbAl}l}000{Bf{{Bf{c}}}{}}{{{Bf{Bh}}}{{Bf{Bhc}}}{}}{{{Bf{Bb}}}Bb}{{Bf{Bf{Bhc}}}l{}}{Bfl}{cc{}}{{}c{}}{Bfc{}}{c{{Cf{e}}}{}{}}{{}{{Cf{c}}}{}}{BfD`}4{{dDbd}l}0{{dn}l}0{{}l}{A`l}1{Abl}{bl}2323{fl}{bb}0{{bb}b}1110{{A`A`}A`}1{{}b}{bAb}004144444```{{A`Aj}l}{{AbAj}l}{{bAj}l}2{jl}3{Bf{{Bf{c}}}{}}{{{Bf{Bh}}}{{Bf{Bhc}}}{}}{{}Dd}{{{Bf{BhDd}}}{{Df{B`}}}}{{{Bf{BhDd}}}{{Cf{lCn}}}}{cc{}}{{}c{}}`{{{Bf{BhDd}}{Bf{Bh{Dh{B`}}}}}{{Cf{C`Cn}}}}{{{Bf{Cj}}{Bf{Cl}}Aj}{{Cf{lCn}}}}{{{Bf{Cj}}}{{Cf{lCn}}}}{c{{Cf{e}}}{}{}}{{}{{Cf{c}}}{}}{BfD`}{{{Bf{BhDd}}Ab}l}7{{{Bf{BhDd}}{Bf{{Dh{B`}}}}}{{Cf{C`Cn}}}}{{{Bf{BhDd}}}l}{{}l}{A`l}1{Abl}{bl}2323`{Bf{{Bf{c}}}{}}{{{Bf{Bh}}}{{Bf{Bhc}}}{}}`{cc{}}{{}c{}}{{dCh}d}{Chj}``?>=2{{ff}Ab}{{}f}0{fj}{{fAl}l}{Anj}{Abj}{bj}{A`j}{Adj}{{jj}j}{Ajj}{{jj}Ab}{jAj}{jAf}{{jAl}l}{{nAb}n}{Ahn}{{nAl}l}0","D":"Jf","p":[[1,"f64"],[5,"QirArray",178,346],[6,"c_void",347],[8,"c_double",347],[5,"CString",348],[1,"unit"],[5,"Vec",349],[1,"i64"],[1,"bool"],[6,"Pauli",0,350],[1,"u32"],[1,"u64"],[1,"i8"],[1,"i32"],[5,"BigInt",351],[1,"u8"],[5,"Callable",220,352],[8,"c_char",347],[1,"reference"],[0,"mut"],[5,"BigUint",353],[8,"Complex64",354],[1,"tuple"],[1,"usize"],[5,"Formatter",355],[5,"Error",355],[6,"Result",356],[5,"Range",312,357],[1,"str"],[10,"Display",355],[5,"Error",358],[5,"TypeId",359],[8,"c_double",360],[5,"OutputRecorder",276,361],[5,"Drain",362],[1,"slice"]],"r":[[0,352],[2,361],[3,361],[4,361],[5,350],[6,346],[7,357],[11,363],[12,363],[13,363],[14,363],[19,363],[20,363],[24,363],[25,363],[29,363],[30,363],[31,363],[32,363],[33,363],[34,363],[39,363],[59,363],[60,363],[61,363],[67,363],[68,363],[75,346],[76,346],[77,346],[78,346],[79,346],[80,361],[81,346],[82,346],[83,364],[84,364],[85,364],[86,364],[87,364],[88,364],[89,364],[90,364],[91,364],[92,364],[93,364],[94,364],[95,364],[96,364],[97,364],[98,364],[99,364],[100,364],[101,364],[102,364],[103,365],[104,364],[105,361],[106,365],[107,352],[108,352],[109,352],[110,352],[111,352],[112,352],[113,352],[114,352],[115,352],[116,361],[117,365],[118,350],[120,361],[121,365],[122,350],[123,350],[124,361],[125,365],[132,365],[133,365],[134,365],[135,365],[136,365],[137,365],[138,366],[139,366],[140,361],[141,366],[142,366],[143,350],[144,350],[147,350],[157,361],[159,350],[160,350],[161,357],[162,357],[164,350],[165,361],[166,361],[171,350],[175,350],[178,346],[179,346],[180,346],[181,346],[182,346],[183,346],[184,346],[185,346],[199,364],[200,364],[201,364],[202,364],[203,364],[204,364],[205,364],[206,364],[207,364],[208,364],[209,364],[210,364],[211,364],[212,364],[213,364],[214,364],[215,364],[216,364],[217,364],[218,364],[219,364],[220,352],[221,352],[222,352],[223,352],[224,352],[225,352],[226,352],[227,352],[228,352],[229,352],[246,367],[247,367],[248,367],[249,367],[250,367],[251,367],[252,367],[253,367],[254,367],[256,363],[257,363],[258,363],[259,363],[260,363],[261,363],[262,363],[263,363],[264,363],[265,363],[266,363],[267,363],[268,363],[269,363],[270,363],[271,363],[272,363],[273,363],[274,363],[275,363],[276,361],[277,361],[278,361],[279,361],[280,361],[281,361],[282,361],[283,361],[284,361],[292,361],[294,361],[295,361],[303,367],[304,367],[305,367],[306,367],[307,367],[308,367],[309,367],[310,367],[311,367],[312,357],[318,357],[319,357],[331,365],[332,365],[333,365],[334,365],[335,365],[336,365],[337,365],[338,365],[339,365],[340,365],[341,365],[342,366],[343,366],[344,366],[345,366]],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAcBHgABAAMABgAJABQAAQAZAAEAHgAFACgAAAA8AAIARAABAEwABABSACUAeQAFAIUABwCOAAYAlgAFAJ4ABQClAAAAqAAAAKoAFgDDACgA7gAEAPcAHwAZAQMAHgECACIBAAAlAQEAKQECAC0BAQAwAQwAPwEKAEsBDwA="}],["qir_runner",{"t":"H","n":["main"],"q":[[0,"qir_runner"],[1,"alloc::string"],[2,"core::result"]],"i":"`","f":"{{}{{f{bd}}}}","D":"`","p":[[1,"unit"],[5,"String",1],[6,"Result",2]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAEAEAAAAAAAAQA="}],["qir_stdlib",{"t":"PGPPPHHHCCNNCNNNNNNCCCCNNNCNNFHHHHHHHNNNNNNNNNNNNNHHHHHHHHHHHHHHHHHHHHHFHHHHHHHHHNNNNNNNNNNNNHHHHHHHHHHHHHHHHHHHHSSFHHHHHHNNNNNNNCNHHNNNNNNNHHHHHHHHHFNNONNHHOONNNNHHHHHHHHHHHHHHH","n":["I","Pauli","X","Y","Z","__quantum__rt__fail","__quantum__rt__memory_allocate","__quantum__rt__message","arrays","bigints","borrow","borrow_mut","callables","clone","clone_into","clone_to_uninit","fmt","from","into","math","output_recording","range_support","strings","to_owned","try_from","try_into","tuples","type_id","vzip","QirArray","__quantum__rt__array_concatenate","__quantum__rt__array_copy","__quantum__rt__array_create_1d","__quantum__rt__array_get_element_ptr_1d","__quantum__rt__array_get_size_1d","__quantum__rt__array_update_alias_count","__quantum__rt__array_update_reference_count","borrow","borrow_mut","clone","clone_into","clone_to_uninit","fmt","from","into","to_owned","try_from","try_into","type_id","vzip","__quantum__rt__bigint_add","__quantum__rt__bigint_bitand","__quantum__rt__bigint_bitnot","__quantum__rt__bigint_bitor","__quantum__rt__bigint_bitxor","__quantum__rt__bigint_create_array","__quantum__rt__bigint_create_i64","__quantum__rt__bigint_divide","__quantum__rt__bigint_equal","__quantum__rt__bigint_get_data","__quantum__rt__bigint_get_length","__quantum__rt__bigint_greater","__quantum__rt__bigint_greater_eq","__quantum__rt__bigint_modulus","__quantum__rt__bigint_multiply","__quantum__rt__bigint_negate","__quantum__rt__bigint_power","__quantum__rt__bigint_shiftleft","__quantum__rt__bigint_shiftright","__quantum__rt__bigint_subtract","__quantum__rt__bigint_update_reference_count","Callable","__quantum__rt__callable_copy","__quantum__rt__callable_create","__quantum__rt__callable_invoke","__quantum__rt__callable_make_adjoint","__quantum__rt__callable_make_controlled","__quantum__rt__callable_update_alias_count","__quantum__rt__callable_update_reference_count","__quantum__rt__capture_update_alias_count","__quantum__rt__capture_update_reference_count","borrow","borrow_mut","clone","clone_into","clone_to_uninit","from","into","to_owned","try_from","try_into","type_id","vzip","__quantum__qis__arccos__body","__quantum__qis__arcsin__body","__quantum__qis__arctan2__body","__quantum__qis__arctan__body","__quantum__qis__cos__body","__quantum__qis__cosh__body","__quantum__qis__drawrandomdouble__body","__quantum__qis__drawrandomint__body","__quantum__qis__ieeeremainder__body","__quantum__qis__infinity__body","__quantum__qis__isinf__body","__quantum__qis__isnan__body","__quantum__qis__isnegativeinfinity__body","__quantum__qis__log__body","__quantum__qis__nan__body","__quantum__qis__sin__body","__quantum__qis__sinh__body","__quantum__qis__sqrt__body","__quantum__qis__tan__body","__quantum__qis__tanh__body","LINE_ENDING","OUTPUT","OutputRecorder","__quantum__rt__array_record_output","__quantum__rt__bool_record_output","__quantum__rt__double_record_output","__quantum__rt__int_record_output","__quantum__rt__message_record_output","__quantum__rt__tuple_record_output","borrow","borrow_mut","default","drain","flush","from","into","legacy","read","record_output","record_output_str","try_from","try_into","type_id","use_std_out","vzip","write","write_newline","__quantum__rt__array_end_record_output","__quantum__rt__array_record_output","__quantum__rt__array_start_record_output","__quantum__rt__bool_record_output","__quantum__rt__double_record_output","__quantum__rt__int_record_output","__quantum__rt__tuple_end_record_output","__quantum__rt__tuple_record_output","__quantum__rt__tuple_start_record_output","Range","borrow","borrow_mut","end","from","into","quantum__rt__array_slice_1d","quantum__rt__range_to_string","start","step","try_from","try_into","type_id","vzip","__quantum__rt__bigint_to_string","__quantum__rt__bool_to_string","__quantum__rt__double_to_string","__quantum__rt__int_to_string","__quantum__rt__pauli_to_string","__quantum__rt__string_concatenate","__quantum__rt__string_create","__quantum__rt__string_equal","__quantum__rt__string_get_data","__quantum__rt__string_get_length","__quantum__rt__string_update_reference_count","__quantum__rt__tuple_copy","__quantum__rt__tuple_create","__quantum__rt__tuple_update_alias_count","__quantum__rt__tuple_update_reference_count"],"q":[[0,"qir_stdlib"],[29,"qir_stdlib::arrays"],[50,"qir_stdlib::bigints"],[71,"qir_stdlib::callables"],[93,"qir_stdlib::math"],[113,"qir_stdlib::output_recording"],[140,"qir_stdlib::output_recording::legacy"],[149,"qir_stdlib::range_support"],[163,"qir_stdlib::strings"],[174,"qir_stdlib::tuples"],[178,"alloc::ffi::c_str"],[179,"core::fmt"],[180,"core::result"],[181,"core::any"],[182,"num_bigint::bigint"],[183,"core::ffi"],[184,"alloc::vec::drain"],[185,"std::io::error"],[186,"std::os::raw"],[187,"alloc::vec"]],"i":"n`000`````00`000000````000`00````````Ah000000000000```````````````````````````````Bf00000000000`````````````````````````````Bn000000`0``0000000``````````Cl0000``000000```````````````","f":"`````{bd}{fh}1``{j{{j{c}}}{}}{{{j{l}}}{{j{lc}}}{}}`{{{j{n}}}n}{{j{j{lc}}}d{}}{jd}{{{j{n}}{j{lA`}}}Ab}{cc{}}{{}c{}}````{jc{}}{c{{Ad{e}}}{}{}}{{}{{Ad{c}}}{}}`{jAf}4`{{AhAh}Ah}{{AhAj}Ah}{{Alf}Ah}{{Ahf}An}{Ahf}{{AhB`}d}0{j{{j{c}}}{}}{{{j{l}}}{{j{lc}}}{}}{{{j{Ah}}}Ah}{{j{j{lc}}}d{}}{jd}{{{j{Ah}}{j{lA`}}}Ab}{cc{}}{{}c{}}{jc{}}{c{{Ad{e}}}{}{}}{{}{{Ad{c}}}{}}{jAf}4{{BbBb}Bb}0{BbBb}11{{Alh}Bb}{BdBb}3{{BbBb}Aj}{Bbh}{BbAl}22665{{BbAl}Bb}{{Bbf}Bb}08{{BbB`}d}`{{BfAj}Bf}{{hhh}Bf}{{Bfhh}d}{Bfd}0{{BfB`}d}000{j{{j{c}}}{}}{{{j{l}}}{{j{lc}}}{}}{{{j{Bf}}}Bf}{{j{j{lc}}}d{}}{jd}{cc{}}{{}c{}}{jc{}}{c{{Ad{e}}}{}{}}{{}{{Ad{c}}}{}}{jAf}4{BhBh}0{{BhBh}Bh}111{{BhBh}Bj}{{BdBd}Bd}2{{}Bh}{BhAj}005155555```{{BdBl}d}{{AjBl}d}{{BhBl}d}2{bd}3{j{{j{c}}}{}}{{{j{l}}}{{j{lc}}}{}}{{}Bn}{{{j{lBn}}}{{C`{h}}}}{{{j{lBn}}}{{Cb{d}}}}{cc{}}{{}c{}}`{{{j{lBn}}{j{l{Cd{h}}}}}{{Cb{Cf}}}}{{{j{Ch}}{j{Cj}}Bl}{{Cb{d}}}}{{{j{Ch}}}{{Cb{d}}}}{c{{Ad{e}}}{}{}}{{}{{Ad{c}}}{}}{jAf}{{{j{lBn}}Aj}d}7{{{j{lBn}}{j{{Cd{h}}}}}{{Cb{Cf}}}}{{{j{lBn}}}d}{{}d}{Bdd}1{Ajd}{Bhd}2323`{j{{j{c}}}{}}{{{j{l}}}{{j{lc}}}{}}`{cc{}}{{}c{}}{{AhCl}Ah}{Clb}``?>=2{Bbb}{Ajb}{Cnb}{Bdb}{nb}{{bb}b}{D`b}{{bb}Aj}{bD`}{bAl}{{bB`}d}{{DbAj}Db}{fDb}{{DbB`}d}0","D":"Bf","p":[[5,"CString",178],[1,"unit"],[1,"u64"],[1,"u8"],[1,"reference"],[0,"mut"],[6,"Pauli",0],[5,"Formatter",179],[8,"Result",179],[6,"Result",180],[5,"TypeId",181],[5,"QirArray",29],[1,"bool"],[1,"u32"],[1,"i8"],[1,"i32"],[5,"BigInt",182],[1,"i64"],[5,"Callable",71],[8,"c_double",183],[1,"f64"],[8,"c_char",183],[5,"OutputRecorder",113],[5,"Drain",184],[8,"Result",185],[1,"slice"],[1,"usize"],[1,"str"],[10,"Display",179],[5,"Range",149],[8,"c_double",186],[8,"c_char",186],[5,"Vec",187]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJ8ADAABABAAFAAXAC4AKABZABoAdgADAHsAAgB/AAAAggABAIYAAgCKAAEAjQAMAJwAFgA="}],["qirrunner",{"t":"","n":[],"q":[],"i":"","f":"","D":"`","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["quantum_sparse_sim",{"t":"FINNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPGPPPNNNNNNNN","n":["QuantumSim","SparseState","allocate","borrow","borrow_mut","default","dump","exp","","from","get_state","h","into","joint_measure","joint_probability","mcexp","mch","mcphase","mcrx","mcry","mcrz","mcs","mcsadj","mct","mctadj","mcx","mcy","mcz","measure","new","qubit_is_zero","release","rx","ry","rz","s","sadj","set_rng_seed","swap_qubit_ids","t","tadj","take_rng","try_from","try_into","type_id","vzip","x","y","z","I","Pauli","X","Y","Z","borrow","borrow_mut","from","into","try_from","try_into","type_id","vzip"],"q":[[0,"quantum_sparse_sim"],[49,"quantum_sparse_sim::exp"],[62,"alloc::string"],[63,"num_bigint::biguint"],[64,"num_complex"],[65,"alloc::vec"],[66,"rand::rngs::std"],[67,"core::option"],[68,"core::result"],[69,"core::any"]],"i":"``d0000`00000000000000000000000000000000000000000l`00000000000","f":"``{{{f{bd}}}h}{f{{f{c}}}{}}{{{f{b}}}{{f{bc}}}{}}{{}d}{{{f{bd}}}j}`{{{f{bd}}{f{{n{l}}}}A`{f{{n{h}}}}}Ab}{cc{}}{{{f{bd}}}{{Ah{{Aj{{Ah{AdAf}}}}h}}}}{{{f{bd}}h}Ab}{{}c{}}{{{f{bd}}{f{{n{h}}}}}Al}{{{f{bd}}{f{{n{h}}}}}A`}{{{f{bd}}{f{{n{h}}}}{f{{n{l}}}}A`{f{{n{h}}}}}Ab}{{{f{bd}}{f{{n{h}}}}h}Ab}{{{f{bd}}{f{{n{h}}}}Afh}Ab}{{{f{bd}}{f{{n{h}}}}A`h}Ab}002222222{{{f{bd}}h}Al}{{{B`{An}}}d}19{{{f{bd}}A`h}Ab}00::{{{f{bd}}Bb}Ab}{{{f{bd}}hh}Ab}<<{{{f{bd}}}An}{c{{Bd{e}}}{}{}}{{}{{Bd{c}}}{}}{fBf}?{{{f{bd}}h}Ab}00`````{f{{f{c}}}{}}{{{f{b}}}{{f{bc}}}{}}{cc{}}{{}c{}}7650","D":"Ed","p":[[0,"mut"],[5,"QuantumSim",0],[1,"reference"],[1,"usize"],[5,"String",62],[6,"Pauli",49],[1,"slice"],[1,"f64"],[1,"unit"],[5,"BigUint",63],[8,"Complex64",64],[1,"tuple"],[5,"Vec",65],[1,"bool"],[5,"StdRng",66],[6,"Option",67],[1,"u64"],[6,"Result",68],[5,"TypeId",69]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABQABgACAAAABAACAAgAAAAqAAQAMgAGADsAAwA="}],["runner",{"t":"FPSSFGFFPPPHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHCCNNCHNNNOCNNNCCHCCHHHCHHCHHHOOCNNNCNNFHHHHHHHNNNNNNNNNNNNNHHHHHHHHHHHHHHHHHHHHHFHHHHHHHHHNNNNNNNNNNNNHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHSSFHHHHHHNNNNNNNCNHHNNNNNNNHHHHHHHHHFNNONNHHOONNNNHHHHHHHHHHHHHHHHHHHH","n":["Callable","I","LINE_ENDING","OUTPUT","OutputRecorder","Pauli","QirArray","Range","X","Y","Z","__quantum__qis__arccos__body","__quantum__qis__arcsin__body","__quantum__qis__arctan2__body","__quantum__qis__arctan__body","__quantum__qis__assertmeasurementprobability__body","__quantum__qis__assertmeasurementprobability__ctl","__quantum__qis__ccx__body","__quantum__qis__cnot__body","__quantum__qis__cos__body","__quantum__qis__cosh__body","__quantum__qis__cx__body","__quantum__qis__cy__body","__quantum__qis__cz__body","__quantum__qis__drawrandomdouble__body","__quantum__qis__drawrandomint__body","__quantum__qis__dumpmachine__body","__quantum__qis__exp__adj","__quantum__qis__exp__body","__quantum__qis__exp__ctl","__quantum__qis__exp__ctladj","__quantum__qis__h__body","__quantum__qis__h__ctl","__quantum__qis__ieeeremainder__body","__quantum__qis__infinity__body","__quantum__qis__isinf__body","__quantum__qis__isnan__body","__quantum__qis__isnegativeinfinity__body","__quantum__qis__log__body","__quantum__qis__m__body","__quantum__qis__measure__body","__quantum__qis__mresetz__body","__quantum__qis__mz__body","__quantum__qis__nan__body","__quantum__qis__r__adj","__quantum__qis__r__body","__quantum__qis__r__ctl","__quantum__qis__r__ctladj","__quantum__qis__read_result__body","__quantum__qis__reset__body","__quantum__qis__rx__body","__quantum__qis__rx__ctl","__quantum__qis__rxx__body","__quantum__qis__ry__body","__quantum__qis__ry__ctl","__quantum__qis__ryy__body","__quantum__qis__rz__body","__quantum__qis__rz__ctl","__quantum__qis__rzz__body","__quantum__qis__s__adj","__quantum__qis__s__body","__quantum__qis__s__ctl","__quantum__qis__s__ctladj","__quantum__qis__sin__body","__quantum__qis__sinh__body","__quantum__qis__sqrt__body","__quantum__qis__swap__body","__quantum__qis__t__adj","__quantum__qis__t__body","__quantum__qis__t__ctl","__quantum__qis__t__ctladj","__quantum__qis__tan__body","__quantum__qis__tanh__body","__quantum__qis__x__body","__quantum__qis__x__ctl","__quantum__qis__y__body","__quantum__qis__y__ctl","__quantum__qis__z__body","__quantum__qis__z__ctl","__quantum__rt__array_concatenate","__quantum__rt__array_copy","__quantum__rt__array_create_1d","__quantum__rt__array_get_element_ptr_1d","__quantum__rt__array_get_size_1d","__quantum__rt__array_record_output","__quantum__rt__array_update_alias_count","__quantum__rt__array_update_reference_count","__quantum__rt__bigint_add","__quantum__rt__bigint_bitand","__quantum__rt__bigint_bitnot","__quantum__rt__bigint_bitor","__quantum__rt__bigint_bitxor","__quantum__rt__bigint_create_array","__quantum__rt__bigint_create_i64","__quantum__rt__bigint_divide","__quantum__rt__bigint_equal","__quantum__rt__bigint_get_data","__quantum__rt__bigint_get_length","__quantum__rt__bigint_greater","__quantum__rt__bigint_greater_eq","__quantum__rt__bigint_modulus","__quantum__rt__bigint_multiply","__quantum__rt__bigint_negate","__quantum__rt__bigint_power","__quantum__rt__bigint_shiftleft","__quantum__rt__bigint_shiftright","__quantum__rt__bigint_subtract","__quantum__rt__bigint_to_string","__quantum__rt__bigint_update_reference_count","__quantum__rt__bool_record_output","__quantum__rt__bool_to_string","__quantum__rt__callable_copy","__quantum__rt__callable_create","__quantum__rt__callable_invoke","__quantum__rt__callable_make_adjoint","__quantum__rt__callable_make_controlled","__quantum__rt__callable_update_alias_count","__quantum__rt__callable_update_reference_count","__quantum__rt__capture_update_alias_count","__quantum__rt__capture_update_reference_count","__quantum__rt__double_record_output","__quantum__rt__double_to_string","__quantum__rt__fail","__quantum__rt__initialize","__quantum__rt__int_record_output","__quantum__rt__int_to_string","__quantum__rt__memory_allocate","__quantum__rt__message","__quantum__rt__message_record_output","__quantum__rt__pauli_to_string","__quantum__rt__qubit_allocate","__quantum__rt__qubit_allocate_array","__quantum__rt__qubit_release","__quantum__rt__qubit_release_array","__quantum__rt__qubit_to_string","__quantum__rt__result_equal","__quantum__rt__result_get_one","__quantum__rt__result_get_zero","__quantum__rt__result_record_output","__quantum__rt__result_to_string","__quantum__rt__result_update_reference_count","__quantum__rt__string_concatenate","__quantum__rt__string_create","__quantum__rt__string_equal","__quantum__rt__string_get_data","__quantum__rt__string_get_length","__quantum__rt__string_update_reference_count","__quantum__rt__tuple_copy","__quantum__rt__tuple_create","__quantum__rt__tuple_record_output","__quantum__rt__tuple_update_alias_count","__quantum__rt__tuple_update_reference_count","arrays","bigints","borrow","borrow_mut","callables","capture_quantum_state","clone","clone_into","clone_to_uninit","end","exp","fmt","from","into","legacy","legacy_output","main","math","output_recording","quantum__rt__array_slice_1d","quantum__rt__range_to_string","qubit_is_zero","range_support","record_output","record_output_str","result_bool","run_bitcode","run_file","set_rng_seed","start","step","strings","to_owned","try_from","try_into","tuples","type_id","vzip","QirArray","__quantum__rt__array_concatenate","__quantum__rt__array_copy","__quantum__rt__array_create_1d","__quantum__rt__array_get_element_ptr_1d","__quantum__rt__array_get_size_1d","__quantum__rt__array_update_alias_count","__quantum__rt__array_update_reference_count","borrow","borrow_mut","clone","clone_into","clone_to_uninit","fmt","from","into","to_owned","try_from","try_into","type_id","vzip","__quantum__rt__bigint_add","__quantum__rt__bigint_bitand","__quantum__rt__bigint_bitnot","__quantum__rt__bigint_bitor","__quantum__rt__bigint_bitxor","__quantum__rt__bigint_create_array","__quantum__rt__bigint_create_i64","__quantum__rt__bigint_divide","__quantum__rt__bigint_equal","__quantum__rt__bigint_get_data","__quantum__rt__bigint_get_length","__quantum__rt__bigint_greater","__quantum__rt__bigint_greater_eq","__quantum__rt__bigint_modulus","__quantum__rt__bigint_multiply","__quantum__rt__bigint_negate","__quantum__rt__bigint_power","__quantum__rt__bigint_shiftleft","__quantum__rt__bigint_shiftright","__quantum__rt__bigint_subtract","__quantum__rt__bigint_update_reference_count","Callable","__quantum__rt__callable_copy","__quantum__rt__callable_create","__quantum__rt__callable_invoke","__quantum__rt__callable_make_adjoint","__quantum__rt__callable_make_controlled","__quantum__rt__callable_update_alias_count","__quantum__rt__callable_update_reference_count","__quantum__rt__capture_update_alias_count","__quantum__rt__capture_update_reference_count","borrow","borrow_mut","clone","clone_into","clone_to_uninit","from","into","to_owned","try_from","try_into","type_id","vzip","__quantum__qis__exp__adj","__quantum__qis__exp__body","__quantum__qis__exp__ctl","__quantum__qis__exp__ctladj","__quantum__rt__array_end_record_output","__quantum__rt__array_record_output","__quantum__rt__array_start_record_output","__quantum__rt__bool_record_output","__quantum__rt__double_record_output","__quantum__rt__int_record_output","__quantum__rt__tuple_end_record_output","__quantum__rt__tuple_record_output","__quantum__rt__tuple_start_record_output","__quantum__rt__result_record_output","__quantum__qis__arccos__body","__quantum__qis__arcsin__body","__quantum__qis__arctan2__body","__quantum__qis__arctan__body","__quantum__qis__cos__body","__quantum__qis__cosh__body","__quantum__qis__drawrandomdouble__body","__quantum__qis__drawrandomint__body","__quantum__qis__ieeeremainder__body","__quantum__qis__infinity__body","__quantum__qis__isinf__body","__quantum__qis__isnan__body","__quantum__qis__isnegativeinfinity__body","__quantum__qis__log__body","__quantum__qis__nan__body","__quantum__qis__sin__body","__quantum__qis__sinh__body","__quantum__qis__sqrt__body","__quantum__qis__tan__body","__quantum__qis__tanh__body","LINE_ENDING","OUTPUT","OutputRecorder","__quantum__rt__array_record_output","__quantum__rt__bool_record_output","__quantum__rt__double_record_output","__quantum__rt__int_record_output","__quantum__rt__message_record_output","__quantum__rt__tuple_record_output","borrow","borrow_mut","default","drain","flush","from","into","legacy","read","record_output","record_output_str","try_from","try_into","type_id","use_std_out","vzip","write","write_newline","__quantum__rt__array_end_record_output","__quantum__rt__array_record_output","__quantum__rt__array_start_record_output","__quantum__rt__bool_record_output","__quantum__rt__double_record_output","__quantum__rt__int_record_output","__quantum__rt__tuple_end_record_output","__quantum__rt__tuple_record_output","__quantum__rt__tuple_start_record_output","Range","borrow","borrow_mut","end","from","into","quantum__rt__array_slice_1d","quantum__rt__range_to_string","start","step","try_from","try_into","type_id","vzip","__quantum__rt__result_equal","__quantum__rt__result_get_one","__quantum__rt__result_get_zero","__quantum__rt__result_to_string","__quantum__rt__result_update_reference_count","__quantum__rt__bigint_to_string","__quantum__rt__bool_to_string","__quantum__rt__double_to_string","__quantum__rt__int_to_string","__quantum__rt__pauli_to_string","__quantum__rt__string_concatenate","__quantum__rt__string_create","__quantum__rt__string_equal","__quantum__rt__string_get_data","__quantum__rt__string_get_length","__quantum__rt__string_update_reference_count","__quantum__rt__tuple_copy","__quantum__rt__tuple_create","__quantum__rt__tuple_update_alias_count","__quantum__rt__tuple_update_reference_count"],"q":[[0,"runner"],[190,"runner::arrays"],[211,"runner::bigints"],[232,"runner::callables"],[254,"runner::exp"],[258,"runner::legacy"],[267,"runner::legacy_output"],[268,"runner::math"],[288,"runner::output_recording"],[315,"runner::output_recording::legacy"],[324,"runner::range_support"],[338,"runner::result_bool"],[343,"runner::strings"],[354,"runner::tuples"],[358,"qir_stdlib::arrays"],[359,"core::ffi"],[360,"alloc::ffi::c_str"],[361,"alloc::vec"],[362,"qir_stdlib"],[363,"num_bigint::bigint"],[364,"qir_stdlib::callables"],[365,"num_bigint::biguint"],[366,"num_complex"],[367,"core::fmt"],[368,"core::result"],[369,"core::option"],[370,"alloc::string"],[371,"std::ffi::os_str"],[372,"core::convert"],[373,"core::clone"],[374,"core::iter::traits::collect"],[375,"qir_stdlib::range_support"],[376,"std::io::error"],[377,"std::io"],[378,"std::path"],[379,"core::any"],[380,"qir_stdlib::output_recording"],[381,"alloc::vec::drain"],[382,"qir_stdlib::math"],[383,"qir_backend"],[384,"qir_backend::exp"],[385,"qir_stdlib::bigints"],[386,"qir_stdlib::strings"],[387,"qir_backend::result_bool"],[388,"qir_stdlib::tuples"],[389,"runner::cli"],[390,"qir_stdlib::output_recording::legacy"],[391,"qir_backend::legacy_output"]],"i":"`Ab``````000```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````00``000Db`111```````````````00`111`11````````d000000000000```````````````````````````````B`00000000000```````````````````````````````````````````Ed000000`0``0000000``````````33333``333333````````````````````","f":"```````````{bb}0{{bb}b}1{{ddfbhb}j}{{dl}j}{{fff}j}{{ff}j}550004{{nn}n}{fj}{{dbd}j}0551{{df}j}8{{}b}{bA`}00;{ff}{{dd}f}883{{Abbf}j}0;;{fA`}8{{bf}j}={{bff}j}1>01>0::88{bb}00=;;9900;9;9;9{{dd}d}{{dA`}d}{{AdAf}d}{{dAf}Ah}{dAf}{{nAh}j}{{dAj}j}0{{AlAl}Al}0{AlAl}11{{AdAn}Al}{nAl}3{{AlAl}A`}{AlAn}{AlAd}22665{{AlAd}Al}{{AlAf}Al}08{Alh}{{AlAj}j}{{A`Ah}j}{A`h}{{B`A`}B`}{{AnAnAn}B`}{{B`AnAn}j}{B`j}0{{B`Aj}j}000{{bAh}j}{bh}{hj}{Ahj}{{nAh}j}{nh}{AfAn}44{Abh}{{}f}{Afd}{fj}{dj}{fh}{{ff}A`}55{{fAh}j}2{{fAj}j}{{hh}h}{Ahh}{{hh}A`}{hAh}{hAd}{{hAj}j}{{lA`}l}{Afl}{{nAh}j}{{lAj}j}0``{Bb{{Bb{c}}}{}}{{{Bb{Bd}}}{{Bb{Bdc}}}{}}`{{}{{Bj{{l{{Bj{Bf{Bh{b}}}}}}Bl}}}}{{{Bb{Ab}}}Ab}{{Bb{Bb{Bdc}}}j{}}{Bbj}``{{{Bb{Ab}}{Bb{BdBn}}}{{Cb{jC`}}}}{cc{}}{{}c{}}``{{{Cd{e}}}{{Cb{jCf}}}{{Cj{Ch}}Cl}{{D`{}{{Cn{c}}}}}}``{{dDb}d}{Dbh}{fA`}`{{{Bb{Dd}}{Bb{Df}}Ah}{{Cb{jDh}}}}{{{Bb{Dd}}}{{Cb{jDh}}}}`{{{Bb{{Dj{An}}}}{Cd{{Bb{Dd}}}}Ad{Bb{Bdc}}}{{Cb{jCf}}}Dl}{{c{Cd{{Bb{Dd}}}}Ad{Cd{Af}}{Bb{Bde}}}{{Cb{jCf}}}{{E`{Dn}}}Dl}{Afj}```{Bbc{}}{c{{Cb{e}}}{}{}}{{}{{Cb{c}}}{}}`{BbEb}=`{{dd}d}{{dA`}d}{{AdAf}d}{{dAf}Ah}{dAf}{{dAj}j}0{Bb{{Bb{c}}}{}}{{{Bb{Bd}}}{{Bb{Bdc}}}{}}{{{Bb{d}}}d}{{Bb{Bb{Bdc}}}j{}}{Bbj}{{{Bb{d}}{Bb{BdBn}}}{{Cb{jC`}}}}{cc{}}{{}c{}}{Bbc{}}{c{{Cb{e}}}{}{}}{{}{{Cb{c}}}{}}{BbEb}4{{AlAl}Al}0{AlAl}11{{AdAn}Al}{nAl}3{{AlAl}A`}{AlAn}{AlAd}22665{{AlAd}Al}{{AlAf}Al}08{{AlAj}j}`{{B`A`}B`}{{AnAnAn}B`}{{B`AnAn}j}{B`j}0{{B`Aj}j}000{Bb{{Bb{c}}}{}}{{{Bb{Bd}}}{{Bb{Bdc}}}{}}{{{Bb{B`}}}B`}{{Bb{Bb{Bdc}}}j{}}{Bbj}{cc{}}{{}c{}}{Bbc{}}{c{{Cb{e}}}{}{}}{{}{{Cb{c}}}{}}{BbEb}4{{dbd}j}0{{dl}j}0{{}j}{nj}1{A`j}{bj}2323{fj}{bb}0{{bb}b}1110{{nn}n}1{{}b}{bA`}004144444```{{nAh}j}{{A`Ah}j}{{bAh}j}2{hj}3{Bb{{Bb{c}}}{}}{{{Bb{Bd}}}{{Bb{Bdc}}}{}}{{}Ed}{{{Bb{BdEd}}}{{Ef{An}}}}{{{Bb{BdEd}}}{{Cb{jDh}}}}{cc{}}{{}c{}}`{{{Bb{BdEd}}{Bb{Bd{Dj{An}}}}}{{Cb{BlDh}}}}{{{Bb{Dd}}{Bb{Df}}Ah}{{Cb{jDh}}}}{{{Bb{Dd}}}{{Cb{jDh}}}}{c{{Cb{e}}}{}{}}{{}{{Cb{c}}}{}}{BbEb}{{{Bb{BdEd}}A`}j}7{{{Bb{BdEd}}{Bb{{Dj{An}}}}}{{Cb{BlDh}}}}{{{Bb{BdEd}}}j}{{}j}{nj}1{A`j}{bj}2323`{Bb{{Bb{c}}}{}}{{{Bb{Bd}}}{{Bb{Bdc}}}{}}`{cc{}}{{}c{}}{{dDb}d}{Dbh}``?>=2{{ff}A`}{{}f}0{fh}{{fAj}j}{Alh}{A`h}{bh}{nh}{Abh}{{hh}h}{Ahh}{{hh}A`}{hAh}{hAd}{{hAj}j}{{lA`}l}{Afl}{{lAj}j}0","D":"Kd","p":[[1,"f64"],[5,"QirArray",190,358],[6,"c_void",359],[5,"CString",360],[1,"unit"],[5,"Vec",361],[1,"i64"],[1,"bool"],[6,"Pauli",0,362],[1,"u32"],[1,"u64"],[1,"i8"],[1,"i32"],[5,"BigInt",363],[1,"u8"],[5,"Callable",232,364],[1,"reference"],[0,"mut"],[5,"BigUint",365],[5,"Complex",366],[1,"tuple"],[1,"usize"],[5,"Formatter",367],[5,"Error",367],[6,"Result",368],[6,"Option",369],[5,"String",370],[5,"OsString",371],[10,"Into",372],[10,"Clone",373],[17,"Item"],[10,"IntoIterator",374],[5,"Range",324,375],[1,"str"],[10,"Display",367],[5,"Error",376],[1,"slice"],[10,"Write",377],[5,"Path",378],[10,"AsRef",372],[5,"TypeId",379],[5,"OutputRecorder",288,380],[5,"Drain",381]],"r":[[0,364],[2,380],[3,380],[4,380],[5,362],[6,358],[7,375],[11,382],[12,382],[13,382],[14,382],[15,383],[16,383],[17,383],[18,383],[19,382],[20,382],[21,383],[22,383],[23,383],[24,382],[25,382],[26,383],[27,384],[28,384],[29,384],[30,384],[31,383],[32,383],[33,382],[34,382],[35,382],[36,382],[37,382],[38,382],[39,383],[40,383],[41,383],[42,383],[43,382],[44,383],[45,383],[46,383],[47,383],[48,383],[49,383],[50,383],[51,383],[52,383],[53,383],[54,383],[55,383],[56,383],[57,383],[58,383],[59,383],[60,383],[61,383],[62,383],[63,382],[64,382],[65,382],[66,383],[67,383],[68,383],[69,383],[70,383],[71,382],[72,382],[73,383],[74,383],[75,383],[76,383],[77,383],[78,383],[79,358],[80,358],[81,358],[82,358],[83,358],[84,380],[85,358],[86,358],[87,385],[88,385],[89,385],[90,385],[91,385],[92,385],[93,385],[94,385],[95,385],[96,385],[97,385],[98,385],[99,385],[100,385],[101,385],[102,385],[103,385],[104,385],[105,385],[106,385],[107,386],[108,385],[109,380],[110,386],[111,364],[112,364],[113,364],[114,364],[115,364],[116,364],[117,364],[118,364],[119,364],[120,380],[121,386],[122,362],[123,383],[124,380],[125,386],[126,362],[127,362],[128,380],[129,386],[130,383],[131,383],[132,383],[133,383],[134,383],[135,387],[136,387],[137,387],[138,383],[139,387],[140,387],[141,386],[142,386],[143,386],[144,386],[145,386],[146,386],[147,388],[148,388],[149,380],[150,388],[151,388],[152,362],[153,362],[156,362],[157,383],[162,383],[166,380],[167,383],[168,389],[169,362],[170,362],[171,375],[172,375],[173,383],[174,362],[175,380],[176,380],[177,383],[180,383],[183,362],[187,362],[190,358],[191,358],[192,358],[193,358],[194,358],[195,358],[196,358],[197,358],[211,385],[212,385],[213,385],[214,385],[215,385],[216,385],[217,385],[218,385],[219,385],[220,385],[221,385],[222,385],[223,385],[224,385],[225,385],[226,385],[227,385],[228,385],[229,385],[230,385],[231,385],[232,364],[233,364],[234,364],[235,364],[236,364],[237,364],[238,364],[239,364],[240,364],[241,364],[254,384],[255,384],[256,384],[257,384],[258,390],[259,390],[260,390],[261,390],[262,390],[263,390],[264,390],[265,390],[266,390],[267,391],[268,382],[269,382],[270,382],[271,382],[272,382],[273,382],[274,382],[275,382],[276,382],[277,382],[278,382],[279,382],[280,382],[281,382],[282,382],[283,382],[284,382],[285,382],[286,382],[287,382],[288,380],[289,380],[290,380],[291,380],[292,380],[293,380],[294,380],[295,380],[296,380],[304,380],[306,380],[307,380],[315,390],[316,390],[317,390],[318,390],[319,390],[320,390],[321,390],[322,390],[323,390],[324,375],[330,375],[331,375],[338,387],[339,387],[340,387],[341,387],[342,387],[343,386],[344,386],[345,386],[346,386],[347,386],[348,386],[349,386],[350,386],[351,386],[352,386],[353,386],[354,388],[355,388],[356,388],[357,388]],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAwBIAAAAAQABgAJABQAAQAZAAEAIgAFACwAAABAAAIASAABAFAABABWACUAfQAFAIgAAgCNAAgAlwAGAJ8ABQCnAAEAqgADAK8AAACyAAAAtgAWAM8AKAD6AAQAAwEfACUBAwAqAQIALgEAADEBAQA1AQIAOQEBADwBDABLAQoAVwEPAA=="}]]')); +var searchIndex = new Map(JSON.parse('[["qir_backend",{"t":"FPSSFGFFPPPHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHCCNNCHNNNOCNNNCCCCHHHCHHCHOOCNNNCNNFHHHHHHHNNNNNNNNNNNNNHHHHHHHHHHHHHHHHHHHHHFHHHHHHHHHNNNNNNNNNNNNHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHSSFHHHHHHNNNNNNNCNHHNNNNNNNHHHHHHHHHFNNONNHHOONNNNHHHHHHHHHHHHHHHHHHHH","n":["Callable","I","LINE_ENDING","OUTPUT","OutputRecorder","Pauli","QirArray","Range","X","Y","Z","__quantum__qis__arccos__body","__quantum__qis__arcsin__body","__quantum__qis__arctan2__body","__quantum__qis__arctan__body","__quantum__qis__assertmeasurementprobability__body","__quantum__qis__assertmeasurementprobability__ctl","__quantum__qis__ccx__body","__quantum__qis__cnot__body","__quantum__qis__cos__body","__quantum__qis__cosh__body","__quantum__qis__cx__body","__quantum__qis__cy__body","__quantum__qis__cz__body","__quantum__qis__drawrandomdouble__body","__quantum__qis__drawrandomint__body","__quantum__qis__dumpmachine__body","__quantum__qis__h__body","__quantum__qis__h__ctl","__quantum__qis__ieeeremainder__body","__quantum__qis__infinity__body","__quantum__qis__isinf__body","__quantum__qis__isnan__body","__quantum__qis__isnegativeinfinity__body","__quantum__qis__log__body","__quantum__qis__m__body","__quantum__qis__measure__body","__quantum__qis__mresetz__body","__quantum__qis__mz__body","__quantum__qis__nan__body","__quantum__qis__r__adj","__quantum__qis__r__body","__quantum__qis__r__ctl","__quantum__qis__r__ctladj","__quantum__qis__read_result__body","__quantum__qis__reset__body","__quantum__qis__rx__body","__quantum__qis__rx__ctl","__quantum__qis__rxx__body","__quantum__qis__ry__body","__quantum__qis__ry__ctl","__quantum__qis__ryy__body","__quantum__qis__rz__body","__quantum__qis__rz__ctl","__quantum__qis__rzz__body","__quantum__qis__s__adj","__quantum__qis__s__body","__quantum__qis__s__ctl","__quantum__qis__s__ctladj","__quantum__qis__sin__body","__quantum__qis__sinh__body","__quantum__qis__sqrt__body","__quantum__qis__swap__body","__quantum__qis__t__adj","__quantum__qis__t__body","__quantum__qis__t__ctl","__quantum__qis__t__ctladj","__quantum__qis__tan__body","__quantum__qis__tanh__body","__quantum__qis__x__body","__quantum__qis__x__ctl","__quantum__qis__y__body","__quantum__qis__y__ctl","__quantum__qis__z__body","__quantum__qis__z__ctl","__quantum__rt__array_concatenate","__quantum__rt__array_copy","__quantum__rt__array_create_1d","__quantum__rt__array_get_element_ptr_1d","__quantum__rt__array_get_size_1d","__quantum__rt__array_record_output","__quantum__rt__array_update_alias_count","__quantum__rt__array_update_reference_count","__quantum__rt__bigint_add","__quantum__rt__bigint_bitand","__quantum__rt__bigint_bitnot","__quantum__rt__bigint_bitor","__quantum__rt__bigint_bitxor","__quantum__rt__bigint_create_array","__quantum__rt__bigint_create_i64","__quantum__rt__bigint_divide","__quantum__rt__bigint_equal","__quantum__rt__bigint_get_data","__quantum__rt__bigint_get_length","__quantum__rt__bigint_greater","__quantum__rt__bigint_greater_eq","__quantum__rt__bigint_modulus","__quantum__rt__bigint_multiply","__quantum__rt__bigint_negate","__quantum__rt__bigint_power","__quantum__rt__bigint_shiftleft","__quantum__rt__bigint_shiftright","__quantum__rt__bigint_subtract","__quantum__rt__bigint_to_string","__quantum__rt__bigint_update_reference_count","__quantum__rt__bool_record_output","__quantum__rt__bool_to_string","__quantum__rt__callable_copy","__quantum__rt__callable_create","__quantum__rt__callable_invoke","__quantum__rt__callable_make_adjoint","__quantum__rt__callable_make_controlled","__quantum__rt__callable_update_alias_count","__quantum__rt__callable_update_reference_count","__quantum__rt__capture_update_alias_count","__quantum__rt__capture_update_reference_count","__quantum__rt__double_record_output","__quantum__rt__double_to_string","__quantum__rt__fail","__quantum__rt__initialize","__quantum__rt__int_record_output","__quantum__rt__int_to_string","__quantum__rt__memory_allocate","__quantum__rt__message","__quantum__rt__message_record_output","__quantum__rt__pauli_to_string","__quantum__rt__qubit_allocate","__quantum__rt__qubit_allocate_array","__quantum__rt__qubit_release","__quantum__rt__qubit_release_array","__quantum__rt__qubit_to_string","__quantum__rt__result_record_output","__quantum__rt__string_concatenate","__quantum__rt__string_create","__quantum__rt__string_equal","__quantum__rt__string_get_data","__quantum__rt__string_get_length","__quantum__rt__string_update_reference_count","__quantum__rt__tuple_copy","__quantum__rt__tuple_create","__quantum__rt__tuple_record_output","__quantum__rt__tuple_update_alias_count","__quantum__rt__tuple_update_reference_count","arrays","bigints","borrow","borrow_mut","callables","capture_quantum_state","clone","clone_into","clone_to_uninit","end","exp","fmt","from","into","legacy","legacy_output","math","output_recording","quantum__rt__array_slice_1d","quantum__rt__range_to_string","qubit_is_zero","range_support","record_output","record_output_str","result_bool","set_rng_seed","start","step","strings","to_owned","try_from","try_into","tuples","type_id","vzip","QirArray","__quantum__rt__array_concatenate","__quantum__rt__array_copy","__quantum__rt__array_create_1d","__quantum__rt__array_get_element_ptr_1d","__quantum__rt__array_get_size_1d","__quantum__rt__array_update_alias_count","__quantum__rt__array_update_reference_count","borrow","borrow_mut","clone","clone_into","clone_to_uninit","fmt","from","into","to_owned","try_from","try_into","type_id","vzip","__quantum__rt__bigint_add","__quantum__rt__bigint_bitand","__quantum__rt__bigint_bitnot","__quantum__rt__bigint_bitor","__quantum__rt__bigint_bitxor","__quantum__rt__bigint_create_array","__quantum__rt__bigint_create_i64","__quantum__rt__bigint_divide","__quantum__rt__bigint_equal","__quantum__rt__bigint_get_data","__quantum__rt__bigint_get_length","__quantum__rt__bigint_greater","__quantum__rt__bigint_greater_eq","__quantum__rt__bigint_modulus","__quantum__rt__bigint_multiply","__quantum__rt__bigint_negate","__quantum__rt__bigint_power","__quantum__rt__bigint_shiftleft","__quantum__rt__bigint_shiftright","__quantum__rt__bigint_subtract","__quantum__rt__bigint_update_reference_count","Callable","__quantum__rt__callable_copy","__quantum__rt__callable_create","__quantum__rt__callable_invoke","__quantum__rt__callable_make_adjoint","__quantum__rt__callable_make_controlled","__quantum__rt__callable_update_alias_count","__quantum__rt__callable_update_reference_count","__quantum__rt__capture_update_alias_count","__quantum__rt__capture_update_reference_count","borrow","borrow_mut","clone","clone_into","clone_to_uninit","from","into","to_owned","try_from","try_into","type_id","vzip","__quantum__qis__exp__adj","__quantum__qis__exp__body","__quantum__qis__exp__ctl","__quantum__qis__exp__ctladj","__quantum__rt__array_end_record_output","__quantum__rt__array_record_output","__quantum__rt__array_start_record_output","__quantum__rt__bool_record_output","__quantum__rt__double_record_output","__quantum__rt__int_record_output","__quantum__rt__tuple_end_record_output","__quantum__rt__tuple_record_output","__quantum__rt__tuple_start_record_output","__quantum__rt__result_record_output","__quantum__qis__arccos__body","__quantum__qis__arcsin__body","__quantum__qis__arctan2__body","__quantum__qis__arctan__body","__quantum__qis__cos__body","__quantum__qis__cosh__body","__quantum__qis__drawrandomdouble__body","__quantum__qis__drawrandomint__body","__quantum__qis__ieeeremainder__body","__quantum__qis__infinity__body","__quantum__qis__isinf__body","__quantum__qis__isnan__body","__quantum__qis__isnegativeinfinity__body","__quantum__qis__log__body","__quantum__qis__nan__body","__quantum__qis__sin__body","__quantum__qis__sinh__body","__quantum__qis__sqrt__body","__quantum__qis__tan__body","__quantum__qis__tanh__body","LINE_ENDING","OUTPUT","OutputRecorder","__quantum__rt__array_record_output","__quantum__rt__bool_record_output","__quantum__rt__double_record_output","__quantum__rt__int_record_output","__quantum__rt__message_record_output","__quantum__rt__tuple_record_output","borrow","borrow_mut","default","drain","flush","from","into","legacy","read","record_output","record_output_str","try_from","try_into","type_id","use_std_out","vzip","write","write_newline","__quantum__rt__array_end_record_output","__quantum__rt__array_record_output","__quantum__rt__array_start_record_output","__quantum__rt__bool_record_output","__quantum__rt__double_record_output","__quantum__rt__int_record_output","__quantum__rt__tuple_end_record_output","__quantum__rt__tuple_record_output","__quantum__rt__tuple_start_record_output","Range","borrow","borrow_mut","end","from","into","quantum__rt__array_slice_1d","quantum__rt__range_to_string","start","step","try_from","try_into","type_id","vzip","__quantum__rt__result_equal","__quantum__rt__result_get_one","__quantum__rt__result_get_zero","__quantum__rt__result_to_string","__quantum__rt__result_update_reference_count","__quantum__rt__bigint_to_string","__quantum__rt__bool_to_string","__quantum__rt__double_to_string","__quantum__rt__int_to_string","__quantum__rt__pauli_to_string","__quantum__rt__string_concatenate","__quantum__rt__string_create","__quantum__rt__string_equal","__quantum__rt__string_get_data","__quantum__rt__string_get_length","__quantum__rt__string_update_reference_count","__quantum__rt__tuple_copy","__quantum__rt__tuple_create","__quantum__rt__tuple_update_alias_count","__quantum__rt__tuple_update_reference_count"],"q":[[0,"qir_backend"],[178,"qir_backend::arrays"],[199,"qir_backend::bigints"],[220,"qir_backend::callables"],[242,"qir_backend::exp"],[246,"qir_backend::legacy"],[255,"qir_backend::legacy_output"],[256,"qir_backend::math"],[276,"qir_backend::output_recording"],[303,"qir_backend::output_recording::legacy"],[312,"qir_backend::range_support"],[326,"qir_backend::result_bool"],[331,"qir_backend::strings"],[342,"qir_backend::tuples"],[346,"qir_stdlib::arrays"],[347,"core::ffi"],[348,"alloc::ffi::c_str"],[349,"alloc::vec"],[350,"qir_stdlib"],[351,"num_bigint::bigint"],[352,"qir_stdlib::callables"],[353,"num_bigint::biguint"],[354,"num_complex"],[355,"core::fmt"],[356,"core::result"],[357,"qir_stdlib::range_support"],[358,"std::io::error"],[359,"core::any"],[360,"std::os::raw"],[361,"qir_stdlib::output_recording"],[362,"alloc::vec::drain"],[363,"qir_stdlib::math"],[364,"qir_stdlib::bigints"],[365,"qir_stdlib::strings"],[366,"qir_stdlib::tuples"],[367,"qir_stdlib::output_recording::legacy"]],"i":"`Ad``````000``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````00``000Ch`111````````````00`111`11````````d000000000000```````````````````````````````Bb00000000000```````````````````````````````````````````Dd000000`0``0000000``````````33333``333333````````````````````","f":"```````````{bb}0{{bb}b}1{{ddfhjh}l}{{dn}l}{{fff}l}{{ff}l}550004{{A`A`}A`}{fl}0{{df}l}7{{}b}{bAb}00:{ff}{{dd}f}773{{Adhf}l}0::{fAb}7{{hf}l}<{{hff}l}1=01=09988{bb}00<::9900:9:9:9{{dd}d}{{dAb}d}{{AfAh}d}{{dAh}Aj}{dAh}{{A`Aj}l}{{dAl}l}0{{AnAn}An}0{AnAn}11{{AfB`}An}{A`An}3{{AnAn}Ab}{AnB`}{AnAf}22665{{AnAf}An}{{AnAh}An}08{Anj}{{AnAl}l}{{AbAj}l}{Abj}{{BbAb}Bb}{{B`B`B`}Bb}{{BbB`B`}l}{Bbl}0{{BbAl}l}000{{bAj}l}{bj}{jl}{Bdl}{{A`Aj}l}{A`j}{AhB`}44{Adj}{{}f}{Ahd}{fl}{dl}{fj}{{fBd}l}{{jj}j}{Ajj}{{jj}Ab}{jAj}{jAf}{{jAl}l}{{nAb}n}{Ahn}{{A`Aj}l}{{nAl}l}0``{Bf{{Bf{c}}}{}}{{{Bf{Bh}}}{{Bf{Bhc}}}{}}`{{}{{Bn{{n{{Bn{BjBl}}}}C`}}}}{{{Bf{Ad}}}Ad}{{Bf{Bf{Bhc}}}l{}}{Bfl}``{{{Bf{Ad}}{Bf{BhCb}}}{{Cf{lCd}}}}{cc{}}{{}c{}}````{{dCh}d}{Chj}{fAb}`{{{Bf{Cj}}{Bf{Cl}}Aj}{{Cf{lCn}}}}{{{Bf{Cj}}}{{Cf{lCn}}}}`{Ahl}```{Bfc{}}{c{{Cf{e}}}{}{}}{{}{{Cf{c}}}{}}`{BfD`}:`{{dd}d}{{dAb}d}{{AfAh}d}{{dAh}Aj}{dAh}{{dAl}l}0{Bf{{Bf{c}}}{}}{{{Bf{Bh}}}{{Bf{Bhc}}}{}}{{{Bf{d}}}d}{{Bf{Bf{Bhc}}}l{}}{Bfl}{{{Bf{d}}{Bf{BhCb}}}{{Cf{lCd}}}}{cc{}}{{}c{}}{Bfc{}}{c{{Cf{e}}}{}{}}{{}{{Cf{c}}}{}}{BfD`}4{{AnAn}An}0{AnAn}11{{AfB`}An}{A`An}3{{AnAn}Ab}{AnB`}{AnAf}22665{{AnAf}An}{{AnAh}An}08{{AnAl}l}`{{BbAb}Bb}{{B`B`B`}Bb}{{BbB`B`}l}{Bbl}0{{BbAl}l}000{Bf{{Bf{c}}}{}}{{{Bf{Bh}}}{{Bf{Bhc}}}{}}{{{Bf{Bb}}}Bb}{{Bf{Bf{Bhc}}}l{}}{Bfl}{cc{}}{{}c{}}{Bfc{}}{c{{Cf{e}}}{}{}}{{}{{Cf{c}}}{}}{BfD`}4{{dDbd}l}0{{dn}l}0{{}l}{A`l}1{Abl}{bl}2323{fl}{bb}0{{bb}b}1110{{A`A`}A`}1{{}b}{bAb}004144444```{{A`Aj}l}{{AbAj}l}{{bAj}l}2{jl}3{Bf{{Bf{c}}}{}}{{{Bf{Bh}}}{{Bf{Bhc}}}{}}{{}Dd}{{{Bf{BhDd}}}{{Df{B`}}}}{{{Bf{BhDd}}}{{Cf{lCn}}}}{cc{}}{{}c{}}`{{{Bf{BhDd}}{Bf{Bh{Dh{B`}}}}}{{Cf{C`Cn}}}}{{{Bf{Cj}}{Bf{Cl}}Aj}{{Cf{lCn}}}}{{{Bf{Cj}}}{{Cf{lCn}}}}{c{{Cf{e}}}{}{}}{{}{{Cf{c}}}{}}{BfD`}{{{Bf{BhDd}}Ab}l}7{{{Bf{BhDd}}{Bf{{Dh{B`}}}}}{{Cf{C`Cn}}}}{{{Bf{BhDd}}}l}{{}l}{A`l}1{Abl}{bl}2323`{Bf{{Bf{c}}}{}}{{{Bf{Bh}}}{{Bf{Bhc}}}{}}`{cc{}}{{}c{}}{{dCh}d}{Chj}``?>=2{{ff}Ab}{{}f}0{fj}{{fAl}l}{Anj}{Abj}{bj}{A`j}{Adj}{{jj}j}{Ajj}{{jj}Ab}{jAj}{jAf}{{jAl}l}{{nAb}n}{Ahn}{{nAl}l}0","D":"Jf","p":[[1,"f64"],[5,"QirArray",178,346],[6,"c_void",347],[8,"c_double",347],[5,"CString",348],[1,"unit"],[5,"Vec",349],[1,"i64"],[1,"bool"],[6,"Pauli",0,350],[1,"u32"],[1,"u64"],[1,"i8"],[1,"i32"],[5,"BigInt",351],[1,"u8"],[5,"Callable",220,352],[8,"c_char",347],[1,"reference"],[0,"mut"],[5,"BigUint",353],[8,"Complex64",354],[1,"tuple"],[1,"usize"],[5,"Formatter",355],[5,"Error",355],[6,"Result",356],[5,"Range",312,357],[1,"str"],[10,"Display",355],[5,"Error",358],[5,"TypeId",359],[8,"c_double",360],[5,"OutputRecorder",276,361],[5,"Drain",362],[1,"slice"]],"r":[[0,352],[2,361],[3,361],[4,361],[5,350],[6,346],[7,357],[11,363],[12,363],[13,363],[14,363],[19,363],[20,363],[24,363],[25,363],[29,363],[30,363],[31,363],[32,363],[33,363],[34,363],[39,363],[59,363],[60,363],[61,363],[67,363],[68,363],[75,346],[76,346],[77,346],[78,346],[79,346],[80,361],[81,346],[82,346],[83,364],[84,364],[85,364],[86,364],[87,364],[88,364],[89,364],[90,364],[91,364],[92,364],[93,364],[94,364],[95,364],[96,364],[97,364],[98,364],[99,364],[100,364],[101,364],[102,364],[103,365],[104,364],[105,361],[106,365],[107,352],[108,352],[109,352],[110,352],[111,352],[112,352],[113,352],[114,352],[115,352],[116,361],[117,365],[118,350],[120,361],[121,365],[122,350],[123,350],[124,361],[125,365],[132,365],[133,365],[134,365],[135,365],[136,365],[137,365],[138,366],[139,366],[140,361],[141,366],[142,366],[143,350],[144,350],[147,350],[157,361],[159,350],[160,350],[161,357],[162,357],[164,350],[165,361],[166,361],[171,350],[175,350],[178,346],[179,346],[180,346],[181,346],[182,346],[183,346],[184,346],[185,346],[199,364],[200,364],[201,364],[202,364],[203,364],[204,364],[205,364],[206,364],[207,364],[208,364],[209,364],[210,364],[211,364],[212,364],[213,364],[214,364],[215,364],[216,364],[217,364],[218,364],[219,364],[220,352],[221,352],[222,352],[223,352],[224,352],[225,352],[226,352],[227,352],[228,352],[229,352],[246,367],[247,367],[248,367],[249,367],[250,367],[251,367],[252,367],[253,367],[254,367],[256,363],[257,363],[258,363],[259,363],[260,363],[261,363],[262,363],[263,363],[264,363],[265,363],[266,363],[267,363],[268,363],[269,363],[270,363],[271,363],[272,363],[273,363],[274,363],[275,363],[276,361],[277,361],[278,361],[279,361],[280,361],[281,361],[282,361],[283,361],[284,361],[292,361],[294,361],[295,361],[303,367],[304,367],[305,367],[306,367],[307,367],[308,367],[309,367],[310,367],[311,367],[312,357],[318,357],[319,357],[331,365],[332,365],[333,365],[334,365],[335,365],[336,365],[337,365],[338,365],[339,365],[340,365],[341,365],[342,366],[343,366],[344,366],[345,366]],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAcBHgABAAMABgAJABQAAQAZAAEAHgAFACgAAAA8AAIARAABAEwABABSACUAeQAFAIUABwCOAAYAlgAFAJ4ABQClAAAAqAAAAKoAFgDDACgA7gAEAPcAHwAZAQMAHgECACIBAAAlAQEAKQECAC0BAQAwAQwAPwEKAEsBDwA="}],["qir_runner",{"t":"H","n":["main"],"q":[[0,"qir_runner"],[1,"alloc::string"],[2,"core::result"]],"i":"`","f":"{{}{{f{bd}}}}","D":"`","p":[[1,"unit"],[5,"String",1],[6,"Result",2]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAEAEAAAAAAAAQA="}],["qir_stdlib",{"t":"PGPPPHHHCCNNCNNNNNNCCCCNNNCNNFHHHHHHHNNNNNNNNNNNNNHHHHHHHHHHHHHHHHHHHHHFHHHHHHHHHNNNNNNNNNNNNHHHHHHHHHHHHHHHHHHHHSSFHHHHHHNNNNNNNCNHHNNNNNNNHHHHHHHHHFNNONNHHOONNNNHHHHHHHHHHHHHHH","n":["I","Pauli","X","Y","Z","__quantum__rt__fail","__quantum__rt__memory_allocate","__quantum__rt__message","arrays","bigints","borrow","borrow_mut","callables","clone","clone_into","clone_to_uninit","fmt","from","into","math","output_recording","range_support","strings","to_owned","try_from","try_into","tuples","type_id","vzip","QirArray","__quantum__rt__array_concatenate","__quantum__rt__array_copy","__quantum__rt__array_create_1d","__quantum__rt__array_get_element_ptr_1d","__quantum__rt__array_get_size_1d","__quantum__rt__array_update_alias_count","__quantum__rt__array_update_reference_count","borrow","borrow_mut","clone","clone_into","clone_to_uninit","fmt","from","into","to_owned","try_from","try_into","type_id","vzip","__quantum__rt__bigint_add","__quantum__rt__bigint_bitand","__quantum__rt__bigint_bitnot","__quantum__rt__bigint_bitor","__quantum__rt__bigint_bitxor","__quantum__rt__bigint_create_array","__quantum__rt__bigint_create_i64","__quantum__rt__bigint_divide","__quantum__rt__bigint_equal","__quantum__rt__bigint_get_data","__quantum__rt__bigint_get_length","__quantum__rt__bigint_greater","__quantum__rt__bigint_greater_eq","__quantum__rt__bigint_modulus","__quantum__rt__bigint_multiply","__quantum__rt__bigint_negate","__quantum__rt__bigint_power","__quantum__rt__bigint_shiftleft","__quantum__rt__bigint_shiftright","__quantum__rt__bigint_subtract","__quantum__rt__bigint_update_reference_count","Callable","__quantum__rt__callable_copy","__quantum__rt__callable_create","__quantum__rt__callable_invoke","__quantum__rt__callable_make_adjoint","__quantum__rt__callable_make_controlled","__quantum__rt__callable_update_alias_count","__quantum__rt__callable_update_reference_count","__quantum__rt__capture_update_alias_count","__quantum__rt__capture_update_reference_count","borrow","borrow_mut","clone","clone_into","clone_to_uninit","from","into","to_owned","try_from","try_into","type_id","vzip","__quantum__qis__arccos__body","__quantum__qis__arcsin__body","__quantum__qis__arctan2__body","__quantum__qis__arctan__body","__quantum__qis__cos__body","__quantum__qis__cosh__body","__quantum__qis__drawrandomdouble__body","__quantum__qis__drawrandomint__body","__quantum__qis__ieeeremainder__body","__quantum__qis__infinity__body","__quantum__qis__isinf__body","__quantum__qis__isnan__body","__quantum__qis__isnegativeinfinity__body","__quantum__qis__log__body","__quantum__qis__nan__body","__quantum__qis__sin__body","__quantum__qis__sinh__body","__quantum__qis__sqrt__body","__quantum__qis__tan__body","__quantum__qis__tanh__body","LINE_ENDING","OUTPUT","OutputRecorder","__quantum__rt__array_record_output","__quantum__rt__bool_record_output","__quantum__rt__double_record_output","__quantum__rt__int_record_output","__quantum__rt__message_record_output","__quantum__rt__tuple_record_output","borrow","borrow_mut","default","drain","flush","from","into","legacy","read","record_output","record_output_str","try_from","try_into","type_id","use_std_out","vzip","write","write_newline","__quantum__rt__array_end_record_output","__quantum__rt__array_record_output","__quantum__rt__array_start_record_output","__quantum__rt__bool_record_output","__quantum__rt__double_record_output","__quantum__rt__int_record_output","__quantum__rt__tuple_end_record_output","__quantum__rt__tuple_record_output","__quantum__rt__tuple_start_record_output","Range","borrow","borrow_mut","end","from","into","quantum__rt__array_slice_1d","quantum__rt__range_to_string","start","step","try_from","try_into","type_id","vzip","__quantum__rt__bigint_to_string","__quantum__rt__bool_to_string","__quantum__rt__double_to_string","__quantum__rt__int_to_string","__quantum__rt__pauli_to_string","__quantum__rt__string_concatenate","__quantum__rt__string_create","__quantum__rt__string_equal","__quantum__rt__string_get_data","__quantum__rt__string_get_length","__quantum__rt__string_update_reference_count","__quantum__rt__tuple_copy","__quantum__rt__tuple_create","__quantum__rt__tuple_update_alias_count","__quantum__rt__tuple_update_reference_count"],"q":[[0,"qir_stdlib"],[29,"qir_stdlib::arrays"],[50,"qir_stdlib::bigints"],[71,"qir_stdlib::callables"],[93,"qir_stdlib::math"],[113,"qir_stdlib::output_recording"],[140,"qir_stdlib::output_recording::legacy"],[149,"qir_stdlib::range_support"],[163,"qir_stdlib::strings"],[174,"qir_stdlib::tuples"],[178,"alloc::ffi::c_str"],[179,"core::fmt"],[180,"core::result"],[181,"core::any"],[182,"num_bigint::bigint"],[183,"core::ffi"],[184,"alloc::vec::drain"],[185,"std::io::error"],[186,"std::os::raw"],[187,"alloc::vec"]],"i":"n`000`````00`000000````000`00````````Ah000000000000```````````````````````````````Bf00000000000`````````````````````````````Bn000000`0``0000000``````````Cl0000``000000```````````````","f":"`````{bd}{fh}1``{j{{j{c}}}{}}{{{j{l}}}{{j{lc}}}{}}`{{{j{n}}}n}{{j{j{lc}}}d{}}{jd}{{{j{n}}{j{lA`}}}Ab}{cc{}}{{}c{}}````{jc{}}{c{{Ad{e}}}{}{}}{{}{{Ad{c}}}{}}`{jAf}4`{{AhAh}Ah}{{AhAj}Ah}{{Alf}Ah}{{Ahf}An}{Ahf}{{AhB`}d}0{j{{j{c}}}{}}{{{j{l}}}{{j{lc}}}{}}{{{j{Ah}}}Ah}{{j{j{lc}}}d{}}{jd}{{{j{Ah}}{j{lA`}}}Ab}{cc{}}{{}c{}}{jc{}}{c{{Ad{e}}}{}{}}{{}{{Ad{c}}}{}}{jAf}4{{BbBb}Bb}0{BbBb}11{{Alh}Bb}{BdBb}3{{BbBb}Aj}{Bbh}{BbAl}22665{{BbAl}Bb}{{Bbf}Bb}08{{BbB`}d}`{{BfAj}Bf}{{hhh}Bf}{{Bfhh}d}{Bfd}0{{BfB`}d}000{j{{j{c}}}{}}{{{j{l}}}{{j{lc}}}{}}{{{j{Bf}}}Bf}{{j{j{lc}}}d{}}{jd}{cc{}}{{}c{}}{jc{}}{c{{Ad{e}}}{}{}}{{}{{Ad{c}}}{}}{jAf}4{BhBh}0{{BhBh}Bh}111{{BhBh}Bj}{{BdBd}Bd}2{{}Bh}{BhAj}005155555```{{BdBl}d}{{AjBl}d}{{BhBl}d}2{bd}3{j{{j{c}}}{}}{{{j{l}}}{{j{lc}}}{}}{{}Bn}{{{j{lBn}}}{{C`{h}}}}{{{j{lBn}}}{{Cb{d}}}}{cc{}}{{}c{}}`{{{j{lBn}}{j{l{Cd{h}}}}}{{Cb{Cf}}}}{{{j{Ch}}{j{Cj}}Bl}{{Cb{d}}}}{{{j{Ch}}}{{Cb{d}}}}{c{{Ad{e}}}{}{}}{{}{{Ad{c}}}{}}{jAf}{{{j{lBn}}Aj}d}7{{{j{lBn}}{j{{Cd{h}}}}}{{Cb{Cf}}}}{{{j{lBn}}}d}{{}d}{Bdd}1{Ajd}{Bhd}2323`{j{{j{c}}}{}}{{{j{l}}}{{j{lc}}}{}}`{cc{}}{{}c{}}{{AhCl}Ah}{Clb}``?>=2{Bbb}{Ajb}{Cnb}{Bdb}{nb}{{bb}b}{D`b}{{bb}Aj}{bD`}{bAl}{{bB`}d}{{DbAj}Db}{fDb}{{DbB`}d}0","D":"Bf","p":[[5,"CString",178],[1,"unit"],[1,"u64"],[1,"u8"],[1,"reference"],[0,"mut"],[6,"Pauli",0],[5,"Formatter",179],[8,"Result",179],[6,"Result",180],[5,"TypeId",181],[5,"QirArray",29],[1,"bool"],[1,"u32"],[1,"i8"],[1,"i32"],[5,"BigInt",182],[1,"i64"],[5,"Callable",71],[8,"c_double",183],[1,"f64"],[8,"c_char",183],[5,"OutputRecorder",113],[5,"Drain",184],[8,"Result",185],[1,"slice"],[1,"usize"],[1,"str"],[10,"Display",179],[5,"Range",149],[8,"c_double",186],[8,"c_char",186],[5,"Vec",187]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJ8ADAABABAAFAAXAC4AKABZABoAdgADAHsAAgB/AAAAggABAIYAAgCKAAEAjQAMAJwAFgA="}],["qirrunner",{"t":"","n":[],"q":[],"i":"","f":"","D":"`","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["quantum_sparse_sim",{"t":"FINNNNHNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPGPPPNNNNNNNN","n":["QuantumSim","SparseState","allocate","apply","borrow","borrow_mut","controlled","default","dump","exp","","from","get_state","h","into","joint_measure","joint_probability","mcexp","mch","mcphase","mcrx","mcry","mcrz","mcs","mcsadj","mct","mctadj","mcx","mcy","mcz","measure","new","qubit_is_zero","release","rx","ry","rz","s","sadj","set_rng_seed","swap_qubit_ids","t","tadj","take_rng","try_from","try_into","type_id","vzip","x","y","z","I","Pauli","X","Y","Z","borrow","borrow_mut","from","into","try_from","try_into","type_id","vzip"],"q":[[0,"quantum_sparse_sim"],[51,"quantum_sparse_sim::exp"],[64,"num_complex"],[65,"ndarray::aliases"],[66,"core::option"],[67,"alloc::string"],[68,"num_bigint::biguint"],[69,"alloc::vec"],[70,"rand::rngs::std"],[71,"core::result"],[72,"core::any"]],"i":"``d000`00`00000000000000000000000000000000000000000Ah`00000000000","f":"``{{{f{bd}}}h}{{{f{bd}}{f{{l{j}}}}{f{{n{h}}}}{A`{{f{{n{h}}}}}}}Ab}{f{{f{c}}}{}}{{{f{b}}}{{f{bc}}}{}}{{{f{{l{j}}}}Ad}{{l{j}}}}{{}d}{{{f{bd}}}Af}`{{{f{bd}}{f{{n{Ah}}}}Aj{f{{n{h}}}}}Ab}{cc{}}{{{f{bd}}}{{An{{B`{{An{Alj}}}}h}}}}{{{f{bd}}h}Ab}{{}c{}}{{{f{bd}}{f{{n{h}}}}}Bb}{{{f{bd}}{f{{n{h}}}}}Aj}{{{f{bd}}{f{{n{h}}}}{f{{n{Ah}}}}Aj{f{{n{h}}}}}Ab}{{{f{bd}}{f{{n{h}}}}h}Ab}{{{f{bd}}{f{{n{h}}}}jh}Ab}{{{f{bd}}{f{{n{h}}}}Ajh}Ab}002222222{{{f{bd}}h}Bb}{{{A`{Bd}}}d}19{{{f{bd}}Ajh}Ab}00::{{{f{bd}}Bf}Ab}{{{f{bd}}hh}Ab}<<{{{f{bd}}}Bd}{c{{Bh{e}}}{}{}}{{}{{Bh{c}}}{}}{fBj}?{{{f{bd}}h}Ab}00`````{f{{f{c}}}{}}{{{f{b}}}{{f{bc}}}{}}{cc{}}{{}c{}}7650","D":"Eh","p":[[0,"mut"],[5,"QuantumSim",0],[1,"reference"],[1,"usize"],[8,"Complex64",64],[8,"Array2",65],[1,"slice"],[6,"Option",66],[1,"unit"],[1,"u32"],[5,"String",67],[6,"Pauli",51],[1,"f64"],[5,"BigUint",68],[1,"tuple"],[5,"Vec",69],[1,"bool"],[5,"StdRng",70],[1,"u64"],[6,"Result",71],[5,"TypeId",72]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABQABwACAAAABQABAAgAAAAKAAAALAAEADQABgA9AAMA"}],["runner",{"t":"FPSSFGFFPPPHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHCCNNCHNNNOCNNNCCHCCHHHCHHCHHHOOCNNNCNNFHHHHHHHNNNNNNNNNNNNNHHHHHHHHHHHHHHHHHHHHHFHHHHHHHHHNNNNNNNNNNNNHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHSSFHHHHHHNNNNNNNCNHHNNNNNNNHHHHHHHHHFNNONNHHOONNNNHHHHHHHHHHHHHHHHHHHH","n":["Callable","I","LINE_ENDING","OUTPUT","OutputRecorder","Pauli","QirArray","Range","X","Y","Z","__quantum__qis__arccos__body","__quantum__qis__arcsin__body","__quantum__qis__arctan2__body","__quantum__qis__arctan__body","__quantum__qis__assertmeasurementprobability__body","__quantum__qis__assertmeasurementprobability__ctl","__quantum__qis__ccx__body","__quantum__qis__cnot__body","__quantum__qis__cos__body","__quantum__qis__cosh__body","__quantum__qis__cx__body","__quantum__qis__cy__body","__quantum__qis__cz__body","__quantum__qis__drawrandomdouble__body","__quantum__qis__drawrandomint__body","__quantum__qis__dumpmachine__body","__quantum__qis__exp__adj","__quantum__qis__exp__body","__quantum__qis__exp__ctl","__quantum__qis__exp__ctladj","__quantum__qis__h__body","__quantum__qis__h__ctl","__quantum__qis__ieeeremainder__body","__quantum__qis__infinity__body","__quantum__qis__isinf__body","__quantum__qis__isnan__body","__quantum__qis__isnegativeinfinity__body","__quantum__qis__log__body","__quantum__qis__m__body","__quantum__qis__measure__body","__quantum__qis__mresetz__body","__quantum__qis__mz__body","__quantum__qis__nan__body","__quantum__qis__r__adj","__quantum__qis__r__body","__quantum__qis__r__ctl","__quantum__qis__r__ctladj","__quantum__qis__read_result__body","__quantum__qis__reset__body","__quantum__qis__rx__body","__quantum__qis__rx__ctl","__quantum__qis__rxx__body","__quantum__qis__ry__body","__quantum__qis__ry__ctl","__quantum__qis__ryy__body","__quantum__qis__rz__body","__quantum__qis__rz__ctl","__quantum__qis__rzz__body","__quantum__qis__s__adj","__quantum__qis__s__body","__quantum__qis__s__ctl","__quantum__qis__s__ctladj","__quantum__qis__sin__body","__quantum__qis__sinh__body","__quantum__qis__sqrt__body","__quantum__qis__swap__body","__quantum__qis__t__adj","__quantum__qis__t__body","__quantum__qis__t__ctl","__quantum__qis__t__ctladj","__quantum__qis__tan__body","__quantum__qis__tanh__body","__quantum__qis__x__body","__quantum__qis__x__ctl","__quantum__qis__y__body","__quantum__qis__y__ctl","__quantum__qis__z__body","__quantum__qis__z__ctl","__quantum__rt__array_concatenate","__quantum__rt__array_copy","__quantum__rt__array_create_1d","__quantum__rt__array_get_element_ptr_1d","__quantum__rt__array_get_size_1d","__quantum__rt__array_record_output","__quantum__rt__array_update_alias_count","__quantum__rt__array_update_reference_count","__quantum__rt__bigint_add","__quantum__rt__bigint_bitand","__quantum__rt__bigint_bitnot","__quantum__rt__bigint_bitor","__quantum__rt__bigint_bitxor","__quantum__rt__bigint_create_array","__quantum__rt__bigint_create_i64","__quantum__rt__bigint_divide","__quantum__rt__bigint_equal","__quantum__rt__bigint_get_data","__quantum__rt__bigint_get_length","__quantum__rt__bigint_greater","__quantum__rt__bigint_greater_eq","__quantum__rt__bigint_modulus","__quantum__rt__bigint_multiply","__quantum__rt__bigint_negate","__quantum__rt__bigint_power","__quantum__rt__bigint_shiftleft","__quantum__rt__bigint_shiftright","__quantum__rt__bigint_subtract","__quantum__rt__bigint_to_string","__quantum__rt__bigint_update_reference_count","__quantum__rt__bool_record_output","__quantum__rt__bool_to_string","__quantum__rt__callable_copy","__quantum__rt__callable_create","__quantum__rt__callable_invoke","__quantum__rt__callable_make_adjoint","__quantum__rt__callable_make_controlled","__quantum__rt__callable_update_alias_count","__quantum__rt__callable_update_reference_count","__quantum__rt__capture_update_alias_count","__quantum__rt__capture_update_reference_count","__quantum__rt__double_record_output","__quantum__rt__double_to_string","__quantum__rt__fail","__quantum__rt__initialize","__quantum__rt__int_record_output","__quantum__rt__int_to_string","__quantum__rt__memory_allocate","__quantum__rt__message","__quantum__rt__message_record_output","__quantum__rt__pauli_to_string","__quantum__rt__qubit_allocate","__quantum__rt__qubit_allocate_array","__quantum__rt__qubit_release","__quantum__rt__qubit_release_array","__quantum__rt__qubit_to_string","__quantum__rt__result_equal","__quantum__rt__result_get_one","__quantum__rt__result_get_zero","__quantum__rt__result_record_output","__quantum__rt__result_to_string","__quantum__rt__result_update_reference_count","__quantum__rt__string_concatenate","__quantum__rt__string_create","__quantum__rt__string_equal","__quantum__rt__string_get_data","__quantum__rt__string_get_length","__quantum__rt__string_update_reference_count","__quantum__rt__tuple_copy","__quantum__rt__tuple_create","__quantum__rt__tuple_record_output","__quantum__rt__tuple_update_alias_count","__quantum__rt__tuple_update_reference_count","arrays","bigints","borrow","borrow_mut","callables","capture_quantum_state","clone","clone_into","clone_to_uninit","end","exp","fmt","from","into","legacy","legacy_output","main","math","output_recording","quantum__rt__array_slice_1d","quantum__rt__range_to_string","qubit_is_zero","range_support","record_output","record_output_str","result_bool","run_bitcode","run_file","set_rng_seed","start","step","strings","to_owned","try_from","try_into","tuples","type_id","vzip","QirArray","__quantum__rt__array_concatenate","__quantum__rt__array_copy","__quantum__rt__array_create_1d","__quantum__rt__array_get_element_ptr_1d","__quantum__rt__array_get_size_1d","__quantum__rt__array_update_alias_count","__quantum__rt__array_update_reference_count","borrow","borrow_mut","clone","clone_into","clone_to_uninit","fmt","from","into","to_owned","try_from","try_into","type_id","vzip","__quantum__rt__bigint_add","__quantum__rt__bigint_bitand","__quantum__rt__bigint_bitnot","__quantum__rt__bigint_bitor","__quantum__rt__bigint_bitxor","__quantum__rt__bigint_create_array","__quantum__rt__bigint_create_i64","__quantum__rt__bigint_divide","__quantum__rt__bigint_equal","__quantum__rt__bigint_get_data","__quantum__rt__bigint_get_length","__quantum__rt__bigint_greater","__quantum__rt__bigint_greater_eq","__quantum__rt__bigint_modulus","__quantum__rt__bigint_multiply","__quantum__rt__bigint_negate","__quantum__rt__bigint_power","__quantum__rt__bigint_shiftleft","__quantum__rt__bigint_shiftright","__quantum__rt__bigint_subtract","__quantum__rt__bigint_update_reference_count","Callable","__quantum__rt__callable_copy","__quantum__rt__callable_create","__quantum__rt__callable_invoke","__quantum__rt__callable_make_adjoint","__quantum__rt__callable_make_controlled","__quantum__rt__callable_update_alias_count","__quantum__rt__callable_update_reference_count","__quantum__rt__capture_update_alias_count","__quantum__rt__capture_update_reference_count","borrow","borrow_mut","clone","clone_into","clone_to_uninit","from","into","to_owned","try_from","try_into","type_id","vzip","__quantum__qis__exp__adj","__quantum__qis__exp__body","__quantum__qis__exp__ctl","__quantum__qis__exp__ctladj","__quantum__rt__array_end_record_output","__quantum__rt__array_record_output","__quantum__rt__array_start_record_output","__quantum__rt__bool_record_output","__quantum__rt__double_record_output","__quantum__rt__int_record_output","__quantum__rt__tuple_end_record_output","__quantum__rt__tuple_record_output","__quantum__rt__tuple_start_record_output","__quantum__rt__result_record_output","__quantum__qis__arccos__body","__quantum__qis__arcsin__body","__quantum__qis__arctan2__body","__quantum__qis__arctan__body","__quantum__qis__cos__body","__quantum__qis__cosh__body","__quantum__qis__drawrandomdouble__body","__quantum__qis__drawrandomint__body","__quantum__qis__ieeeremainder__body","__quantum__qis__infinity__body","__quantum__qis__isinf__body","__quantum__qis__isnan__body","__quantum__qis__isnegativeinfinity__body","__quantum__qis__log__body","__quantum__qis__nan__body","__quantum__qis__sin__body","__quantum__qis__sinh__body","__quantum__qis__sqrt__body","__quantum__qis__tan__body","__quantum__qis__tanh__body","LINE_ENDING","OUTPUT","OutputRecorder","__quantum__rt__array_record_output","__quantum__rt__bool_record_output","__quantum__rt__double_record_output","__quantum__rt__int_record_output","__quantum__rt__message_record_output","__quantum__rt__tuple_record_output","borrow","borrow_mut","default","drain","flush","from","into","legacy","read","record_output","record_output_str","try_from","try_into","type_id","use_std_out","vzip","write","write_newline","__quantum__rt__array_end_record_output","__quantum__rt__array_record_output","__quantum__rt__array_start_record_output","__quantum__rt__bool_record_output","__quantum__rt__double_record_output","__quantum__rt__int_record_output","__quantum__rt__tuple_end_record_output","__quantum__rt__tuple_record_output","__quantum__rt__tuple_start_record_output","Range","borrow","borrow_mut","end","from","into","quantum__rt__array_slice_1d","quantum__rt__range_to_string","start","step","try_from","try_into","type_id","vzip","__quantum__rt__result_equal","__quantum__rt__result_get_one","__quantum__rt__result_get_zero","__quantum__rt__result_to_string","__quantum__rt__result_update_reference_count","__quantum__rt__bigint_to_string","__quantum__rt__bool_to_string","__quantum__rt__double_to_string","__quantum__rt__int_to_string","__quantum__rt__pauli_to_string","__quantum__rt__string_concatenate","__quantum__rt__string_create","__quantum__rt__string_equal","__quantum__rt__string_get_data","__quantum__rt__string_get_length","__quantum__rt__string_update_reference_count","__quantum__rt__tuple_copy","__quantum__rt__tuple_create","__quantum__rt__tuple_update_alias_count","__quantum__rt__tuple_update_reference_count"],"q":[[0,"runner"],[190,"runner::arrays"],[211,"runner::bigints"],[232,"runner::callables"],[254,"runner::exp"],[258,"runner::legacy"],[267,"runner::legacy_output"],[268,"runner::math"],[288,"runner::output_recording"],[315,"runner::output_recording::legacy"],[324,"runner::range_support"],[338,"runner::result_bool"],[343,"runner::strings"],[354,"runner::tuples"],[358,"qir_stdlib::arrays"],[359,"core::ffi"],[360,"alloc::ffi::c_str"],[361,"alloc::vec"],[362,"qir_stdlib"],[363,"num_bigint::bigint"],[364,"qir_stdlib::callables"],[365,"num_bigint::biguint"],[366,"num_complex"],[367,"core::fmt"],[368,"core::result"],[369,"core::option"],[370,"alloc::string"],[371,"std::ffi::os_str"],[372,"core::convert"],[373,"core::clone"],[374,"core::iter::traits::collect"],[375,"qir_stdlib::range_support"],[376,"std::io::error"],[377,"std::io"],[378,"std::path"],[379,"core::any"],[380,"qir_stdlib::output_recording"],[381,"alloc::vec::drain"],[382,"qir_stdlib::math"],[383,"qir_backend"],[384,"qir_backend::exp"],[385,"qir_stdlib::bigints"],[386,"qir_stdlib::strings"],[387,"qir_backend::result_bool"],[388,"qir_stdlib::tuples"],[389,"runner::cli"],[390,"qir_stdlib::output_recording::legacy"],[391,"qir_backend::legacy_output"]],"i":"`Ab``````000```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````00``000Db`111```````````````00`111`11````````d000000000000```````````````````````````````B`00000000000```````````````````````````````````````````Ed000000`0``0000000``````````33333``333333````````````````````","f":"```````````{bb}0{{bb}b}1{{ddfbhb}j}{{dl}j}{{fff}j}{{ff}j}550004{{nn}n}{fj}{{dbd}j}0551{{df}j}8{{}b}{bA`}00;{ff}{{dd}f}883{{Abbf}j}0;;{fA`}8{{bf}j}={{bff}j}1>01>0::88{bb}00=;;9900;9;9;9{{dd}d}{{dA`}d}{{AdAf}d}{{dAf}Ah}{dAf}{{nAh}j}{{dAj}j}0{{AlAl}Al}0{AlAl}11{{AdAn}Al}{nAl}3{{AlAl}A`}{AlAn}{AlAd}22665{{AlAd}Al}{{AlAf}Al}08{Alh}{{AlAj}j}{{A`Ah}j}{A`h}{{B`A`}B`}{{AnAnAn}B`}{{B`AnAn}j}{B`j}0{{B`Aj}j}000{{bAh}j}{bh}{hj}{Ahj}{{nAh}j}{nh}{AfAn}44{Abh}{{}f}{Afd}{fj}{dj}{fh}{{ff}A`}55{{fAh}j}2{{fAj}j}{{hh}h}{Ahh}{{hh}A`}{hAh}{hAd}{{hAj}j}{{lA`}l}{Afl}{{nAh}j}{{lAj}j}0``{Bb{{Bb{c}}}{}}{{{Bb{Bd}}}{{Bb{Bdc}}}{}}`{{}{{Bj{{l{{Bj{Bf{Bh{b}}}}}}Bl}}}}{{{Bb{Ab}}}Ab}{{Bb{Bb{Bdc}}}j{}}{Bbj}``{{{Bb{Ab}}{Bb{BdBn}}}{{Cb{jC`}}}}{cc{}}{{}c{}}``{{{Cd{e}}}{{Cb{jCf}}}{{Cj{Ch}}Cl}{{D`{}{{Cn{c}}}}}}``{{dDb}d}{Dbh}{fA`}`{{{Bb{Dd}}{Bb{Df}}Ah}{{Cb{jDh}}}}{{{Bb{Dd}}}{{Cb{jDh}}}}`{{{Bb{{Dj{An}}}}{Cd{{Bb{Dd}}}}Ad{Bb{Bdc}}}{{Cb{jCf}}}Dl}{{c{Cd{{Bb{Dd}}}}Ad{Cd{Af}}{Bb{Bde}}}{{Cb{jCf}}}{{E`{Dn}}}Dl}{Afj}```{Bbc{}}{c{{Cb{e}}}{}{}}{{}{{Cb{c}}}{}}`{BbEb}=`{{dd}d}{{dA`}d}{{AdAf}d}{{dAf}Ah}{dAf}{{dAj}j}0{Bb{{Bb{c}}}{}}{{{Bb{Bd}}}{{Bb{Bdc}}}{}}{{{Bb{d}}}d}{{Bb{Bb{Bdc}}}j{}}{Bbj}{{{Bb{d}}{Bb{BdBn}}}{{Cb{jC`}}}}{cc{}}{{}c{}}{Bbc{}}{c{{Cb{e}}}{}{}}{{}{{Cb{c}}}{}}{BbEb}4{{AlAl}Al}0{AlAl}11{{AdAn}Al}{nAl}3{{AlAl}A`}{AlAn}{AlAd}22665{{AlAd}Al}{{AlAf}Al}08{{AlAj}j}`{{B`A`}B`}{{AnAnAn}B`}{{B`AnAn}j}{B`j}0{{B`Aj}j}000{Bb{{Bb{c}}}{}}{{{Bb{Bd}}}{{Bb{Bdc}}}{}}{{{Bb{B`}}}B`}{{Bb{Bb{Bdc}}}j{}}{Bbj}{cc{}}{{}c{}}{Bbc{}}{c{{Cb{e}}}{}{}}{{}{{Cb{c}}}{}}{BbEb}4{{dbd}j}0{{dl}j}0{{}j}{nj}1{A`j}{bj}2323{fj}{bb}0{{bb}b}1110{{nn}n}1{{}b}{bA`}004144444```{{nAh}j}{{A`Ah}j}{{bAh}j}2{hj}3{Bb{{Bb{c}}}{}}{{{Bb{Bd}}}{{Bb{Bdc}}}{}}{{}Ed}{{{Bb{BdEd}}}{{Ef{An}}}}{{{Bb{BdEd}}}{{Cb{jDh}}}}{cc{}}{{}c{}}`{{{Bb{BdEd}}{Bb{Bd{Dj{An}}}}}{{Cb{BlDh}}}}{{{Bb{Dd}}{Bb{Df}}Ah}{{Cb{jDh}}}}{{{Bb{Dd}}}{{Cb{jDh}}}}{c{{Cb{e}}}{}{}}{{}{{Cb{c}}}{}}{BbEb}{{{Bb{BdEd}}A`}j}7{{{Bb{BdEd}}{Bb{{Dj{An}}}}}{{Cb{BlDh}}}}{{{Bb{BdEd}}}j}{{}j}{nj}1{A`j}{bj}2323`{Bb{{Bb{c}}}{}}{{{Bb{Bd}}}{{Bb{Bdc}}}{}}`{cc{}}{{}c{}}{{dDb}d}{Dbh}``?>=2{{ff}A`}{{}f}0{fh}{{fAj}j}{Alh}{A`h}{bh}{nh}{Abh}{{hh}h}{Ahh}{{hh}A`}{hAh}{hAd}{{hAj}j}{{lA`}l}{Afl}{{lAj}j}0","D":"Kd","p":[[1,"f64"],[5,"QirArray",190,358],[6,"c_void",359],[5,"CString",360],[1,"unit"],[5,"Vec",361],[1,"i64"],[1,"bool"],[6,"Pauli",0,362],[1,"u32"],[1,"u64"],[1,"i8"],[1,"i32"],[5,"BigInt",363],[1,"u8"],[5,"Callable",232,364],[1,"reference"],[0,"mut"],[5,"BigUint",365],[5,"Complex",366],[1,"tuple"],[1,"usize"],[5,"Formatter",367],[5,"Error",367],[6,"Result",368],[6,"Option",369],[5,"String",370],[5,"OsString",371],[10,"Into",372],[10,"Clone",373],[17,"Item"],[10,"IntoIterator",374],[5,"Range",324,375],[1,"str"],[10,"Display",367],[5,"Error",376],[1,"slice"],[10,"Write",377],[5,"Path",378],[10,"AsRef",372],[5,"TypeId",379],[5,"OutputRecorder",288,380],[5,"Drain",381]],"r":[[0,364],[2,380],[3,380],[4,380],[5,362],[6,358],[7,375],[11,382],[12,382],[13,382],[14,382],[15,383],[16,383],[17,383],[18,383],[19,382],[20,382],[21,383],[22,383],[23,383],[24,382],[25,382],[26,383],[27,384],[28,384],[29,384],[30,384],[31,383],[32,383],[33,382],[34,382],[35,382],[36,382],[37,382],[38,382],[39,383],[40,383],[41,383],[42,383],[43,382],[44,383],[45,383],[46,383],[47,383],[48,383],[49,383],[50,383],[51,383],[52,383],[53,383],[54,383],[55,383],[56,383],[57,383],[58,383],[59,383],[60,383],[61,383],[62,383],[63,382],[64,382],[65,382],[66,383],[67,383],[68,383],[69,383],[70,383],[71,382],[72,382],[73,383],[74,383],[75,383],[76,383],[77,383],[78,383],[79,358],[80,358],[81,358],[82,358],[83,358],[84,380],[85,358],[86,358],[87,385],[88,385],[89,385],[90,385],[91,385],[92,385],[93,385],[94,385],[95,385],[96,385],[97,385],[98,385],[99,385],[100,385],[101,385],[102,385],[103,385],[104,385],[105,385],[106,385],[107,386],[108,385],[109,380],[110,386],[111,364],[112,364],[113,364],[114,364],[115,364],[116,364],[117,364],[118,364],[119,364],[120,380],[121,386],[122,362],[123,383],[124,380],[125,386],[126,362],[127,362],[128,380],[129,386],[130,383],[131,383],[132,383],[133,383],[134,383],[135,387],[136,387],[137,387],[138,383],[139,387],[140,387],[141,386],[142,386],[143,386],[144,386],[145,386],[146,386],[147,388],[148,388],[149,380],[150,388],[151,388],[152,362],[153,362],[156,362],[157,383],[162,383],[166,380],[167,383],[168,389],[169,362],[170,362],[171,375],[172,375],[173,383],[174,362],[175,380],[176,380],[177,383],[180,383],[183,362],[187,362],[190,358],[191,358],[192,358],[193,358],[194,358],[195,358],[196,358],[197,358],[211,385],[212,385],[213,385],[214,385],[215,385],[216,385],[217,385],[218,385],[219,385],[220,385],[221,385],[222,385],[223,385],[224,385],[225,385],[226,385],[227,385],[228,385],[229,385],[230,385],[231,385],[232,364],[233,364],[234,364],[235,364],[236,364],[237,364],[238,364],[239,364],[240,364],[241,364],[254,384],[255,384],[256,384],[257,384],[258,390],[259,390],[260,390],[261,390],[262,390],[263,390],[264,390],[265,390],[266,390],[267,391],[268,382],[269,382],[270,382],[271,382],[272,382],[273,382],[274,382],[275,382],[276,382],[277,382],[278,382],[279,382],[280,382],[281,382],[282,382],[283,382],[284,382],[285,382],[286,382],[287,382],[288,380],[289,380],[290,380],[291,380],[292,380],[293,380],[294,380],[295,380],[296,380],[304,380],[306,380],[307,380],[315,390],[316,390],[317,390],[318,390],[319,390],[320,390],[321,390],[322,390],[323,390],[324,375],[330,375],[331,375],[338,387],[339,387],[340,387],[341,387],[342,387],[343,386],[344,386],[345,386],[346,386],[347,386],[348,386],[349,386],[350,386],[351,386],[352,386],[353,386],[354,388],[355,388],[356,388],[357,388]],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAwBIAAAAAQABgAJABQAAQAZAAEAIgAFACwAAABAAAIASAABAFAABABWACUAfQAFAIgAAgCNAAgAlwAGAJ8ABQCnAAEAqgADAK8AAACyAAAAtgAWAM8AKAD6AAQAAwEfACUBAwAqAQIALgEAADEBAQA1AQIAOQEBADwBDABLAQoAVwEPAA=="}]]')); if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; else if (window.initSearch) window.initSearch(searchIndex); -//{"start":39,"fragment_lengths":[15724,251,6768,130,1843,17324]} \ No newline at end of file +//{"start":39,"fragment_lengths":[15724,251,6768,130,2001,17324]} \ No newline at end of file diff --git a/search.desc/quantum_sparse_sim/quantum_sparse_sim-desc-0-.js b/search.desc/quantum_sparse_sim/quantum_sparse_sim-desc-0-.js index f795954b..69e48cb8 100644 --- a/search.desc/quantum_sparse_sim/quantum_sparse_sim-desc-0-.js +++ b/search.desc/quantum_sparse_sim/quantum_sparse_sim-desc-0-.js @@ -1 +1 @@ -searchState.loadedDescShard("quantum_sparse_sim", 0, "Sparse State Quantum Simulator\nThe QuantumSim struct contains the necessary state for …\nAllocates a fresh qubit, returning its identifier. Note …\nPrints the current state vector to standard output with …\nExp multi-qubit rotation gate.\nReturns the argument unchanged.\nReturns a sorted copy of the current sparse state as a …\nSingle qubit H gate.\nCalls U::from(self).\nPerforms a joint measurement to get the parity of the …\nChecks the probability of parity measurement in the …\nMulti-controlled Exp multi-qubit rotation gate.\nMulti-controlled H gate.\nMulti-controlled phase rotation (“G” gate).\nMulti-controlled Rx gate.\nMulti-controlled Ry gate.\nMulti-controlled Rz gate.\nMulti-controlled S gate.\nMulti-controlled Adjoint S gate.\nMulti-controlled T gate.\nMulti-controlled Adjoint T gate.\nMulti-controlled X gate.\nMulti-controlled Y gate.\nMulti-controlled Z gate.\nMeasures the qubit with the given id, collapsing the state …\nCreates a new sparse state quantum simulator object with …\nChecks the internal state of the given qubit and returns …\nReleases the given qubit, collapsing its state in the …\nSingle qubit Rx gate.\nSingle qubit Ry gate.\nSingle qubit Rz gate.\nSingle qubit S gate.\nSingle qubit Adjoint S Gate.\nSets the seed for the random number generator used for …\nSwaps the mapped ids for the given qubits.\nSingle qubit T gate.\nSingle qubit Adjoint T gate.\nSingle qubit X gate.\nSingle qubit Y gate.\nSingle qubit Z gate.\nReturns the argument unchanged.\nCalls U::from(self).") \ No newline at end of file +searchState.loadedDescShard("quantum_sparse_sim", 0, "Sparse State Quantum Simulator\nThe QuantumSim struct contains the necessary state for …\nAllocates a fresh qubit, returning its identifier. Note …\nApplies the given unitary to the given targets, extending …\nExtends the given unitary matrix into a matrix …\nPrints the current state vector to standard output with …\nExp multi-qubit rotation gate.\nReturns the argument unchanged.\nReturns a sorted copy of the current sparse state as a …\nSingle qubit H gate.\nCalls U::from(self).\nPerforms a joint measurement to get the parity of the …\nChecks the probability of parity measurement in the …\nMulti-controlled Exp multi-qubit rotation gate.\nMulti-controlled H gate.\nMulti-controlled phase rotation (“G” gate).\nMulti-controlled Rx gate.\nMulti-controlled Ry gate.\nMulti-controlled Rz gate.\nMulti-controlled S gate.\nMulti-controlled Adjoint S gate.\nMulti-controlled T gate.\nMulti-controlled Adjoint T gate.\nMulti-controlled X gate.\nMulti-controlled Y gate.\nMulti-controlled Z gate.\nMeasures the qubit with the given id, collapsing the state …\nCreates a new sparse state quantum simulator object with …\nChecks the internal state of the given qubit and returns …\nReleases the given qubit, collapsing its state in the …\nSingle qubit Rx gate.\nSingle qubit Ry gate.\nSingle qubit Rz gate.\nSingle qubit S gate.\nSingle qubit Adjoint S Gate.\nSets the seed for the random number generator used for …\nSwaps the mapped ids for the given qubits.\nSingle qubit T gate.\nSingle qubit Adjoint T gate.\nSingle qubit X gate.\nSingle qubit Y gate.\nSingle qubit Z gate.\nReturns the argument unchanged.\nCalls U::from(self).") \ No newline at end of file diff --git a/src/quantum_sparse_sim/lib.rs.html b/src/quantum_sparse_sim/lib.rs.html index 0fce226e..60c42b26 100644 --- a/src/quantum_sparse_sim/lib.rs.html +++ b/src/quantum_sparse_sim/lib.rs.html @@ -1846,6 +1846,115 @@ 1846 1847 1848 +1849 +1850 +1851 +1852 +1853 +1854 +1855 +1856 +1857 +1858 +1859 +1860 +1861 +1862 +1863 +1864 +1865 +1866 +1867 +1868 +1869 +1870 +1871 +1872 +1873 +1874 +1875 +1876 +1877 +1878 +1879 +1880 +1881 +1882 +1883 +1884 +1885 +1886 +1887 +1888 +1889 +1890 +1891 +1892 +1893 +1894 +1895 +1896 +1897 +1898 +1899 +1900 +1901 +1902 +1903 +1904 +1905 +1906 +1907 +1908 +1909 +1910 +1911 +1912 +1913 +1914 +1915 +1916 +1917 +1918 +1919 +1920 +1921 +1922 +1923 +1924 +1925 +1926 +1927 +1928 +1929 +1930 +1931 +1932 +1933 +1934 +1935 +1936 +1937 +1938 +1939 +1940 +1941 +1942 +1943 +1944 +1945 +1946 +1947 +1948 +1949 +1950 +1951 +1952 +1953 +1954 +1955 +1956 +1957
// Copyright (c) Microsoft Corporation.
 // Licensed under the MIT License.
 
@@ -1864,9 +1973,10 @@
 mod matrix_testing;
 
 use crate::nearly_zero::NearlyZero;
+use ndarray::{s, Array2};
 use num_bigint::BigUint;
 use num_complex::Complex64;
-use num_traits::{One, Zero};
+use num_traits::{One, ToPrimitive, Zero};
 use rand::{rngs::StdRng, Rng, SeedableRng};
 use rustc_hash::{FxHashMap, FxHashSet};
 use std::{cell::RefCell, f64::consts::FRAC_1_SQRT_2, fmt::Write};
@@ -3042,6 +3152,114 @@
 
         self.mcrotation(ctls, theta, target, true);
     }
+
+    /// Applies the given unitary to the given targets, extending the unitary to accomodate controls if any.
+    /// # Panics
+    ///
+    /// This function will panic if given ids in either targets or optional controls that do not correspond to allocated
+    /// qubits, or if there is a duplicate id in targets or controls.
+    /// This funciton will panic if the given unitary matrix does not match the number of targets provided.
+    /// This function will panic if the given unitary is not square.
+    /// This function will panic if the total number of targets and controls too large for a `u32`.
+    pub fn apply(
+        &mut self,
+        unitary: &Array2<Complex64>,
+        targets: &[usize],
+        controls: Option<&[usize]>,
+    ) {
+        let mut targets = targets.to_vec();
+        let mut unitary = unitary.clone();
+
+        assert!(
+            unitary.ncols() == unitary.nrows(),
+            "Application given non-square matrix."
+        );
+
+        assert!(
+            targets.len() == unitary.ncols() / 2,
+            "Application given incorrect number of targets; expected {}, given {}.",
+            unitary.ncols() / 2,
+            targets.len()
+        );
+
+        if let Some(ctrls) = controls {
+            // Add controls in order as targets.
+            ctrls
+                .iter()
+                .enumerate()
+                .for_each(|(index, &element)| targets.insert(index, element));
+
+            // Extend the provided unitary by inserting it into an identity matrix.
+            unitary = controlled(&unitary, ctrls.len().try_into().unwrap());
+        }
+        Self::check_for_duplicates(&targets);
+
+        self.flush_queue(&targets, FlushLevel::HRxRy);
+
+        targets
+            .iter()
+            .rev()
+            .enumerate()
+            .for_each(|(target_loc, target)| {
+                let loc = *self
+                    .id_map
+                    .get(target)
+                    .unwrap_or_else(|| panic!("Unable to find qubit with id {target}"));
+                let swap_id = *self
+                    .id_map
+                    .iter()
+                    .find(|(_, &value)| value == target_loc)
+                    .unwrap()
+                    .0;
+                self.swap_qubit_state(loc, target_loc);
+                *(self.id_map.get_mut(&swap_id).unwrap()) = loc;
+                *(self.id_map.get_mut(target).unwrap()) = target_loc;
+            });
+
+        let op_size = unitary.nrows();
+        self.state = self
+            .state
+            .drain()
+            .fold(SparseState::default(), |mut accum, (index, val)| {
+                let i = &index / op_size;
+                let l = (&index % op_size)
+                    .to_usize()
+                    .expect("Cannot operate on more than 64 qubits at a time.");
+                for j in (0..op_size).filter(|j| !unitary.row(*j)[l].is_nearly_zero()) {
+                    let loc = (&i * op_size) + j;
+                    if let Some(entry) = accum.get_mut(&loc) {
+                        *entry += unitary.row(j)[l] * val;
+                    } else {
+                        accum.insert((&i * op_size) + j, unitary.row(j)[l] * val);
+                    }
+                    if accum
+                        .get(&loc)
+                        .map_or_else(|| false, |entry| (*entry).is_nearly_zero())
+                    {
+                        accum.remove(&loc);
+                    }
+                }
+                accum
+            });
+        assert!(
+            !self.state.is_empty(),
+            "State vector should never be empty."
+        );
+    }
+}
+
+/// Extends the given unitary matrix into a matrix corresponding to the same unitary with a given number of controls
+/// by inserting it into an identity matrix.
+#[must_use]
+pub fn controlled(u: &Array2<Complex64>, num_ctrls: u32) -> Array2<Complex64> {
+    let mut controlled_u = Array2::eye(u.nrows() * 2_usize.pow(num_ctrls));
+    controlled_u
+        .slice_mut(s![
+            (controlled_u.nrows() - u.nrows())..,
+            (controlled_u.ncols() - u.ncols())..
+        ])
+        .assign(u);
+    controlled_u
 }
 
 #[cfg(test)]