869{
870
872 base_is_revlex = true;
873 enum LastBlock { LEX, REVLEX, WEIGHTS, NONE };
874 LastBlock last = NONE;
875 int nwts = 0;
876 int nrows = 0;
877 int firstvar = 0;
878 component_direction = 0;
879 component_is_before_row =
880 -2;
881 size_t last_element = 0;
882
883
884 for (
int i = 0; i < mo.
len; i++)
885 {
888 {
892
893 last_element = mat.size();
894 for (
int j = 0; j <
p->nvars; j++)
895 {
897 }
898 last = LEX;
899 firstvar +=
p->nvars;
901 break;
905
907 last_element = mat.size();
908 for (
int j =
p->nvars - 1; j >= 1; --j)
909 {
911 }
912 last = REVLEX;
913 firstvar +=
p->nvars;
915 break;
919
921 last_element = mat.size();
922 for (
int j =
p->nvars - 1; j >= 1; --j)
923 {
925 }
926 last = REVLEX;
927 firstvar +=
p->nvars;
929 break;
931
932 last_element = mat.size();
933 for (
int j =
p->nvars - 1; j >= 0; --j)
934 {
936 }
937 last = REVLEX;
938 firstvar +=
p->nvars;
940 break;
942
943
944 nwts = (
p->nvars > nvars ? nvars :
p->nvars);
946 nrows++;
947 last_element = mat.size();
948 last = WEIGHTS;
949 break;
953 return false;
954 break;
956 component_direction = 1;
957 component_is_before_row = nrows;
958 break;
960 component_direction = -1;
961 component_is_before_row = nrows;
962 break;
963 default:
964
965 break;
966 }
967 }
968 if (last == LEX)
969 {
970
971 mat.resize(last_element);
972 if (nrows == component_is_before_row) component_is_before_row = -1;
973 base_is_revlex = false;
974 }
975 else if (last == REVLEX)
976 {
977
978 if (nrows == component_is_before_row) component_is_before_row = -1;
979 mat.resize(last_element);
980 }
981 else
982 {
983
984
985 }
986 return true;
987}
static void write_weights(std::vector< int > &grading, int nvars, int firstvar, int *wts, int nwts)
static void write_row(std::vector< int > &grading, int nvars, int which, int value)
int rawNumberOfVariables(const MonomialOrdering *mo)