Macaulay2 Engine
Loading...
Searching...
No Matches

◆ do_spairs()

void F4GB::do_spairs ( )
private

Definition at line 1008 of file f4.cpp.

1009{
1010 if (hilbert && hilbert->nRemainingExpected() == 0)
1011 {
1012 mSPairSet.discardSPairsInCurrentDegree();
1013 if (M2_gbTrace >= 1)
1014 fprintf(stderr,
1015 "-- skipping degree...no elements expected in this degree\n");
1016 return;
1017 }
1018 reset_matrix();
1019 clock_t begin_time = clock();
1020
1021 n_lcmdups = 0;
1022 make_matrix();
1023
1024 if (M2_gbTrace >= 6)
1025 {
1026 fprintf(stderr, "---------\n");
1027 show_matrix();
1028 fprintf(stderr, "---------\n");
1029 }
1030
1031 clock_t end_time = clock();
1032 clock_make_matrix += end_time - begin_time;
1033 double nsecs = static_cast<double>(end_time - begin_time);
1034 nsecs /= CLOCKS_PER_SEC;
1035 if (M2_gbTrace >= 2) fprintf(stderr, " make matrix time = %f\n", nsecs);
1036
1037 if (M2_gbTrace >= 3) mMonomialHashTable.dump();
1038
1039 double oldParallelGauss = mParallelGaussTime;
1040 double oldSerialGauss = mSerialGaussTime;
1041 double oldTailReduce = mTailReduceTime;
1042 double oldNewSPair = mNewSPairTime;
1043 double oldInsertNewGB = mInsertGBTime;
1044
1045 begin_time = clock();
1046 gauss_reduce(true);
1047 end_time = clock();
1048 clock_gauss += end_time - begin_time;
1049
1050 // fprintf(stderr, "---------\n");
1051 // show_matrix();
1052 // fprintf(stderr, "---------\n");
1053
1054 nsecs = static_cast<double>(end_time - begin_time);
1055 nsecs /= CLOCKS_PER_SEC;
1056 if (M2_gbTrace >= 2)
1057 {
1058 fprintf(stderr, " gauss time = %f\n", nsecs);
1059 fprintf(stderr, " parallel gauss time = %g\n", mParallelGaussTime - oldParallelGauss);
1060 fprintf(stderr, " serial gauss time = %g\n", mSerialGaussTime - oldSerialGauss);
1061 fprintf(stderr, " tail reduce time = %g\n", mTailReduceTime - oldTailReduce);
1062
1063 fprintf(stderr, " lcm dups = %ld\n", n_lcmdups);
1064 if (M2_gbTrace >= 6)
1065 {
1066 fprintf(stderr, "---------\n");
1067 show_matrix();
1068 fprintf(stderr, "---------\n");
1069 }
1070 }
1072 if (M2_gbTrace >= 2)
1073 {
1074 fprintf(stderr, " finding new spair time = %g\n", mNewSPairTime - oldNewSPair);
1075 fprintf(stderr, " number of spairs in queue = %zu\n", mSPairSet.numberOfSPairs());
1076 fprintf(stderr, " insert new gb time = %g\n", mInsertGBTime - oldInsertNewGB - (mNewSPairTime - oldNewSPair));
1077 }
1078
1079 int ngb = INTSIZE(mGroebnerBasis);
1080 if (M2_gbTrace >= 1)
1081 {
1082 fprintf(stderr, " # GB elements = %d\n", ngb);
1083 if (M2_gbTrace >= 5) {
1085 mSPairSet.display();
1086 }
1087 }
1088
1089 clear_matrix();
1090}
double mNewSPairTime
Definition f4.hpp:200
double mSerialGaussTime
Definition f4.hpp:198
clock_t clock_gauss
Definition f4.hpp:195
void show_gb_array(const gb_array &g) const
Definition f4.cpp:1253
double mTailReduceTime
Definition f4.hpp:199
F4SPairSet mSPairSet
Definition f4.hpp:249
clock_t clock_make_matrix
Definition f4.hpp:202
HilbertController * hilbert
Definition f4.hpp:175
void reset_matrix()
Definition f4.cpp:438
double mInsertGBTime
Definition f4.hpp:201
long n_lcmdups
Definition f4.hpp:165
void gauss_reduce(bool diagonalize)
Definition f4.cpp:612
double mParallelGaussTime
Definition f4.hpp:197
MonomialHashTable< MonomialInfo > mMonomialHashTable
Definition f4.hpp:187
void clear_matrix()
Definition f4.cpp:446
void make_matrix()
Definition f4.cpp:469
void show_matrix()
Definition f4.cpp:1296
void new_GB_elements()
Definition f4.cpp:976
gb_array mGroebnerBasis
Definition f4.hpp:181
int M2_gbTrace
Definition m2-types.cpp:52
#define INTSIZE(a)
Definition style.hpp:37

References clear_matrix(), clock_gauss, clock_make_matrix, gauss_reduce(), hilbert, INTSIZE, M2_gbTrace, make_matrix(), mGroebnerBasis, mInsertGBTime, mMonomialHashTable, mNewSPairTime, mParallelGaussTime, mSerialGaussTime, mSPairSet, mTailReduceTime, n_lcmdups, new_GB_elements(), reset_matrix(), show_gb_array(), and show_matrix().

Referenced by start_computation().