// // Copyright (c) 2026 BEL ESPRIT D ACCORD TRUST HOLDINGS INC // All rights reserved. // BlackHoleEngine/Quantinuum.qs // Hardware-specific: Quantinuum H1/H2 (all-to-all, native ZZ) namespace BlackHoleEngine.Quantinuum { open Microsoft.Quantum.Intrinsic; open Microsoft.Quantum.Canon; open BlackHoleEngine.Primitives; operation QuantinuumXX(q1 : Qubit, q2 : Qubit, theta : Double) : Unit is Adj + Ctl { within { H(q1); H(q2); } apply { Exp([PauliZ, PauliZ], theta, [q1, q2]); } } operation QuantinuumHaydenPreskill( qubits : Qubit[], scrambleTime : Double, couplings : Double[][], fields : Double[] ) : Unit is Adj + Ctl { let n = Length(qubits); let dt = scrambleTime / 5.0; let steps = 5; for _ in 1..steps { for i in 0..n-1 { Rz(2.0 * fields[i] * dt, qubits[i]); } for layer in GetXXLayers(n, couplings) { for (i, j) in layer { let J = couplings[i][j]; if (AbsD(J) > 1e-10) { QuantinuumXX(qubits[i], qubits[j], 2.0 * J * dt); } } } } } operation QuantinuumLindbladStep( ancilla : Qubit, qubits : Qubit[], viol : ViolatingAssignment, gamma_dt : Double ) : Unit { let sqrt_gamma = Sqrt(gamma_dt); let theta = 2.0 * Arcsin(sqrt_gamma); Ry(theta, ancilla); let (va, vb, vc) = viol; if (va) { X(qubits[0]); } if (vb) { X(qubits[1]); } if (vc) { X(qubits[2]); } // Quantinuum has high-fidelity CCZ CCZ(ancilla, qubits[0], qubits[1]); CCZ(ancilla, qubits[0], qubits[2]); CCZ(ancilla, qubits[1], qubits[2]); if (va) { X(qubits[0]); } if (vb) { X(qubits[1]); } if (vc) { X(qubits[2]); } let outcome = M(ancilla); Reset(ancilla); } }