001 /*
002 * $Id: ModGroebnerBaseTest.java 3445 2010-12-25 17:24:04Z kredel $
003 */
004
005 package edu.jas.gbmod;
006
007 import java.util.List;
008 import java.util.ArrayList;
009
010 import junit.framework.Test;
011 import junit.framework.TestCase;
012 import junit.framework.TestSuite;
013
014 import org.apache.log4j.BasicConfigurator;
015 //import org.apache.log4j.Logger;
016
017
018 //import edu.jas.structure.RingElem;
019
020 import edu.jas.arith.BigRational;
021
022 import edu.jas.poly.GenPolynomial;
023 import edu.jas.poly.GenPolynomialRing;
024 import edu.jas.poly.ModuleList;
025 import edu.jas.poly.PolynomialList;
026 import edu.jas.poly.TermOrder;
027
028
029
030 /**
031 * ModGroebnerBase tests with JUnit.
032 * @author Heinz Kredel.
033 */
034
035 public class ModGroebnerBaseTest extends TestCase {
036
037 //private static final Logger logger = Logger.getLogger(ModGroebnerBaseTest.class);
038
039 /**
040 * main.
041 */
042 public static void main (String[] args) {
043 BasicConfigurator.configure();
044 junit.textui.TestRunner.run( suite() );
045 }
046
047 /**
048 * Constructs a <CODE>ModGroebnerBaseTest</CODE> object.
049 * @param name String.
050 */
051 public ModGroebnerBaseTest(String name) {
052 super(name);
053 }
054
055 /**
056 * suite.
057 */
058 public static Test suite() {
059 TestSuite suite= new TestSuite(ModGroebnerBaseTest.class);
060 return suite;
061 }
062
063 GenPolynomialRing<BigRational> fac;
064
065 PolynomialList<BigRational> F;
066 List<GenPolynomial<BigRational>> G;
067
068 GenPolynomial<BigRational> a;
069 GenPolynomial<BigRational> b;
070 GenPolynomial<BigRational> c;
071 GenPolynomial<BigRational> d;
072 GenPolynomial<BigRational> e;
073
074 TermOrder tord;
075
076 List<List<GenPolynomial<BigRational>>> L;
077 List<GenPolynomial<BigRational>> V;
078 ModuleList<BigRational> M;
079 ModuleList<BigRational> N;
080
081 ModGroebnerBase<BigRational> mbb;
082
083 int rl = 3; //4; //3;
084 int kl = 8;
085 int ll = 5;
086 int el = 2;
087 float q = 0.2f; //0.4f
088
089 protected void setUp() {
090 BigRational coeff = new BigRational(9);
091 tord = new TermOrder();
092 fac = new GenPolynomialRing<BigRational>(coeff,rl,tord);
093 mbb = new ModGroebnerBaseAbstract<BigRational>(coeff);
094 a = b = c = d = e = null;
095
096 do {
097 a = fac.random(kl, ll, el, q );
098 b = fac.random(kl, ll, el, q );
099 c = fac.random(kl, ll, el, q );
100 d = fac.random(kl, ll, el, q );
101 } while ( a.isZERO() || b.isZERO() || c.isZERO() || d.isZERO() );
102 e = d; //fac.random(kl, ll, el, q );
103 }
104
105 protected void tearDown() {
106 mbb = null;
107 a = b = c = d = e = null;
108 fac = null;
109 tord = null;
110 }
111
112
113 /**
114 * Test sequential GBase.
115 *
116 */
117 public void testSequentialModGB() {
118
119 L = new ArrayList<List<GenPolynomial<BigRational>>>();
120
121 assertTrue("not isZERO( a )", !a.isZERO() );
122 V = new ArrayList<GenPolynomial<BigRational>>();
123 V.add(a); V.add(fac.getZERO()); V.add(fac.getONE());
124 L.add(V);
125 M = new ModuleList<BigRational>(fac,L);
126 assertTrue("isGB( { (a,0,1) } )", mbb.isGB(M) );
127
128 N = mbb.GB( M );
129 assertTrue("isGB( { (a,0,1) } )", mbb.isGB(N) );
130
131 assertTrue("not isZERO( b )", !b.isZERO() );
132 V = new ArrayList<GenPolynomial<BigRational>>();
133 V.add(b); V.add(fac.getONE()); V.add(fac.getZERO());
134 L.add(V);
135 M = new ModuleList<BigRational>(fac,L);
136 //System.out.println("L = " + L.size() );
137
138 N = mbb.GB( M );
139 assertTrue("isDIRPGB( { (a,0,1),(b,1,0) } )", mbb.isGB(N) );
140 //System.out.println("N = " + N );
141
142 assertTrue("not isZERO( c )", !c.isZERO() );
143 V = new ArrayList<GenPolynomial<BigRational>>();
144 V.add(c); V.add(fac.getZERO()); V.add(fac.getZERO());
145 L.add(V);
146 M = new ModuleList<BigRational>(fac,L);
147 //System.out.println("L = " + L.size() );
148
149 N = mbb.GB( M );
150 assertTrue("isDIRPGB( { (a,),(b,),(c,) } )", mbb.isGB(N) );
151 //System.out.println("N = " + N );
152
153 assertTrue("not isZERO( d )", !d.isZERO() );
154 V = new ArrayList<GenPolynomial<BigRational>>();
155 V.add(d); V.add(fac.getZERO()); V.add(fac.getZERO());
156 L.add(V);
157 M = new ModuleList<BigRational>(fac,L);
158 //System.out.println("L = " + L.size() );
159
160 N = mbb.GB( M );
161 assertTrue("isDIRPGB( { (a,b,c,d) } )", mbb.isGB(N) );
162 //System.out.println("N = " + N );
163
164 }
165
166 }