X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?p=mtp.git;a=blobdiff_plain;f=mtp_graph.cc;h=ecbbab5a0b1128406828c63743e18366c5e34784;hp=2dd145d31c0ff612159bab431e939b5c7cfb933c;hb=eded836910fd54dcc621cea82c758761f0e636f9;hpb=2cb38585fe7b08e1a13dd5418d89b152a4c6037b diff --git a/mtp_graph.cc b/mtp_graph.cc index 2dd145d..ecbbab5 100644 --- a/mtp_graph.cc +++ b/mtp_graph.cc @@ -191,10 +191,21 @@ void MTPGraph::force_positivized_lengths() { #endif for(int k = 0; k < _nb_edges; k++) { Edge *e = _edges + k; + if(e->positivized_length < 0) { + #ifdef VERBOSE - residual_error -= e->positivized_length; - max_error = max(max_error, - e->positivized_length); + if((e->origin_vertex->last_change < 0 && e->terminal_vertex->last_change >= 0) || + (e->origin_vertex->last_change >= 0 && e->terminal_vertex->last_change < 0)) { + cout << "Inconsistent non-connexity (this should never happen)." << endl; + abort(); + } + if(e->origin_vertex->last_change >= 0 && + e->terminal_vertex->last_change >= 0 && + e->positivized_length < 0) { + residual_error -= e->positivized_length; + max_error = max(max_error, - e->positivized_length); + } #endif e->positivized_length = 0.0; }