From 11ce038dd675e727432532a16c28d9250613c05b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C2=ABDeploy=20tket=20C++=20documentation=C2=BB=20github?=
=?UTF-8?q?=20action?=
Date: Fri, 17 Jan 2025 08:42:20 +0000
Subject: [PATCH] Add generated tket C++ documentation.
---
.../api/BasicOptimisation_8cpp_source.html | 931 +++++++++---------
.../api/BasicOptimisation_8hpp_source.html | 10 +-
docs/tket/api/Decomposition_8cpp_source.html | 2 +-
docs/tket/api/PassGenerators_8cpp_source.html | 2 +-
docs/tket/api/PassLibrary_8cpp_source.html | 4 +-
.../api/ThreeQubitSquash_8cpp_source.html | 2 +-
.../tket/api/namespacetket_1_1Transforms.html | 12 +-
7 files changed, 483 insertions(+), 480 deletions(-)
diff --git a/docs/tket/api/BasicOptimisation_8cpp_source.html b/docs/tket/api/BasicOptimisation_8cpp_source.html
index 20b15739e0..470d447d7d 100644
--- a/docs/tket/api/BasicOptimisation_8cpp_source.html
+++ b/docs/tket/api/BasicOptimisation_8cpp_source.html
@@ -363,472 +363,474 @@
-
-
- 272 Qubit q0 = v_to_qb.at({*v, 0});
- 273 Qubit q1 = v_to_qb.at({*v, 1});
- 274 int i0 = current_interaction[q0];
- 275 int i1 = current_interaction[q1];
-
- 277 if (i0 != -1 && i0 == i1) {
-
- 279 i_vec[i0].vertices.insert(*v);
- 280 current_edge_on_qb[q0] =
-
- 282 current_edge_on_qb[q1] =
-
-
-
-
- 287 if (i_vec[i0].count >= 2) {
-
- 289 success |= replace_two_qubit_interaction(
- 290 circ, i_vec[i0], current_edge_on_qb, bin, target_2qb_gate,
- 291 cx_fidelity, allow_swaps);
-
- 293 current_interaction[i_vec[i0].q0] = -1;
- 294 current_interaction[i_vec[i0].q1] = -1;
-
-
-
- 298 if (i_vec[i1].count >= 2) {
-
-
- 301 success |= replace_two_qubit_interaction(
- 302 circ, i_vec[i1], current_edge_on_qb, bin, target_2qb_gate,
- 303 cx_fidelity, allow_swaps);
-
- 305 current_interaction[i_vec[i1].q0] = -1;
- 306 current_interaction[i_vec[i1].q1] = -1;
-
-
- 309 Interaction new_i(q0, q1);
- 310 new_i.e0 = current_edge_on_qb[q0];
- 311 new_i.e1 = current_edge_on_qb[q1];
-
- 313 new_i.vertices = {*v};
- 314 current_interaction[q0] = i_vec.size();
- 315 current_interaction[q1] = i_vec.size();
- 316 i_vec.push_back(new_i);
- 317 current_edge_on_qb[q0] =
-
- 319 current_edge_on_qb[q1] =
-
-
-
-
-
-
- 326 Qubit q = v_to_qb.at({*v, i});
- 327 current_edge_on_qb[q] =
-
- 329 int inter = current_interaction[q];
-
- 331 i_vec[inter].vertices.insert(*v);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ 274 Qubit q0 = v_to_qb.at({*v, 0});
+ 275 Qubit q1 = v_to_qb.at({*v, 1});
+ 276 int i0 = current_interaction[q0];
+ 277 int i1 = current_interaction[q1];
+
+ 279 if (i0 != -1 && i0 == i1) {
+
+ 281 i_vec[i0].vertices.insert(*v);
+ 282 current_edge_on_qb[q0] =
+
+ 284 current_edge_on_qb[q1] =
+
+
+
+
+ 289 if (i_vec[i0].count >= 2) {
+
+ 291 success |= replace_two_qubit_interaction(
+ 292 circ, i_vec[i0], current_edge_on_qb, bin, target_2qb_gate,
+ 293 cx_fidelity, allow_swaps);
+
+ 295 current_interaction[i_vec[i0].q0] = -1;
+ 296 current_interaction[i_vec[i0].q1] = -1;
+
+
+
+ 300 if (i_vec[i1].count >= 2) {
+
+
+ 303 success |= replace_two_qubit_interaction(
+ 304 circ, i_vec[i1], current_edge_on_qb, bin, target_2qb_gate,
+ 305 cx_fidelity, allow_swaps);
+
+ 307 current_interaction[i_vec[i1].q0] = -1;
+ 308 current_interaction[i_vec[i1].q1] = -1;
+
+
+ 311 Interaction new_i(q0, q1);
+ 312 new_i.e0 = current_edge_on_qb[q0];
+ 313 new_i.e1 = current_edge_on_qb[q1];
+
+ 315 new_i.vertices = {*v};
+ 316 current_interaction[q0] = i_vec.size();
+ 317 current_interaction[q1] = i_vec.size();
+ 318 i_vec.push_back(new_i);
+ 319 current_edge_on_qb[q0] =
+
+ 321 current_edge_on_qb[q1] =
+
+
+
+
+
+
+ 328 Qubit q = v_to_qb.at({*v, i});
+ 329 current_edge_on_qb[q] =
+
+ 331 int inter = current_interaction[q];
+
+ 333 i_vec[inter].vertices.insert(*v);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
- 349static bool find_edge_rewire_vertex(
-
- 351 std::pair<std::vector<std::pair<Edge, double>>,
Vertex> &entry) {
- 352 std::vector<std::pair<Edge, double>> candidates = entry.first;
- 353 std::pair<Edge, double> best_pair = candidates[0];
- 354 bool do_rewire =
false;
-
- 356 for (
unsigned i = 1; i < candidates.size(); i++) {
- 357 if (candidates[i].second > best_pair.second) {
- 358 best_pair = candidates[i];
-
-
-
-
-
-
-
- 366 circ.
rewire(entry.second, {best_pair.first}, {EdgeType::Quantum});
-
-
-
-
-
-
- 373static void extend_SWAP_chain(
- 374 std::list<std::pair<std::vector<std::pair<Edge, double>>,
Vertex>>
-
- 376 Edge entry_edge, Node entry_node,
const Edge &match,
const Circuit &circ,
- 377 const DeviceCharacterisation &characterisation) {
- 378 for (
auto it = swap_chains.begin(); it != swap_chains.end(); ++it) {
- 379 if ((*it).first.back().first == match) {
-
- 381 (*it).first.push_back(
-
- 383 1.0 - characterisation.get_error(
- 384 entry_node, circ.get_OpType_from_Vertex((*it).second))});
-
-
-
-
-
-
-
-
-
-
- 395static bool find_rewire_sq(
- 396 Circuit &circ,
const DeviceCharacterisation &characterisation) {
- 397 std::list<std::pair<std::vector<std::pair<Edge, double>>,
Vertex>>
-
- 399 for (
auto it = circ.begin(); it != circ.end(); ++it) {
-
-
-
- 403 Vertex swap_vert = it.get_vertex();
-
-
- 406 VertexVec pred_verts = circ.get_predecessors(swap_vert);
- 407 EdgeVec pred_edges = circ.get_in_edges(swap_vert);
- 408 EdgeVec post_edges = circ.get_all_out_edges(swap_vert);
- 409 for (
unsigned i = 0; i < pred_verts.size(); i++) {
- 410 OpType optype = circ.get_OpType_from_Vertex(
-
- 412 if (circ.detect_singleq_unitary_op(pred_verts[i])) {
-
- 414 std::vector<std::pair<Edge, double>> swap_chain = {
-
- 416 1.0 - characterisation.get_error(nodes[i], optype)},
-
- 418 1.0 - characterisation.get_error(nodes[1 - i], optype)}};
- 419 swap_chains.push_back(std::make_pair(swap_chain, pred_verts[i]));
-
-
- 422 Edge pre_edge = pred_edges[i];
-
- 424 swap_chains, post_edges[1 - i], nodes[1 - i], pre_edge, circ,
-
-
-
-
-
-
-
- 432 bool success =
false;
- 433 while (!swap_chains.empty()) {
- 434 if (find_edge_rewire_vertex(circ, (*swap_chains.begin())) ==
true) {
-
-
- 437 swap_chains.erase(swap_chains.begin());
-
-
-
-
- 442static Transform commute_SQ_gates_through_SWAPS_helper(
- 443 const DeviceCharacterisation &characterisation) {
- 444 return Transform([characterisation](Circuit &circ) {
- 445 bool success =
false;
- 446 while (find_rewire_sq(circ, characterisation)) {
-
-
-
-
-
-
-
-
-
454 return commute_SQ_gates_through_SWAPS_helper(
-
-
+
+
+
+
351static bool find_edge_rewire_vertex(
+
+
353 std::pair<std::vector<std::pair<Edge, double>>,
Vertex> &entry) {
+
354 std::vector<std::pair<Edge, double>> candidates = entry.first;
+
355 std::pair<Edge, double> best_pair = candidates[0];
+
356 bool do_rewire =
false;
+
+
358 for (
unsigned i = 1; i < candidates.size(); i++) {
+
359 if (candidates[i].second > best_pair.second) {
+
360 best_pair = candidates[i];
+
+
+
+
+
+
+
+
368 circ.
rewire(entry.second, {best_pair.first}, {EdgeType::Quantum});
+
+
+
+
+
+
+
375static void extend_SWAP_chain(
+
376 std::list<std::pair<std::vector<std::pair<Edge, double>>,
Vertex>>
+
+
378 Edge entry_edge, Node entry_node,
const Edge &match,
const Circuit &circ,
+
379 const DeviceCharacterisation &characterisation) {
+
380 for (
auto it = swap_chains.begin(); it != swap_chains.end(); ++it) {
+
381 if ((*it).first.back().first == match) {
+
+
383 (*it).first.push_back(
+
+
385 1.0 - characterisation.get_error(
+
386 entry_node, circ.get_OpType_from_Vertex((*it).second))});
+
+
+
+
+
+
+
+
+
+
+
397static bool find_rewire_sq(
+
398 Circuit &circ,
const DeviceCharacterisation &characterisation) {
+
399 std::list<std::pair<std::vector<std::pair<Edge, double>>,
Vertex>>
+
+
401 for (
auto it = circ.begin(); it != circ.end(); ++it) {
+
+
+
+
405 Vertex swap_vert = it.get_vertex();
+
+
+
408 VertexVec pred_verts = circ.get_predecessors(swap_vert);
+
409 EdgeVec pred_edges = circ.get_in_edges(swap_vert);
+
410 EdgeVec post_edges = circ.get_all_out_edges(swap_vert);
+
411 for (
unsigned i = 0; i < pred_verts.size(); i++) {
+
412 OpType optype = circ.get_OpType_from_Vertex(
+
+
414 if (circ.detect_singleq_unitary_op(pred_verts[i])) {
+
+
416 std::vector<std::pair<Edge, double>> swap_chain = {
+
+
418 1.0 - characterisation.get_error(nodes[i], optype)},
+
+
420 1.0 - characterisation.get_error(nodes[1 - i], optype)}};
+
421 swap_chains.push_back(std::make_pair(swap_chain, pred_verts[i]));
+
+
+
424 Edge pre_edge = pred_edges[i];
+
+
426 swap_chains, post_edges[1 - i], nodes[1 - i], pre_edge, circ,
+
+
+
+
+
+
+
+
434 bool success =
false;
+
435 while (!swap_chains.empty()) {
+
436 if (find_edge_rewire_vertex(circ, (*swap_chains.begin())) ==
true) {
+
+
+
439 swap_chains.erase(swap_chains.begin());
+
+
+
+
+
444static Transform commute_SQ_gates_through_SWAPS_helper(
+
445 const DeviceCharacterisation &characterisation) {
+
446 return Transform([characterisation](Circuit &circ) {
+
447 bool success =
false;
+
448 while (find_rewire_sq(circ, characterisation)) {
+
+
+
+
+
+
+
+
+
456 return commute_SQ_gates_through_SWAPS_helper(
+
+
-
-
-
458 return commute_SQ_gates_through_SWAPS_helper(
-
-
+
+
+
460 return commute_SQ_gates_through_SWAPS_helper(
+
+
-
-
-
-
-
464 bool success =
false;
-
-
-
-
-
-
-
471 BGL_FORALL_VERTICES(v, circ.
dag,
DAG) {
-
-
-
-
475 unsigned arity = op->n_qubits();
-
476 std::vector<Expr> in_rz(arity);
-
477 std::vector<Expr> out_rz(arity);
-
-
-
480 TKET_ASSERT(in_edges.size() == arity);
-
481 TKET_ASSERT(out_edges.size() == arity);
-
482 for (
unsigned i = 0; i < arity; ++i) {
-
-
-
-
-
-
-
489 in_rz[i] = -in_op->get_params().at(0);
-
-
-
-
-
494 out_rz[i] = out_op->get_params().at(0);
-
-
-
-
-
-
-
-
-
-
504 std::vector<Expr> all_rz = in_rz;
-
505 all_rz.insert(all_rz.end(), out_rz.begin(), out_rz.end());
-
506 std::vector<unsigned> occurences_count(2 * arity);
-
507 for (
unsigned i = 0; i < 2 * arity; ++i) {
-
-
509 for (
unsigned j = 0; j < i; ++j) {
-
-
-
-
-
514 occurences_count[i] = cnt;
-
-
-
517 std::max_element(occurences_count.begin(), occurences_count.end()) -
-
518 occurences_count.begin();
-
519 Expr absorb_rz = all_rz[max_i];
-
-
-
-
-
-
525 std::vector<Expr> new_params = op->get_params();
-
526 TKET_ASSERT(new_params.size() == 2);
-
527 new_params[1] += absorb_rz;
-
-
-
-
531 for (
unsigned i = 0; i < arity; ++i) {
-
-
-
-
-
-
-
-
-
-
541 angle = in_op->get_params().at(0) + absorb_rz;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
557 all_bins.insert(bin.begin(), bin.end());
-
-
-
560 angle = out_op->get_params().at(0) - absorb_rz;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
576 all_bins.insert(bin.begin(), bin.end());
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
466 bool success =
false;
+
+
+
+
+
+
+
473 BGL_FORALL_VERTICES(v, circ.
dag,
DAG) {
+
+
+
+
477 unsigned arity = op->n_qubits();
+
478 std::vector<Expr> in_rz(arity);
+
479 std::vector<Expr> out_rz(arity);
+
+
+
482 TKET_ASSERT(in_edges.size() == arity);
+
483 TKET_ASSERT(out_edges.size() == arity);
+
484 for (
unsigned i = 0; i < arity; ++i) {
+
+
+
+
+
+
+
491 in_rz[i] = -in_op->get_params().at(0);
+
+
+
+
+
496 out_rz[i] = out_op->get_params().at(0);
+
+
+
+
+
+
+
+
+
+
506 std::vector<Expr> all_rz = in_rz;
+
507 all_rz.insert(all_rz.end(), out_rz.begin(), out_rz.end());
+
508 std::vector<unsigned> occurences_count(2 * arity);
+
509 for (
unsigned i = 0; i < 2 * arity; ++i) {
+
+
511 for (
unsigned j = 0; j < i; ++j) {
+
+
+
+
+
516 occurences_count[i] = cnt;
+
+
+
519 std::max_element(occurences_count.begin(), occurences_count.end()) -
+
520 occurences_count.begin();
+
521 Expr absorb_rz = all_rz[max_i];
+
+
+
+
+
+
527 std::vector<Expr> new_params = op->get_params();
+
528 TKET_ASSERT(new_params.size() == 2);
+
529 new_params[1] += absorb_rz;
+
+
+
+
533 for (
unsigned i = 0; i < arity; ++i) {
+
+
+
+
+
+
+
+
+
+
543 angle = in_op->get_params().at(0) + absorb_rz;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
559 all_bins.insert(bin.begin(), bin.end());
+
+
+
562 angle = out_op->get_params().at(0) - absorb_rz;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
578 all_bins.insert(bin.begin(), bin.end());
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
591 bool success =
false;
-
-
-
594 BGL_FORALL_VERTICES(v, circ.
dag,
DAG) {
-
-
-
597 auto params = op->get_params();
-
598 TKET_ASSERT(params.size() == 1);
-
-
600 std::optional<double> param =
eval_expr(params[0]);
-
601 if (param.has_value() && std::abs(param.value()) == 1.0) {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
593 bool success =
false;
+
+
+
596 BGL_FORALL_VERTICES(v, circ.
dag,
DAG) {
+
+
+
599 auto params = op->get_params();
+
600 TKET_ASSERT(params.size() == 1);
+
+
602 std::optional<double> param =
eval_expr(params[0]);
+
603 if (param.has_value() && std::abs(param.value()) == 1.0) {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
620 bool success =
false;
-
-
-
623 BGL_FORALL_VERTICES(v, circ.
dag,
DAG) {
-
-
-
-
-
-
-
-
631 auto params = op->get_params();
-
632 TKET_ASSERT(params.size() == 3);
-
-
-
-
-
-
638 params[0], params[1], params[2]),
-
-
-
-
-
643 params[0], params[1], params[2]),
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
622 bool success =
false;
+
+
+
625 BGL_FORALL_VERTICES(v, circ.
dag,
DAG) {
+
+
+
+
+
+
+
+
633 auto params = op->get_params();
+
634 TKET_ASSERT(params.size() == 3);
+
+
+
+
+
+
640 params[0], params[1], params[2]),
+
+
+
+
+
645 params[0], params[1], params[2]),
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
660 throw std::invalid_argument(
"Precision parameter must be less than 32.");
-
-
-
663 bool changed =
false;
-
-
665 const unsigned pow2n = 1 << n;
-
666 BGL_FORALL_VERTICES(v, circ.
dag,
DAG) {
-
-
-
-
-
-
-
673 if (op->get_desc().is_gate()) {
-
674 std::vector<Expr> params = op->get_params();
-
675 if (!params.empty()) {
-
676 std::vector<Expr> new_params;
-
677 for (
const Expr &e : params) {
-
678 std::optional<double> eval =
eval_expr(e);
-
-
-
681 new_params.push_back(
-
682 pow2n * std::abs(eval.value()) < 0.5 ? 0. : e);
-
-
684 new_params.push_back(nearbyint(pow2n * eval.value()) / pow2n);
-
-
-
687 new_params.push_back(e);
-
-
-
690 if (params != new_params) {
-
691 unsigned n_qb = op->n_qubits();
-
-
-
694 new_params.begin(), new_params.end(),
-
695 [](
const Expr &e) { return (e != 0.); })) {
-
696 std::vector<Qubit> args;
-
697 for (
unsigned i = 0; i < n_qb; i++) {
-
698 args.push_back(
Qubit(i));
-
-
700 replacement.
add_op(op->get_type(), new_params, args);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
662 throw std::invalid_argument(
"Precision parameter must be less than 32.");
+
+
+
665 bool changed =
false;
+
+
667 const unsigned pow2n = 1 << n;
+
668 BGL_FORALL_VERTICES(v, circ.
dag,
DAG) {
+
+
+
+
+
+
+
675 if (op->get_desc().is_gate()) {
+
676 std::vector<Expr> params = op->get_params();
+
677 if (!params.empty()) {
+
678 std::vector<Expr> new_params;
+
679 for (
const Expr &e : params) {
+
680 std::optional<double> eval =
eval_expr(e);
+
+
+
683 new_params.push_back(
+
684 pow2n * std::abs(eval.value()) < 0.5 ? 0. : e);
+
+
686 new_params.push_back(nearbyint(pow2n * eval.value()) / pow2n);
+
+
+
689 new_params.push_back(e);
+
+
+
692 if (params != new_params) {
+
693 unsigned n_qb = op->n_qubits();
+
+
+
696 new_params.begin(), new_params.end(),
+
697 [](
const Expr &e) { return (e != 0.); })) {
+
698 std::vector<Qubit> args;
+
699 for (
unsigned i = 0; i < n_qb; i++) {
+
700 args.push_back(
Qubit(i));
+
+
702 replacement.
add_op(op->get_type(), new_params, args);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
@@ -884,14 +886,14 @@
-
+
-
+
-
-
-
+
+
+
boost::graph_traits< DAG >::vertex_descriptor Vertex
OpType
Named operation types.
@@ -912,6 +914,7 @@
bool is_initial_q_type(OpType optype)
Test for input or creation quantum "ops".
EdgeType
Type of a wire in a circuit or input to an op.
@ Quantum
A wire carrying quantum information, corresponding to some allocated Qubit.
+
bool is_gate_type(OpType optype)
Test for elementary gates.
bool in_weyl_chamber(const std::array< Expr, 3 > &k)
Whether a triplet of TK2 angles are normalised.
std::pair< Vertex, port_t > VertPort
Eigen::Matrix4cd get_matrix_from_2qb_circ(const Circuit &circ)
Convert a two-qubit circuit to its corresponding matrix.
diff --git a/docs/tket/api/BasicOptimisation_8hpp_source.html b/docs/tket/api/BasicOptimisation_8hpp_source.html
index ff73c70983..fec4b44d0c 100644
--- a/docs/tket/api/BasicOptimisation_8hpp_source.html
+++ b/docs/tket/api/BasicOptimisation_8hpp_source.html
@@ -172,16 +172,16 @@
-
-
+
+
-
-
-
+
+
+
Defines tket::DeviceCharacterisation, used in NoiseAwarePlacement and in commute_SQ_gates_through_SWA...
OpType
Named operation types.
diff --git a/docs/tket/api/Decomposition_8cpp_source.html b/docs/tket/api/Decomposition_8cpp_source.html
index 2b5b418e22..66ab9a23ae 100644
--- a/docs/tket/api/Decomposition_8cpp_source.html
+++ b/docs/tket/api/Decomposition_8cpp_source.html
@@ -2278,7 +2278,7 @@
-
+
diff --git a/docs/tket/api/PassGenerators_8cpp_source.html b/docs/tket/api/PassGenerators_8cpp_source.html
index 8adaf14cac..8889aae96e 100644
--- a/docs/tket/api/PassGenerators_8cpp_source.html
+++ b/docs/tket/api/PassGenerators_8cpp_source.html
@@ -1476,7 +1476,7 @@
-
+
diff --git a/docs/tket/api/PassLibrary_8cpp_source.html b/docs/tket/api/PassLibrary_8cpp_source.html
index 1a06d8f56c..4c70826b66 100644
--- a/docs/tket/api/PassLibrary_8cpp_source.html
+++ b/docs/tket/api/PassLibrary_8cpp_source.html
@@ -715,7 +715,7 @@
-
+
@@ -727,7 +727,7 @@
-
+
Defines tket::DeviceCharacterisation, used in NoiseAwarePlacement and in commute_SQ_gates_through_SWA...
diff --git a/docs/tket/api/ThreeQubitSquash_8cpp_source.html b/docs/tket/api/ThreeQubitSquash_8cpp_source.html
index 79403986fd..d446fbf8d3 100644
--- a/docs/tket/api/ThreeQubitSquash_8cpp_source.html
+++ b/docs/tket/api/ThreeQubitSquash_8cpp_source.html
@@ -505,7 +505,7 @@
-
+
Defines tket::DeviceCharacterisation, used in NoiseAwarePlacement and in commute_SQ_gates_through_SWA...
diff --git a/docs/tket/api/namespacetket_1_1Transforms.html b/docs/tket/api/namespacetket_1_1Transforms.html
index 23a39373a3..2937cd4455 100644
--- a/docs/tket/api/namespacetket_1_1Transforms.html
+++ b/docs/tket/api/namespacetket_1_1Transforms.html
@@ -572,7 +572,7 @@
@@ -793,7 +793,7 @@
@@ -813,7 +813,7 @@
@@ -1756,7 +1756,7 @@
-Definition at line 618 of file BasicOptimisation.cpp.
+Definition at line 620 of file BasicOptimisation.cpp.
@@ -2289,7 +2289,7 @@