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