001 /* 002 * $Id: GenVectorTest.java 3455 2010-12-27 13:35:25Z kredel $ 003 */ 004 005 package edu.jas.poly; 006 007 008 import junit.framework.Test; 009 import junit.framework.TestCase; 010 import junit.framework.TestSuite; 011 012 //import edu.jas.structure.RingElem; 013 //import edu.jas.structure.ModulElem; 014 015 import edu.jas.arith.BigRational; 016 import edu.jas.vector.GenVector; 017 import edu.jas.vector.GenVectorModul; 018 019 /** 020 * GenVector tests with JUnit 021 * @author Heinz Kredel. 022 */ 023 024 public class GenVectorTest extends TestCase { 025 026 027 /** 028 * main. 029 */ 030 public static void main(String[] args) { 031 junit.textui.TestRunner.run(suite()); 032 } 033 034 035 /** 036 * Constructs a <CODE>RatGenVectorTest</CODE> object. 037 * @param name String. 038 */ 039 public GenVectorTest(String name) { 040 super(name); 041 } 042 043 044 /** 045 */ 046 public static Test suite() { 047 TestSuite suite = new TestSuite(GenVectorTest.class); 048 return suite; 049 } 050 051 052 int rl = 5; 053 054 055 int kl = 10; 056 057 058 int ll = 10; 059 060 061 float q = 0.5f; 062 063 064 @Override 065 protected void setUp() { 066 } 067 068 069 @Override 070 protected void tearDown() { 071 } 072 073 074 /** 075 * Test constructor and toString. 076 * 077 */ 078 public void testPolynomialConstruction() { 079 BigRational cfac = new BigRational(1); 080 GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(cfac, rl); 081 082 GenVectorModul<GenPolynomial<BigRational>> mfac = new GenVectorModul<GenPolynomial<BigRational>>( 083 pfac, ll); 084 085 assertTrue("#columns = " + ll, mfac.cols == ll); 086 assertTrue("pfac == coFac ", pfac == mfac.coFac); 087 088 GenVector<GenPolynomial<BigRational>> a; 089 a = mfac.getZERO(); 090 //System.out.println("a = " + a); 091 assertTrue("isZERO( a )", a.isZERO()); 092 093 GenVector<GenPolynomial<BigRational>> b = new GenVector<GenPolynomial<BigRational>>(mfac); 094 //System.out.println("b = " + b); 095 assertTrue("isZERO( b )", b.isZERO()); 096 097 assertTrue("a == b ", a.equals(b)); 098 099 GenVector<GenPolynomial<BigRational>> c = b.clone(); 100 //System.out.println("c = " + c); 101 assertTrue("isZERO( c )", c.isZERO()); 102 assertTrue("a == c ", a.equals(c)); 103 104 GenVector<GenPolynomial<BigRational>> d = mfac.copy(b); 105 //System.out.println("d = " + d); 106 assertTrue("isZERO( d )", d.isZERO()); 107 assertTrue("a == d ", a.equals(d)); 108 } 109 110 111 /** 112 * Test random vector 113 * 114 */ 115 public void testPolynomialRandom() { 116 BigRational cfac = new BigRational(1); 117 GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(cfac, rl); 118 119 GenVectorModul<GenPolynomial<BigRational>> mfac = new GenVectorModul<GenPolynomial<BigRational>>( 120 pfac, ll); 121 122 GenVector<GenPolynomial<BigRational>> a; 123 for (int i = 0; i < 7; i++) { 124 a = mfac.random(kl, q); 125 //System.out.println("a = " + a); 126 assertTrue(" not isZERO( a" + i + " )", !a.isZERO()); 127 } 128 } 129 130 131 /** 132 * Test addition. 133 * 134 */ 135 public void testPolynomialAddition() { 136 BigRational cfac = new BigRational(1); 137 GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(cfac, rl); 138 139 GenVectorModul<GenPolynomial<BigRational>> mfac = new GenVectorModul<GenPolynomial<BigRational>>( 140 pfac, ll); 141 142 GenVector<GenPolynomial<BigRational>> a, b, c, d, e; 143 144 a = mfac.random(kl, q); 145 b = mfac.random(kl, q); 146 //System.out.println("a = " + a); 147 //System.out.println("b = " + b); 148 149 c = a.sum(b); 150 d = c.subtract(b); 151 //System.out.println("c = " + c); 152 //System.out.println("d = " + d); 153 assertEquals("a+b-b = a", a, d); 154 155 c = a.sum(b); 156 d = c.sum(b.negate()); 157 //System.out.println("c = " + c); 158 //System.out.println("d = " + d); 159 assertEquals("a+b+(-b) = a", a, d); 160 161 c = a.sum(b); 162 d = b.sum(a); 163 //System.out.println("c = " + c); 164 //System.out.println("d = " + d); 165 assertEquals("a+b = b+a", c, d); 166 167 c = mfac.random(kl, q); 168 d = a.sum(b).sum(c); 169 e = a.sum(b.sum(c)); 170 //System.out.println("d = " + d); 171 //System.out.println("e = " + e); 172 assertEquals("a+(b+c) = (a+b)+c", d, e); 173 } 174 175 176 /** 177 * Test scalar multiplication. 178 * 179 */ 180 public void testPolynomialMultiplication() { 181 BigRational cfac = new BigRational(1); 182 GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(cfac, rl); 183 184 GenVectorModul<GenPolynomial<BigRational>> mfac = new GenVectorModul<GenPolynomial<BigRational>>( 185 pfac, ll); 186 187 GenPolynomial<BigRational> r, s, t; 188 GenVector<GenPolynomial<BigRational>> a, b, c, d, e; 189 190 r = pfac.random(kl); 191 //System.out.println("r = " + r); 192 s = r.negate(); 193 //System.out.println("s = " + s); 194 195 a = mfac.random(kl, q); 196 //System.out.println("a = " + a); 197 198 c = a.scalarMultiply(r); 199 d = a.scalarMultiply(s); 200 e = c.sum(d); 201 //System.out.println("c = " + c); 202 //System.out.println("d = " + d); 203 //System.out.println("e = " + e); 204 assertEquals("a*b + a*(-b) = 0", e, mfac.getZERO()); 205 206 207 b = mfac.random(kl, q); 208 //System.out.println("b = " + b); 209 210 t = pfac.getONE(); 211 //System.out.println("t = " + t); 212 c = a.linearCombination(b, t); 213 d = b.linearCombination(a, t); 214 //System.out.println("c = " + c); 215 //System.out.println("d = " + d); 216 assertEquals("a+1*b = b+1*a", c, d); 217 218 c = a.linearCombination(b, t); 219 d = a.sum(b); 220 //System.out.println("c = " + c); 221 //System.out.println("d = " + d); 222 assertEquals("a+1*b = b+1*a", c, d); 223 224 s = t.negate(); 225 //System.out.println("s = " + s); 226 c = a.linearCombination(b, t); 227 d = c.linearCombination(b, s); 228 //System.out.println("c = " + c); 229 //System.out.println("d = " + d); 230 assertEquals("a+1*b+(-1)*b = a", a, d); 231 232 c = a.linearCombination(t, b, t); 233 d = c.linearCombination(t, b, s); 234 //System.out.println("c = " + c); 235 //System.out.println("d = " + d); 236 assertEquals("a+1*b+(-1)*b = a", a, d); 237 238 t = pfac.getZERO(); 239 //System.out.println("t = " + t); 240 c = a.linearCombination(b, t); 241 //System.out.println("c = " + c); 242 assertEquals("a+0*b = a", a, c); 243 244 d = a.linearCombination(t, b, t); 245 //System.out.println("d = " + d); 246 assertEquals("0*a+0*b = 0", mfac.getZERO(), d); 247 248 r = a.scalarProduct(b); 249 s = b.scalarProduct(a); 250 //System.out.println("r = " + r); 251 //System.out.println("s = " + s); 252 assertEquals("a.b = b.a", r, s); 253 } 254 255 }