diff --git a/.gitignore b/.gitignore index bcc4e76..15fbfa9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ -4ti2-1.3.2.tar.gz -4ti2_manual.pdf +4ti2-*.tar.gz diff --git a/4ti2-1.3.2-gcc47.patch b/4ti2-1.3.2-gcc47.patch deleted file mode 100644 index faedd2a..0000000 --- a/4ti2-1.3.2-gcc47.patch +++ /dev/null @@ -1,631 +0,0 @@ -diff -up 4ti2-1.3.2/src/groebner/CircuitMatrixAlgorithm.tpp.gcc47 4ti2-1.3.2/src/groebner/CircuitMatrixAlgorithm.tpp ---- 4ti2-1.3.2/src/groebner/CircuitMatrixAlgorithm.tpp.gcc47 2012-03-05 14:25:16.459407811 -0500 -+++ 4ti2-1.3.2/src/groebner/CircuitMatrixAlgorithm.tpp 2012-03-05 14:32:14.090831152 -0500 -@@ -152,23 +152,23 @@ CircuitMatrixAlgorithm::comput - ) - - // Find the next column. -- Index next_col = next_column(vs, remaining); -+ Index next_col = this->next_column(vs, remaining); - - int start = 0; int end = vs.get_number(); int middle; - // We sort the vectors into nonzeros and then zeros. -- sort_nonzeros(vs, start, end, rays, supps, pos_supps, neg_supps, next_col, middle); -+ this->sort_nonzeros(vs, start, end, rays, supps, pos_supps, neg_supps, next_col, middle); - int nonzero_start = start, nonzero_end = middle; - //int zero_start = middle, zero_end = end; - // We sort the nonzeros into rays and circuits. -- sort_rays(vs, nonzero_start, nonzero_end, rays, supps, pos_supps, neg_supps, middle); -+ this->sort_rays(vs, nonzero_start, nonzero_end, rays, supps, pos_supps, neg_supps, middle); - int ray_start = nonzero_start, ray_end = middle; - int cir_start = middle, cir_end = nonzero_end; - // We sort the rays into positives and then negatives. -- sort_positives(vs, ray_start, ray_end, supps, pos_supps, neg_supps, next_col, middle); -+ this->sort_positives(vs, ray_start, ray_end, supps, pos_supps, neg_supps, next_col, middle); - int pos_ray_start = ray_start, pos_ray_end = middle; - int neg_ray_start = middle, neg_ray_end = ray_end; - // We sort the circuits into positives and then negatives. -- sort_positives(vs, cir_start, cir_end, supps, pos_supps, neg_supps, next_col, middle); -+ this->sort_positives(vs, cir_start, cir_end, supps, pos_supps, neg_supps, next_col, middle); - int pos_cir_start = cir_start, pos_cir_end = middle; - int neg_cir_start = middle, neg_cir_end = cir_end; - -@@ -185,8 +185,8 @@ CircuitMatrixAlgorithm::comput - - // Switch the positive and negative supports, so that it is as if all - // vectors have a positive entry in the next column. -- switch_supports(neg_ray_start, neg_ray_end, pos_supps, neg_supps); -- switch_supports(neg_cir_start, neg_cir_end, pos_supps, neg_supps); -+ this->switch_supports(neg_ray_start, neg_ray_end, pos_supps, neg_supps); -+ this->switch_supports(neg_cir_start, neg_cir_end, pos_supps, neg_supps); - - matrix = orig_matrix; - int remaining_row = upper_triangle(matrix, remaining, 0); -@@ -212,15 +212,15 @@ CircuitMatrixAlgorithm::comput - rays.insert(rays.end(), vs.get_number()-previous_size, false); - - // Switch back the positive and negative supports. -- switch_supports(neg_ray_start, neg_ray_end, pos_supps, neg_supps); -- switch_supports(neg_cir_start, neg_cir_end, pos_supps, neg_supps); -+ this->switch_supports(neg_ray_start, neg_ray_end, pos_supps, neg_supps); -+ this->switch_supports(neg_cir_start, neg_cir_end, pos_supps, neg_supps); - - // Update the supp vectors for the next_col. -- update_supports(supps, next_col, nonzero_start, nonzero_end); -- update_supports(pos_supps, next_col, pos_ray_start, pos_ray_end); -- update_supports(pos_supps, next_col, pos_cir_start, pos_cir_end); -- update_supports(neg_supps, next_col, neg_ray_start, neg_ray_end); -- update_supports(neg_supps, next_col, neg_cir_start, neg_cir_end); -+ this->update_supports(supps, next_col, nonzero_start, nonzero_end); -+ this->update_supports(pos_supps, next_col, pos_ray_start, pos_ray_end); -+ this->update_supports(pos_supps, next_col, pos_cir_start, pos_cir_end); -+ this->update_supports(neg_supps, next_col, neg_ray_start, neg_ray_end); -+ this->update_supports(neg_supps, next_col, neg_cir_start, neg_cir_end); - - *out << "\r"; - *out << " Left = " << std::setw(3) << num_remaining; -diff -up 4ti2-1.3.2/src/groebner/CircuitSupportAlgorithm.tpp.gcc47 4ti2-1.3.2/src/groebner/CircuitSupportAlgorithm.tpp ---- 4ti2-1.3.2/src/groebner/CircuitSupportAlgorithm.tpp.gcc47 2012-03-05 14:21:20.103997937 -0500 -+++ 4ti2-1.3.2/src/groebner/CircuitSupportAlgorithm.tpp 2012-03-05 14:31:39.629208802 -0500 -@@ -188,23 +188,23 @@ CircuitSupportAlgorithm::compu - ) - - // Find the next column. -- Index next_col = next_column(vs, remaining); -+ Index next_col = this->next_column(vs, remaining); - - int start = 0; int end = vs.get_number(); int middle; - // We sort the vectors into nonzeros and then zeros. -- sort_nonzeros(vs, start, end, rays, supps, pos_supps, neg_supps, next_col, middle); -+ this->sort_nonzeros(vs, start, end, rays, supps, pos_supps, neg_supps, next_col, middle); - int nonzero_start = start, nonzero_end = middle; - //int zero_start = middle, zero_end = end; - // We sort the nonzeros into rays and circuits. -- sort_rays(vs, nonzero_start, nonzero_end, rays, supps, pos_supps, neg_supps, middle); -+ this->sort_rays(vs, nonzero_start, nonzero_end, rays, supps, pos_supps, neg_supps, middle); - int ray_start = nonzero_start, ray_end = middle; - int cir_start = middle, cir_end = nonzero_end; - // We sort the rays into positives and then negatives. -- sort_positives(vs, ray_start, ray_end, supps, pos_supps, neg_supps, next_col, middle); -+ this->sort_positives(vs, ray_start, ray_end, supps, pos_supps, neg_supps, next_col, middle); - int pos_ray_start = ray_start, pos_ray_end = middle; - int neg_ray_start = middle, neg_ray_end = ray_end; - // We sort the circuits into positives and the negatives. -- sort_positives(vs, cir_start, cir_end, supps, pos_supps, neg_supps, next_col, middle); -+ this->sort_positives(vs, cir_start, cir_end, supps, pos_supps, neg_supps, next_col, middle); - int pos_cir_start = cir_start, pos_cir_end = middle; - int neg_cir_start = middle, neg_cir_end = cir_end; - -@@ -233,8 +233,8 @@ CircuitSupportAlgorithm::compu - - // Switch the positive and negative supports, so that it is as if all - // vectors have a positive entry in the next column. -- switch_supports(neg_ray_start, neg_ray_end, pos_supps, neg_supps); -- switch_supports(neg_cir_start, neg_cir_end, pos_supps, neg_supps); -+ this->switch_supports(neg_ray_start, neg_ray_end, pos_supps, neg_supps); -+ this->switch_supports(neg_cir_start, neg_cir_end, pos_supps, neg_supps); - - //DEBUG_4ti2(*out << "Remaining row " << remaining_row << "\n";) - int previous_size = vs.get_number(); -@@ -258,19 +258,19 @@ CircuitSupportAlgorithm::compu - rays.insert(rays.end(), vs.get_number()-previous_size, false); - - // Switch back the positive and negative supports. -- switch_supports(neg_ray_start, neg_ray_end, pos_supps, neg_supps); -- switch_supports(neg_cir_start, neg_cir_end, pos_supps, neg_supps); -+ this->switch_supports(neg_ray_start, neg_ray_end, pos_supps, neg_supps); -+ this->switch_supports(neg_cir_start, neg_cir_end, pos_supps, neg_supps); - - // Update the supp vectors for the next_col. -- update_supports(supps, next_col, nonzero_start, nonzero_end); -- update_supports(pos_supps, next_col, pos_ray_start, pos_ray_end); -- update_supports(pos_supps, next_col, pos_cir_start, pos_cir_end); -- update_supports(pos_supps, col_map[next_col], neg_ray_start, neg_ray_end); -- update_supports(pos_supps, col_map[next_col], neg_cir_start, neg_cir_end); -- update_supports(neg_supps, next_col, neg_ray_start, neg_ray_end); -- update_supports(neg_supps, next_col, neg_cir_start, neg_cir_end); -- update_supports(neg_supps, col_map[next_col], pos_ray_start, pos_ray_end); -- update_supports(neg_supps, col_map[next_col], pos_cir_start, pos_cir_end); -+ this->update_supports(supps, next_col, nonzero_start, nonzero_end); -+ this->update_supports(pos_supps, next_col, pos_ray_start, pos_ray_end); -+ this->update_supports(pos_supps, next_col, pos_cir_start, pos_cir_end); -+ this->update_supports(pos_supps, col_map[next_col], neg_ray_start, neg_ray_end); -+ this->update_supports(pos_supps, col_map[next_col], neg_cir_start, neg_cir_end); -+ this->update_supports(neg_supps, next_col, neg_ray_start, neg_ray_end); -+ this->update_supports(neg_supps, next_col, neg_cir_start, neg_cir_end); -+ this->update_supports(neg_supps, col_map[next_col], pos_ray_start, pos_ray_end); -+ this->update_supports(neg_supps, col_map[next_col], pos_cir_start, pos_cir_end); - - *out << "\r"; - *out << " Left = " << std::setw(3) << num_remaining; -diff -up 4ti2-1.3.2/src/groebner/RayMatrixAlgorithm.tpp.gcc47 4ti2-1.3.2/src/groebner/RayMatrixAlgorithm.tpp ---- 4ti2-1.3.2/src/groebner/RayMatrixAlgorithm.tpp.gcc47 2008-11-14 21:08:37.000000000 -0500 -+++ 4ti2-1.3.2/src/groebner/RayMatrixAlgorithm.tpp 2012-03-05 14:28:04.450566861 -0500 -@@ -146,7 +146,7 @@ RayMatrixAlgorithm::compute1( - - // Find the next column. - int next_positive_count, next_negative_count, next_zero_count; -- Index next_col = next_column(vs, remaining, -+ Index next_col = this->next_column(vs, remaining, - next_positive_count, - next_negative_count, - next_zero_count); -@@ -161,7 +161,7 @@ RayMatrixAlgorithm::compute1( - ) - - // We sort the vectors into zeros, positives, then negatives. -- sort(vs, supports, next_col, next_zero_count, next_positive_count, -+ RayImplementation::sort(vs, supports, next_col, next_zero_count, next_positive_count, - next_negative_count); - - matrix = orig_matrix; -@@ -218,7 +218,7 @@ RayMatrixAlgorithm::compute1( - IndexSet::set_difference(supports[r2], r1_supp, temp_diff2); - if (temp_diff2.power_of_2()) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - continue; -@@ -226,14 +226,14 @@ RayMatrixAlgorithm::compute1( - IndexSet::set_difference(r1_supp, supports[r2], temp_diff2); - if (temp_diff2.power_of_2()) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - continue; - } - if (rank_check(matrix, temp_matrix, temp_diff, r1_rows)) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - ++num_added; -@@ -351,7 +351,7 @@ RayMatrixAlgorithm::compute0( - { - // Find the next column. - int next_positive_count, next_negative_count, next_zero_count; -- Index next_col = next_column(vs, remaining, -+ Index next_col = this->next_column(vs, remaining, - next_positive_count, - next_negative_count, - next_zero_count); -@@ -366,7 +366,7 @@ RayMatrixAlgorithm::compute0( - ) - - // We sort the vectors into zeros, positives, then negatives. -- sort(vs, supports, next_col, next_zero_count, next_positive_count, -+ RayImplementation::sort(vs, supports, next_col, next_zero_count, next_positive_count, - next_negative_count); - - matrix = orig_matrix; -@@ -416,7 +416,7 @@ RayMatrixAlgorithm::compute0( - IndexSet::set_difference(supports[r2], r1_supp, temp_diff); - if (temp_diff.power_of_2()) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - ++num_added; -@@ -442,7 +442,7 @@ RayMatrixAlgorithm::compute0( - IndexSet::set_difference(r1_supp, supports[r2], temp_diff2); - if (temp_diff2.power_of_2()) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - ++num_one_diff_added; -@@ -452,7 +452,7 @@ RayMatrixAlgorithm::compute0( - - if (rank_check(matrix, temp_matrix, temp_diff, r1_rows)) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - ++num_added; -@@ -468,7 +468,7 @@ RayMatrixAlgorithm::compute0( - IndexSet::set_difference(supports[r2], r1_supp, temp_diff); - if (temp_diff.power_of_2()) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - ++num_added; -@@ -600,7 +600,7 @@ RayMatrixAlgorithm::compute2( - - // Find the next column. - int next_positive_count, next_negative_count, next_zero_count; -- Index next_col = next_column(vs, remaining, -+ Index next_col = this->next_column(vs, remaining, - next_positive_count, - next_negative_count, - next_zero_count); -@@ -615,7 +615,7 @@ RayMatrixAlgorithm::compute2( - ) - - // We sort the vectors into zeros, positives, then negatives. -- sort(vs, supports, fathers, zeros, next_col, next_zero_count, next_positive_count, -+ RayImplementation::sort(vs, supports, fathers, zeros, next_col, next_zero_count, next_positive_count, - next_negative_count); - - matrix = orig_matrix; -@@ -665,7 +665,7 @@ RayMatrixAlgorithm::compute2( - IndexSet::set_difference(supports[r2], r1_supp, temp_diff); - if (temp_diff.power_of_2()) - { -- create_new_vector(vs, supports, fathers, r1, r2, next_col, -+ this->create_new_vector(vs, supports, fathers, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - ++num_added; -@@ -689,7 +689,7 @@ RayMatrixAlgorithm::compute2( - { - if (fathers[r1] == r2 || fathers[r2] == r1) - { -- create_new_vector(vs, supports, fathers, r1, r2, next_col, -+ this->create_new_vector(vs, supports, fathers, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - //++num_fathers; -@@ -705,7 +705,7 @@ RayMatrixAlgorithm::compute2( - IndexSet::set_difference(r1_supp, supports[r2], temp_diff2); - if (temp_diff2.power_of_2()) - { -- create_new_vector(vs, supports, fathers, r1, r2, next_col, -+ this->create_new_vector(vs, supports, fathers, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - //++num_one_diff_added; -@@ -714,7 +714,7 @@ RayMatrixAlgorithm::compute2( - #endif - if (rank_check(matrix, temp_matrix, temp_diff, r1_rows)) - { -- create_new_vector(vs, supports, fathers, r1, r2, next_col, -+ this->create_new_vector(vs, supports, fathers, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - ++num_added; -@@ -730,7 +730,7 @@ RayMatrixAlgorithm::compute2( - IndexSet::set_difference(supports[r2], r1_supp, temp_diff); - if (temp_diff.power_of_2()) - { -- create_new_vector(vs, supports, fathers, r1, r2, next_col, -+ this->create_new_vector(vs, supports, fathers, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - ++num_added; -@@ -865,7 +865,7 @@ RayMatrixAlgorithm::compute3( - DEBUG_4ti2(unsigned long long int num_checks = 0;) - // Find the next column. - int next_positive_count, next_negative_count, next_zero_count; -- Index next_col = next_column(vs, remaining, -+ Index next_col = this->next_column(vs, remaining, - next_positive_count, - next_negative_count, - next_zero_count); -@@ -880,7 +880,7 @@ RayMatrixAlgorithm::compute3( - ) - - // We sort the vectors into zeros, positives, then negatives. -- sort(vs, supports, next_col, next_zero_count, next_positive_count, -+ RayImplementation::sort(vs, supports, next_col, next_zero_count, next_positive_count, - next_negative_count); - - DEBUG_4ti2(*out << "Rays:\n" << vs << "\n";) -@@ -944,7 +944,7 @@ RayMatrixAlgorithm::compute3( - IndexSet::set_difference(supports[r2], r1_supp, temp_diff); - if (temp_diff.power_of_2()) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - DEBUG_4ti2(++num_one_diff_added;) -@@ -959,7 +959,7 @@ RayMatrixAlgorithm::compute3( - IndexSet::set_difference(r1_supp, supports[r2], temp_diff); - if (temp_diff.power_of_2()) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - DEBUG_4ti2(++num_one_diff_added;) -@@ -984,7 +984,7 @@ RayMatrixAlgorithm::compute3( - IndexSet::set_difference(r1_supp, supports[r2], temp_diff2); - if (temp_diff2.power_of_2()) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - DEBUG_4ti2(++num_one_diff_added;) -@@ -996,7 +996,7 @@ RayMatrixAlgorithm::compute3( - DEBUG_4ti2(++num_checks;) - if (rank_check(matrix, temp_matrix, temp_diff, r1_rows)) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - DEBUG_4ti2(++num_added;) -@@ -1012,7 +1012,7 @@ RayMatrixAlgorithm::compute3( - IndexSet::set_difference(supports[r2], r1_supp, temp_diff); - if (temp_diff.power_of_2()) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - DEBUG_4ti2(++num_one_diff_added;) -diff -up 4ti2-1.3.2/src/groebner/RaySupportAlgorithm.tpp.gcc47 4ti2-1.3.2/src/groebner/RaySupportAlgorithm.tpp ---- 4ti2-1.3.2/src/groebner/RaySupportAlgorithm.tpp.gcc47 2012-03-05 14:23:20.076683203 -0500 -+++ 4ti2-1.3.2/src/groebner/RaySupportAlgorithm.tpp 2012-03-05 14:28:38.437194415 -0500 -@@ -138,7 +138,7 @@ RaySupportAlgorithm::compute0( - - // Find the next column. - int next_positive_count, next_negative_count, next_zero_count; -- Index next_col = next_column(vs, remaining, -+ Index next_col = this->next_column(vs, remaining, - next_positive_count, - next_negative_count, - next_zero_count); -@@ -153,7 +153,7 @@ RaySupportAlgorithm::compute0( - ) - - // We sort the vectors into zeros, positives, then negatives. -- sort(vs, supports, next_col, next_zero_count, next_positive_count, -+ RayImplementation::sort(vs, supports, next_col, next_zero_count, next_positive_count, - next_negative_count); - - // Note that the tree needs the ordering of the current vectors to be -@@ -206,7 +206,7 @@ RaySupportAlgorithm::compute0( - IndexSet::set_difference(supports[r2], r1_supp, temp_diff); - if (temp_diff.power_of_2()) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - ++num_added; -@@ -226,7 +226,7 @@ RaySupportAlgorithm::compute0( - ++num_support_checks; - if (!tree.dominated(temp_supp, r1, r2)) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - ++num_added; -@@ -337,7 +337,7 @@ RaySupportAlgorithm::compute1( - - // Find the next column. - int next_positive_count, next_negative_count, next_zero_count; -- Index next_col = next_column(vs, remaining, -+ Index next_col = this->next_column(vs, remaining, - next_positive_count, - next_negative_count, - next_zero_count); -@@ -352,7 +352,7 @@ RaySupportAlgorithm::compute1( - ) - - // We sort the vectors into zeros, positives, then negatives. -- sort(vs, supports, next_col, next_zero_count, next_positive_count, -+ RayImplementation::sort(vs, supports, next_col, next_zero_count, next_positive_count, - next_negative_count); - - // Note that the tree needs the ordering of the current vectors to be -@@ -404,7 +404,7 @@ RaySupportAlgorithm::compute1( - IndexSet::set_difference(supports[r2], r1_supp, temp_diff); - if (temp_diff.power_of_2()) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - ++num_added; -@@ -424,7 +424,7 @@ RaySupportAlgorithm::compute1( - zero_supp.set_union(supports[index]); - if (index >= r2_start && index < r2_finish) - { -- create_new_vector(vs, supports, r1, index, next_col, -+ this->create_new_vector(vs, supports, r1, index, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - ++num_added; -@@ -443,7 +443,7 @@ RaySupportAlgorithm::compute1( - ++num_support_checks; - if (!tree.dominated(temp_supp, r1, r2)) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - ++num_added; -@@ -550,7 +550,7 @@ RaySupportAlgorithm::compute2( - - // Find the next column. - int next_positive_count, next_negative_count, next_zero_count; -- Index next_col = next_column(vs, remaining, -+ Index next_col = this->next_column(vs, remaining, - next_positive_count, - next_negative_count, - next_zero_count); -@@ -565,7 +565,7 @@ RaySupportAlgorithm::compute2( - ) - - // We sort the vectors into zeros, positives, then negatives. -- sort(vs, supports, next_col, next_zero_count, next_positive_count, -+ RayImplementation::sort(vs, supports, next_col, next_zero_count, next_positive_count, - next_negative_count); - - // Note that the tree needs the ordering of the current vectors to be -@@ -619,7 +619,7 @@ RaySupportAlgorithm::compute2( - IndexSet::set_difference(supports[r2], r1_supp, temp_diff); - if (temp_diff.power_of_2()) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - ++num_added; -@@ -638,7 +638,7 @@ RaySupportAlgorithm::compute2( - zero_supp.set_union(supports[index]); - if (index >= r2_start && index < r2_finish) - { -- create_new_vector(vs, supports, r1, index, next_col, -+ this->create_new_vector(vs, supports, r1, index, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - ++num_added; -@@ -661,7 +661,7 @@ RaySupportAlgorithm::compute2( - ++num_support_checks; - if (!tree.dominated(temp_supp, r1, r2)) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - ++num_added; -@@ -773,7 +773,7 @@ RaySupportAlgorithm::compute3( - - // Find the next column. - int next_positive_count, next_negative_count, next_zero_count; -- Index next_col = next_column(vs, remaining, -+ Index next_col = this->next_column(vs, remaining, - next_positive_count, - next_negative_count, - next_zero_count); -@@ -788,7 +788,7 @@ RaySupportAlgorithm::compute3( - ) - - // We sort the vectors into zeros, positives, then negatives. -- sort(vs, supports, next_col, next_zero_count, next_positive_count, -+ RayImplementation::sort(vs, supports, next_col, next_zero_count, next_positive_count, - next_negative_count); - - int original_size = vs.get_number(); -@@ -852,7 +852,7 @@ RaySupportAlgorithm::compute3( - IndexSet::set_difference(supports[r2], r1_supp, temp_diff); - if (temp_diff.power_of_2()) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - DEBUG_4ti2(++num_added;) -@@ -866,7 +866,7 @@ RaySupportAlgorithm::compute3( - IndexSet::set_difference(r1_supp, supports[r2], temp_diff); - if (temp_diff.power_of_2()) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - DEBUG_4ti2(++num_one_diff_added;) -@@ -885,7 +885,7 @@ RaySupportAlgorithm::compute3( - zero_supp.set_union(supports[index]); - if (index >= r2_index && index < r2_finish) - { -- create_new_vector(vs, supports, r1, index, next_col, -+ this->create_new_vector(vs, supports, r1, index, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - DEBUG_4ti2(++num_added;) -@@ -905,7 +905,7 @@ RaySupportAlgorithm::compute3( - IndexSet::set_difference(r1_supp, supports[r2], temp_diff2); - if (temp_diff2.power_of_2()) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - DEBUG_4ti2(++num_one_diff_added;) -@@ -918,7 +918,7 @@ RaySupportAlgorithm::compute3( - DEBUG_4ti2(++num_checks;) - if (!tree.dominated(temp_supp, r1, r2)) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - DEBUG_4ti2(++num_added;) -@@ -1030,7 +1030,7 @@ RaySupportAlgorithm::compute4( - - // Find the next column. - int next_positive_count, next_negative_count, next_zero_count; -- Index next_col = next_column(vs, remaining, -+ Index next_col = this->next_column(vs, remaining, - next_positive_count, - next_negative_count, - next_zero_count); -@@ -1045,7 +1045,7 @@ RaySupportAlgorithm::compute4( - ) - - // We sort the vectors into zeros, positives, then negatives. -- sort(vs, supports, next_col, next_zero_count, next_positive_count, -+ RayImplementation::sort(vs, supports, next_col, next_zero_count, next_positive_count, - next_negative_count); - - int original_size = vs.get_number(); -@@ -1114,7 +1114,7 @@ RaySupportAlgorithm::compute4( - IndexSet::set_difference(supports[r2], r1_supp, temp_diff); - if (temp_diff.power_of_2()) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - ++num_added; -@@ -1134,7 +1134,7 @@ RaySupportAlgorithm::compute4( - zero_supp.set_union(supports[index]); - if (index >= r2_start && index < r2_finish) - { -- create_new_vector(vs, supports, r1, index, next_col, -+ this->create_new_vector(vs, supports, r1, index, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - ++num_added; -@@ -1148,7 +1148,7 @@ RaySupportAlgorithm::compute4( - IndexSet::set_difference(r1_supp, supports[r2], temp_diff); - if (temp_diff.power_of_2()) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - DEBUG_4ti2(++num_one_diff_added;) -@@ -1168,7 +1168,7 @@ RaySupportAlgorithm::compute4( - IndexSet::set_difference(r1_supp, supports[r2], temp_diff2); - if (temp_diff2.power_of_2()) - { -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - DEBUG_4ti2(++num_one_diff_added;) -@@ -1183,7 +1183,7 @@ RaySupportAlgorithm::compute4( - int count = temp_supp.count(); - next_supports[count].push_back(temp_supp); - next_indices[count].push_back(std::pair(r1,r2)); -- //create_new_vector(vs, supports, r1, r2, next_col, -+ //this->create_new_vector(vs, supports, r1, r2, next_col, - // next_positive_count, next_negative_count, - // temp, temp_supp); - //++num_added; -@@ -1216,7 +1216,7 @@ RaySupportAlgorithm::compute4( - { - int r1 = next_indices[i][j].first; - int r2 = next_indices[i][j].second; -- create_new_vector(vs, supports, r1, r2, next_col, -+ this->create_new_vector(vs, supports, r1, r2, next_col, - next_positive_count, next_negative_count, - temp, temp_supp); - next_tree.insert(next_supports[i][j], vs.get_number()-1); diff --git a/4ti2.spec b/4ti2.spec index abbc956..c0f00eb 100644 --- a/4ti2.spec +++ b/4ti2.spec @@ -1,124 +1,154 @@ -Name: 4ti2 -Version: 1.3.2 -Release: 12%{?dist} -Summary: A software package for problems on linear spaces +%global giturl https://github.com/4ti2/4ti2 -Group: System Environment/Libraries -License: GPLv2+ -URL: http://www.4ti2.de/ -Source0: http://www.4ti2.de/version_%{version}/%{name}-%{version}.tar.gz -Source1: http://www.4ti2.de/4ti2_manual.pdf -Source2: 4ti2.module.in -Patch0: 4ti2-1.3.2-gcc47.patch -Requires: environment-modules -BuildRequires: gmp-devel +Name: 4ti2 +Version: 1.6.14 +Release: %autorelease +Summary: Algebraic, geometric and combinatorial problems on linear spaces + +%global relver %(tr . _ <<< %{version}) + +# The content is GPL-2.0-or-later. The remaining licenses cover the various +# fonts embedded in the PDF manual. +# AMS: OFL-1.1-RFN +# CM: Knuth-CTAN +# CM-Super: GPL-1.0-or-later +License: GPL-2.0-or-later AND OFL-1.1-RFN AND Knuth-CTAN AND GPL-1.0-or-later +# Source files under licenses other than GPL-2.0-or-later: +# GPL-2.0-or-later WITH Autoconf-exception-macro: compile, +# m4/ax_cflags_warn_all.m4 +# GPL-2.0-or-later WITH Libtool-exception: configure, ltmain.sh +# GPL-2.0-or-later OR MIT: ltmain.sh +# GPL-3.0-or-later: lib/*.{c,h} (not compiled into the binary) +# GPL-3.0-or-later WITH Autoconf-exception-generic: lib/Makefile.am, +# m4/onceonly.m4 +# GPL-3.0-or-later WITH Autoconf-exception-macro: config.guess, +# m4/ax_check_compile_flag.m4 +# FSFUL: configure, m4/libtool.m4 +# FSFULLR: aclocal.m4, m4/00gnulib.m4, m4/libtool.m4 +# FSFULLRWD: aclocal.m4, Makefile.in +# X11: install-sh +# LicenseRef-Fedora-Public-Domain: install-sh +SourceLicense: GPL-2.0-or-later AND GPL-2.0-or-later WITH Autoconf-exception-macro AND GPL-2.0-or-later WITH Libtool-exception AND (GPL-2.0-or-later OR MIT) AND GPL-3.0-or-later AND GPL-3.0-or-later WITH Autoconf-exception-generic AND GPL-3.0-or-later WITH Autoconf-exception-macro AND FSFUL AND FSFULLR AND FSFULLRWD AND X11 AND LicenseRef-Fedora-Public-Domain +URL: https://4ti2.github.io/ +VCS: git:%{giturl}.git +Source0: %{giturl}/releases/download/Release_%{relver}/%{name}-%{version}.tar.gz +Source1: 4ti2.module.in +# Do not discard const qualifiers +Patch: %{giturl}/pull/58.patch + +# See https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +BuildRequires: environment(modules) +BuildRequires: gcc +BuildRequires: gcc-c++ BuildRequires: glpk-devel +BuildRequires: gmp-devel +BuildRequires: make +BuildRequires: tex(latex) +BuildRequires: tex(epic.sty) + +# 4ti2 contains a copy of gnulib, which has been granted a bundling exception: +# https://fedoraproject.org/wiki/Bundled_Libraries_Virtual_Provides +Provides: bundled(gnulib) + +Requires: 4ti2-libs%{?_isa} = %{version}-%{release} +Requires: environment(modules) %description -A software package for algebraic, geometric and combinatorial -problems on linear spaces. +A software package for algebraic, geometric and combinatorial problems on +linear spaces. -This package uses Environment Modules, to load the binaries onto -your PATH you will need to run module load %{name}-%{_arch} +This package uses Environment Modules. Prior to invoking the binaries, you +must run "module load 4ti2-%{_arch}" to modify your PATH. + +%package devel +Summary: Headers needed to develop software that uses 4ti2 +License: GPL-2.0-or-later +Requires: 4ti2-libs%{?_isa} = %{version}-%{release} +Requires: gmp-devel%{?_isa} + +%description devel +Headers and library files needed to develop software that uses 4ti2. + +%package libs +Summary: Library for problems on linear spaces +License: GPL-2.0-or-later + +%description libs +A library for algebraic, geometric and combinatorial problems on linear +spaces. %prep -%setup -q -cp -p %{SOURCE1} . -%patch0 -p1 -b .gcc47 +%autosetup -p1 + +%conf +# Fix encodings +iconv -f ISO8859-1 -t UTF-8 NEWS > NEWS.utf8 +touch -r NEWS NEWS.utf8 +mv -f NEWS.utf8 NEWS + +%configure --enable-shared --disable-static + +# Get rid of undesirable hardcoded rpaths; workaround libtool reordering +# -Wl,--as-needed after all the libraries. +sed -e 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' \ + -e 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' \ + -e 's|CC="\(.*g..\)"|CC="\1 -Wl,--as-needed"|' \ + -i libtool %build -CXXFLAGS="%{optflags} -I%{_includedir}/glpk" \ -CFLAGS="%{optflags} -I%{_includedir}/glpk" \ -./configure --disable-shared --disable-static \ - --prefix=%{_libdir}/%{name} \ - --libdir=%{_libdir}/%{name}/lib/ \ - --bindir=%{_libdir}/%{name}/bin/ -perl -pi -e 's|hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=\"-L\\\$libdir\"|g;' libtool +%make_build -make %{?_smp_mflags} +# Build the manual +export LD_LIBRARY_PATH=$PWD/src/4ti2/.libs:$PWD/src/fiber/.libs:$PWD/src/groebner/.libs:$PWD/src/ppi/.libs:$PWD/src/util/.libs:$PWD/src/zsolve/.libs +cd doc +make update-manual +bibtex 4ti2_manual +pdflatex 4ti2_manual +pdflatex 4ti2_manual +cd - %install -make install-exec DESTDIR=%{buildroot} +%make_install + +# Move the include files into a private directory +mkdir -p %{buildroot}%{_includedir}/tmp +mv %{buildroot}%{_includedir}/{4ti2,groebner,util,zsolve} \ + %{buildroot}%{_includedir}/tmp +mv %{buildroot}%{_includedir}/tmp %{buildroot}%{_includedir}/4ti2 + +# Move the 4ti2 binaries +mkdir -p %{buildroot}%{_libdir}/4ti2 +mv %{buildroot}%{_bindir} %{buildroot}%{_libdir}/4ti2 # Make the environment-modules file -mkdir -p %{buildroot}%{_datadir}/Modules/modulefiles/ +mkdir -p %{buildroot}%{_modulesdir} # Since we're doing our own substitution here, use our own definitions. -sed 's#@LIBDIR@#'%{_libdir}/%{name}'#g;' < %SOURCE2 >%{buildroot}%{_datadir}/Modules/modulefiles/%{name}-%{_arch} +sed 's#@LIBDIR@#'%{_libdir}/4ti2'#g;' < %SOURCE1 >%{buildroot}%{_modulesdir}/4ti2-%{_arch} -# The libraries are not really fit for use outside the package. -rm -rf %{buildroot}/%{_libdir}/%{name}/lib* +# We don't want documentation in _datadir +rm -fr %{buildroot}%{_datadir}/4ti2/doc %check +export LD_LIBRARY_PATH=%{buildroot}%{_libdir} make check %files -%defattr(-,root,root,-) -%doc COPYING TODO 4ti2_manual.pdf -%dir %{_libdir}/%{name}/bin -%dir %{_libdir}/%{name} -%{_datadir}/Modules/modulefiles/%{name}-%{_arch} -%{_libdir}/%{name}/bin/output -%{_libdir}/%{name}/bin/4ti2gmp -%{_libdir}/%{name}/bin/4ti2int32 -%{_libdir}/%{name}/bin/4ti2int64 -%{_libdir}/%{name}/bin/circuits -%{_libdir}/%{name}/bin/genmodel -%{_libdir}/%{name}/bin/gensymm -%{_libdir}/%{name}/bin/graver -%{_libdir}/%{name}/bin/groebner -%{_libdir}/%{name}/bin/hilbert -%{_libdir}/%{name}/bin/markov -%{_libdir}/%{name}/bin/minimize -%{_libdir}/%{name}/bin/normalform -%{_libdir}/%{name}/bin/ppi -%{_libdir}/%{name}/bin/qsolve -%{_libdir}/%{name}/bin/rays -%{_libdir}/%{name}/bin/walk -%{_libdir}/%{name}/bin/zbasis -%{_libdir}/%{name}/bin/zsolve +%doc doc/4ti2_manual.pdf +%{_libdir}/4ti2/ +%{_modulesdir}/4ti2-%{_arch} + +%files devel +%{_includedir}/4ti2/ +%{_libdir}/lib4ti2*.so +%{_libdir}/libzsolve.so + +%files libs +%doc AUTHORS NEWS README.md THANKS +%license COPYING +%{_libdir}/lib4ti2*.so.0{,.*} +%{_libdir}/libzsolve.so.0{,.*} %changelog -* Wed Jul 18 2012 Fedora Release Engineering - 1.3.2-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Mon Mar 5 2012 Tom Callaway - 1.3.2-11 -- fix gcc47 issues - -* Tue Feb 28 2012 Fedora Release Engineering - 1.3.2-10 -- Rebuilt for c++ ABI breakage - -* Thu Jan 12 2012 Fedora Release Engineering - 1.3.2-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild - -* Wed Nov 16 2011 Peter Robinson - 1.3.2-8 -- Rebuild for new gmp - -* Wed Sep 21 2011 Peter Schiffer - 1.3.2-7.1 -- rebuild with new gmp - -* Mon Feb 07 2011 Fedora Release Engineering - 1.3.2-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - -* Fri May 21 2010 Mark Chappell - 1.3.2-6 -- Take ownership of 2 directories we created - -* Tue Mar 02 2010 Mark Chappell - 1.3.2-5 -- Add note to description about environment modules - -* Tue Mar 02 2010 Mark Chappell - 1.3.2-4 -- Switch to using modules -- Tag with the correct licence (GPLv2+) - -* Thu Feb 25 2010 Mark Chappell - 1.3.2-3 -- Preserve time stamp on 4ti2_manual.pdf -- Whitespace cleanup -- Remove obsolete post and portun calls -- Manually specify binaries - -* Thu Feb 25 2010 Mark Chappell - 1.3.2-2 -- Tidy up inconsistant use of macros -- Remove empty devel package -- Include 4ti2 manual - -* Wed Feb 17 2010 M D Chappell - 1.3.2-1 -- Initial build +%autochangelog diff --git a/58.patch b/58.patch new file mode 100644 index 0000000..214164b --- /dev/null +++ b/58.patch @@ -0,0 +1,238 @@ +From c64563088b224a778a236c1e1495f0a4edd2c9df Mon Sep 17 00:00:00 2001 +From: Jerry James +Date: Wed, 26 Nov 2025 11:02:23 -0700 +Subject: [PATCH] Do not discard const qualifiers + +--- + src/util/output.c | 2 +- + src/util/output.h | 2 +- + src/util/print.c | 40 ++++++++++++++++++++++------------------ + src/util/print.h | 36 ++++++++++++++++++++---------------- + 4 files changed, 44 insertions(+), 36 deletions(-) + +diff --git a/src/util/output.c b/src/util/output.c +index 8623d01..a0f4f62 100644 +--- a/src/util/output.c ++++ b/src/util/output.c +@@ -37,7 +37,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + #include "banner.h" + + /* ----------------------------------------------------------------- */ +-listVector* readListVector(int *numOfVars, char *fileName) { ++listVector* readListVector(int *numOfVars, const char *fileName) { + int numOfVectors; + listVector *basis, *endBasis; + vector b; +diff --git a/src/util/output.h b/src/util/output.h +index 93bece5..bbcff84 100644 +--- a/src/util/output.h ++++ b/src/util/output.h +@@ -1,3 +1,3 @@ + int output_main(int, char**); +-listVector* readListVector(int*, char*); ++listVector* readListVector(int*, const char*); + listVector* extractNonDominatedVectors(listVector*, listVector*, int); +diff --git a/src/util/print.c b/src/util/print.c +index 157200a..eca5b82 100644 +--- a/src/util/print.c ++++ b/src/util/print.c +@@ -82,7 +82,8 @@ void printVectorToFile(FILE *out, vector v, int numOfVars) { + return ; + } + /* ----------------------------------------------------------------- */ +-void printListVectorToFile(char* fileName, listVector* basis, int numOfVars) { ++void printListVectorToFile(const char* fileName, listVector* basis, ++ int numOfVars) { + int len; + FILE* out; + +@@ -106,8 +107,8 @@ void printListVectorToFile(char* fileName, listVector* basis, int numOfVars) { + fclose(out); + return ; + } +-/* ----------------------------------------------------------------- */ +-void printSubsetOfListVectorToFile(char* fileName, listVector* basis, ++/* ------------------------------------------------------------------------ */ ++void printSubsetOfListVectorToFile(const char* fileName, listVector* basis, + vector ind, int numOfVars) { + int len,len2,j; + FILE* out; +@@ -147,7 +148,8 @@ void printVectorWithoutColumnToFile(FILE *out, vector v, int ind, + return ; + } + /* ----------------------------------------------------------------- */ +-void printListVectorWithoutColumnToFile(char* fileName, listVector* basis, ++void printListVectorWithoutColumnToFile(const char* fileName, ++ listVector* basis, + int ind, int numOfVars) { + int len; + FILE* out; +@@ -185,7 +187,7 @@ void printVectorWithAddtionalColumnToFile(FILE *out, vector v, int ind, + return ; + } + /* ----------------------------------------------------------------- */ +-void printListVectorWithAdditionalColumnToFile(char* fileName, ++void printListVectorWithAdditionalColumnToFile(const char* fileName, + listVector* basis, + int ind, int val, + int numOfVars) { +@@ -214,7 +216,7 @@ void printListVectorWithAdditionalColumnToFile(char* fileName, + return ; + } + /* ----------------------------------------------------------------- */ +-void printTransposedListVectorToFile(char* fileName, listVector* basis, ++void printTransposedListVectorToFile(const char* fileName, listVector* basis, + int numOfVars) { + int i,len; + listVector *tmp; +@@ -318,7 +320,7 @@ void printBinomialToFile(FILE *out, vector v, int numOfVars, char** labels) { + return ; + } + /* ----------------------------------------------------------------- */ +-void printListBinomialsToFile(char* fileName, listVector* basis, ++void printListBinomialsToFile(const char* fileName, listVector* basis, + int numOfVars, char** labels) { + FILE* out; + +@@ -377,7 +379,8 @@ void printMonomialToFile(FILE *out, vector v, int numOfVars, char** labels) { + return ; + } + /* ----------------------------------------------------------------- */ +-void printListMonomialsAndBinomialsToFile(char* fileName, listVector* basis, ++void printListMonomialsAndBinomialsToFile(const char* fileName, ++ listVector* basis, + int numOfVars, char** labels) { + FILE* out; + +@@ -455,7 +458,8 @@ void printVectorToFileMacaulay2(FILE *out, vector v, int numOfVars) { + return ; + } + /* ----------------------------------------------------------------- */ +-void printListVectorMaple(char* fileName, listVector* basis, int numOfVars) { ++void printListVectorMaple(const char* fileName, listVector* basis, ++ int numOfVars) { + FILE* out; + + if (!(out = fopen(fileName,"w"))) { +@@ -480,7 +484,7 @@ void printListVectorMaple(char* fileName, listVector* basis, int numOfVars) { + return ; + } + /* ----------------------------------------------------------------- */ +-void printListVectorMacaulay2(char* fileName, listVector* basis, ++void printListVectorMacaulay2(const char* fileName, listVector* basis, + int numOfVars) { + FILE* out; + +@@ -506,8 +510,8 @@ void printListVectorMacaulay2(char* fileName, listVector* basis, + return ; + } + /* ----------------------------------------------------------------- */ +-void print3wayTables(char* fileName, listVector* basis, int x, int y, +- int z, int numOfVars) { ++void print3wayTables(const char* fileName, listVector* basis, int x, ++ int y, int z, int numOfVars) { + int i,j,k; + vector v; + FILE* out; +@@ -583,7 +587,7 @@ void printL1NormOfListVector(listVector *basis, int numOfVars) { + return; + } + /* ----------------------------------------------------------------- */ +-void printListVectorWithGivenDegreesToFile(char *outFileName, ++void printListVectorWithGivenDegreesToFile(const char *outFileName, + listVector *basis, int numOfVars, + int lowdegree, int highdegree){ + int i,s,len; +@@ -647,7 +651,7 @@ void printSupportsOfListVector(listVector *basis, int numOfVars) { + return; + } + /* ----------------------------------------------------------------- */ +-void printListVectorWithGivenSupportsToFile(char *outFileName, ++void printListVectorWithGivenSupportsToFile(const char *outFileName, + listVector *basis, int numOfVars, + int lowdegree, int highdegree){ + int i,s,len; +@@ -724,7 +728,7 @@ void printTypesOfListVector(listVector *basis, int sizeOfLayer, + return; + } + /* ----------------------------------------------------------------- */ +-void printListVectorWithGivenNonzeroEntryToFile(char *outFileName, ++void printListVectorWithGivenNonzeroEntryToFile(const char *outFileName, + listVector *basis, + int numOfVars, + int coord){ +@@ -760,8 +764,8 @@ void printListVectorWithGivenNonzeroEntryToFile(char *outFileName, + return; + } + /* ----------------------------------------------------------------- */ +-void writeResult(listVector *basis, int numOfVars, char *fileName, +- char *basisType, int infoLevel) { ++void writeResult(listVector *basis, int numOfVars, const char *fileName, ++ const char *basisType, int infoLevel) { + const char *infoMessage="undefined"; + const char *outExtension=""; + char *outFileName=NULL; +@@ -803,7 +807,7 @@ void writeResult(listVector *basis, int numOfVars, char *fileName, + return; + } + /* ----------------------------------------------------------------- */ +-void printListRepresentativesToFile(char* fileName, listOrbit* basis, ++void printListRepresentativesToFile(const char* fileName, listOrbit* basis, + int numOfVars) { + int len; + FILE* out; +diff --git a/src/util/print.h b/src/util/print.h +index 3789562..2d07334 100644 +--- a/src/util/print.h ++++ b/src/util/print.h +@@ -24,30 +24,34 @@ void printVersionInfo(); + void printVector(vector, int); + void printListVector(listVector*, int); + void printVectorToFile(FILE*, vector, int); +-void printListVectorToFile(char*, listVector*, int); +-void printSubsetOfListVectorToFile(char*, listVector*, vector, int); +-void printListVectorWithoutColumnToFile(char*, listVector*, int, int); +-void printListVectorWithAdditionalColumnToFile(char*, listVector*, int, int, +- int); +-void printTransposedListVectorToFile(char*, listVector*, int); ++void printListVectorToFile(const char*, listVector*, int); ++void printSubsetOfListVectorToFile(const char*, listVector*, vector, int); ++void printListVectorWithoutColumnToFile(const char*, listVector*, int, int); ++void printListVectorWithAdditionalColumnToFile(const char*, listVector*, int, ++ int, int); ++void printTransposedListVectorToFile(const char*, listVector*, int); + void printVectorToFileWithBrackets(FILE*, vector, int); + void printBinomialToFile(FILE*, vector, int, char**); +-void printListBinomialsToFile(char*, listVector*, int, char**); ++void printListBinomialsToFile(const char*, listVector*, int, char**); + void printMonomialToFile(FILE*, vector, int, char**); +-void printListMonomialsAndBinomialsToFile(char*, listVector*, int, char**); ++void printListMonomialsAndBinomialsToFile(const char*, listVector*, int, ++ char**); + void printMatrix(vector, int, int); + void printVectorToFileMaple(FILE*, vector, int); +-void printListVectorMaple(char*, listVector*, int); +-void printListVectorMacaulay2(char*, listVector*, int); +-void print3wayTables(char*, listVector*, int, int, int, int); ++void printListVectorMaple(const char*, listVector*, int); ++void printListVectorMacaulay2(const char*, listVector*, int); ++void print3wayTables(const char*, listVector*, int, int, int, int); + void printL1NormOfListVector(listVector*, int); +-void printListVectorWithGivenDegreesToFile(char*, listVector*, int, int, int); ++void printListVectorWithGivenDegreesToFile(const char*, listVector*, int, ++ int, int); + void printSupportsOfListVector(listVector*, int); + void printTypesOfListVector(listVector*, int, int); +-void printListVectorWithGivenSupportsToFile(char*, listVector*, int, int, int); +-void printListVectorWithGivenNonzeroEntryToFile(char*, listVector*, int, int); +-void writeResult(listVector*, int, char*, char*, int); +-void printListRepresentativesToFile(char*, listOrbit*, int); ++void printListVectorWithGivenSupportsToFile(const char*, listVector*, int, ++ int, int); ++void printListVectorWithGivenNonzeroEntryToFile(const char*, listVector*, int, ++ int); ++void writeResult(listVector*, int, const char*, const char*, int); ++void printListRepresentativesToFile(const char*, listOrbit*, int); + void printRationalVector(rationalVector*, int); + void printRationalVectorToFileWithoutBrackets(FILE*, rationalVector*, int); + diff --git a/README.md b/README.md new file mode 100644 index 0000000..0d1eaae --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# 4ti2 + +[4ti2](https://4ti2.github.io/) is a software package for algebraic, geometric +and combinatorial problems on linear spaces. diff --git a/changelog b/changelog new file mode 100644 index 0000000..1e29ac6 --- /dev/null +++ b/changelog @@ -0,0 +1,72 @@ +* Mon Jan 29 2024 Fedora Release Engineering - 1.6.10-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Mon Jan 22 2024 Fedora Release Engineering - 1.6.10-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 1.6.10-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Thu Jan 18 2024 Fedora Release Engineering - 1.6.10-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Jul 19 2023 Fedora Release Engineering - 1.6.10-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Fri Jul 14 2023 Jerry James - 1.6.10-1 +- Drop unneeded "egrep is obsolescent" fix (fixed in 1.6.10) + +* Sat Apr 29 2023 Jerry James - 1.6.10-1 +- Version 1.6.10 +- Drop upstreamed memleak & missing-include patches + +* Wed Jan 18 2023 Fedora Release Engineering - 1.6.9-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Tue Jan 10 2023 Jerry James - 1.6.9-14 +- Add patch to fix a memory leak + +* Thu Dec 29 2022 Jeff Law - 1.6.9-13 +- Add missing #include for gcc-13 + +* Wed Nov 16 2022 Jerry James - 1.6.9-12 +- Silence "egrep is obsolescent" warnings from the scripts +- Update license to reflect embedded fonts in the PDF manual + +* Thu Aug 11 2022 Jerry James - 1.6.9-11 +- Convert License tag to SPDX + +* Wed Jul 20 2022 Fedora Release Engineering - 1.6.9-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Wed Jan 19 2022 Fedora Release Engineering - 1.6.9-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Jul 21 2021 Fedora Release Engineering - 1.6.9-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Mon Jan 25 2021 Fedora Release Engineering - 1.6.9-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering - 1.6.9-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 13 2020 Tom Stellard - 1.6.9-6 +- Use make macros +- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro + +* Tue Jan 28 2020 Fedora Release Engineering - 1.6.9-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Mon Dec 9 2019 Jerry James - 1.6.9-4 +- Fix the location of the module file (bz 1773348) +- Do not build the empty fiber library + +* Wed Jul 24 2019 Fedora Release Engineering - 1.6.9-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu Jan 31 2019 Fedora Release Engineering - 1.6.9-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Sat Sep 29 2018 Jerry James - 1.6.9-1 +- Split back out of latte-integrale diff --git a/sources b/sources index c25f9de..399568c 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -93367e63944d8bb18192c4984544ed0d 4ti2-1.3.2.tar.gz -1b6fb847fc0eacddfaaef3d00c8bb7ba 4ti2_manual.pdf +SHA512 (4ti2-1.6.14.tar.gz) = 87b990de9c6dbe564bd700c6548c422ada52e0e3a0b3457f84c103124bee4fce05c49d7ee3c6ead145bbbd51e11969639dc75fe8f5b337457a3f3590af5315c3