001 /* 002 * $Id: RatPolyGenPolynomialTest.java 1888 2008-07-12 13:37:34Z kredel $ 003 */ 004 005 package edu.jas.poly; 006 007 import junit.framework.Test; 008 import junit.framework.TestCase; 009 import junit.framework.TestSuite; 010 import edu.jas.arith.BigRational; 011 012 013 /** 014 * BigRational coefficients GenPolynomial coefficients GenPolynomial tests with JUnit. 015 * @author Heinz Kredel. 016 */ 017 018 public class RatPolyGenPolynomialTest extends TestCase { 019 020 /** 021 * main 022 */ 023 public static void main (String[] args) { 024 junit.textui.TestRunner.run( suite() ); 025 } 026 027 /** 028 * Constructs a <CODE>RatPolyGenPolynomialTest</CODE> object. 029 * @param name String. 030 */ 031 public RatPolyGenPolynomialTest(String name) { 032 super(name); 033 } 034 035 /** 036 */ 037 public static Test suite() { 038 TestSuite suite= new TestSuite(RatPolyGenPolynomialTest.class); 039 return suite; 040 } 041 042 //private final static int bitlen = 100; 043 044 GenPolynomialRing<BigRational> cf; 045 GenPolynomialRing<GenPolynomial<BigRational>> fac; 046 047 GenPolynomial<GenPolynomial<BigRational>> a; 048 GenPolynomial<GenPolynomial<BigRational>> b; 049 GenPolynomial<GenPolynomial<BigRational>> c; 050 GenPolynomial<GenPolynomial<BigRational>> d; 051 GenPolynomial<GenPolynomial<BigRational>> e; 052 053 int rl = 7; 054 int kl = 10; 055 int ll = 10; 056 int el = 5; 057 float q = 0.5f; 058 059 protected void setUp() { 060 a = b = c = d = e = null; 061 cf = new GenPolynomialRing<BigRational>( new BigRational(1), 1 ); 062 fac = new GenPolynomialRing<GenPolynomial<BigRational>>(cf,rl); 063 } 064 065 protected void tearDown() { 066 a = b = c = d = e = null; 067 fac = null; 068 } 069 070 071 /** 072 * Test constructor and toString. 073 * 074 */ 075 public void testConstruction() { 076 c = fac.getONE(); 077 assertTrue("length( c ) = 1", c.length() == 1); 078 assertTrue("isZERO( c )", !c.isZERO() ); 079 assertTrue("isONE( c )", c.isONE() ); 080 081 d = fac.getZERO(); 082 assertTrue("length( d ) = 0", d.length() == 0); 083 assertTrue("isZERO( d )", d.isZERO() ); 084 assertTrue("isONE( d )", !d.isONE() ); 085 } 086 087 088 /** 089 * Test random polynomial. 090 * 091 */ 092 public void testRandom() { 093 for (int i = 0; i < 7; i++) { 094 a = fac.random(ll); 095 // fac.random(rl+i, kl*(i+1), ll+2*i, el+i, q ); 096 assertTrue("length( a"+i+" ) <> 0", a.length() >= 0); 097 assertTrue(" not isZERO( a"+i+" )", !a.isZERO() ); 098 assertTrue(" not isONE( a"+i+" )", !a.isONE() ); 099 } 100 } 101 102 103 /** 104 * Test addition. 105 * 106 */ 107 public void testAddition() { 108 109 a = fac.random(ll); 110 b = fac.random(ll); 111 112 c = a.sum(b); 113 d = c.subtract(b); 114 assertEquals("a+b-b = a",a,d); 115 116 c = fac.random(ll); 117 118 ExpVector u = ExpVector.EVRAND(rl,el,q); 119 GenPolynomial<BigRational> x = cf.random(kl); 120 121 b = new GenPolynomial<GenPolynomial<BigRational>>(fac,x, u); 122 c = a.sum(b); 123 d = a.sum(x,u); 124 assertEquals("a+p(x,u) = a+(x,u)",c,d); 125 126 c = a.subtract(b); 127 d = a.subtract(x,u); 128 assertEquals("a-p(x,u) = a-(x,u)",c,d); 129 130 a = new GenPolynomial<GenPolynomial<BigRational>>(fac); 131 b = new GenPolynomial<GenPolynomial<BigRational>>(fac,x, u); 132 c = b.sum(a); 133 d = a.sum(x,u); 134 assertEquals("a+p(x,u) = a+(x,u)",c,d); 135 136 c = a.subtract(b); 137 d = a.subtract(x,u); 138 assertEquals("a-p(x,u) = a-(x,u)",c,d); 139 } 140 141 142 /** 143 * Test object multiplication. 144 * 145 */ 146 147 public void testMultiplication() { 148 149 a = fac.random(ll); 150 assertTrue("not isZERO( a )", !a.isZERO() ); 151 152 b = fac.random(ll); 153 assertTrue("not isZERO( b )", !b.isZERO() ); 154 155 c = b.multiply(a); 156 d = a.multiply(b); 157 assertTrue("not isZERO( c )", !c.isZERO() ); 158 assertTrue("not isZERO( d )", !d.isZERO() ); 159 160 //System.out.println("a = " + a); 161 //System.out.println("b = " + b); 162 e = d.subtract(c); 163 assertTrue("isZERO( a*b-b*a ) " + e, e.isZERO() ); 164 165 assertTrue("a*b = b*a", c.equals(d) ); 166 assertEquals("a*b = b*a",c,d); 167 168 c = fac.random(ll); 169 //System.out.println("c = " + c); 170 d = a.multiply( b.multiply(c) ); 171 e = (a.multiply(b)).multiply(c); 172 173 //System.out.println("d = " + d); 174 //System.out.println("e = " + e); 175 176 //System.out.println("d-e = " + d.subtract(c) ); 177 178 assertEquals("a(bc) = (ab)c",d,e); 179 assertTrue("a(bc) = (ab)c", d.equals(e) ); 180 181 //GenPolynomial<BigRational> x = a.leadingBaseCoefficient().inverse(); 182 //c = a.monic(); 183 //d = a.multiply(x); 184 //assertEquals("a.monic() = a(1/ldcf(a))",c,d); 185 186 GenPolynomial<BigRational> y = b.leadingBaseCoefficient(); 187 //c = b.monic(); 188 //d = b.multiply(y); 189 //assertEquals("b.monic() = b(1/ldcf(b))",c,d); 190 191 e = new GenPolynomial<GenPolynomial<BigRational>>(fac,y); 192 c = b.multiply(e); 193 // assertEquals("b.monic() = b(1/ldcf(b))",c,d); 194 195 d = e.multiply(b); 196 assertEquals("b*p(y,u) = p(y,u)*b",c,d); 197 } 198 199 }