001 /*
002 * $Id: ModSolvableGroebnerBaseTest.java 3445 2010-12-25 17:24:04Z kredel $
003 */
004
005 package edu.jas.gbmod;
006
007 //import edu.jas.poly.GroebnerBase;
008
009 import java.util.List;
010 import java.util.ArrayList;
011
012 import junit.framework.Test;
013 import junit.framework.TestCase;
014 import junit.framework.TestSuite;
015
016 import org.apache.log4j.BasicConfigurator;
017 //import org.apache.log4j.Logger;
018
019 //import edu.jas.structure.RingElem;
020
021 import edu.jas.arith.BigRational;
022
023 import edu.jas.poly.ModuleList;
024 import edu.jas.poly.PolynomialList;
025 import edu.jas.poly.GenSolvablePolynomial;
026 import edu.jas.poly.GenSolvablePolynomialRing;
027 import edu.jas.poly.TermOrder;
028 import edu.jas.poly.RelationTable;
029 import edu.jas.poly.WeylRelations;
030
031
032
033 /**
034 * ModSolvableGroebnerBase tests with JUnit.
035 * @author Heinz Kredel.
036 */
037
038 public class ModSolvableGroebnerBaseTest extends TestCase {
039
040 //private static final Logger logger = Logger.getLogger(ModSolvableGroebnerBaseTest.class);
041
042 /**
043 * main.
044 */
045 public static void main (String[] args) {
046 BasicConfigurator.configure();
047 junit.textui.TestRunner.run( suite() );
048 }
049
050 /**
051 * Constructs a <CODE>ModSolvableGroebnerBaseTest</CODE> object.
052 * @param name String.
053 */
054 public ModSolvableGroebnerBaseTest(String name) {
055 super(name);
056 }
057
058 /**
059 * suite.
060 */
061 public static Test suite() {
062 TestSuite suite= new TestSuite(ModSolvableGroebnerBaseTest.class);
063 return suite;
064 }
065
066 int port = 4711;
067 String host = "localhost";
068
069 BigRational cfac;
070 GenSolvablePolynomialRing<BigRational> pfac;
071
072 GenSolvablePolynomial<BigRational> a;
073 GenSolvablePolynomial<BigRational> b;
074 GenSolvablePolynomial<BigRational> c;
075 GenSolvablePolynomial<BigRational> d;
076 GenSolvablePolynomial<BigRational> e;
077 TermOrder tord;
078 GenSolvablePolynomial<BigRational> one;
079 GenSolvablePolynomial<BigRational> zero;
080
081 RelationTable<BigRational> table;
082
083 List<List<GenSolvablePolynomial<BigRational>>> L;
084 List<GenSolvablePolynomial<BigRational>> V;
085 PolynomialList<BigRational> F;
086 PolynomialList<BigRational> G;
087 ModuleList<BigRational> M;
088 ModuleList<BigRational> N;
089
090 ModSolvableGroebnerBase<BigRational> msbb;
091
092 int rl = 3; //4; //3;
093 int kl = 4;
094 int ll = 3;
095 int el = 2;
096 float q = 0.2f; //0.4f
097
098 protected void setUp() {
099 a = b = c = d = e = null;
100
101 cfac = new BigRational(1);
102 tord = new TermOrder();
103 pfac = new GenSolvablePolynomialRing<BigRational>(cfac,rl,tord);
104 msbb = new ModSolvableGroebnerBaseAbstract<BigRational>();
105
106 do {
107 a = pfac.random(kl, ll, el, q );
108 b = pfac.random(kl, ll, el, q );
109 c = pfac.random(kl, ll, el, q );
110 d = pfac.random(kl, ll, el, q );
111 } while ( a.isZERO() || b.isZERO() || c.isZERO() || d.isZERO() );
112 e = d; // = pfac.random(kl, ll, el, q );
113 one = pfac.getONE();
114 zero = pfac.getZERO();
115 }
116
117 protected void tearDown() {
118 a = b = c = d = e = null;
119 one = null;
120 zero = null;
121 msbb = null;
122 }
123
124
125 /**
126 * Test sequential left GBase.
127 *
128 */
129 public void testSequentialLeftModSolvableGB() {
130
131 assertTrue("not isZERO( a )", !a.isZERO() );
132
133 L = new ArrayList<List<GenSolvablePolynomial<BigRational>>>();
134
135 V = new ArrayList<GenSolvablePolynomial<BigRational>>();
136 V.add(a); V.add(zero); V.add(one);
137 L.add(V);
138 M = new ModuleList<BigRational>(pfac,L);
139 assertTrue("isLeftGB( { (a,0,1) } )", msbb.isLeftGB(M) );
140 //System.out.println("M = " + M );
141
142 N = msbb.leftGB( M );
143 //System.out.println("N = " + N );
144 assertTrue("isLeftGB( { (a,0,1) } )", msbb.isLeftGB(N) );
145
146 assertTrue("not isZERO( b )", !b.isZERO() );
147 V = new ArrayList<GenSolvablePolynomial<BigRational>>();
148 V.add(b); V.add(one); V.add(zero);
149 L.add(V);
150 M = new ModuleList<BigRational>(pfac,L);
151 //System.out.println("L = " + L.size() );
152
153 N = msbb.leftGB( M );
154 assertTrue("isLeftGB( { (a,0,1),(b,1,0) } )", msbb.isLeftGB(N) );
155 //System.out.println("N = " + N );
156
157 assertTrue("not isZERO( c )", !c.isZERO() );
158 V = new ArrayList<GenSolvablePolynomial<BigRational>>();
159 V.add(c); V.add(zero); V.add(zero);
160 L.add(V);
161 M = new ModuleList<BigRational>(pfac,L);
162 //System.out.println("M = " + M );
163 //System.out.println("L = " + L.size() );
164
165 N = msbb.leftGB( M );
166 assertTrue("isLeftGB( { (a,),(b,),(c,) } )", msbb.isLeftGB(N) );
167 //System.out.println("N = " + N );
168
169 assertTrue("not isZERO( d )", !d.isZERO() );
170 V = new ArrayList<GenSolvablePolynomial<BigRational>>();
171 V.add(d); V.add(zero); V.add(zero);
172 L.add(V);
173 M = new ModuleList<BigRational>(pfac,L);
174 //System.out.println("M = " + M );
175 //System.out.println("L = " + L.size() );
176
177 N = msbb.leftGB( M );
178 assertTrue("isLeftGB( { (a,b,c,d) } )", msbb.isLeftGB(N) );
179 //System.out.println("N = " + N );
180
181 }
182
183
184 /**
185 * Test sequential twosided GBase.
186 *
187 */
188 public void testSequentialTSModSolvableGB() {
189
190 assertTrue("not isZERO( a )", !a.isZERO() );
191
192 L = new ArrayList<List<GenSolvablePolynomial<BigRational>>>();
193
194 V = new ArrayList<GenSolvablePolynomial<BigRational>>();
195 V.add(a); V.add(zero); V.add(one);
196 L.add(V);
197 M = new ModuleList<BigRational>(pfac,L);
198 assertTrue("isTwosidedGB( { (a,0,1) } )", msbb.isTwosidedGB(M) );
199
200 N = msbb.twosidedGB( M );
201 assertTrue("isTwosidedGB( { (a,0,1) } )", msbb.isTwosidedGB(N) );
202
203 assertTrue("not isZERO( b )", !b.isZERO() );
204 V = new ArrayList<GenSolvablePolynomial<BigRational>>();
205 V.add(b); V.add(one); V.add(zero);
206 L.add(V);
207 M = new ModuleList<BigRational>(pfac,L);
208 //System.out.println("L = " + L.size() );
209
210 N = msbb.twosidedGB( M );
211 assertTrue("isTwosidedGB( { (a,0,1),(b,1,0) } )", msbb.isTwosidedGB(N) );
212 //System.out.println("N = " + N );
213
214 assertTrue("not isZERO( c )", !c.isZERO() );
215 V = new ArrayList<GenSolvablePolynomial<BigRational>>();
216 V.add(c); V.add(zero); V.add(zero);
217 L.add(V);
218 M = new ModuleList<BigRational>(pfac,L);
219 //System.out.println("L = " + L.size() );
220
221 N = msbb.twosidedGB( M );
222 assertTrue("isTwosidedGB( { (a,),(b,),(c,) } )", msbb.isTwosidedGB(N) );
223 //System.out.println("N = " + N );
224
225 assertTrue("not isZERO( d )", !d.isZERO() );
226 V = new ArrayList<GenSolvablePolynomial<BigRational>>();
227 V.add(d); V.add(zero); V.add(zero);
228 L.add(V);
229 M = new ModuleList<BigRational>(pfac,L);
230 //System.out.println("L = " + L.size() );
231
232 N = msbb.twosidedGB( M );
233 assertTrue("isTwosidedGB( { (a,b,c,d) } )", msbb.isTwosidedGB(N) );
234 //System.out.println("N = " + N );
235
236 }
237
238
239 /**
240 * Test sequential Weyl GBase.
241 *
242 */
243 public void testSequentialLeftModSolvableWeylGB() {
244
245 int rloc = 4;
246 pfac = new GenSolvablePolynomialRing<BigRational>(cfac,rloc,tord);
247 //System.out.println("pfac = " + pfac);
248 //System.out.println("pfac end");
249
250 WeylRelations<BigRational> wl = new WeylRelations<BigRational>(pfac);
251 //System.out.println("wl = ");
252 wl.generate();
253 //System.out.println("generate = ");
254 table = pfac.table;
255 //System.out.println("table = ");
256 //System.out.println("table = " + table.size());
257
258 do {
259 a = pfac.random(kl, ll, el, q );
260 b = pfac.random(kl, ll, el, q );
261 c = pfac.random(kl, ll, el, q );
262 d = pfac.random(kl, ll, el, q );
263 } while ( a.isZERO() || b.isZERO() || c.isZERO() || d.isZERO() );
264 e = d; // = pfac.random(kl, ll, el, q );
265 one = pfac.getONE();
266 zero = pfac.getZERO();
267 //System.out.println("a = " + a );
268 //System.out.println("b = " + b );
269 //System.out.println("c = " + c );
270 //System.out.println("d = " + d );
271 //System.out.println("e = " + e );
272
273 assertTrue("not isZERO( a )", !a.isZERO() );
274
275 L = new ArrayList<List<GenSolvablePolynomial<BigRational>>>();
276
277 V = new ArrayList<GenSolvablePolynomial<BigRational>>();
278 V.add(a); V.add(zero); V.add(one);
279 L.add(V);
280 M = new ModuleList<BigRational>(pfac,L);
281 assertTrue("isLeftGB( { (a,0,1) } )", msbb.isLeftGB(M) );
282
283 N = msbb.leftGB( M );
284 assertTrue("isLeftGB( { (a,0,1) } )", msbb.isLeftGB(N) );
285
286 assertTrue("not isZERO( b )", !b.isZERO() );
287 V = new ArrayList<GenSolvablePolynomial<BigRational>>();
288 V.add(b); V.add(one); V.add(zero);
289 L.add(V);
290 M = new ModuleList<BigRational>(pfac,L);
291 //System.out.println("L = " + L.size() );
292
293 N = msbb.leftGB( M );
294 assertTrue("isLeftGB( { (a,0,1),(b,1,0) } )", msbb.isLeftGB(N) );
295 //System.out.println("N = " + N );
296
297 assertTrue("not isZERO( c )", !c.isZERO() );
298 V = new ArrayList<GenSolvablePolynomial<BigRational>>();
299 V.add(c); V.add(zero); V.add(zero);
300 L.add(V);
301 M = new ModuleList<BigRational>(pfac,L);
302 //System.out.println("M = " + M );
303 //System.out.println("L = " + L.size() );
304
305 N = msbb.leftGB( M );
306 assertTrue("isLeftGB( { (a,),(b,),(c,) } )", msbb.isLeftGB(N) );
307 //System.out.println("N = " + N );
308
309 assertTrue("not isZERO( d )", !d.isZERO() );
310 V = new ArrayList<GenSolvablePolynomial<BigRational>>();
311 V.add(d); V.add(zero); V.add(zero);
312 L.add(V);
313 M = new ModuleList<BigRational>(pfac,L);
314 //System.out.println("M = " + M );
315 //System.out.println("L = " + L.size() );
316
317 N = msbb.leftGB( M );
318 assertTrue("isLeftGB( { (a,b,c,d) } )", msbb.isLeftGB(N) );
319 //System.out.println("N = " + N );
320 }
321
322
323 /**
324 * Test sequential right GBase.
325 *
326 */
327 public void testSequentialRightModSolvableGB() {
328
329 assertTrue("not isZERO( a )", !a.isZERO() );
330
331 L = new ArrayList<List<GenSolvablePolynomial<BigRational>>>();
332
333 V = new ArrayList<GenSolvablePolynomial<BigRational>>();
334 V.add(a); V.add(zero); V.add(one);
335 L.add(V);
336 M = new ModuleList<BigRational>(pfac,L);
337 assertTrue("isRightGB( { (a,0,1) } )", msbb.isRightGB(M) );
338 //System.out.println("M = " + M );
339
340 N = msbb.rightGB( M );
341 //System.out.println("N = " + N );
342 assertTrue("isRightGB( { (a,0,1) } )", msbb.isRightGB(N) );
343
344 assertTrue("not isZERO( b )", !b.isZERO() );
345 V = new ArrayList<GenSolvablePolynomial<BigRational>>();
346 V.add(b); V.add(one); V.add(zero);
347 L.add(V);
348 M = new ModuleList<BigRational>(pfac,L);
349 //System.out.println("L = " + L.size() );
350
351 //System.out.println("M = " + M );
352 N = msbb.rightGB( M );
353 //System.out.println("N = " + N );
354 assertTrue("isRightGB( { (a,0,1),(b,1,0) } )", msbb.isRightGB(N) );
355
356 assertTrue("not isZERO( c )", !c.isZERO() );
357 V = new ArrayList<GenSolvablePolynomial<BigRational>>();
358 V.add(c); V.add(zero); V.add(zero);
359 L.add(V);
360 M = new ModuleList<BigRational>(pfac,L);
361 //System.out.println("M = " + M );
362 //System.out.println("L = " + L.size() );
363
364 N = msbb.rightGB( M );
365 assertTrue("isRightGB( { (a,),(b,),(c,) } )", msbb.isRightGB(N) );
366 //System.out.println("N = " + N );
367
368 assertTrue("not isZERO( d )", !d.isZERO() );
369 V = new ArrayList<GenSolvablePolynomial<BigRational>>();
370 V.add(d); V.add(zero); V.add(zero);
371 L.add(V);
372 M = new ModuleList<BigRational>(pfac,L);
373 //System.out.println("M = " + M );
374 //System.out.println("L = " + L.size() );
375
376 N = msbb.rightGB( M );
377 assertTrue("isRightGB( { (a,b,c,d) } )", msbb.isRightGB(N) );
378 //System.out.println("N = " + N );
379 }
380
381
382 /**
383 * Test sequential Weyl GBase.
384 *
385 */
386 public void testSequentialRightModSolvableWeylGB() {
387
388 int rloc = 4;
389 pfac = new GenSolvablePolynomialRing<BigRational>(cfac,rloc,tord);
390 //System.out.println("pfac = " + pfac);
391 //System.out.println("pfac end");
392
393 WeylRelations<BigRational> wl = new WeylRelations<BigRational>(pfac);
394 //System.out.println("wl = ");
395 wl.generate();
396 //System.out.println("generate = ");
397 table = pfac.table;
398 //System.out.println("table = ");
399 //System.out.println("table = " + table.size());
400
401 do {
402 a = pfac.random(kl, ll, el, q );
403 b = pfac.random(kl, ll, el, q );
404 c = pfac.random(kl, ll, el, q );
405 d = pfac.random(kl, ll, el, q );
406 } while ( a.isZERO() || b.isZERO() || c.isZERO() || d.isZERO() );
407 e = d; // = pfac.random(kl, ll, el, q );
408 one = pfac.getONE();
409 zero = pfac.getZERO();
410 //System.out.println("a = " + a );
411 //System.out.println("b = " + b );
412 //System.out.println("c = " + c );
413 //System.out.println("d = " + d );
414 //System.out.println("e = " + e );
415
416 assertTrue("not isZERO( a )", !a.isZERO() );
417
418 L = new ArrayList<List<GenSolvablePolynomial<BigRational>>>();
419
420 V = new ArrayList<GenSolvablePolynomial<BigRational>>();
421 V.add(a); V.add(zero); V.add(one);
422 L.add(V);
423 M = new ModuleList<BigRational>(pfac,L);
424 assertTrue("isRightGB( { (a,0,1) } )", msbb.isRightGB(M) );
425
426 N = msbb.rightGB( M );
427 assertTrue("isRightGB( { (a,0,1) } )", msbb.isRightGB(N) );
428
429 assertTrue("not isZERO( b )", !b.isZERO() );
430 V = new ArrayList<GenSolvablePolynomial<BigRational>>();
431 V.add(b); V.add(one); V.add(zero);
432 L.add(V);
433 M = new ModuleList<BigRational>(pfac,L);
434 //System.out.println("L = " + L.size() );
435
436 //System.out.println("M = " + M );
437 N = msbb.rightGB( M );
438 //System.out.println("N = " + N );
439 assertTrue("isRightGB( { (a,0,1),(b,1,0) } )", msbb.isRightGB(N) );
440
441 assertTrue("not isZERO( c )", !c.isZERO() );
442 V = new ArrayList<GenSolvablePolynomial<BigRational>>();
443 V.add(c); V.add(zero); V.add(zero);
444 L.add(V);
445 M = new ModuleList<BigRational>(pfac,L);
446 //System.out.println("M = " + M );
447 //System.out.println("L = " + L.size() );
448
449 N = msbb.rightGB( M );
450 assertTrue("isRightGB( { (a,),(b,),(c,) } )", msbb.isRightGB(N) );
451 //System.out.println("N = " + N );
452
453 assertTrue("not isZERO( d )", !d.isZERO() );
454 V = new ArrayList<GenSolvablePolynomial<BigRational>>();
455 V.add(d); V.add(zero); V.add(zero);
456 L.add(V);
457 M = new ModuleList<BigRational>(pfac,L);
458 //System.out.println("M = " + M );
459 //System.out.println("L = " + L.size() );
460
461 N = msbb.rightGB( M );
462 assertTrue("isRightGB( { (a,b,c,d) } )", msbb.isRightGB(N) );
463 //System.out.println("N = " + N );
464 }
465
466 }