Exemple #1
0
void matrix_to_entity(MATRIX *m) {
	int depth, cur, maxdepth = MIN(m->cols, m->rows) ;
	for(depth = 0; depth < maxdepth; depth++) {
		for (cur = depth+1; cur < maxdepth; cur++) {
			FRAC *piv = matrix_get_val(m, depth, depth) ;
			FRAC *tz = matrix_get_val(m, cur, depth) ;
			FRAC fac ;
			if(tz->num != 0) {
				frac_div(&fac, piv, tz) ;
				frac_negate(&fac, &fac) ;
				matrix_multiply_row(m, cur, &fac) ;	
				matrix_add_row(m, cur, depth) ;

			}
		}
	}
	for(depth = maxdepth - 1; depth >= 0; depth--) {
		for (cur = depth-1; cur >= 0; cur--) {
			FRAC *piv = matrix_get_val(m, depth, depth) ;
			FRAC *tz = matrix_get_val(m, cur, depth) ;
			FRAC fac ;
			if(tz->num != 0) {
				frac_div(&fac, piv, tz) ;
				frac_negate(&fac, &fac) ;
				matrix_multiply_row(m, cur, &fac) ;	
				matrix_add_row(m, cur, depth) ;

			}
		}
	}
	for(depth = 0; depth < maxdepth; depth++) {
		FRAC t, *e = matrix_get_val(m, depth, depth) ;
		if (e->num != 0) {
			frac_inverse(&t,e) ;
			matrix_multiply_row(m, depth, &t) ;
		}
	}

}
Exemple #2
0
int lp_add_row(LP* lp, char* name) {
  int i = lp_add_row_without_A(lp, name);
  matrix_add_row(lp->A);
  return i;
}