Skip to content

Commit a941ad5

Browse files
committed
add simple QASM3 exporter, add SparseObservable
1 parent 4942d62 commit a941ad5

25 files changed

+753
-90
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,4 @@ function(add_application_test TEST_NAME APP_NAME CPP_FILE)
6161
endfunction()
6262

6363
add_application(circuit_test tests/circuit_test.cpp)
64+
add_application(observable_test tests/observable_test.cpp)

src/circuit/classical/expr.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#include "circuit/classicalregister.hpp"
2121

2222

23-
namespace qiskitcpp {
23+
namespace Qiskit {
2424
namespace circuit {
2525

2626
// operation types
@@ -510,7 +510,7 @@ Binary ClassicalRegister::operator>=(Expr& right)
510510

511511

512512
} // namespace circuit
513-
} // namespace qiskitcpp
513+
} // namespace Qiskit
514514

515515
#endif // __qiskitcpp_circuit_classical_expr_hpp__
516516

src/circuit/classicalregister.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#include "circuit/register.hpp"
2121
#include "qiskit.h"
2222

23-
namespace qiskitcpp {
23+
namespace Qiskit {
2424
namespace circuit {
2525

2626
class Expr;
@@ -114,7 +114,7 @@ class ClassicalRegister : public Register
114114
uint_t ClassicalRegister::instances_counter_ = 0;
115115

116116
} // namespace circuit
117-
} // namespace qiskitcpp
117+
} // namespace Qiskit
118118

119119
#endif // __qiskitcpp_circuit_classical_register_hpp__
120120

src/circuit/controlflow/control_flow.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
#include "circuit/quantumcircuit_def.hpp"
2121

22-
namespace qiskitcpp {
22+
namespace Qiskit {
2323
namespace circuit {
2424

2525

@@ -46,11 +46,11 @@ class ControlFlowOp
4646
/// @param (expr) expression
4747
ControlFlowOp(Expr expr) : expr_(expr) {}
4848

49-
virtual void add_control_flow_op(qiskitcpp::circuit::QuantumCircuit& circ) = 0;
49+
virtual void add_control_flow_op(QuantumCircuit& circ) = 0;
5050
};
5151

5252
} // namespace circuit
53-
} // namespace qiskitcpp
53+
} // namespace Qiskit
5454

5555
#endif // __qiskitcpp_circuit_control_flow_hpp__
5656

src/circuit/controlflow/if_else.hpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
#include "circuit/controlflow/control_flow.hpp"
2222

