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 }