use crate::operations::{
ImplementedIn1point11, InvolveModes, InvolveQubits, InvolvedModes, InvolvedQubits, Operate,
OperateModeGate, OperateSingleMode, OperateSingleModeGate, OperateSingleQubit, Substitute,
SubstituteModes, SupportedVersion,
};
use crate::RoqoqoError;
use qoqo_calculator::CalculatorFloat;
#[derive(
Debug,
Clone,
PartialEq,
OperateModeGate,
OperateSingleModeGate,
roqoqo_derive::Operate,
roqoqo_derive::OperateSingleQubit,
roqoqo_derive::InvolveQubits,
roqoqo_derive::Substitute,
roqoqo_derive::OperateSingleMode,
roqoqo_derive::InvolveModes,
roqoqo_derive::SubstituteModes,
)]
#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))]
pub struct QuantumRabi {
qubit: usize,
mode: usize,
theta: CalculatorFloat,
}
#[allow(non_upper_case_globals)]
const TAGS_QuantumRabi: &[&str; 6] = &[
"Operation",
"GateOperation",
"ModeGateOperation",
"SingleModeGateOperation",
"SingleQubitGateOperation",
"QuantumRabi",
];
impl ImplementedIn1point11 for QuantumRabi {}
impl SupportedVersion for QuantumRabi {
fn minimum_supported_roqoqo_version(&self) -> (u32, u32, u32) {
(1, 11, 0)
}
}
#[derive(
Debug,
Clone,
PartialEq,
OperateModeGate,
OperateSingleModeGate,
roqoqo_derive::Operate,
roqoqo_derive::OperateSingleQubit,
roqoqo_derive::InvolveQubits,
roqoqo_derive::Substitute,
roqoqo_derive::OperateSingleMode,
roqoqo_derive::InvolveModes,
roqoqo_derive::SubstituteModes,
)]
#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))]
pub struct LongitudinalCoupling {
qubit: usize,
mode: usize,
theta: CalculatorFloat,
}
#[allow(non_upper_case_globals)]
const TAGS_LongitudinalCoupling: &[&str; 6] = &[
"Operation",
"GateOperation",
"ModeGateOperation",
"SingleModeGateOperation",
"SingleQubitGateOperation",
"LongitudinalCoupling",
];
impl ImplementedIn1point11 for LongitudinalCoupling {}
impl SupportedVersion for LongitudinalCoupling {
fn minimum_supported_roqoqo_version(&self) -> (u32, u32, u32) {
(1, 11, 0)
}
}
#[derive(
Debug,
Clone,
PartialEq,
OperateModeGate,
OperateSingleModeGate,
roqoqo_derive::Operate,
roqoqo_derive::OperateSingleQubit,
roqoqo_derive::InvolveQubits,
roqoqo_derive::Substitute,
roqoqo_derive::OperateSingleMode,
roqoqo_derive::InvolveModes,
roqoqo_derive::SubstituteModes,
)]
#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))]
pub struct JaynesCummings {
qubit: usize,
mode: usize,
theta: CalculatorFloat,
}
#[allow(non_upper_case_globals)]
const TAGS_JaynesCummings: &[&str; 6] = &[
"Operation",
"GateOperation",
"ModeGateOperation",
"SingleModeGateOperation",
"SingleQubitGateOperation",
"JaynesCummings",
];
impl ImplementedIn1point11 for JaynesCummings {}
impl SupportedVersion for JaynesCummings {
fn minimum_supported_roqoqo_version(&self) -> (u32, u32, u32) {
(1, 11, 0)
}
}
#[derive(
Debug,
Clone,
PartialEq,
OperateModeGate,
OperateSingleModeGate,
roqoqo_derive::Operate,
roqoqo_derive::OperateSingleQubit,
roqoqo_derive::InvolveQubits,
roqoqo_derive::Substitute,
roqoqo_derive::OperateSingleMode,
roqoqo_derive::InvolveModes,
roqoqo_derive::SubstituteModes,
)]
#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))]
pub struct SingleExcitationStore {
qubit: usize,
mode: usize,
}
#[allow(non_upper_case_globals)]
const TAGS_SingleExcitationStore: &[&str; 6] = &[
"Operation",
"GateOperation",
"ModeGateOperation",
"SingleModeGateOperation",
"SingleQubitGateOperation",
"SingleExcitationStore",
];
impl ImplementedIn1point11 for SingleExcitationStore {}
impl SupportedVersion for SingleExcitationStore {
fn minimum_supported_roqoqo_version(&self) -> (u32, u32, u32) {
(1, 11, 0)
}
}
#[derive(
Debug,
Clone,
PartialEq,
OperateModeGate,
OperateSingleModeGate,
roqoqo_derive::Operate,
roqoqo_derive::OperateSingleQubit,
roqoqo_derive::InvolveQubits,
roqoqo_derive::Substitute,
roqoqo_derive::OperateSingleMode,
roqoqo_derive::InvolveModes,
roqoqo_derive::SubstituteModes,
)]
#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))]
pub struct SingleExcitationLoad {
qubit: usize,
mode: usize,
}
#[allow(non_upper_case_globals)]
const TAGS_SingleExcitationLoad: &[&str; 6] = &[
"Operation",
"GateOperation",
"ModeGateOperation",
"SingleModeGateOperation",
"SingleQubitGateOperation",
"SingleExcitationLoad",
];
impl ImplementedIn1point11 for SingleExcitationLoad {}
impl SupportedVersion for SingleExcitationLoad {
fn minimum_supported_roqoqo_version(&self) -> (u32, u32, u32) {
(1, 11, 0)
}
}
#[derive(
Debug,
Clone,
PartialEq,
OperateModeGate,
OperateSingleModeGate,
roqoqo_derive::Operate,
roqoqo_derive::OperateSingleQubit,
roqoqo_derive::InvolveQubits,
roqoqo_derive::Substitute,
roqoqo_derive::OperateSingleMode,
roqoqo_derive::InvolveModes,
roqoqo_derive::SubstituteModes,
)]
#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))]
pub struct CZQubitResonator {
qubit: usize,
mode: usize,
}
#[allow(non_upper_case_globals)]
const TAGS_CZQubitResonator: &[&str; 6] = &[
"Operation",
"GateOperation",
"ModeGateOperation",
"SingleModeGateOperation",
"SingleQubitGateOperation",
"CZQubitResonator",
];
impl ImplementedIn1point11 for CZQubitResonator {}
impl SupportedVersion for CZQubitResonator {
fn minimum_supported_roqoqo_version(&self) -> (u32, u32, u32) {
(1, 11, 0)
}
}