1#[derive(Debug, thiserror::Error, Clone, PartialEq)]
2pub enum Error {
3 #[error("Invalid number of measurements: {0}")]
9 InvalidNumberOfMeasurements(usize),
10
11 #[error("Control qubit index {0} overlaps with target qubit index {1}")]
19 OverlappingControlAndTargetQubits(usize, usize),
20
21 #[error("Invalid number of qubits: {0}")]
27 InvalidNumberOfQubits(usize),
28
29 #[error("Invalid qubit index: {0} for {1} qubits")]
36 InvalidQubitIndex(usize, usize),
37
38 #[error("State vector is not normalised")]
40 StateVectorNotNormalised,
41
42 #[error("Non-unitary matrix")]
44 NonUnitaryMatrix,
45
46 #[error("Unexpected number of inputs: expected {1}, got {0}")]
53 InvalidNumberOfInputs(usize, usize),
54
55 #[error("Mismatched number of parameters: expected {expected}, got {actual}")]
62 MismatchedNumberOfParameters { expected: usize, actual: usize },
63
64 #[error("An unknown error occurred")]
66 UnknownError,
67
68 #[error("OpenCL error: {0}")]
74 OpenCLError(String),
75
76 #[error("Failed to lock GPU context")]
78 GpuContextLockError,
79
80 #[error("Failed to create circuit from macro: {0}")]
82 CircuitMacroError(String),
83}
84
85#[derive(Debug, thiserror::Error, Clone, PartialEq)]
86pub enum CompilerError {
87 #[error("I/O error: {0}")]
88 IOError(String),
89
90 #[error("An unsupported operation was encountered: {0}")]
91 UnsupportedOperator(String),
92
93 #[error("Invalid operands ({0}) for operator {1}")]
94 InvalidOperands(String, String),
95}
96
97#[cfg(feature = "gpu")]
98impl From<ocl::Error> for Error {
99 fn from(err: ocl::Error) -> Self {
100 Error::OpenCLError(err.to_string())
101 }
102}