summaryrefslogtreecommitdiff
path: root/graphics/asymptote/base/rationalSimplex.asy
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/asymptote/base/rationalSimplex.asy')
-rw-r--r--graphics/asymptote/base/rationalSimplex.asy8
1 files changed, 6 insertions, 2 deletions
diff --git a/graphics/asymptote/base/rationalSimplex.asy b/graphics/asymptote/base/rationalSimplex.asy
index 18495d8032..823d91c2d0 100644
--- a/graphics/asymptote/base/rationalSimplex.asy
+++ b/graphics/asymptote/base/rationalSimplex.asy
@@ -1,6 +1,8 @@
// Rational simplex solver written by John C. Bowman and Pouria Ramazi, 2018.
import rational;
+void simplexStandard(rational[] c, rational[][] A, int[] s=new int[],
+ rational[] b) {}
void simplexTableau(rational[][] E, int[] Bindices, int I=-1, int J=-1) {}
void simplexPhase1(rational[] c, rational[][] A, rational[] b,
int[] Bindices) {}
@@ -133,7 +135,7 @@ struct simplex {
rational u=E[I][j];
if(u < 0) {
rational r=-E[m][j]/u;
- if(r <= t && (r < t || Bindices[j] < Bindices[J])) {
+ if(r <= t && (r < t || j < J)) {
t=r; J=j;
} // Bland's rule: exiting variable has smallest minimizing index
}
@@ -388,7 +390,9 @@ struct simplex {
}
}
- operator init(concat(c,array(count,rational(0))),a,b,phase1,dual);
+ rational[] C=concat(c,array(count,rational(0)));
+ if(count > 0) simplexStandard(C,a,b);
+ operator init(C,a,b,phase1,dual);
if(case == OPTIMAL && count > 0)
x.delete(n,n+count-1);