1 /* Frobby: Software for monomial ideal computations.
2 Copyright (C) 2007 Bjarke Hammersholt Roune (www.broune.com)
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see http://www.gnu.org/licenses/.
16 */
17 #include "stdinc.h"
18 #include "GenerateDataFacade.h"
19
20 #include "randomDataGenerators.h"
21 #include "display.h"
22
GenerateDataFacade(bool printActions)23 GenerateDataFacade::GenerateDataFacade(bool printActions):
24 Facade(printActions) {
25 }
26
generateListIdeal(BigIdeal & ideal,size_t varCount)27 void GenerateDataFacade::generateListIdeal(BigIdeal& ideal,
28 size_t varCount) {
29 beginAction("Generating list ideal.");
30
31 ::generateLinkedListIdeal(ideal, varCount);
32
33 endAction();
34 }
35
generateKingChessIdeal(BigIdeal & ideal,unsigned int rowsAndColumns)36 void GenerateDataFacade::generateKingChessIdeal(BigIdeal& ideal,
37 unsigned int rowsAndColumns) {
38 beginAction("Generating king ideal.");
39
40 ::generateKingChessIdeal(ideal, rowsAndColumns);
41
42 endAction();
43 }
44
generateKnightChessIdeal(BigIdeal & ideal,unsigned int rowsAndColumns)45 void GenerateDataFacade::generateKnightChessIdeal
46 (BigIdeal& ideal, unsigned int rowsAndColumns) {
47 beginAction("Generating knight ideal.");
48
49 ::generateKnightChessIdeal(ideal, rowsAndColumns);
50
51 endAction();
52 }
53
generateRookChessIdeal(BigIdeal & ideal,unsigned int n,unsigned int k)54 void GenerateDataFacade::generateRookChessIdeal
55 (BigIdeal& ideal, unsigned int n, unsigned int k) {
56 beginAction("Generating rook ideal.");
57
58 ::generateRookChessIdeal(ideal, n, k);
59
60 endAction();
61 }
62
generateMatchingIdeal(BigIdeal & ideal,unsigned int n)63 void GenerateDataFacade::generateMatchingIdeal
64 (BigIdeal& ideal, unsigned int n) {
65 beginAction("Generating matching ideal.");
66
67 ::generateMatchingIdeal(ideal, n);
68
69 endAction();
70 }
71
generateTreeIdeal(BigIdeal & ideal,unsigned int varCount)72 void GenerateDataFacade::generateTreeIdeal
73 (BigIdeal& ideal,
74 unsigned int varCount) {
75 beginAction("Generating tree ideal.");
76
77 ::generateTreeIdeal(ideal, varCount);
78
79 endAction();
80 }
81
generateEdgeIdeal(BigIdeal & ideal,size_t varCount,size_t generatorCount)82 void GenerateDataFacade::generateEdgeIdeal
83 (BigIdeal& ideal, size_t varCount, size_t generatorCount) {
84 beginAction("Generating random edge ideal.");
85
86 bool fullSize =
87 ::generateRandomEdgeIdeal(ideal, varCount, generatorCount);
88
89 if (!fullSize)
90 displayNote("Generated ideal has fewer minimal "
91 "generators than requested.\n");
92
93 endAction();
94 }
95
generateIdeal(BigIdeal & ideal,size_t exponentRange,size_t varCount,size_t generatorCount)96 void GenerateDataFacade::generateIdeal(BigIdeal& ideal,
97 size_t exponentRange,
98 size_t varCount,
99 size_t generatorCount) {
100 beginAction("Generating random monomial ideal.");
101
102 bool fullSize =
103 ::generateRandomIdeal(ideal, exponentRange, varCount, generatorCount);
104
105 if (!fullSize)
106 displayNote("Generated ideal has fewer minimal "
107 "generators than requested.\n");
108
109 endAction();
110 }
111
112 void GenerateDataFacade::
generateFrobeniusInstance(vector<mpz_class> & instance,size_t entryCount,const mpz_class & maxEntry)113 generateFrobeniusInstance(vector<mpz_class>& instance,
114 size_t entryCount,
115 const mpz_class& maxEntry) {
116 beginAction("Generating random Frobenius instance.");
117
118 ::generateRandomFrobeniusInstance(instance, entryCount, maxEntry);
119
120 endAction();
121 }
122