Changeset 010f3b in git for libpolys/tests


Ignore:
Timestamp:
Jun 29, 2011, 5:54:28 PM (13 years ago)
Author:
Frank Seelisch <seelisch@…>
Branches:
(u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
Children:
df43d9eede47de2604d4c0ff334af81427c1ec57
Parents:
de90c019d739dd11bb7004ab4f6d1147833c69bc
git-author:
Frank Seelisch <seelisch@mathematik.uni-kl.de>2011-06-29 17:54:28+02:00
git-committer:
Mohamed Barakat <mohamed.barakat@rwth-aachen.de>2011-11-09 12:39:10+01:00
Message:
more tests for transcendental case
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libpolys/tests/polys_test.h

    rde90c01 r010f3b  
    231231    TS_ASSERT( n_IsOne(n2, cf) );
    232232    n_Delete(&n1, cf); n_Delete(&n2, cf);
     233  }
     234  /* assumes that cf represents a rational function field;
     235     does NOT copy p, i.e. uses p directly inside the resulting number */
     236  number toFractionNumber(poly p, const coeffs cf)
     237  {
     238    number n = n_Init(1, cf);
     239    fraction f = (fraction)n;
     240    p_Delete(&(f->numerator), cf->extRing);
     241    f->numerator = p;
     242    return n;
    233243  }
    234244  void TestArithCf(const coeffs r)
     
    933943    Test(s);
    934944   
     945    /* some special tests: */
     946    poly v1 = NULL;
     947    plusTerm(v1, 1, 1, 1, cf->extRing);       // s
     948    plusTerm(v1, 1, 1, 0, cf->extRing);       // s + 1
     949    poly v2 = NULL;
     950    plusTerm(v2, 1, 1, 1, cf->extRing);       // s
     951    plusTerm(v2, 2, 2, 1, cf->extRing);       // s + 2t
     952    poly v = p_Mult_q(v1, v2, cf->extRing);   // (s + 1) * (s + 2t)
     953    number v_n = toFractionNumber(v, cf);
     954    PrintSized(v_n, cf);
     955    poly w = NULL;
     956    plusTerm(w, 1, 1, 1, cf->extRing);        // s
     957    plusTerm(w, 1, 1, 0, cf->extRing);        // s + 1
     958    number w_n = toFractionNumber(w, cf);
     959    PrintSized(w_n, cf);
     960    number vOverW_n = n_Div(v_n, w_n, cf);
     961    PrintSized(vOverW_n, cf);
     962    number wOverV_n = n_Invers(vOverW_n, cf);
     963    PrintSized(wOverV_n, cf);
     964    number prod = n_Mult(vOverW_n, wOverV_n, cf);
     965    PrintSized(prod, cf);
     966    number tmp; number nn = n_Copy(vOverW_n, cf);
     967    for (int i = 1; i <= 20; i++)
     968    {
     969      tmp = n_Div(nn, v_n, cf);
     970      n_Delete(&nn, cf);
     971      nn = tmp;
     972      clog << i << ". "; PrintSized(nn, cf);
     973    }
     974    n_Delete(&prod, cf); n_Delete(&nn, cf);
     975    n_Delete(&v_n, cf); n_Delete(&w_n, cf);
     976    n_Delete(&vOverW_n, cf); n_Delete(&wOverV_n, cf);
     977   
    935978    rDelete(s); // kills 'cf' and 'r' as well
    936979  }
Note: See TracChangeset for help on using the changeset viewer.