reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
1123 mat = isl_mat_cow(mat); 1123 mat = isl_mat_cow(mat); 1124 if (!mat) 1127 inv = isl_mat_identity(mat->ctx, mat->n_col); 1127 inv = isl_mat_identity(mat->ctx, mat->n_col); 1134 for (row = 0; row < mat->n_row; ++row) { 1136 pivot = isl_seq_abs_min_non_zero(mat->row[row]+row, mat->n_col-row); 1136 pivot = isl_seq_abs_min_non_zero(mat->row[row]+row, mat->n_col-row); 1140 isl_assert(mat->ctx, pivot >= 0, goto error); 1144 exchange(mat, &inv, NULL, row, pivot, row); 1145 if (isl_int_is_neg(mat->row[row][row])) 1146 oppose(mat, &inv, NULL, row, row); 1148 while ((off = isl_seq_first_non_zero(mat->row[row]+first, 1149 mat->n_col-first)) != -1) { 1151 isl_int_fdiv_q(a, mat->row[row][first], 1152 mat->row[row][row]); 1153 subtract(mat, &inv, NULL, row, row, first, a); 1154 if (!isl_int_is_zero(mat->row[row][first])) 1155 exchange(mat, &inv, NULL, row, row, first); 1160 if (isl_int_is_zero(mat->row[row][i])) 1162 isl_int_gcd(a, mat->row[row][row], mat->row[row][i]); 1162 isl_int_gcd(a, mat->row[row][row], mat->row[row][i]); 1163 isl_int_divexact(b, mat->row[row][i], a); 1164 isl_int_divexact(a, mat->row[row][row], a); 1166 isl_mat_col_combine(mat, i, a, i, b, row); 1172 isl_int_set(a, mat->row[0][0]); 1173 for (row = 1; row < mat->n_row; ++row) 1174 isl_int_lcm(a, a, mat->row[row][row]); 1179 for (row = 0; row < mat->n_row; ++row) { 1180 isl_int_divexact(mat->row[row][row], a, mat->row[row][row]); 1180 isl_int_divexact(mat->row[row][row], a, mat->row[row][row]); 1181 if (isl_int_is_one(mat->row[row][row])) 1183 isl_mat_col_scale(inv, row, mat->row[row][row]); 1187 isl_mat_free(mat); 1191 isl_mat_free(mat);