aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-09-06 19:12:05 +0200
committerhachem <im@hachem.wtf>2026-09-06 19:12:05 +0200
commitb2a5d3d5a2faac05b1b722d96d11d9b191c7cffc (patch)
treeac7712ead7cea6e9b90de62b2520d04d98ce6c42 /include
parentab08fa6065b5b08627b51203eb92ef65ed7b5ea2 (diff)
add: quantum bit and register with gate application
Diffstat (limited to 'include')
-rw-r--r--include/core/quantum_components.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/include/core/quantum_components.h b/include/core/quantum_components.h
index b0acabc..b238b5a 100644
--- a/include/core/quantum_components.h
+++ b/include/core/quantum_components.h
@@ -18,3 +18,26 @@ struct PsiQuantumGate
struct PsiQuantumGate psi_new_quantum_gate(const char *name, struct PsiMatrix matrix, size_t num_qubits);
struct PsiQuantumGate psi_new_quantum_gate_from_matrix(const char *name, struct PsiMatrix matrix);
void psi_free_quantum_gate(struct PsiQuantumGate *gate);
+
+struct PsiQuantumBit
+{
+ const char *name;
+ struct PsiVector state;
+};
+
+struct PsiQuantumBit psi_new_quantum_bit(const char *name, struct PsiVector state);
+void psi_free_quantum_bit(struct PsiQuantumBit *bit);
+
+struct PsiQuantumRegister
+{
+ const char *name;
+ struct PsiVector state_vector;
+ struct PsiQuantumBit *qubits;
+ size_t num_qubits;
+};
+
+struct PsiQuantumRegister psi_new_quantum_register(const char *name, const char **names, size_t count);
+struct PsiQuantumRegister psi_new_quantum_register_from(const char *name, const struct PsiQuantumBit *bits, size_t count);
+void psi_free_quantum_register(struct PsiQuantumRegister *reg);
+
+void psi_apply_gate(struct PsiQuantumRegister *reg, struct PsiQuantumGate gate, const size_t *targets, size_t target_count);