27namespace GreedyPauliSimp {
32 :
std::logic_error(message) {}
95 return std::tie(
type,
a,
b) < std::tie(other.
type, other.
a, other.
b);
133 virtual void update(
const OpType& sq_cliff,
const unsigned& a);
134 virtual void swap(
const unsigned& a,
const unsigned& b);
248 void update(
const OpType& sq_cliff,
const unsigned& a)
override;
256 void swap(
const unsigned& a,
const unsigned& b)
override;
376 std::vector<std::tuple<std::vector<Pauli>,
bool,
Expr>>
rotations,
459 const unsigned qubit_index_;
487typedef boost::adjacency_list<
488 boost::listS, boost::listS, boost::bidirectionalS,
490 boost::property<boost::vertex_index_t, int, PauliNode_ptr>>
493typedef boost::graph_traits<GPDAG>::vertex_descriptor
GPVert;
494typedef boost::graph_traits<GPDAG>::edge_descriptor
GPEdge;
499typedef boost::adj_list_vertex_property_map<
500 GPDAG, int,
int&, boost::vertex_index_t>
545 std::vector<std::vector<PauliNode_ptr>>, std::vector<PauliNode_ptr>,
546 boost::bimap<unsigned, unsigned>>
547 get_sequence(std::shared_ptr<std::atomic<bool>> stop_flag);
557 const Command& cmd,
bool conditional =
false,
558 std::vector<unsigned> cond_bits = {},
unsigned cond_value = 0);
566 void apply_paulis_at_end(
567 const std::vector<std::pair<std::vector<Pauli>,
Expr>>& rotations,
569 std::vector<unsigned> cond_bits = {},
unsigned cond_value = 0);
582 mutable GPDAG graph_;
583 const unsigned n_qubits_;
584 const unsigned n_bits_;
589 boost::bimap<unsigned, unsigned> end_measures_;
602std::tuple<std::vector<PauliNode_ptr>, std::vector<PauliNode_ptr>>
623 const Circuit& circ, std::atomic<bool>& stop_flag,
624 double discount_rate = 0.7,
double depth_weight = 0.3,
625 unsigned max_lookahead = 500,
unsigned max_tqe_candidates = 500,
626 unsigned seed = 0,
bool allow_zzphase =
false);
644 const Circuit& circ,
double discount_rate = 0.7,
double depth_weight = 0.3,
645 unsigned max_lookahead = 500,
unsigned max_tqe_candidates = 500,
646 unsigned seed = 0,
bool allow_zzphase =
false);
662 const std::vector<SymPauliTensor>& unordered_set,
double depth_weight = 0.3,
663 unsigned max_lookahead = 500,
unsigned max_tqe_candidates = 500,
664 unsigned seed = 0,
bool allow_zzphase =
false);
669 double discount_rate = 0.7,
double depth_weight = 0.3,
670 unsigned max_lookahead = 500,
unsigned max_tqe_candidates = 500,
671 unsigned seed = 0,
bool allow_zzphase =
false,
672 unsigned thread_timeout = 100,
unsigned trials = 1);
Defines tket::DeviceCharacterisation, used in NoiseAwarePlacement and in commute_SQ_gates_through_SWA...
OpType
Named operation types.
Pauli
Symbols for the Pauli operators (and identity)
boost::multi_index::multi_index_container< T, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag< TagKey >, boost::multi_index::identity< T > >, boost::multi_index::sequenced< boost::multi_index::tag< TagSeq > > > > sequence_set_t
SymEngine::Expression Expr
Representation of a phase as a multiple of .
std::shared_ptr< const Op > Op_ptr
std::vector< Bit > bit_vector_t
std::vector< Qubit > qubit_vector_t