001/* 002 * $Id$ 003 */ 004 005package edu.jas.application; 006 007 008import java.util.List; 009 010import junit.framework.Test; 011import junit.framework.TestCase; 012import junit.framework.TestSuite; 013 014 015 016import edu.jas.arith.BigRational; 017import edu.jas.fd.SolvableQuotient; 018import edu.jas.fd.SolvableQuotientRing; 019import edu.jas.kern.ComputerThreads; 020import edu.jas.poly.ExpVector; 021import edu.jas.poly.GenPolynomial; 022import edu.jas.poly.GenSolvablePolynomial; 023import edu.jas.poly.GenSolvablePolynomialRing; 024import edu.jas.poly.QLRSolvablePolynomial; 025import edu.jas.poly.QLRSolvablePolynomialRing; 026import edu.jas.poly.RecSolvablePolynomial; 027import edu.jas.poly.RelationGenerator; 028import edu.jas.poly.TermOrder; 029import edu.jas.poly.WeylRelations; 030 031 032/** 033 * BigRational coefficients QuotientSolvablePolynomial QLR representation tests 034 * with JUnit. 035 * @author Heinz Kredel 036 */ 037 038public class QuotientSolvablePolynomialQLRTest extends TestCase { 039 040 041 /** 042 * main. 043 */ 044 public static void main(String[] args) { 045 046 junit.textui.TestRunner.run(suite()); 047 ComputerThreads.terminate(); 048 } 049 050 051 /** 052 * Constructs a <CODE>QuotientSolvablePolynomialQLRTest</CODE> object. 053 * @param name String. 054 */ 055 public QuotientSolvablePolynomialQLRTest(String name) { 056 super(name); 057 } 058 059 060 /** 061 */ 062 public static Test suite() { 063 TestSuite suite = new TestSuite(QuotientSolvablePolynomialQLRTest.class); 064 return suite; 065 } 066 067 068 QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational> a, b, c, d, e, f, x1, x2; 069 070 071 int rl = 4; 072 073 074 int kl = 1; 075 076 077 int ll = 3; 078 079 080 int el = 3; 081 082 083 float q = 0.15f; 084 085 086 String[] cvars = new String[] { "a", "b" }; 087 088 089 String[] vars = new String[] { "w", "x", "y", "z" }; 090 091 092 QLRSolvablePolynomialRing<SolvableQuotient<BigRational>, BigRational> ring; 093 094 095 BigRational cfac; 096 097 098 GenSolvablePolynomialRing<SolvableQuotient<BigRational>> sring; 099 100 101 GenSolvablePolynomialRing<BigRational> cring; 102 103 104 SolvableQuotientRing<BigRational> qcring; 105 106 107 TermOrder tord = new TermOrder(TermOrder.INVLEX); 108 109 110 @Override 111 protected void setUp() { 112 cfac = new BigRational(1); 113 cring = new GenSolvablePolynomialRing<BigRational>(cfac, tord, cvars); 114 RelationGenerator<BigRational> wc = new WeylRelations<BigRational>(); 115 cring.addRelations(wc); 116 qcring = new SolvableQuotientRing<BigRational>(cring); 117 ring = new QLRSolvablePolynomialRing<SolvableQuotient<BigRational>, BigRational>(qcring, tord, vars); 118 RelationGenerator<SolvableQuotient<BigRational>> wl = new WeylRelations<SolvableQuotient<BigRational>>(); 119 ring.addRelations(wl); 120 a = b = c = d = e = null; 121 } 122 123 124 @Override 125 protected void tearDown() { 126 ring = null; 127 a = b = c = d = e = null; 128 } 129 130 131 /** 132 * Test constructor, generators and properties. 133 */ 134 public void testConstructor() { 135 assertFalse("not commutative", ring.isCommutative()); 136 assertTrue("associative", ring.isAssociative()); 137 138 a = new QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>(ring); 139 assertTrue("length( a ) = 0", a.length() == 0); 140 assertTrue("isZERO( a )", a.isZERO()); 141 assertTrue("isONE( a )", !a.isONE()); 142 143 c = ring.getONE(); 144 assertTrue("length( c ) = 1", c.length() == 1); 145 assertTrue("isZERO( c )", !c.isZERO()); 146 assertTrue("isONE( c )", c.isONE()); 147 148 d = ring.getZERO(); 149 assertTrue("length( d ) = 0", d.length() == 0); 150 assertTrue("isZERO( d )", d.isZERO()); 151 assertTrue("isONE( d )", !d.isONE()); 152 //System.out.println("d = " + d); 153 154 //System.out.println(""); 155 for (GenPolynomial<SolvableQuotient<BigRational>> g : ring.generators()) { 156 //System.out.println("g = " + g + ", "); 157 assertFalse("not isZERO( g )", g.isZERO()); 158 } 159 //System.out.println(""); 160 assertTrue("isAssociative: ", ring.isAssociative()); 161 } 162 163 164 /** 165 * Test random polynomial. 166 */ 167 public void testRandom() { 168 for (int i = 0; i < 5; i++) { 169 // a = ring.random(ll+2*i); 170 a = ring.random(kl, ll + 2 * i, el + i, q); 171 //System.out.println("a = " + a); 172 assertTrue("length( a" + i + " ) <> 0", a.length() >= 0); 173 assertTrue(" not isZERO( a" + i + " )", !a.isZERO()); 174 assertTrue(" not isONE( a" + i + " )", !a.isONE()); 175 } 176 } 177 178 179 /** 180 * Test addition. 181 */ 182 @SuppressWarnings("unchecked") 183 public void testAddition() { 184 a = ring.random(kl + 1, ll, el, q); 185 c = (QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) a.subtract(a); 186 assertTrue("a-a = 0", c.isZERO()); 187 188 b = (QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) a.sum(a); 189 c = (QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) b.subtract(a); 190 assertEquals("a+a-a = a", c, a); 191 192 b = ring.random(kl, ll, el, q); 193 c = (QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) b.sum(a); 194 d = (QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) a.sum(b); 195 assertEquals("a+b = b+a", c, d); 196 197 c = (QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) a.sum(b); 198 d = (QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) c.subtract(b); 199 //System.out.println("a = " + a); 200 //System.out.println("d = " + d); 201 assertEquals("a+b-b = a", a, d); 202 203 c = ring.random(kl, ll, el, q); 204 d = (QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) a.sum(b.sum(c)); 205 e = (QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) a.sum(b).sum(c); 206 assertEquals("a+(b+c) = (a+b)+c", d, e); 207 //System.out.println("a = " + a); 208 //System.out.println("b = " + b); 209 //System.out.println("c = " + c); 210 //System.out.println("d = " + d); 211 //System.out.println("e = " + e); 212 213 ExpVector u = ExpVector.random(rl, el, q); 214 SolvableQuotient<BigRational> x = qcring.random(kl); 215 //System.out.println("x = " + x); 216 //System.out.println("u = " + u); 217 218 b = ring.getONE().multiply(x, u); 219 c = (QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) a.sum(b); 220 d = (QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) a.sum(x, u); 221 //System.out.println("a = " + a); 222 //System.out.println("b = " + b); 223 //System.out.println("c = " + c); 224 //System.out.println("d = " + d); 225 assertEquals("a+p(x,u) = a+(x,u)", c, d); 226 227 c = (QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) a.subtract(b); 228 d = (QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) a.subtract(x, u); 229 assertEquals("a-p(x,u) = a-(x,u)", c, d); 230 231 a = ring.getZERO(); 232 b = ring.getONE().multiply(x, u); 233 c = (QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) b.sum(a); 234 d = (QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) a.sum(x, u); 235 assertEquals("a+p(x,u) = a+(x,u)", c, d); 236 237 c = (QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) a.subtract(b); 238 d = (QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) a.subtract(x, u); 239 assertEquals("a-p(x,u) = a-(x,u)", c, d); 240 } 241 242 243 /** 244 * Test multiplication. 245 */ 246 @SuppressWarnings("unchecked") 247 public void testMultiplication() { 248 //System.out.println("ring = " + ring); 249 a = ring.random(kl, ll - 1, el - 1, q); 250 //a = ring.parse(" b y z + a w z "); 251 b = ring.random(kl, ll - 1, el - 1, q); 252 //b = ring.parse(" w x - b x "); 253 254 c = b.multiply(a); 255 d = a.multiply(b); 256 //System.out.println("a = " + a); 257 //System.out.println("b = " + b); 258 //System.out.println("c = " + c); 259 //System.out.println("d = " + d); 260 assertTrue("a*b != b*a", c.equals(d) || c.leadingExpVector().equals(d.leadingExpVector())); 261 262 c = ring.random(kl, ll - 1, el - 1, q); 263 d = a.multiply(b.multiply(c)); 264 e = a.multiply(b).multiply(c); 265 assertEquals("a(bc) = (ab)c", d, e); 266 //System.out.println("a = " + a); 267 //System.out.println("b = " + b); 268 //System.out.println("c = " + c); 269 //System.out.println("d = " + d); 270 //System.out.println("e = " + e); 271 272 SolvableQuotient<BigRational> xp = a.leadingBaseCoefficient().inverse(); 273 d = a.multiply(xp); 274 assertTrue("monic(a) = a*(1/ldcf(ldcf(a)))", d.leadingBaseCoefficient().isONE()); 275 //System.out.println("a = " + a); 276 //System.out.println("d = " + d); 277 278 d = (QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) a.monic(); 279 assertTrue("a.monic(): ", d.leadingBaseCoefficient().isONE()); 280 } 281 282 283 /** 284 * Test commutative ring. 285 */ 286 @SuppressWarnings("unchecked") 287 public void testCommutative() { 288 //System.out.println("table = " + ring.table.toString(vars)); 289 //System.out.println("table = " + ring.table.toScript()); 290 //System.out.println("ring = " + ring); 291 //System.out.println("ring.table = " + ring.table.toScript()); 292 //assertEquals("table == ring.table: ", table, ring.table); // ? 293 assertTrue("# relations == 2", ring.table.size() == 2); 294 295 cring = new GenSolvablePolynomialRing<BigRational>(cfac, tord, cvars); 296 qcring = new SolvableQuotientRing<BigRational>(cring); 297 ring = new QLRSolvablePolynomialRing<SolvableQuotient<BigRational>, BigRational>(qcring, ring); 298 //System.out.println("ring = " + ring); 299 300 assertTrue("isCommutative()", ring.isCommutative()); 301 assertTrue("isAssociative()", ring.isAssociative()); 302 303 a = ring.random(kl, ll, el, q); 304 //a = ring.parse(" b x y z + a w z "); 305 //System.out.println("a = " + a); 306 b = ring.random(kl, ll, el, q); 307 //b = ring.parse(" w y z - b x "); 308 //System.out.println("b = " + b); 309 310 // commutative 311 c = b.multiply(a); 312 //System.out.println("c = " + c); 313 d = a.multiply(b); 314 //d = ring.getONE(); 315 //System.out.println("d = " + d); 316 assertEquals("b*a == a*b: ", c, d); 317 } 318 319 320 /** 321 * Test distributive law. 322 */ 323 @SuppressWarnings("unchecked") 324 public void testDistributive() { 325 a = ring.random(kl, ll, el, q); 326 b = ring.random(kl, ll, el, q); 327 c = ring.random(kl, ll, el, q); 328 329 d = a.multiply((QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) b.sum(c)); 330 e = (QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) a.multiply(b).sum( 331 a.multiply(c)); 332 assertEquals("a*(b+c) = a*b+a*c", d, e); 333 } 334 335 336 /** 337 * Test solvable coefficient ring. 338 */ 339 @SuppressWarnings("unchecked") 340 public void testSolvableCoeffs() { 341 GenSolvablePolynomialRing<BigRational> csring = new GenSolvablePolynomialRing<BigRational>(cfac, 342 tord, cvars); 343 //RelationGenerator<BigRational> wc = new WeylRelations<BigRational>(); 344 //no: csring.addRelations(wc); //wc.generate(csring); 345 //assertTrue("# relations == 1", csring.table.size() == 1); 346 assertTrue("isCommutative()", csring.isCommutative()); 347 assertTrue("isAssociative()", csring.isAssociative()); 348 349 SolvableQuotientRing<BigRational> qcsring = new SolvableQuotientRing<BigRational>(csring); 350 assertTrue("isCommutative()", qcsring.isCommutative()); 351 assertTrue("isAssociative()", qcsring.isAssociative()); 352 353 ring = new QLRSolvablePolynomialRing<SolvableQuotient<BigRational>, BigRational>(qcsring, ring); 354 RelationGenerator<SolvableQuotient<BigRational>> wl = new WeylRelations<SolvableQuotient<BigRational>>(); 355 ring.addRelations(wl); //wl.generate(ring); 356 assertTrue("# relations == 2", ring.table.size() == 2); 357 assertFalse("isCommutative()", ring.isCommutative()); 358 assertTrue("isAssociative()", ring.isAssociative()); 359 //System.out.println("ring = " + ring); 360 361 RecSolvablePolynomial<BigRational> r1 = ring.polCoeff.parse("x"); 362 GenSolvablePolynomial<BigRational> r2 = csring.parse("b"); 363 RecSolvablePolynomial<BigRational> rp = ring.polCoeff.parse("b x + a"); // + a 364 //System.out.println("r1 = " + r1); 365 //System.out.println("r2 = " + r2); 366 //System.out.println("rp = " + rp); 367 ring.polCoeff.coeffTable.update(r1.leadingExpVector(), r2.leadingExpVector(), rp); 368 //System.out.println("ring = " + ring.toScript()); 369 //System.out.println("ring.polCoeff = " + ring.polCoeff); 370 assertFalse("isCommutative()", ring.isCommutative()); 371 assertTrue("isAssociative()", ring.isAssociative()); 372 373 List<GenPolynomial<SolvableQuotient<BigRational>>> gens = ring.generators(); 374 for (GenPolynomial<SolvableQuotient<BigRational>> x : gens) { 375 GenSolvablePolynomial<SolvableQuotient<BigRational>> xx = (GenSolvablePolynomial<SolvableQuotient<BigRational>>) x; 376 a = new QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>(ring, xx); 377 //System.out.println("a = " + a); 378 for (GenPolynomial<SolvableQuotient<BigRational>> y : gens) { 379 GenSolvablePolynomial<SolvableQuotient<BigRational>> yy = (GenSolvablePolynomial<SolvableQuotient<BigRational>>) y; 380 b = new QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>(ring, yy); 381 //System.out.println("b = " + b); 382 c = a.multiply(b); 383 //System.out.println("gens: " + a + " * " + b + " = " + c); 384 ExpVector ev = a.leadingExpVector().sum(b.leadingExpVector()); 385 assertTrue("LT(a)*LT(b) == LT(c)", c.leadingExpVector().equals(ev)); 386 } 387 } 388 //System.out.println("============="); 389 //a = ring.random(kl, ll, el, q); 390 //a = ring.getONE(); 391 a = ring.parse("x^2 + a b"); 392 //System.out.println("a = " + a.toScript()); 393 //b = ring.random(kl, ll, el, q); 394 //b = ring.getONE(); 395 b = ring.parse("a b + a"); // a b^2 + a 396 b = (QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) b.inverse(); 397 //System.out.println("b = " + b.toScript()); 398 399 // non-commutative 400 c = b.multiply(a); 401 d = a.multiply(b); 402 //System.out.println("a = " + a.toScript()); 403 //System.out.println("b = " + b.toScript()); 404 //System.out.println("c = " + c.toScript()); 405 //System.out.println("d = " + d.toScript()); 406 assertTrue("a*b != b*a", c.equals(d) || c.leadingExpVector().equals(d.leadingExpVector())); 407 408 e = (QLRSolvablePolynomial<SolvableQuotient<BigRational>, BigRational>) b.inverse(); 409 //System.out.println("e = " + e.toScript()); 410 assertTrue("b*b^-1 == 1", e.multiply(b).isONE()); 411 412 c = e.multiply(c); 413 d = d.multiply(e); 414 //System.out.println("a = " + a.toScript()); 415 //System.out.println("b = " + b.toScript()); 416 //System.out.println("c = " + c.toScript()); 417 //System.out.println("d = " + d.toScript()); 418 assertTrue("a == b * 1/b * a", a.equals(c)); 419 assertTrue("a == a * 1/b * b", a.equals(d)); 420 } 421 422 423 /* 424 * Test extension and contraction for Weyl relations. public void 425 * testExtendContractWeyl() { GenSolvablePolynomialRing<BigRational> csring 426 * = new GenSolvablePolynomialRing<BigRational>(cfac, tord, cvars); 427 * RelationGenerator<BigRational> wlc = new WeylRelations<BigRational>(); 428 * wlc.generate(csring); assertFalse("isCommutative()", csring.isCommutative()); 429 * assertTrue("isAssociative()", csring.isAssociative()); 430 * 431 * QLRSolvablePolynomial<BigRational> r1 = ring.parse("x"); 432 * GenSolvablePolynomial<BigRational> r2 = csring.parse("b"); 433 * QLRSolvablePolynomial<BigRational> rp = ring.parse("b x + a"); 434 * ring.polCoeff.coeffTable.update(r1.leadingExpVector(), r2.leadingExpVector(), rp); 435 * 436 * int k = rl; QLRSolvablePolynomialRing<BigRational> pfe = ring.extend(k); 437 * //System.out.println("pfe = " + pfe); 438 * QLRSolvablePolynomialRing<BigRational> pfec = pfe.contract(k); 439 * //System.out.println("pfec = " + pfec); assertEquals("ring == pfec", 440 * ring, pfec); 441 * 442 * QLRSolvablePolynomial<BigRational> a = ring.random(kl, ll, el, q); 443 * //System.out.println("a = " + a); 444 * 445 * QLRSolvablePolynomial<BigRational> ae = 446 * (QLRSolvablePolynomial<BigRational>) a.extend(pfe, 0, 0); 447 * //System.out.println("ae = " + ae); 448 * 449 * Map<ExpVector, GenPolynomial<GenPolynomial<BigRational>>> m = 450 * ae.contract(pfec); List<GenPolynomial<GenPolynomial<BigRational>>> ml = 451 * new ArrayList<GenPolynomial<GenPolynomial<BigRational>>>( m.values()); 452 * GenPolynomial<GenPolynomial<BigRational>> aec = ml.get(0); 453 * //System.out.println("ae = " + ae); //System.out.println("aec = " + 454 * aec); assertEquals("a == aec", a, aec); } 455 */ 456 457 458 /* 459 * Test reversion for Weyl relations. public void testReverseWeyl() { 460 * GenSolvablePolynomialRing<BigRational> csring = new 461 * GenSolvablePolynomialRing<BigRational>(cfac, tord, cvars); 462 * RelationGenerator<BigRational> wlc = new WeylRelations<BigRational>(); 463 * wlc.generate(csring); assertFalse("isCommutative()", csring.isCommutative()); 464 * assertTrue("isAssociative()", csring.isAssociative()); 465 * 466 * QLRSolvablePolynomial<BigRational> r1 = ring.parse("x"); 467 * GenSolvablePolynomial<BigRational> r2 = csring.parse("b"); 468 * QLRSolvablePolynomial<BigRational> rp = ring.parse("b x + a"); 469 * ring.polCoeff.coeffTable.update(r1.leadingExpVector(), r2.leadingExpVector(), rp); 470 * 471 * QLRSolvablePolynomialRing<BigRational> pfr = ring.reverse(); 472 * QLRSolvablePolynomialRing<BigRational> pfrr = pfr.reverse(); 473 * assertEquals("pf == pfrr", ring, pfrr); //System.out.println("ring = " + 474 * ring); //System.out.println("pfr = " + pfr); 475 * 476 * QLRSolvablePolynomial<BigRational> a = ring.random(kl, ll, el, q); 477 * //System.out.println("a = " + a); 478 * 479 * QLRSolvablePolynomial<BigRational> ar = 480 * (QLRSolvablePolynomial<BigRational>) a.reverse(pfr); 481 * QLRSolvablePolynomial<BigRational> arr = 482 * (QLRSolvablePolynomial<BigRational>) ar.reverse(pfrr); 483 * assertEquals("a == arr", a, arr); //System.out.println("ar = " + ar); 484 * //System.out.println("arr = " + arr); } 485 */ 486 487 488 /* 489 * Test recursive for Weyl relations. public void testRecursiveWeyl() { 490 * String[] svars = new String[] { "w", "x", "y", "z" }; 491 * GenSolvablePolynomialRing<BigRational> sring = new 492 * GenSolvablePolynomialRing<BigRational>(cfac, tord, svars); 493 * RelationGenerator<BigRational> wlc = new WeylRelations<BigRational>(); 494 * wlc.generate(sring); assertFalse("isCommutative()", sring.isCommutative()); 495 * assertTrue("isAssociative()", sring.isAssociative()); 496 * //System.out.println("sring = " + sring.toScript()); 497 * 498 * GenSolvablePolynomialRing<GenPolynomial<BigRational>> rsring = 499 * sring.recursive(2); // 1,2,3 //System.out.println("rsring = " + rsring); 500 * //.toScript()); System.out.println("rsring = " + rsring.toScript()); 501 * 502 * GenSolvablePolynomial<BigRational> ad, bd, cd, dd; 503 * QLRSolvablePolynomial<BigRational> ar, br, cr, dr; ad = sring.random(kl, 504 * ll, el, q); bd = sring.random(kl, ll, el, q); //ad = 505 * sring.parse("7/2 y^2 * z"); // - 15/2 w^2 + 262/225"); //bd = 506 * sring.parse("-10/13 x "); //+ 413/150"); //ad = 507 * (GenSolvablePolynomial<BigRational>) ad.monic(); //bd = 508 * (GenSolvablePolynomial<BigRational>) bd.monic(); 509 * 510 * //System.out.println("ad = " + ad); //System.out.println("bd = " + bd); 511 * 512 * cd = ad.multiply(bd); //System.out.println("cd = " + cd); 513 * 514 * ar = (QLRSolvablePolynomial<BigRational>) PolyUtil.<BigRational> 515 * recursive(rsring, ad); br = (QLRSolvablePolynomial<BigRational>) 516 * PolyUtil.<BigRational> recursive(rsring, bd); 517 * //System.out.println("ar = " + ar); //System.out.println("br = " + br); 518 * 519 * cr = ar.multiply(br); //System.out.println("cr = " + cr); 520 * //System.out.println("cr.ring = " + cr.ring.toScript()); 521 * 522 * dr = (QLRSolvablePolynomial<BigRational>) PolyUtil.<BigRational> 523 * recursive(rsring, cd); //System.out.println("dr = " + dr); 524 * 525 * assertEquals("dr.ring == cr.ring", dr.ring, cr.ring); 526 * assertEquals("dr == cr", dr, cr); 527 * 528 * dd = (GenSolvablePolynomial<BigRational>) PolyUtil.<BigRational> 529 * distribute(sring, cr); //System.out.println("dd = " + dd); 530 * assertEquals("dd == cd", dd, cd); } 531 */ 532 533 534 /* 535 * Test recursive for iterated Weyl relations. public void 536 * testRecursiveIteratedWeyl() { String[] svars = new String[] { "w", "x", 537 * "y", "z" }; GenSolvablePolynomialRing<BigRational> sring = new 538 * GenSolvablePolynomialRing<BigRational>(cfac, tord, svars); 539 * RelationGenerator<BigRational> wlc = new WeylRelationsIterated<BigRational>(); 540 * wlc.generate(sring); assertFalse("isCommutative()", 541 * sring.isCommutative()); assertTrue("isAssociative()", 542 * sring.isAssociative()); //System.out.println("sring = " + 543 * sring.toScript()); 544 * 545 * GenSolvablePolynomialRing<GenPolynomial<BigRational>> rsring = 546 * sring.recursive(2); // 1,2,3 //System.out.println("rsring = " + rsring); 547 * //.toScript()); System.out.println("rsring = " + rsring.toScript()); 548 * 549 * GenSolvablePolynomial<BigRational> ad, bd, cd, dd; 550 * QLRSolvablePolynomial<BigRational> ar, br, cr, dr; ad = sring.random(kl, 551 * ll, el, q); bd = sring.random(kl, ll, el, q); //ad = 552 * (GenSolvablePolynomial<BigRational>) ad.monic(); //bd = 553 * (GenSolvablePolynomial<BigRational>) bd.monic(); 554 * 555 * //System.out.println("ad = " + ad); //System.out.println("bd = " + bd); 556 * 557 * cd = ad.multiply(bd); //System.out.println("cd = " + cd); 558 * 559 * ar = (QLRSolvablePolynomial<BigRational>) PolyUtil.<BigRational> 560 * recursive(rsring, ad); br = (QLRSolvablePolynomial<BigRational>) 561 * PolyUtil.<BigRational> recursive(rsring, bd); 562 * //System.out.println("ar = " + ar); //System.out.println("br = " + br); 563 * 564 * cr = ar.multiply(br); //System.out.println("cr = " + cr); 565 * 566 * dr = (QLRSolvablePolynomial<BigRational>) PolyUtil.<BigRational> 567 * recursive(rsring, cd); //System.out.println("dr = " + dr); 568 * 569 * assertEquals("dr.ring == cr.ring", dr.ring, cr.ring); 570 * assertEquals("dr == cr", dr, cr); 571 * 572 * dd = (GenSolvablePolynomial<BigRational>) PolyUtil.<BigRational> 573 * distribute(sring, cr); //System.out.println("dd = " + dd); 574 * assertEquals("dd == cd", dd, cd); } 575 */ 576 577}