Program Listing for File gate_factory.hpp¶
↰ Return to documentation for file (/home/docs/checkouts/readthedocs.org/user_builds/qulacs-rtd/checkouts/v0.6.9/src/cppsim/gate_factory.hpp
)
#pragma once
#include <string>
#include <vector>
#include "gate.hpp"
#include "gate_general.hpp"
#include "gate_matrix_diagonal.hpp"
#include "gate_matrix_sparse.hpp"
#include "gate_named_npair.hpp"
#include "gate_named_one.hpp"
#include "gate_named_two.hpp"
#include "gate_noisy_evolution.hpp"
#include "gate_reflect.hpp"
#include "gate_reversible.hpp"
#include "observable.hpp"
#include "type.hpp"
namespace gate {
DllExport QuantumGateBase* create_quantum_gate_from_string(
std::string gate_string);
DllExport ClsOneQubitGate* Identity(UINT qubit_index);
DllExport ClsOneQubitGate* X(UINT qubit_index);
DllExport ClsOneQubitGate* Y(UINT qubit_index);
DllExport ClsOneQubitGate* Z(UINT qubit_index);
DllExport ClsOneQubitGate* H(UINT qubit_index);
DllExport ClsOneQubitGate* S(UINT qubit_index);
DllExport ClsOneQubitGate* Sdag(UINT qubit_index);
DllExport ClsOneQubitGate* T(UINT qubit_index);
DllExport ClsOneQubitGate* Tdag(UINT qubit_index);
DllExport ClsOneQubitGate* sqrtX(UINT qubit_index);
DllExport ClsOneQubitGate* sqrtXdag(UINT qubit_index);
DllExport ClsOneQubitGate* sqrtY(UINT qubit_index);
DllExport ClsOneQubitGate* sqrtYdag(UINT qubit_index);
DllExport ClsOneQubitGate* P0(UINT qubit_index);
DllExport ClsOneQubitGate* P1(UINT qubit_index);
DllExport QuantumGateMatrix* U1(UINT qubit_index, double lambda);
DllExport QuantumGateMatrix* U2(UINT qubit_index, double phi, double lambda);
DllExport QuantumGateMatrix* U3(
UINT qubit_index, double theta, double phi, double lambda);
DllExport ClsOneQubitRotationGate* RX(UINT qubit_index, double angle);
DllExport ClsOneQubitRotationGate* RY(UINT qubit_index, double angle);
DllExport ClsOneQubitRotationGate* RZ(UINT qubit_index, double angle);
DllExport ClsOneQubitRotationGate* RotInvX(UINT qubit_index, double angle);
DllExport ClsOneQubitRotationGate* RotInvY(UINT qubit_index, double angle);
DllExport ClsOneQubitRotationGate* RotInvZ(UINT qubit_index, double angle);
DllExport ClsOneQubitRotationGate* RotX(UINT qubit_index, double angle);
DllExport ClsOneQubitRotationGate* RotY(UINT qubit_index, double angle);
DllExport ClsOneQubitRotationGate* RotZ(UINT qubit_index, double angle);
DllExport ClsOneControlOneTargetGate* CNOT(
UINT control_qubit_index, UINT target_qubit_index);
DllExport ClsOneControlOneTargetGate* CZ(
UINT control_qubit_index, UINT target_qubit_index);
DllExport ClsTwoQubitGate* SWAP(UINT qubit_index1, UINT qubit_index2);
DllExport ClsNpairQubitGate* FusedSWAP(
UINT qubit_index1, UINT qubit_index2, UINT block_size);
DllExport ClsPauliGate* Pauli(
std::vector<UINT> target_qubit_index_list, std::vector<UINT> pauli_id_list);
DllExport ClsPauliRotationGate* PauliRotation(
std::vector<UINT> target_qubit_index_list, std::vector<UINT> pauli_id_list,
double angle);
DllExport QuantumGateMatrix* DenseMatrix(
UINT target_qubit_index, ComplexMatrix matrix);
DllExport QuantumGateMatrix* DenseMatrix(
std::vector<UINT> target_qubit_index_list, ComplexMatrix matrix);
DllExport QuantumGateSparseMatrix* SparseMatrix(
std::vector<UINT> target_qubit_index_list, SparseComplexMatrix matrix);
DllExport QuantumGateDiagonalMatrix* DiagonalMatrix(
std::vector<UINT> target_qubit_index_list, ComplexVector diagonal_element);
DllExport QuantumGateMatrix* RandomUnitary(
std::vector<UINT> target_qubit_index_list);
DllExport QuantumGateMatrix* RandomUnitary(
std::vector<UINT> target_qubit_index_list, UINT seed);
DllExport ClsReversibleBooleanGate* ReversibleBoolean(
std::vector<UINT> target_qubit_index_list,
std::function<ITYPE(ITYPE, ITYPE)>);
DllExport ClsStateReflectionGate* StateReflection(
const QuantumState* reflection_state);
DllExport QuantumGate_Probabilistic* BitFlipNoise(
UINT target_index, double prob);
DllExport QuantumGate_Probabilistic* DephasingNoise(
UINT target_index, double prob);
DllExport QuantumGate_Probabilistic* IndependentXZNoise(
UINT target_index, double prob);
DllExport QuantumGate_Probabilistic* DepolarizingNoise(
UINT target_index, double prob);
DllExport QuantumGate_Probabilistic* TwoQubitDepolarizingNoise(
UINT target_index1, UINT target_index2, double prob);
DllExport QuantumGate_CPTP* AmplitudeDampingNoise(
UINT target_index, double prob);
DllExport QuantumGate_Instrument* Measurement(
UINT target_index, UINT classical_register_address);
DllExport ClsNoisyEvolution* NoisyEvolution(Observable* hamiltonian,
std::vector<GeneralQuantumOperator*> c_ops, double time, double dt = 1e-6);
DllExport ClsNoisyEvolution_fast* NoisyEvolution_fast(Observable* hamiltonian,
std::vector<GeneralQuantumOperator*> c_ops, double time);
DllExport ClsNoisyEvolution_auto* NoisyEvolution_auto(Observable* hamiltonian,
std::vector<GeneralQuantumOperator*> c_ops, double time);
DllExport QuantumGateBase* from_ptree(const boost::property_tree::ptree& pt);
} // namespace gate