home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.disi.unige.it
/
2015-02-11.ftp.disi.unige.it.tar
/
ftp.disi.unige.it
/
pub
/
.person
/
BarlaA
/
sw
/
OLD
/
Simo
/
SVM_mono
/
pivot.c
< prev
next >
Wrap
C/C++ Source or Header
|
2002-06-25
|
728b
|
46 lines
#define EPS 1.0e-6
void pivot (a, n, nl2, ip, kp, q1)
int n, nl2, *ip, kp;
double **a, *q1;
{
register int k, ii, i;
register double qp, q0, q;
*ip = 0;
for (i = 1; i <= nl2; i++)
{
if (a[i][kp + 1] < -EPS)
{
*q1 = -a[i][1] / a[i][kp + 1];
*ip = i;
for (i = i + 1; i <= nl2; i++)
{
ii = i;
if (a[ii][kp + 1] < -EPS)
{
q = -a[ii][1] / a[ii][kp + 1];
if (q < *q1 )
{
*ip = ii;
*q1 = q;
}
else if (q == *q1)
{
for (k = 1; k <= n; k++)
{
qp = -a[*ip][k + 1] / a[*ip][kp + 1];
q0 = -a[ii][k + 1] / a[ii][kp + 1];
if (q0 != qp)
break;
}
if (q0 > qp)
*ip = ii;
}
}
}
}
}
}
#undef EPS