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