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
3
.gitignore
vendored
|
|
@ -1 +1,2 @@
|
|||
4ti2-*.tar.gz
|
||||
4ti2-1.3.2.tar.gz
|
||||
4ti2_manual.pdf
|
||||
|
|
|
|||
631
4ti2-1.3.2-gcc47.patch
Normal file
631
4ti2-1.3.2-gcc47.patch
Normal 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
230
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 <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
238
58.patch
|
|
@ -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);
|
||||
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
# 4ti2
|
||||
|
||||
[4ti2](https://4ti2.github.io/) is a software package for algebraic, geometric
|
||||
and combinatorial problems on linear spaces.
|
||||
72
changelog
72
changelog
|
|
@ -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
|
||||
3
sources
3
sources
|
|
@ -1 +1,2 @@
|
|||
SHA512 (4ti2-1.6.14.tar.gz) = 87b990de9c6dbe564bd700c6548c422ada52e0e3a0b3457f84c103124bee4fce05c49d7ee3c6ead145bbbd51e11969639dc75fe8f5b337457a3f3590af5315c3
|
||||
93367e63944d8bb18192c4984544ed0d 4ti2-1.3.2.tar.gz
|
||||
1b6fb847fc0eacddfaaef3d00c8bb7ba 4ti2_manual.pdf
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue