001 /* 002 * $Id: SolvableGroebnerBaseSeqPairParTest.java 3060 2010-04-02 21:39:51Z kredel $ 003 */ 004 005 package edu.jas.gb; 006 007 import java.util.ArrayList; 008 import java.util.List; 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 import edu.jas.arith.BigRational; 018 import edu.jas.poly.GenSolvablePolynomial; 019 import edu.jas.poly.GenSolvablePolynomialRing; 020 import edu.jas.poly.PolynomialList; 021 import edu.jas.poly.RelationTable; 022 import edu.jas.poly.TermOrder; 023 import edu.jas.poly.WeylRelations; 024 025 /** 026 * SolvableGroebnerBase parallel tests with JUnit. 027 * @author Heinz Kredel. 028 */ 029 030 public class SolvableGroebnerBaseSeqPairParTest extends TestCase { 031 032 //private static final Logger logger = Logger.getLogger(SolvableGroebnerBaseSeqPairParTest.class); 033 034 /** 035 * main. 036 */ 037 public static void main (String[] args) { 038 BasicConfigurator.configure(); 039 junit.textui.TestRunner.run( suite() ); 040 } 041 042 /** 043 * Constructs a <CODE>SolvableGroebnerBaseSeqPairParTest</CODE> object. 044 * @param name String. 045 */ 046 public SolvableGroebnerBaseSeqPairParTest(String name) { 047 super(name); 048 } 049 050 /** 051 * suite. 052 */ 053 public static Test suite() { 054 TestSuite suite= new TestSuite(SolvableGroebnerBaseSeqPairParTest.class); 055 return suite; 056 } 057 058 int port = 4711; 059 String host = "localhost"; 060 061 GenSolvablePolynomial<BigRational> a; 062 GenSolvablePolynomial<BigRational> b; 063 GenSolvablePolynomial<BigRational> c; 064 GenSolvablePolynomial<BigRational> d; 065 GenSolvablePolynomial<BigRational> e; 066 067 List<GenSolvablePolynomial<BigRational>> L; 068 PolynomialList<BigRational> F; 069 PolynomialList<BigRational> G; 070 071 GenSolvablePolynomialRing<BigRational> ring; 072 073 SolvableGroebnerBase<BigRational> psbb; 074 075 BigRational cfac; 076 TermOrder tord; 077 RelationTable<BigRational> table; 078 079 int rl = 4; //4; //3; 080 int kl = 10; 081 int ll = 4; 082 int el = 2; 083 float q = 0.3f; //0.4f 084 085 protected void setUp() { 086 cfac = new BigRational(9); 087 tord = new TermOrder(); 088 ring = new GenSolvablePolynomialRing<BigRational>(cfac,rl,tord); 089 table = ring.table; 090 a = b = c = d = e = null; 091 psbb = new SolvableGroebnerBaseSeqPairParallel<BigRational>(); 092 093 a = ring.random(kl, ll, el, q ); 094 b = ring.random(kl, ll, el, q ); 095 c = ring.random(kl, ll, el, q ); 096 d = ring.random(kl, ll, el, q ); 097 e = d; //ring.random(kl, ll, el, q ); 098 } 099 100 protected void tearDown() { 101 a = b = c = d = e = null; 102 ring = null; 103 tord = null; 104 table = null; 105 cfac = null; 106 ((SolvableGroebnerBaseSeqPairParallel<BigRational>)psbb).terminate(); 107 psbb = null; 108 } 109 110 111 /** 112 * Test parallel GBase. 113 */ 114 public void testParallelGBase() { 115 116 assertTrue("not isZERO( a )", !a.isZERO() ); 117 118 L = new ArrayList<GenSolvablePolynomial<BigRational>>(); 119 L.add(a); 120 121 L = psbb.leftGB( L ); 122 assertTrue("isLeftGB( { a } )", psbb.isLeftGB(L) ); 123 124 assertTrue("not isZERO( b )", !b.isZERO() ); 125 L.add(b); 126 //System.out.println("L = " + L.size() ); 127 128 L = psbb.leftGB( L ); 129 assertTrue("isLeftGB( { a, b } )", psbb.isLeftGB(L) ); 130 131 assertTrue("not isZERO( c )", !c.isZERO() ); 132 L.add(c); 133 134 L = psbb.leftGB( L ); 135 assertTrue("isLeftGB( { a, b, c } )", psbb.isLeftGB(L) ); 136 137 assertTrue("not isZERO( d )", !d.isZERO() ); 138 L.add(d); 139 140 L = psbb.leftGB( L ); 141 assertTrue("isLeftGB( { a, b, c, d } )", psbb.isLeftGB(L) ); 142 143 assertTrue("not isZERO( e )", !e.isZERO() ); 144 L.add(e); 145 146 L = psbb.leftGB( L ); 147 assertTrue("isLeftGB( { a, b, c, d, e } )", psbb.isLeftGB(L) ); 148 } 149 150 151 /** 152 * Test Weyl parallel GBase. 153 * 154 */ 155 public void testWeylParallelGBase() { 156 157 int rloc = 4; 158 ring = new GenSolvablePolynomialRing<BigRational>(cfac,rloc); 159 160 WeylRelations<BigRational> wl = new WeylRelations<BigRational>(ring); 161 wl.generate(); 162 table = ring.table; 163 164 a = ring.random(kl, ll, el, q ); 165 b = ring.random(kl, ll, el, q ); 166 c = ring.random(kl, ll, el, q ); 167 d = ring.random(kl, ll, el, q ); 168 e = d; //ring.random(kl, ll, el, q ); 169 170 assertTrue("not isZERO( a )", !a.isZERO() ); 171 172 L = new ArrayList<GenSolvablePolynomial<BigRational>>(); 173 L.add(a); 174 175 L = psbb.leftGB( L ); 176 assertTrue("isLeftGB( { a } )", psbb.isLeftGB(L) ); 177 178 assertTrue("not isZERO( b )", !b.isZERO() ); 179 L.add(b); 180 //System.out.println("L = " + L.size() ); 181 182 L = psbb.leftGB( L ); 183 assertTrue("isLeftGB( { a, b } )", psbb.isLeftGB(L) ); 184 185 assertTrue("not isZERO( c )", !c.isZERO() ); 186 L.add(c); 187 188 L = psbb.leftGB( L ); 189 assertTrue("isLeftGB( { a, b, c } )", psbb.isLeftGB(L) ); 190 191 assertTrue("not isZERO( d )", !d.isZERO() ); 192 L.add(d); 193 194 L = psbb.leftGB( L ); 195 assertTrue("isLeftGB( { a, b, c, d } )", psbb.isLeftGB(L) ); 196 197 assertTrue("not isZERO( e )", !e.isZERO() ); 198 L.add(e); 199 200 L = psbb.leftGB( L ); 201 assertTrue("isLeftGB( { a, b, c, d, e } )", psbb.isLeftGB(L) ); 202 } 203 204 205 /** 206 * Test parallel twosided GBase. 207 * 208 */ 209 public void testParallelTSGBase() { 210 211 assertTrue("not isZERO( a )", !a.isZERO() ); 212 213 L = new ArrayList<GenSolvablePolynomial<BigRational>>(); 214 L.add(a); 215 216 L = psbb.twosidedGB( L ); 217 //System.out.println("L = " + L.size() ); 218 assertTrue("isTwosidedGB( { a } )", psbb.isTwosidedGB(L) ); 219 220 assertTrue("not isZERO( b )", !b.isZERO() ); 221 L.add(b); 222 223 L = psbb.twosidedGB( L ); 224 //System.out.println("L = " + L.size() ); 225 assertTrue("isTwosidedGB( { a, b } )", psbb.isTwosidedGB(L) ); 226 227 assertTrue("not isZERO( c )", !c.isZERO() ); 228 L.add(c); 229 230 L = psbb.twosidedGB( L ); 231 //System.out.println("L = " + L.size() ); 232 assertTrue("isTwosidedGB( { a, b, c } )", psbb.isTwosidedGB(L) ); 233 234 assertTrue("not isZERO( d )", !d.isZERO() ); 235 L.add(d); 236 237 L = psbb.twosidedGB( L ); 238 //System.out.println("L = " + L.size() ); 239 assertTrue("isTwosidedGB( { a, b, c, d } )", psbb.isTwosidedGB(L) ); 240 241 assertTrue("not isZERO( e )", !e.isZERO() ); 242 L.add(e); 243 244 L = psbb.twosidedGB( L ); 245 //System.out.println("L = " + L.size() ); 246 assertTrue("isTwosidedGB( { a, b, c, d, e } )", psbb.isTwosidedGB(L) ); 247 } 248 249 250 251 /** 252 * Test Weyl parallel twosided GBase 253 * is always 1. 254 */ 255 public void testWeylParallelTSGBase() { 256 257 int rloc = 4; 258 ring = new GenSolvablePolynomialRing<BigRational>(cfac,rloc); 259 260 WeylRelations<BigRational> wl = new WeylRelations<BigRational>(ring); 261 wl.generate(); 262 table = ring.table; 263 264 a = ring.random(kl, ll, el, q ); 265 b = ring.random(kl, ll, el, q ); 266 c = ring.random(kl, ll, el, q ); 267 d = ring.random(kl, ll, el, q ); 268 e = d; //ring.random(kl, ll, el, q ); 269 270 assertTrue("not isZERO( a )", !a.isZERO() ); 271 272 L = new ArrayList<GenSolvablePolynomial<BigRational>>(); 273 L.add(a); 274 275 //System.out.println("La = " + L ); 276 L = psbb.twosidedGB( L ); 277 //System.out.println("L = " + L ); 278 assertTrue("isTwosidedGB( { a } )", psbb.isTwosidedGB(L) ); 279 280 assertTrue("not isZERO( b )", !b.isZERO() ); 281 L.add(b); 282 283 L = psbb.twosidedGB( L ); 284 //System.out.println("L = " + L ); 285 assertTrue("isTwosidedGB( { a, b } )", psbb.isTwosidedGB(L) ); 286 287 assertTrue("not isZERO( c )", !c.isZERO() ); 288 L.add(c); 289 290 L = psbb.twosidedGB( L ); 291 //System.out.println("L = " + L ); 292 assertTrue("isTwosidedGB( { a, b, c } )", psbb.isTwosidedGB(L) ); 293 294 assertTrue("not isZERO( d )", !d.isZERO() ); 295 L.add(d); 296 297 L = psbb.twosidedGB( L ); 298 //System.out.println("L = " + L ); 299 assertTrue("isTwosidedGB( { a, b, c, d } )", psbb.isTwosidedGB(L) ); 300 301 assertTrue("not isZERO( e )", !e.isZERO() ); 302 L.add(e); 303 304 L = psbb.twosidedGB( L ); 305 //System.out.println("L = " + L ); 306 assertTrue("isTwosidedGB( { a, b, c, d, e } )", psbb.isTwosidedGB(L) ); 307 } 308 309 }