// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Tests Clifford equivalence of common resource states // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// namespace CorrectnessTests.TwoWayConversions { open CorrectnessTests; open Microsoft.Quantum.Canon; open Microsoft.Quantum.Intrinsic; /// # Summary /// Tests circuit for |CCZ⟩ ↔ |CCZ CS₂₃⟩ operation CCZ_to_CCZCS23_Test () : Unit { using ((qubit1, qubit2, qubit3) = (Qubit(), Qubit(), Qubit())) { PrepareCCZState(qubit1, qubit2, qubit3); SqrtX(qubit1); Adjoint PrepareCCZCS23State(qubit1, qubit2, qubit3); } } /// # Summary /// Tests circuit for |CCZ⟩ ↔ |CS₁₂CS₁₃⟩ operation CCZCS23_to_CS12CS13_Test () : Unit { using ((qubit1, qubit2, qubit3) = (Qubit(), Qubit(), Qubit())) { PrepareCCZCS23State(qubit1, qubit2, qubit3); CX(qubit1, qubit2); CX(qubit2, qubit3); CX(qubit2, qubit1); CZ(qubit1, qubit3); Adjoint PrepareCS12CS13State(qubit1, qubit2, qubit3); } } /// # Summary /// Tests circuit for |CS⟩ ↔ |W₂⟩ operation CS_to_W2_Test () : Unit { using ((qubit1, qubit2) = (Qubit(), Qubit())) { PrepareCSState(qubit1, qubit2); ApplyWithCA(CX(qubit1, _), S, qubit2); Adjoint PrepareWState([qubit1, qubit2]); } } /// # Summary /// Tests circuit for |W₃⟩ ↔ |CCZ CS₂₃⟩ operation CCZ_to_W3_Test () : Unit { using ((qubit1, qubit2, qubit3) = (Qubit(), Qubit(), Qubit())) { PrepareCCZCS23State(qubit1, qubit2, qubit3); CX(qubit1, qubit2); CX(qubit2, qubit3); S(qubit1); S(qubit3); Adjoint PrepareWState([qubit1, qubit2, qubit3]); } } }