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("An unknown error occurred")]
57 UnknownError,
58
59 #[error("OpenCL error: {0}")]
65 OpenCLError(String),
66
67 #[error("Failed to lock GPU context")]
69 GpuContextLockError,
70
71 #[error("Failed to create circuit from macro: {0}")]
73 CircuitMacroError(String),
74}
75
76#[derive(Debug, thiserror::Error, Clone, PartialEq)]
77pub enum CompilerError {
78 #[error("I/O error: {0}")]
79 IOError(String),
80
81 #[error("An unsupported operation was encountered: {0}")]
82 UnsupportedOperator(String),
83
84 #[error("Invalid operands ({0}) for operator {1}")]
85 InvalidOperands(String, String),
86}
87
88#[cfg(feature = "gpu")]
89impl From<ocl::Error> for Error {
90 fn from(err: ocl::Error) -> Self {
91 Error::OpenCLError(err.to_string())
92 }
93}