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