reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
441 if (!tab1 || !tab2) 444 isl_assert(tab1->mat->ctx, tab1->M == tab2->M, return NULL); 444 isl_assert(tab1->mat->ctx, tab1->M == tab2->M, return NULL); 445 isl_assert(tab1->mat->ctx, tab1->rational == tab2->rational, return NULL); 445 isl_assert(tab1->mat->ctx, tab1->rational == tab2->rational, return NULL); 446 isl_assert(tab1->mat->ctx, tab1->cone == tab2->cone, return NULL); 446 isl_assert(tab1->mat->ctx, tab1->cone == tab2->cone, return NULL); 447 isl_assert(tab1->mat->ctx, !tab1->row_sign, return NULL); 447 isl_assert(tab1->mat->ctx, !tab1->row_sign, return NULL); 448 isl_assert(tab1->mat->ctx, !tab2->row_sign, return NULL); 449 isl_assert(tab1->mat->ctx, tab1->n_param == 0, return NULL); 449 isl_assert(tab1->mat->ctx, tab1->n_param == 0, return NULL); 450 isl_assert(tab1->mat->ctx, tab2->n_param == 0, return NULL); 451 isl_assert(tab1->mat->ctx, tab1->n_div == 0, return NULL); 451 isl_assert(tab1->mat->ctx, tab1->n_div == 0, return NULL); 452 isl_assert(tab1->mat->ctx, tab2->n_div == 0, return NULL); 454 off = 2 + tab1->M; 455 r1 = tab1->n_redundant; 457 d1 = tab1->n_dead; 459 prod = isl_calloc_type(tab1->mat->ctx, struct isl_tab); 462 prod->mat = tab_mat_product(tab1->mat, tab2->mat, 463 tab1->n_row, tab2->n_row, 464 tab1->n_col, tab2->n_col, off, r1, r2, d1, d2); 467 prod->var = isl_alloc_array(tab1->mat->ctx, struct isl_tab_var, 468 tab1->max_var + tab2->max_var); 469 if ((tab1->max_var + tab2->max_var) && !prod->var) 471 for (i = 0; i < tab1->n_var; ++i) { 472 prod->var[i] = tab1->var[i]; 476 prod->var[tab1->n_var + i] = tab2->var[i]; 477 update_index2(&prod->var[tab1->n_var + i], 478 tab1->n_row, tab1->n_col, 478 tab1->n_row, tab1->n_col, 481 prod->con = isl_alloc_array(tab1->mat->ctx, struct isl_tab_var, 482 tab1->max_con + tab2->max_con); 483 if ((tab1->max_con + tab2->max_con) && !prod->con) 485 for (i = 0; i < tab1->n_con; ++i) { 486 prod->con[i] = tab1->con[i]; 490 prod->con[tab1->n_con + i] = tab2->con[i]; 491 update_index2(&prod->con[tab1->n_con + i], 492 tab1->n_row, tab1->n_col, 492 tab1->n_row, tab1->n_col, 495 prod->col_var = isl_alloc_array(tab1->mat->ctx, int, 496 tab1->n_col + tab2->n_col); 497 if ((tab1->n_col + tab2->n_col) && !prod->col_var) 499 for (i = 0; i < tab1->n_col; ++i) { 501 prod->col_var[pos] = tab1->col_var[i]; 504 int pos = i < d2 ? d1 + i : tab1->n_col + i; 507 t += tab1->n_var; 509 t -= tab1->n_con; 512 prod->row_var = isl_alloc_array(tab1->mat->ctx, int, 513 tab1->mat->n_row + tab2->mat->n_row); 514 if ((tab1->mat->n_row + tab2->mat->n_row) && !prod->row_var) 516 for (i = 0; i < tab1->n_row; ++i) { 518 prod->row_var[pos] = tab1->row_var[i]; 521 int pos = i < r2 ? r1 + i : tab1->n_row + i; 524 t += tab1->n_var; 526 t -= tab1->n_con; 531 prod->n_row = tab1->n_row + tab2->n_row; 532 prod->n_con = tab1->n_con + tab2->n_con; 534 prod->max_con = tab1->max_con + tab2->max_con; 535 prod->n_col = tab1->n_col + tab2->n_col; 536 prod->n_var = tab1->n_var + tab2->n_var; 537 prod->max_var = tab1->max_var + tab2->max_var; 540 prod->n_dead = tab1->n_dead + tab2->n_dead; 541 prod->n_redundant = tab1->n_redundant + tab2->n_redundant; 542 prod->rational = tab1->rational; 543 prod->empty = tab1->empty || tab2->empty; 544 prod->strict_redundant = tab1->strict_redundant || tab2->strict_redundant; 547 prod->M = tab1->M; 548 prod->cone = tab1->cone;