001/* 002 * $Id$ 003 */ 004 005package edu.jas.integrate; 006 007 008import edu.jas.arith.BigRational; 009import edu.jas.kern.ComputerThreads; 010import edu.jas.poly.GenPolynomial; 011import edu.jas.poly.GenPolynomialRing; 012import edu.jas.poly.TermOrder; 013import edu.jas.ufd.Quotient; 014import edu.jas.ufd.QuotientRing; 015 016import junit.framework.Test; 017import junit.framework.TestCase; 018import junit.framework.TestSuite; 019 020 021/** 022 * Elementary integration Bernoulli algorithm with linear factors with JUnit. 023 * @author Heinz Kredel 024 */ 025 026public class ElementaryIntegrationAbsoluteTest extends TestCase { 027 028 029 /** 030 * main. 031 */ 032 public static void main(String[] args) { 033 junit.textui.TestRunner.run(suite()); 034 } 035 036 037 /** 038 * Constructs a <CODE>ElementaryIntegrationAbsoluteTest</CODE> object. 039 * @param name String. 040 */ 041 public ElementaryIntegrationAbsoluteTest(String name) { 042 super(name); 043 } 044 045 046 /** 047 * suite. 048 */ 049 public static Test suite() { 050 TestSuite suite = new TestSuite(ElementaryIntegrationAbsoluteTest.class); 051 return suite; 052 } 053 054 055 TermOrder tord; 056 057 058 QuotientRing<BigRational> qfac; 059 060 061 GenPolynomialRing<BigRational> pfac; 062 063 064 ElementaryIntegration<BigRational> integrator; 065 066 067 QuotIntegral<BigRational> rint; 068 069 070 @Override 071 protected void setUp() { 072 tord = new TermOrder(TermOrder.INVLEX); 073 BigRational br = new BigRational(1); 074 String[] vars = new String[] { "x" }; 075 pfac = new GenPolynomialRing<BigRational>(br, 1, tord, vars); 076 qfac = new QuotientRing<BigRational>(pfac); 077 integrator = new ElementaryIntegrationBernoulli<BigRational>(br); 078 } 079 080 081 @Override 082 protected void tearDown() { 083 ComputerThreads.terminate(); 084 } 085 086 087 /** 088 * Test Bernoulli algorithm. 089 */ 090 public void testRationalBernoulli() { 091 GenPolynomial<BigRational> agen = pfac.univariate(0, 4); 092 agen = agen.sum(pfac.fromInteger(4)); // x^4 + 4 093 094 // GenPolynomial<BigRational> x6 = pfac.univariate(0, 6); 095 // GenPolynomial<BigRational> x4 = pfac.univariate(0, 4); 096 // GenPolynomial<BigRational> x2 = pfac.univariate(0, 2); 097 // // x^6 - 5 x^4 + 5 x^2 + 4 098 // agen = x6.subtract(x4.multiply(pfac.fromInteger(5))); 099 // agen = agen.sum(x2.multiply(pfac.fromInteger(5))); 100 // agen = agen.sum(pfac.fromInteger(4)); 101 102 // GenPolynomial<BigRational> x3 = pfac.univariate(0, 3); 103 // GenPolynomial<BigRational> x = pfac.univariate(0); 104 // // x^3 + x 105 // agen = x3.sum(x); 106 107 // GenPolynomial<BigRational> x2 = pfac.univariate(0, 2); 108 // // x^2 - 2 109 // agen = x2.subtract(pfac.fromInteger(2)); 110 111 GenPolynomial<BigRational> N = pfac.getONE(); 112 Quotient<BigRational> Q = new Quotient<BigRational>(qfac, N, agen); 113 114 rint = integrator.integrate(Q); 115 //System.out.println("\nquot integral: " + rint.toString()); 116 assertTrue("isIntegral ", integrator.isIntegral(rint)); 117 assertFalse("rint not empty: " + rint, rint.toString().isEmpty()); 118 assertTrue("rint contains: " + rint, rint.toString().indexOf("integral") >= 0); 119 } 120 121}