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