GCC Code Coverage Report


Directory: ./
File: Transformations/include/Transformations/PauliOptimisation.hpp
Date: 2022-10-15 05:10:18
Exec Total Coverage
Lines: 1 1 100.0%
Functions: 2 4 50.0%
Branches: 7 16 43.8%
Decisions: 0 0 -%

Line Branch Decision Exec Source
1 // Copyright 2019-2022 Cambridge Quantum Computing
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14
15 #pragma once
16
17 #include "Transform.hpp"
18
19 namespace tket {
20
21 namespace Transforms {
22
23 /* Dictates whether synthesis of a PauliGraph should
24 be done on the Paulis individually, making use of the pairwise
25 interactions or collecting into mutually commuting sets. */
26 enum class PauliSynthStrat { Individual, Pairwise, Sets };
27
28
7/16
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 3 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 4 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
30 NLOHMANN_JSON_SERIALIZE_ENUM(
29 PauliSynthStrat, {{PauliSynthStrat::Individual, "Individual"},
30 {PauliSynthStrat::Pairwise, "Pairwise"},
31 {PauliSynthStrat::Sets, "Sets"}});
32
33 Transform pairwise_pauli_gadgets(CXConfigType cx_config = CXConfigType::Snake);
34
35 // always returns true, as it leaves Circuit data structure
36 Transform synthesise_pauli_graph(
37 PauliSynthStrat strat = PauliSynthStrat::Sets,
38 CXConfigType cx_config = CXConfigType::Snake);
39
40 // Assumes incoming circuit is composed of `CircBox`es with
41 // `PauliExpBox`es inside
42 Transform special_UCC_synthesis(
43 PauliSynthStrat strat = PauliSynthStrat::Sets,
44 CXConfigType cx_config = CXConfigType::Snake);
45
46 } // namespace Transforms
47
48 } // namespace tket
49