int len;
if (tgt_index < src_index) {
- return get_edge(pbqp, tgt_index, src_index);
+ unsigned tmp = src_index;
+ src_index = tgt_index;
+ tgt_index = tmp;
}
pbqp_node *src_node = get_node(pbqp, src_index);
+ pbqp_node *tgt_node = get_node(pbqp, tgt_index);
assert(src_node);
- assert(get_node(pbqp, tgt_index));
+ assert(tgt_node);
len = ARR_LEN(src_node->edges);
for (i = 0; i < len; ++i) {
pbqp_edge *cur_edge = src_node->edges[i];
- if (cur_edge->tgt->index == tgt_index) {
+ if (cur_edge->tgt == tgt_node) {
return cur_edge;
}
}
pbqp->solution = 0;
pbqp->num_nodes = number_nodes;
+#if KAPS_DUMP
pbqp->dump_file = NULL;
+#endif
pbqp->nodes = obstack_alloc(&pbqp->obstack, number_nodes
* sizeof(*pbqp->nodes));
memset(pbqp->nodes, 0, number_nodes * sizeof(*pbqp->nodes));
+#if KAPS_STATISTIC
+ pbqp->num_bf = 0;
+ pbqp->num_edges = 0;
+ pbqp->num_r0 = 0;
+ pbqp->num_r1 = 0;
+ pbqp->num_r2 = 0;
+ pbqp->num_rn = 0;
+#endif
return pbqp;
}
{
pbqp_edge *edge = get_edge(pbqp, src_index, tgt_index);
+ if (tgt_index < src_index) {
+ pbqp_matrix_transpose(pbqp, costs);
+ add_edge_costs(pbqp, tgt_index, src_index, costs);
+ return;
+ }
+
if (edge == NULL) {
edge = alloc_edge(pbqp, src_index, tgt_index, costs);
} else {
return pbqp->solution;
}
+#if KAPS_DUMP
void set_dumpfile(pbqp *pbqp, FILE *f)
{
assert(pbqp);
pbqp->dump_file = f;
}
+#endif