001 /* 002 * $Id: FactorTest.java 3676 2011-07-02 10:51:16Z kredel $ 003 */ 004 005 package edu.jas.application; 006 007 008 import junit.framework.Test; 009 import junit.framework.TestCase; 010 import junit.framework.TestSuite; 011 012 import edu.jas.arith.BigInteger; 013 import edu.jas.arith.BigRational; 014 import edu.jas.arith.ModInteger; 015 import edu.jas.arith.ModIntegerRing; 016 import edu.jas.arith.ModLong; 017 import edu.jas.arith.ModLongRing; 018 import edu.jas.kern.ComputerThreads; 019 import edu.jas.poly.AlgebraicNumber; 020 import edu.jas.poly.AlgebraicNumberRing; 021 import edu.jas.poly.GenPolynomial; 022 import edu.jas.poly.GenPolynomialRing; 023 import edu.jas.poly.TermOrder; 024 import edu.jas.structure.RingFactory; 025 import edu.jas.ufd.FactorRational; 026 import edu.jas.ufd.Factorization; 027 import edu.jas.ufd.Quotient; 028 import edu.jas.ufd.QuotientRing; 029 import edu.jas.ufd.FactorAlgebraic; 030 import edu.jas.ufd.FactorQuotient; 031 import edu.jas.ufd.FactorModular; 032 import edu.jas.ufd.FactorInteger; 033 034 035 /** 036 * Factor tests with JUnit. 037 * @see edu.jas.ufd.FactorTest 038 * @author Heinz Kredel. 039 */ 040 041 public class FactorTest extends TestCase { 042 043 044 /** 045 * main. 046 */ 047 public static void main(String[] args) { 048 //BasicConfigurator.configure(); 049 junit.textui.TestRunner.run(suite()); 050 } 051 052 053 /** 054 * Constructs a <CODE>FactorTest</CODE> object. 055 * @param name String. 056 */ 057 public FactorTest(String name) { 058 super(name); 059 } 060 061 062 /** 063 */ 064 public static Test suite() { 065 TestSuite suite = new TestSuite(FactorTest.class); 066 return suite; 067 } 068 069 070 int rl = 3; 071 072 073 int kl = 5; 074 075 076 int ll = 5; 077 078 079 int el = 3; 080 081 082 float q = 0.3f; 083 084 085 @Override 086 protected void setUp() { 087 } 088 089 090 @Override 091 protected void tearDown() { 092 ComputerThreads.terminate(); 093 } 094 095 096 /** 097 * Test dummy for Junit. 098 */ 099 public void testDummy() { 100 } 101 102 103 /** 104 * Test factory. 105 */ 106 public void testFactory() { 107 ModIntegerRing mi = new ModIntegerRing(19, true); 108 Factorization<ModInteger> ufdm = FactorFactory.getImplementation(mi); 109 //System.out.println("ufdm = " + ufdm); 110 assertTrue("ufd != Modular " + ufdm, ufdm instanceof FactorModular); 111 112 ModLongRing ml = new ModLongRing(19, true); 113 Factorization<ModLong> ufdml = FactorFactory.getImplementation(ml); 114 //System.out.println("ufdml = " + ufdml); 115 assertTrue("ufd != Modular " + ufdml, ufdml instanceof FactorModular); 116 117 BigInteger bi = new BigInteger(1); 118 Factorization<BigInteger> ufdi = FactorFactory.getImplementation(bi); 119 //System.out.println("ufdi = " + ufdi); 120 assertTrue("ufd != Integer " + ufdi, ufdi instanceof FactorInteger); 121 122 BigRational br = new BigRational(1); 123 Factorization<BigRational> ufdr = FactorFactory.getImplementation(br); 124 //System.out.println("ufdr = " + ufdr); 125 assertTrue("ufd != Rational " + ufdr, ufdr instanceof FactorRational); 126 127 GenPolynomialRing<ModInteger> pmfac = new GenPolynomialRing<ModInteger>(mi, 1); 128 GenPolynomial<ModInteger> pm = pmfac.univariate(0); 129 AlgebraicNumberRing<ModInteger> am = new AlgebraicNumberRing<ModInteger>(pm, true); 130 Factorization<AlgebraicNumber<ModInteger>> ufdam = FactorFactory.getImplementation(am); 131 //System.out.println("ufdam = " + ufdam); 132 assertTrue("ufd != AlgebraicNumber<ModInteger> " + ufdam, ufdam instanceof FactorAlgebraic); 133 134 GenPolynomialRing<BigRational> prfac = new GenPolynomialRing<BigRational>(br, 1); 135 GenPolynomial<BigRational> pr = prfac.univariate(0); 136 AlgebraicNumberRing<BigRational> ar = new AlgebraicNumberRing<BigRational>(pr, true); 137 Factorization<AlgebraicNumber<BigRational>> ufdar = FactorFactory.getImplementation(ar); 138 //System.out.println("ufdar = " + ufdar); 139 assertTrue("ufd != AlgebraicNumber<BigRational> " + ufdar, ufdar instanceof FactorAlgebraic); 140 141 prfac = new GenPolynomialRing<BigRational>(br, 2); 142 QuotientRing<BigRational> qrfac = new QuotientRing<BigRational>(prfac); 143 Factorization<Quotient<BigRational>> ufdqr = FactorFactory.getImplementation(qrfac); 144 //System.out.println("ufdqr = " + ufdqr); 145 assertTrue("ufd != Quotient<BigRational> " + ufdqr, ufdqr instanceof FactorQuotient); 146 } 147 148 149 /** 150 * Test factory generic. 151 */ 152 @SuppressWarnings("unchecked") 153 public void testFactoryGeneric() { 154 ModIntegerRing mi = new ModIntegerRing(19, true); 155 Factorization<ModInteger> ufdm = FactorFactory.getImplementation((RingFactory) mi); 156 //System.out.println("ufdm = " + ufdm); 157 assertTrue("ufd != Modular " + ufdm, ufdm instanceof FactorModular); 158 159 BigInteger bi = new BigInteger(1); 160 Factorization<BigInteger> ufdi = FactorFactory.getImplementation((RingFactory) bi); 161 //System.out.println("ufdi = " + ufdi); 162 assertTrue("ufd != Integer " + ufdi, ufdi instanceof FactorInteger); 163 164 BigRational br = new BigRational(1); 165 Factorization<BigRational> ufdr = FactorFactory.getImplementation((RingFactory) br); 166 //System.out.println("ufdr = " + ufdr); 167 assertTrue("ufd != Rational " + ufdr, ufdr instanceof FactorRational); 168 169 GenPolynomialRing<ModInteger> pmfac = new GenPolynomialRing<ModInteger>(mi, 1); 170 GenPolynomial<ModInteger> pm = pmfac.univariate(0); 171 AlgebraicNumberRing<ModInteger> am = new AlgebraicNumberRing<ModInteger>(pm, true); 172 Factorization<AlgebraicNumber<ModInteger>> ufdam = FactorFactory.getImplementation((RingFactory) am); 173 //System.out.println("ufdam = " + ufdam); 174 assertTrue("ufd != AlgebraicNumber<ModInteger> " + ufdam, ufdam instanceof FactorAlgebraic); 175 176 GenPolynomialRing<BigRational> prfac = new GenPolynomialRing<BigRational>(br, 1); 177 GenPolynomial<BigRational> pr = prfac.univariate(0); 178 AlgebraicNumberRing<BigRational> ar = new AlgebraicNumberRing<BigRational>(pr, true); 179 Factorization<AlgebraicNumber<BigRational>> ufdar = FactorFactory.getImplementation((RingFactory) ar); 180 //System.out.println("ufdar = " + ufdar); 181 assertTrue("ufd != AlgebraicNumber<BigRational> " + ufdar, ufdar instanceof FactorAlgebraic); 182 183 prfac = new GenPolynomialRing<BigRational>(br, 2); 184 QuotientRing<BigRational> qrfac = new QuotientRing<BigRational>(prfac); 185 Factorization<Quotient<BigRational>> ufdqr = FactorFactory.getImplementation((RingFactory) qrfac); 186 //System.out.println("ufdqr = " + ufdqr); 187 assertTrue("ufd != Quotient<BigRational> " + ufdqr, ufdqr instanceof FactorQuotient); 188 189 pmfac = new GenPolynomialRing<ModInteger>(mi, 1); 190 QuotientRing<ModInteger> qmfac = new QuotientRing<ModInteger>(pmfac); 191 Factorization<Quotient<ModInteger>> ufdqm = FactorFactory.getImplementation((RingFactory) qmfac); 192 //System.out.println("ufdqm = " + ufdqm); 193 assertTrue("ufd != Quotient<ModInteger> " + ufdqm, ufdqm instanceof FactorQuotient); 194 195 prfac = new GenPolynomialRing<BigRational>(br, 2); 196 GenPolynomialRing<GenPolynomial<BigRational>> rrfac = new GenPolynomialRing<GenPolynomial<BigRational>>( 197 prfac, 1); 198 Factorization<BigRational> ufdrr = FactorFactory.getImplementation((RingFactory) rrfac); 199 //System.out.println("ufdrr = " + ufdrr); 200 assertTrue("ufd != GenPolynomial<GenPolynomialBigRational>> " + ufdrr, 201 ufdrr instanceof FactorRational); 202 } 203 204 205 /** 206 * Test factory specific. 207 */ 208 public void testFactorySpecific() { 209 ModIntegerRing mi = new ModIntegerRing(19, true); 210 Factorization<ModInteger> ufdm = FactorFactory.getImplementation(mi); 211 //System.out.println("ufdm = " + ufdm); 212 assertTrue("ufd != Modular " + ufdm, ufdm instanceof FactorModular); 213 214 BigInteger bi = new BigInteger(1); 215 Factorization<BigInteger> ufdi = FactorFactory.getImplementation(bi); 216 //System.out.println("ufdi = " + ufdi); 217 assertTrue("ufd != Integer " + ufdi, ufdi instanceof FactorInteger); 218 219 BigRational br = new BigRational(1); 220 Factorization<BigRational> ufdr = FactorFactory.getImplementation(br); 221 //System.out.println("ufdr = " + ufdr); 222 assertTrue("ufd != Rational " + ufdr, ufdr instanceof FactorRational); 223 224 GenPolynomialRing<ModInteger> pmfac = new GenPolynomialRing<ModInteger>(mi, 1); 225 GenPolynomial<ModInteger> pm = pmfac.univariate(0); 226 AlgebraicNumberRing<ModInteger> am = new AlgebraicNumberRing<ModInteger>(pm, true); 227 Factorization<AlgebraicNumber<ModInteger>> ufdam = FactorFactory.<ModInteger> getImplementation(am); 228 //System.out.println("ufdam = " + ufdam); 229 assertTrue("ufd != AlgebraicNumber<ModInteger> " + ufdam, ufdam instanceof FactorAlgebraic); 230 231 GenPolynomialRing<BigRational> prfac = new GenPolynomialRing<BigRational>(br, 1); 232 GenPolynomial<BigRational> pr = prfac.univariate(0); 233 AlgebraicNumberRing<BigRational> ar = new AlgebraicNumberRing<BigRational>(pr, true); 234 Factorization<AlgebraicNumber<BigRational>> ufdar = FactorFactory.<BigRational> getImplementation(ar); 235 //System.out.println("ufdar = " + ufdar); 236 assertTrue("ufd != AlgebraicNumber<BigRational> " + ufdar, ufdar instanceof FactorAlgebraic); 237 238 prfac = new GenPolynomialRing<BigRational>(br, 2); 239 QuotientRing<BigRational> qrfac = new QuotientRing<BigRational>(prfac); 240 Factorization<Quotient<BigRational>> ufdqr = FactorFactory.<BigRational> getImplementation(qrfac); 241 //System.out.println("ufdqr = " + ufdqr); 242 assertTrue("ufd != Quotient<BigRational> " + ufdqr, ufdqr instanceof FactorQuotient); 243 244 pmfac = new GenPolynomialRing<ModInteger>(mi, 1); 245 QuotientRing<ModInteger> qmfac = new QuotientRing<ModInteger>(pmfac); 246 Factorization<Quotient<ModInteger>> ufdqm = FactorFactory.<ModInteger> getImplementation(qmfac); 247 //System.out.println("ufdqm = " + ufdqm); 248 assertTrue("ufd != Quotient<ModInteger> " + ufdqm, ufdqm instanceof FactorQuotient); 249 250 prfac = new GenPolynomialRing<BigRational>(br, 2); 251 GenPolynomialRing<GenPolynomial<BigRational>> rrfac = new GenPolynomialRing<GenPolynomial<BigRational>>( 252 prfac, 1); 253 Factorization<BigRational> ufdrr = FactorFactory.<BigRational> getImplementation(prfac); 254 //System.out.println("ufdrr = " + ufdrr); 255 assertTrue("ufd != GenPolynomial<GenPolynomialBigRational>> " + ufdrr, 256 ufdrr instanceof FactorRational); 257 } 258 259 }