Browse Source

ExportIterations, mtbdd: fix iteration export when transpose==true

If we are solving the transposed equation system, the solution vector
is over the column vars, not the row vars. This has to be taken into
account when exporting the iterations using -exportiterations.
master
Joachim Klein 8 years ago
parent
commit
2c906bf54d
  1. 4
      prism/src/mtbdd/PM_JOR.cc
  2. 8
      prism/src/mtbdd/PM_JORInterval.cc
  3. 4
      prism/src/mtbdd/PM_Power.cc
  4. 8
      prism/src/mtbdd/PM_PowerInterval.cc

4
prism/src/mtbdd/PM_JOR.cc

@ -131,7 +131,7 @@ jdouble omega // omega (jor parameter)
title += ")";
iterationExport.reset(new ExportIterations(title.c_str()));
iterationExport->exportVector(sol, rvars, num_rvars, odd, 0);
iterationExport->exportVector(sol, (transpose?cvars:rvars), num_rvars, odd, 0);
}
// get setup time
@ -163,7 +163,7 @@ jdouble omega // omega (jor parameter)
}
if (iterationExport)
iterationExport->exportVector(tmp, rvars, num_rvars, odd, 0);
iterationExport->exportVector(tmp, (transpose?cvars:rvars), num_rvars, odd, 0);
// check convergence
switch (term_crit) {

8
prism/src/mtbdd/PM_JORInterval.cc

@ -146,8 +146,8 @@ jint flags
title += "), interval";
iterationExport.reset(new ExportIterations(title.c_str()));
iterationExport->exportVector(sol_below, rvars, num_rvars, odd, 0);
iterationExport->exportVector(sol_above, rvars, num_rvars, odd, 1);
iterationExport->exportVector(sol_below, (transpose?cvars:rvars), num_rvars, odd, 0);
iterationExport->exportVector(sol_above, (transpose?cvars:rvars), num_rvars, odd, 1);
}
// get setup time
@ -211,8 +211,8 @@ jint flags
sol_above = tmp;
if (iterationExport) {
iterationExport->exportVector(sol_below, rvars, num_rvars, odd, 0);
iterationExport->exportVector(sol_above, rvars, num_rvars, odd, 1);
iterationExport->exportVector(sol_below, (transpose?cvars:rvars), num_rvars, odd, 0);
iterationExport->exportVector(sol_above, (transpose?cvars:rvars), num_rvars, odd, 1);
}
// check convergence

4
prism/src/mtbdd/PM_Power.cc

@ -100,7 +100,7 @@ jboolean transpose // transpose A? (i.e. solve xA=b not Ax=b?)
std::unique_ptr<ExportIterations> iterationExport;
if (PM_GetFlagExportIterations()) {
iterationExport.reset(new ExportIterations("PM_Power"));
iterationExport->exportVector(sol, rvars, num_rvars, odd, 0);
iterationExport->exportVector(sol, (transpose?cvars:rvars), num_rvars, odd, 0);
}
// get setup time
@ -127,7 +127,7 @@ jboolean transpose // transpose A? (i.e. solve xA=b not Ax=b?)
tmp = DD_Apply(ddman, APPLY_PLUS, tmp, b);
if (iterationExport)
iterationExport->exportVector(tmp, rvars, num_rvars, odd, 0);
iterationExport->exportVector(tmp, (transpose?cvars:rvars), num_rvars, odd, 0);
// check convergence
switch (term_crit) {

8
prism/src/mtbdd/PM_PowerInterval.cc

@ -110,8 +110,8 @@ jint flags
std::unique_ptr<ExportIterations> iterationExport;
if (PM_GetFlagExportIterations()) {
iterationExport.reset(new ExportIterations("PM_Power (interval)"));
iterationExport->exportVector(sol_below, rvars, num_rvars, odd, 0);
iterationExport->exportVector(sol_above, rvars, num_rvars, odd, 1);
iterationExport->exportVector(sol_below, (transpose?cvars:rvars), num_rvars, odd, 0);
iterationExport->exportVector(sol_above, (transpose?cvars:rvars), num_rvars, odd, 1);
}
// get setup time
@ -166,8 +166,8 @@ jint flags
if (iterationExport) {
iterationExport->exportVector(sol_below, rvars, num_rvars, odd, 0);
iterationExport->exportVector(sol_above, rvars, num_rvars, odd, 1);
iterationExport->exportVector(sol_below, (transpose?cvars:rvars), num_rvars, odd, 0);
iterationExport->exportVector(sol_above, (transpose?cvars:rvars), num_rvars, odd, 1);
}
// check convergence

Loading…
Cancel
Save