\ 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
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
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/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
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.
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.
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.
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.
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.
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.
\ 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 @@
184618471848
+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)]