diff --git a/.gitignore b/.gitignore index 15fbfa9..bcc4e76 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -4ti2-*.tar.gz +4ti2-1.3.2.tar.gz +4ti2_manual.pdf diff --git a/4ti2-1.3.2-gcc47.patch b/4ti2-1.3.2-gcc47.patch new file mode 100644 index 0000000..faedd2a --- /dev/null +++ b/4ti2-1.3.2-gcc47.patch @@ -0,0 +1,631 @@ +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 c0f00eb..abbc956 100644 --- a/4ti2.spec +++ b/4ti2.spec @@ -1,154 +1,124 @@ -%global giturl https://github.com/4ti2/4ti2 - Name: 4ti2 -Version: 1.6.14 -Release: %autorelease -Summary: Algebraic, geometric and combinatorial problems on linear spaces +Version: 1.3.2 +Release: 12%{?dist} +Summary: A software package for 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 +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 -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) +BuildRequires: glpk-devel %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. 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. +This package uses Environment Modules, to load the binaries onto +your PATH you will need to run module load %{name}-%{_arch} %prep -%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 +%setup -q +cp -p %{SOURCE1} . +%patch0 -p1 -b .gcc47 %build -%make_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 -# 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 - +make %{?_smp_mflags} %install -%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 install-exec DESTDIR=%{buildroot} # Make the environment-modules file -mkdir -p %{buildroot}%{_modulesdir} +mkdir -p %{buildroot}%{_datadir}/Modules/modulefiles/ # Since we're doing our own substitution here, use our own definitions. -sed 's#@LIBDIR@#'%{_libdir}/4ti2'#g;' < %SOURCE1 >%{buildroot}%{_modulesdir}/4ti2-%{_arch} +sed 's#@LIBDIR@#'%{_libdir}/%{name}'#g;' < %SOURCE2 >%{buildroot}%{_datadir}/Modules/modulefiles/%{name}-%{_arch} -# We don't want documentation in _datadir -rm -fr %{buildroot}%{_datadir}/4ti2/doc +# The libraries are not really fit for use outside the package. +rm -rf %{buildroot}/%{_libdir}/%{name}/lib* %check -export LD_LIBRARY_PATH=%{buildroot}%{_libdir} make check %files -%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{,.*} +%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 %changelog -%autochangelog +* 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 diff --git a/58.patch b/58.patch deleted file mode 100644 index 214164b..0000000 --- a/58.patch +++ /dev/null @@ -1,238 +0,0 @@ -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 deleted file mode 100644 index 0d1eaae..0000000 --- a/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# 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 deleted file mode 100644 index 1e29ac6..0000000 --- a/changelog +++ /dev/null @@ -1,72 +0,0 @@ -* 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 399568c..c25f9de 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ -SHA512 (4ti2-1.6.14.tar.gz) = 87b990de9c6dbe564bd700c6548c422ada52e0e3a0b3457f84c103124bee4fce05c49d7ee3c6ead145bbbd51e11969639dc75fe8f5b337457a3f3590af5315c3 +93367e63944d8bb18192c4984544ed0d 4ti2-1.3.2.tar.gz +1b6fb847fc0eacddfaaef3d00c8bb7ba 4ti2_manual.pdf