diff options
Diffstat (limited to 'src/gen_laplacian.c')
-rw-r--r-- | src/gen_laplacian.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/gen_laplacian.c b/src/gen_laplacian.c index 6f4263a..a282564 100644 --- a/src/gen_laplacian.c +++ b/src/gen_laplacian.c @@ -5,8 +5,7 @@ cholmod_sparse *gen_adjacency(const finst *instance, bool dual, bool breakv, unsigned int pad, cholmod_common *c) { unsigned int ne; if (dual) - ne = ((int)instance->network->num_edges - - (int)instance->num_remaining_edges); + ne = ((int)instance->network->num_edges); else { ne = instance->num_remaining_edges; if (!breakv && instance->network->boundary != TORUS_BOUND) { @@ -59,6 +58,19 @@ cholmod_sparse *gen_adjacency(const finst *instance, bool dual, bool breakv, ai[2 * count + 1] = 1; count++; + } else if (dual) { + unsigned int v1 = etv[2 * i]; + unsigned int v2 = etv[2 * i + 1]; + + ri[2 * count] = v1; + ci[2 * count] = v2; + ai[2 * count] = 0; + + ri[2 * count + 1] = v2; + ci[2 * count + 1] = v1; + ai[2 * count + 1] = 0; + + count++; } } |