Compare commits

..

No commits in common. "rawhide" and "f18" have entirely different histories.

7 changed files with 735 additions and 446 deletions

3
.gitignore vendored
View file

@ -1 +1,2 @@
4ti2-*.tar.gz
4ti2-1.3.2.tar.gz
4ti2_manual.pdf

631
4ti2-1.3.2-gcc47.patch Normal file
View file

@ -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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::compute1(
)
// We sort the vectors into zeros, positives, then negatives.
- sort(vs, supports, next_col, next_zero_count, next_positive_count,
+ RayImplementation<IndexSet>::sort(vs, supports, next_col, next_zero_count, next_positive_count,
next_negative_count);
matrix = orig_matrix;
@@ -218,7 +218,7 @@ RayMatrixAlgorithm<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::compute0(
)
// We sort the vectors into zeros, positives, then negatives.
- sort(vs, supports, next_col, next_zero_count, next_positive_count,
+ RayImplementation<IndexSet>::sort(vs, supports, next_col, next_zero_count, next_positive_count,
next_negative_count);
matrix = orig_matrix;
@@ -416,7 +416,7 @@ RayMatrixAlgorithm<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::compute2(
)
// We sort the vectors into zeros, positives, then negatives.
- sort(vs, supports, fathers, zeros, next_col, next_zero_count, next_positive_count,
+ RayImplementation<IndexSet>::sort(vs, supports, fathers, zeros, next_col, next_zero_count, next_positive_count,
next_negative_count);
matrix = orig_matrix;
@@ -665,7 +665,7 @@ RayMatrixAlgorithm<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::compute3(
)
// We sort the vectors into zeros, positives, then negatives.
- sort(vs, supports, next_col, next_zero_count, next_positive_count,
+ RayImplementation<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::compute0(
)
// We sort the vectors into zeros, positives, then negatives.
- sort(vs, supports, next_col, next_zero_count, next_positive_count,
+ RayImplementation<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::compute1(
)
// We sort the vectors into zeros, positives, then negatives.
- sort(vs, supports, next_col, next_zero_count, next_positive_count,
+ RayImplementation<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::compute2(
)
// We sort the vectors into zeros, positives, then negatives.
- sort(vs, supports, next_col, next_zero_count, next_positive_count,
+ RayImplementation<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::compute3(
)
// We sort the vectors into zeros, positives, then negatives.
- sort(vs, supports, next_col, next_zero_count, next_positive_count,
+ RayImplementation<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::compute4(
)
// We sort the vectors into zeros, positives, then negatives.
- sort(vs, supports, next_col, next_zero_count, next_positive_count,
+ RayImplementation<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::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<IndexSet>::compute4(
int count = temp_supp.count();
next_supports[count].push_back(temp_supp);
next_indices[count].push_back(std::pair<int,int>(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<IndexSet>::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);

230
4ti2.spec
View file

@ -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 <rel-eng@lists.fedoraproject.org> - 1.3.2-12
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Mon Mar 5 2012 Tom Callaway <spot@fedoraproject.org> - 1.3.2-11
- fix gcc47 issues
* Tue Feb 28 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.2-10
- Rebuilt for c++ ABI breakage
* Thu Jan 12 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.2-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
* Wed Nov 16 2011 Peter Robinson <pbrobinson@fedoraproject.org> - 1.3.2-8
- Rebuild for new gmp
* Wed Sep 21 2011 Peter Schiffer <pschiffe@redhat.com> - 1.3.2-7.1
- rebuild with new gmp
* Mon Feb 07 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.2-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Fri May 21 2010 Mark Chappell <tremble@fedoraproject.org> - 1.3.2-6
- Take ownership of 2 directories we created
* Tue Mar 02 2010 Mark Chappell <tremble@fedoraproject.org> - 1.3.2-5
- Add note to description about environment modules
* Tue Mar 02 2010 Mark Chappell <tremble@fedoraproject.org> - 1.3.2-4
- Switch to using modules
- Tag with the correct licence (GPLv2+)
* Thu Feb 25 2010 Mark Chappell <tremble@fedoraproject.org> - 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 <tremble@fedoraproject.org> - 1.3.2-2
- Tidy up inconsistant use of macros
- Remove empty devel package
- Include 4ti2 manual
* Wed Feb 17 2010 M D Chappell <tremble@tremble.org.uk> - 1.3.2-1
- Initial build

238
58.patch
View file

@ -1,238 +0,0 @@
From c64563088b224a778a236c1e1495f0a4edd2c9df Mon Sep 17 00:00:00 2001
From: Jerry James <loganjerry@gmail.com>
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);

View file

@ -1,4 +0,0 @@
# 4ti2
[4ti2](https://4ti2.github.io/) is a software package for algebraic, geometric
and combinatorial problems on linear spaces.

View file

@ -1,72 +0,0 @@
* Mon Jan 29 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.10-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Mon Jan 22 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.10-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.10-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Thu Jan 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.10-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.10-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Fri Jul 14 2023 Jerry James <loganjerry@gmail.com> - 1.6.10-1
- Drop unneeded "egrep is obsolescent" fix (fixed in 1.6.10)
* Sat Apr 29 2023 Jerry James <loganjerry@gmail.com> - 1.6.10-1
- Version 1.6.10
- Drop upstreamed memleak & missing-include patches
* Wed Jan 18 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.9-15
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Tue Jan 10 2023 Jerry James <loganjerry@gmail.com> - 1.6.9-14
- Add patch to fix a memory leak
* Thu Dec 29 2022 Jeff Law <jlaw@ventanamicro.com> - 1.6.9-13
- Add missing #include for gcc-13
* Wed Nov 16 2022 Jerry James <loganjerry@gmail.com> - 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 <loganjerry@gmail.com> - 1.6.9-11
- Convert License tag to SPDX
* Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.9-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.9-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.9-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Mon Jan 25 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.9-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.9-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Mon Jul 13 2020 Tom Stellard <tstellar@redhat.com> - 1.6.9-6
- Use make macros
- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.9-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Mon Dec 9 2019 Jerry James <loganjerry@gmail.com> - 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 <releng@fedoraproject.org> - 1.6.9-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.9-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Sat Sep 29 2018 Jerry James <loganjerry@gmail.com> - 1.6.9-1
- Split back out of latte-integrale

View file

@ -1 +1,2 @@
SHA512 (4ti2-1.6.14.tar.gz) = 87b990de9c6dbe564bd700c6548c422ada52e0e3a0b3457f84c103124bee4fce05c49d7ee3c6ead145bbbd51e11969639dc75fe8f5b337457a3f3590af5315c3
93367e63944d8bb18192c4984544ed0d 4ti2-1.3.2.tar.gz
1b6fb847fc0eacddfaaef3d00c8bb7ba 4ti2_manual.pdf