23-
namespace qiskitcpp {
23+
namespace Qiskit {
2424
namespace circuit {
2525

2626

@@ -29,38 +29,38 @@ namespace circuit {
2929
class IfElseOp : public ControlFlowOp
3030
{
3131
protected:
32-
qiskitcpp::circuit::QuantumCircuit true_body_;
33-
qiskitcpp::circuit::QuantumCircuit false_body_;
32+
QuantumCircuit true_body_;
33+
QuantumCircuit false_body_;
3434
bool test_else_ = false;
3535
public:
3636
/// @brief Create a new IfElseOp circuit operator
3737
/// @param (circ)
3838
/// @param (clbit)
3939
/// @param (value)
40-
IfElseOp(qiskitcpp::circuit::QuantumCircuit& circ, uint32_t clbit, uint32_t value) : ControlFlowOp(clbit, value), true_body_(circ), false_body_(circ) {}
40+
IfElseOp(QuantumCircuit& circ, uint32_t clbit, uint32_t value) : ControlFlowOp(clbit, value), true_body_(circ), false_body_(circ) {}
4141

4242
/// @brief Return true body available in this operator
4343
/// @return true body
44-
qiskitcpp::circuit::QuantumCircuit& true_body() { return true_body_; }
44+
QuantumCircuit& true_body() { return true_body_; }
4545

4646
/// @brief Return false body available in this operator
4747
/// @return false body
48-
qiskitcpp::circuit::QuantumCircuit& false_body() { return false_body_; }
48+
QuantumCircuit& false_body() { return false_body_; }
4949

5050
// add false body
5151
/// @brief add false body
52-
void else_(std::function<void(qiskitcpp::circuit::QuantumCircuit&)> body);
52+
void else_(std::function<void(QuantumCircuit&)> body);
5353

54-
void add_control_flow_op(qiskitcpp::circuit::QuantumCircuit& circ) override;
54+
void add_control_flow_op(QuantumCircuit& circ) override;
5555
};
5656

57-
void IfElseOp::else_(std::function<void(qiskitcpp::circuit::QuantumCircuit&)> body)
57+
void IfElseOp::else_(std::function<void(QuantumCircuit&)> body)
5858
{
5959
body(false_body_);
6060
test_else_ = true;
6161
}
6262

63-
void IfElseOp::add_control_flow_op(qiskitcpp::circuit::QuantumCircuit& circ)
63+
void IfElseOp::add_control_flow_op(QuantumCircuit& circ)
6464
{
6565
if(test_else_){
6666
// if_else
@@ -82,7 +82,7 @@ void IfElseOp::add_control_flow_op(qiskitcpp::circuit::QuantumCircuit& circ)
8282

8383

8484
} // namespace circuit
85-
} // namespace qiskitcpp
85+
} // namespace Qiskit
8686

8787
#endif // __qiskitcpp_circuit_if_else_hpp__
8888

src/circuit/library/quantum_volume.hpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
#include "utils/rng.hpp"
2525

2626

27-
namespace qiskitcpp {
27+
namespace Qiskit {
2828
namespace circuit {
2929

3030
/// @class QuantumVolume
@@ -128,7 +128,6 @@ void QuantumVolume::make_random_unitary_matrix(std::vector<complex_t>& matrix, u
128128
}
129129
}
130130

131-
132131
} // namespace circuit
133132
} // namespace qiskitcpp
134133

src/circuit/parameter.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ using rust_parameter = ::QkParameterExpression;
2828
using rust_parameter = void*;
2929
#endif
3030

31-
namespace qiskitcpp {
31+
namespace Qiskit {
3232
namespace circuit {
3333

3434

@@ -288,7 +288,7 @@ class Parameter
288288

289289
/// @brief Create a new symbol
290290
/// @param (expr)
291-
Parameter(std::string name)
291+
Parameter(::std::string name)
292292
{
293293
}
294294

@@ -366,8 +366,8 @@ class Parameter
366366

367367

368368
} // namespace circuit
369-
} // namespace qiskitcpp
369+
} // namespace Qiskit
370370

371-
#endif // __qiskitcpp_circuit_parameter_expression_hpp__
371+
#endif // __qiskitcpp_circuit_parameter_hpp__
372372

373373

src/circuit/quantumcircuit_def.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
// qiskit C-API circuit data
3737
using rust_circuit = ::QkCircuit;
3838

39-
namespace qiskitcpp {
39+
namespace Qiskit {
4040
namespace circuit {
4141

4242

@@ -564,7 +564,7 @@ class QuantumCircuit {
564564
/// @param (clbit)
565565
/// @param (value)
566566
/// @param (body) The circuit body to be run if condition is true.
567-
IfElseOp& if_test(const uint32_t clbit, const uint32_t value, const std::function<void(qiskitcpp::circuit::QuantumCircuit&)> body);
567+
IfElseOp& if_test(const uint32_t clbit, const uint32_t value, const std::function<void(QuantumCircuit&)> body);
568568
// IfElseOp& if_test(Expr expr, std::function<void(qiskitcpp::circuit::QuantumCircuit&)> body);
569569

570570
// parameter binding
@@ -674,7 +674,7 @@ std::unordered_map<std::string, QkGate> QuantumCircuit::gate_map_{
674674

675675

676676
} // namespace circuit
677-
} // namespace qiskitcpp
677+
} // namespace Qiskit
678678

679679

680680
#endif // __qiskitcpp_circuit_quantum_circuit_def_hpp__

0 commit comments

Comments
 (0)