Untitled
unknown
plain_text
3 years ago
1.3 kB
5
Indexable
void pivot(simplex_t* s, int row, int col) { double** a = s->a; double* b = s->b; double* c = s->c; int m = s->m; int n = s->n; int i,j,t; t = s->var[col]; s->var[col] = s->var[n + row]; s->var[n + row] = t; s->y = s->y + c[col] * b[row] / a[row][col]; for (i = 0; i < n; i++) { if (i != col) { c[i] = c[i] - c[col] * a[row][i] / a[row][col]; } } c[col] = - c[col] / a[row][col]; for (i = 0; i < m; i++) { if (i != row) { b[i] = b[i] - a[i][col] * b[row] / a[row][col]; } } for (i = 0; i < m; i++) { if (i != row) { for (j = 0; j < n; j++) { if (j != col) { a[i][j] = a[i][j] - a[i][col] * a[row][j] / a[row][col]; } } } } for (i = 0; i < m; i++) { if (i != row) { a[i][col] = -a[i][col] / a[row][col]; } } for (i = 0; i < n; i++) { if (i != col) { a[row][i] = a[row][i] / a[row][col]; } } b[row] = b[row] / a[row][col]; a[row][col] = 1 / a[row][col]; }
Editor is loading...