Go to the source code of this file.
|
intvec * | ivAdd (intvec *a, intvec *b) |
|
intvec * | ivSub (intvec *a, intvec *b) |
|
intvec * | ivTranp (intvec *o) |
|
int | ivTrace (intvec *o) |
|
intvec * | ivMult (intvec *a, intvec *b) |
|
static int | ivColPivot (intvec *, int, int, int, int) |
|
static void | ivNegRow (intvec *, int) |
|
static void | ivSaveRow (intvec *, int) |
|
static void | ivSetRow (intvec *, int, int) |
|
static void | ivFreeRow (intvec *, int, int) |
|
static void | ivReduce (intvec *, int, int, int, int) |
|
static void | ivZeroElim (intvec *, int, int, int &) |
|
static void | ivRowContent (intvec *, int, int) |
|
static void | ivKernFromRow (intvec *, intvec *, intvec *, int, int, int) |
|
static intvec * | ivOptimizeKern (intvec *) |
|
static int | ivGcd (int, int) |
|
static void | ivOptRecursive (intvec *, intvec *, intvec *, int &, int &, int) |
|
static void | ivOptSolve (intvec *, intvec *, int &, int &) |
|
static void | ivContent (intvec *) |
|
static int | ivL1Norm (intvec *) |
|
static int | ivCondNumber (intvec *, int) |
|
void | ivTriangIntern (intvec *imat, int &ready, int &all) |
|
intvec * | ivSolveKern (intvec *imat, int dimtr) |
|
intvec * | ivConcat (intvec *a, intvec *b) |
|
Definition at line 276 of file intvec.cc.
286 for (i=0; i<mn; i++) (*iv)[
i] = (*a)[
i] + (*b)[
i];
291 for(i=mn; i<ma; i++) (*iv)[
i] = (*a)[
i];
295 for(i=mn; i<ma; i++) (*iv)[
i] = (*b)[
i];
300 if (mn != ma)
return NULL;
302 for (i=0; i<mn*a->
cols(); i++) { (*iv)[
i] += (*b)[
i]; }
static int si_min(const int a, const int b)
static int si_max(const int a, const int b)
static int ivColPivot |
( |
intvec * |
imat, |
|
|
int |
colpos, |
|
|
int |
rowpos, |
|
|
int |
ready, |
|
|
int |
all |
|
) |
| |
|
static |
Definition at line 493 of file intvec.cc.
497 if (
IMATELEM(*imat,rowpos,colpos)!=0)
499 for (rpiv=ready+1;rpiv<=all;rpiv++)
#define IMATELEM(M, I, J)
Definition at line 831 of file intvec.cc.
838 for (i=1; i<=a->
rows(); i++)
843 for (i=1; i<=b->
rows(); i++)
845 for(j=1; j<=b->
cols(); j++)
static int si_max(const int a, const int b)
#define IMATELEM(M, I, J)
static int ivCondNumber |
( |
intvec * |
w, |
|
|
int |
l |
|
) |
| |
|
static |
Definition at line 773 of file intvec.cc.
796 if ((*w)[
i]<0)
return -1;
static void ivContent |
( |
intvec * |
w | ) |
|
|
static |
Definition at line 806 of file intvec.cc.
817 if (tgcd<0) tgcd = -tgcd;
822 if (m!=0) tgcd=
ivGcd(tgcd, m);
826 for (i=w->
rows()-1;i>=0;i--)
static int ivGcd(int, int)
static void ivFreeRow |
( |
intvec * |
imat, |
|
|
int |
rowpos, |
|
|
int |
rpiv |
|
) |
| |
|
static |
Definition at line 531 of file intvec.cc.
535 for (j=rpiv-1;j>=rowpos;j--)
537 for (i=imat->
cols();i!=0;i--)
#define IMATELEM(M, I, J)
static int ivGcd |
( |
int |
a, |
|
|
int |
b |
|
) |
| |
|
static |
static void ivKernFromRow |
( |
intvec * |
kern, |
|
|
intvec * |
imat, |
|
|
intvec * |
perm, |
|
|
int |
pos, |
|
|
int |
r, |
|
|
int |
c |
|
) |
| |
|
static |
Definition at line 622 of file intvec.cc.
625 int piv, cp,
g,
i,
j,
k,
s;
627 for (i=c;i>(*perm)[
r];i--)
const CanonicalForm int s
static void ivNegRow(intvec *, int)
static int ivGcd(int, int)
static void ivRowContent(intvec *, int, int)
#define IMATELEM(M, I, J)
static int ivL1Norm |
( |
intvec * |
w | ) |
|
|
static |
Definition at line 758 of file intvec.cc.
762 for (i=w->
rows()-1;i>=0;i--)
const CanonicalForm int s
Definition at line 358 of file intvec.cc.
364 if (ca != rb)
return NULL;
365 iv =
new intvec(ra, cb, 0);
372 sum += (*a)[i*ca+
k]*(*b)[k*cb+
j];
static void ivNegRow |
( |
intvec * |
imat, |
|
|
int |
rpiv |
|
) |
| |
|
static |
Definition at line 507 of file intvec.cc.
510 for (i=imat->
cols();i!=0;i--)
#define IMATELEM(M, I, J)
Definition at line 678 of file intvec.cc.
684 Warn(
" %d linear independent solutions\n",
r);
static int ivL1Norm(intvec *)
static void ivContent(intvec *)
static void ivOptRecursive(intvec *, intvec *, intvec *, int &, int &, int)
static int ivCondNumber(intvec *, int)
#define IMATELEM(M, I, J)
static void ivOptRecursive |
( |
intvec * |
res, |
|
|
intvec * |
w, |
|
|
intvec * |
kern, |
|
|
int & |
l, |
|
|
int & |
j, |
|
|
int |
pos |
|
) |
| |
|
static |
Definition at line 702 of file intvec.cc.
717 for(k=h->
rows()-1;k>=0;k--)
static void ivOptRecursive(intvec *, intvec *, intvec *, int &, int &, int)
static void ivOptSolve(intvec *, intvec *, int &, int &)
#define IMATELEM(M, I, J)
static void ivOptSolve |
( |
intvec * |
res, |
|
|
intvec * |
w, |
|
|
int & |
l, |
|
|
int & |
j |
|
) |
| |
|
static |
Definition at line 731 of file intvec.cc.
743 for(k=w->
rows()-1;k>=0;k--)
753 for(k=w->
rows()-1;k>=0;k--)
static int ivL1Norm(intvec *)
static void ivContent(intvec *)
static int ivCondNumber(intvec *, int)
static void ivReduce |
( |
intvec * |
imat, |
|
|
int |
rpiv, |
|
|
int |
colpos, |
|
|
int |
ready, |
|
|
int |
all |
|
) |
| |
|
static |
Definition at line 542 of file intvec.cc.
545 int tgcd, ce, m1, m2,
j,
i;
546 int piv =
IMATELEM(*imat,rpiv,colpos);
548 for (j=all;j>ready;j--)
557 tgcd =
ivGcd(m1, m2);
563 for (i=imat->
cols();i>colpos;i--)
static int ivGcd(int, int)
static void ivRowContent(intvec *, int, int)
#define IMATELEM(M, I, J)
static void ivRowContent |
( |
intvec * |
imat, |
|
|
int |
rowpos, |
|
|
int |
colpos |
|
) |
| |
|
static |
Definition at line 598 of file intvec.cc.
607 if (i<colpos)
return;
609 if (tgcd<0) tgcd = -tgcd;
614 if (m!=0) tgcd=
ivGcd(tgcd, m);
618 for (i=imat->
cols();i>=colpos;i--)
static int ivGcd(int, int)
#define IMATELEM(M, I, J)
static void ivSaveRow |
( |
intvec * |
imat, |
|
|
int |
rpiv |
|
) |
| |
|
static |
Definition at line 514 of file intvec.cc.
518 for (i=imat->
cols();i!=0;i--)
#define IMATELEM(M, I, J)
static void ivSetRow |
( |
intvec * |
imat, |
|
|
int |
rowpos, |
|
|
int |
colpos |
|
) |
| |
|
static |
Definition at line 522 of file intvec.cc.
526 for (i=imat->
cols();i!=0;i--)
static void ivRowContent(intvec *, int, int)
#define IMATELEM(M, I, J)
Definition at line 451 of file intvec.cc.
462 for (r=1;r<=dimtr;r++)
469 for (r=dimtr;r>0;r--)
static intvec * ivOptimizeKern(intvec *)
intvec * ivTranp(intvec *o)
static void ivKernFromRow(intvec *, intvec *, intvec *, int, int, int)
#define IMATELEM(M, I, J)
Definition at line 306 of file intvec.cc.
316 for (i=0; i<mn; i++) (*iv)[
i] = (*a)[
i] - (*b)[
i];
321 for(i=mn; i<ma; i++) (*iv)[
i] = (*a)[
i];
325 for(i=mn; i<ma; i++) (*iv)[
i] = -(*b)[
i];
330 if (mn != ma)
return NULL;
332 for (i=0; i<mn*a->
cols(); i++) { (*iv)[
i] -= (*b)[
i]; }
static int si_min(const int a, const int b)
static int si_max(const int a, const int b)
Definition at line 348 of file intvec.cc.
const CanonicalForm int s
static int si_min(const int a, const int b)
Definition at line 336 of file intvec.cc.
343 (*iv)[j*r+
i] = (*o)[i*c+
j];
void ivTriangIntern |
( |
intvec * |
imat, |
|
|
int & |
ready, |
|
|
int & |
all |
|
) |
| |
Definition at line 413 of file intvec.cc.
415 int rpiv, colpos=0, rowpos=0;
416 int ia=ready, ie=all;
424 rpiv =
ivColPivot(imat, colpos, rowpos, ia, ie);
436 if (ia==imat->
cols())
443 ivReduce(imat, rpiv, colpos, ia, ie);
static void ivZeroElim(intvec *, int, int, int &)
static void ivFreeRow(intvec *, int, int)
static void ivSaveRow(intvec *, int)
static int ivColPivot(intvec *, int, int, int, int)
static void ivReduce(intvec *, int, int, int, int)
static void ivSetRow(intvec *, int, int)
static void ivZeroElim |
( |
intvec * |
imat, |
|
|
int |
colpos, |
|
|
int |
ready, |
|
|
int & |
all |
|
) |
| |
|
static |
Definition at line 573 of file intvec.cc.
579 for (j=ready+1;j<=all;j++)
581 for (i=imat->
cols();i>colpos;i--)
588 for (l=imat->
cols();l>colpos;l--)
#define IMATELEM(M, I, J)