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