Ignore:
Timestamp:
May 9, 2011, 12:44:46 PM (13 years ago)
Author:
Frank Seelisch <seelisch@…>
Branches:
(u'spielwiese', '4a9821a93ffdc22a6696668bd4f6b8c9de3e6c5f')
Children:
abb478768b4e6470e8184a28c8fd2546f40af8de
Parents:
3b0ba67abd225a2bb2c09c675cfe3085aaf67f12
git-author:
Frank Seelisch <seelisch@mathematik.uni-kl.de>2011-05-09 12:44:46+02:00
git-committer:
Mohamed Barakat <mohamed.barakat@rwth-aachen.de>2011-11-09 12:31:39+01:00
Message:
fixes so that libpoly builds without compiler errors in algext.cc (make check may be broken)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libpolys/polys/ext_fields/algext.cc

    r3b0ba67 r0fb5991  
    3030#include <coeffs/coeffs.h>
    3131#include <coeffs/numbers.h>
     32#include <coeffs/longrat.h>
    3233
    3334#include <polys/monomials/ring.h>
     
    5859number   naRePart(number a, const coeffs cf);
    5960number   naImPart(number a, const coeffs cf);
    60 number   naGetDenom(number a, const coeffs cf);
    61 number   naGetNumerator(number a, const coeffs cf);
     61number   naGetDenom(number &a, const coeffs cf);
     62number   naGetNumerator(number &a, const coeffs cf);
    6263number   naGcd(number a, number b, const coeffs cf);
    6364number   naLcm(number a, number b, const coeffs cf);
     
    120121}
    121122
    122 number naCopy(number &a, const coeffs cf)
     123number naCopy(number a, const coeffs cf)
    123124{
    124125  naTest(a);
    125126  if (a == NULL) return NULL;
    126127  return (number)p_Copy((poly)a, naRing);
     128}
     129
     130number naGetNumerator(number &a, const coeffs cf)
     131{
     132  return naCopy(a, cf);
    127133}
    128134
     
    221227  poly aPlusB = p_Add_q(p_Copy((poly)a, naRing),
    222228                        p_Copy((poly)b, naRing), naRing);
    223   definiteReduce(aPlusB, naMinpoly);
    224   return (number)aMinusB;
     229  definiteReduce(aPlusB, naMinpoly, cf);
     230  return (number)aPlusB;
    225231}
    226232
     
    230236  if (b == NULL) return naCopy(a, cf);
    231237  poly minusB = p_Neg(p_Copy((poly)b, naRing), naRing);
    232   if (a == NULL) return minusB;
     238  if (a == NULL) return (number)minusB;
    233239  poly aMinusB = p_Add_q(p_Copy((poly)a, naRing), minusB, naRing);
    234   definiteReduce(aMinusB, naMinpoly);
     240  definiteReduce(aMinusB, naMinpoly, cf);
    235241  return (number)aMinusB;
    236242}
     
    243249  poly aTimesB = p_Mult_q(p_Copy((poly)a, naRing),
    244250                          p_Copy((poly)b, naRing), naRing);
    245   definiteReduce(aTimesB, naMinpoly);
    246   return (number)aMinusB;
     251  definiteReduce(aTimesB, naMinpoly, cf);
     252  return (number)aTimesB;
    247253}
    248254
     
    254260  poly bInverse = (poly)naInvers(b, cf);
    255261  poly aDivB = p_Mult_q(p_Copy((poly)a, naRing), bInverse, naRing);
    256   definiteReduce(aDivB, naMinpoly);
    257   return (number)aMinusB;
     262  definiteReduce(aDivB, naMinpoly, cf);
     263  return (number)aDivB;
    258264}
    259265
     
    273279  if (a == NULL)
    274280  {
    275     if (exp >= 0) return NULL;
     281    if (exp >= 0) *b = NULL;
    276282    else          WerrorS(nDivBy0);
    277283  }
    278   else if (exp ==  0) return naInit(1, cf);
    279   else if (exp ==  1) return naCopy(a, cf);
    280   else if (exp == -1) return naInvers(a, cf);
     284  else if (exp ==  0) *b = naInit(1, cf);
     285  else if (exp ==  1) *b = naCopy(a, cf);
     286  else if (exp == -1) *b = naInvers(a, cf);
    281287 
    282288  int expAbs = exp; if (expAbs < 0) expAbs = -expAbs;
     
    312318      }
    313319    }
    314     p_Delete(factor, naRing);
     320    p_Delete(&factor, naRing);
    315321    definiteReduce(pow, naMinpoly, cf);
    316322  }
     
    378384     but the final division will take care of the necessary reduction */
    379385  number theGcd = naGcd(a, b, cf);
    380   return naDiv(product, theGcd);
     386  return naDiv(theProduct, theGcd, cf);
    381387}
    382388
     
    409415    noOfTerms++;
    410416    int d = 0;
    411     for (int i = 1; i <= rVar(r); i++) d += p_GetExp(aAsPoly, i, naRing);
     417    for (int i = 1; i <= rVar(naRing); i++)
     418      d += p_GetExp(aAsPoly, i, naRing);
    412419    if (d > theDegree) theDegree = d;
    413420    pIter(aAsPoly);
     
    423430  omCheckAddr(p); omCheckAddr(reducer);
    424431  #endif
    425   p_PolyDiv(*p, reducer, FALSE, naRing);
     432  p_PolyDiv(&p, reducer, FALSE, naRing);
    426433}
    427434
     
    438445  if (a == NULL) WerrorS(nDivBy0);
    439446  poly *aFactor; poly *mFactor;
    440   poly theGcd = p_ExtGcd((poly)a, *aFactor, naMinpoly, *mFactor, naRing);
     447  poly theGcd = p_ExtGcd((poly)a, aFactor, naMinpoly, mFactor, naRing);
    441448  /* the gcd must be one since naMinpoly is irreducible and a != NULL: */
    442   assume(naIsOne(theGcd, cf));     
    443   pDelete(&theGcd, naRing);
    444   pDelete(mFactor, naRing);
    445   return aInverse = (number)(*aFactor);
     449  assume(naIsOne((number)theGcd, cf));     
     450  p_Delete(&theGcd, naRing);
     451  p_Delete(mFactor, naRing);
     452  return (number)(*aFactor);
    446453}
    447454
     
    450457{
    451458  assume(src == dst->algring->cf);
    452   poly result = p_Init(1, dst->algring);
    453   p_SetCoeff(result, naCopy(a, src), dst->algRing);
     459  poly result = p_One(dst->algring);
     460  p_SetCoeff(result, naCopy(a, src), dst->algring);
    454461  return (number)result;
    455462}
     
    461468  int n = n_Int(a, src);
    462469  number q = n_Init(n, dst->algring->cf);
    463   poly result = p_Init(1, dst->algring);
    464   p_SetCoeff(result, q, dst->algRing);
     470  poly result = p_One(dst->algring);
     471  p_SetCoeff(result, q, dst->algring);
    465472  return (number)result;
    466473}
     
    476483number naMap0P(number a, const coeffs src, const coeffs dst)
    477484{
    478   int p = rChar(dst);
     485  int p = rChar(dst->algring);
    479486  int n = nlModP(a, p, src);
    480487  number q = n_Init(n, dst->algring->cf);
    481   poly result = p_Init(1, dst->algring);
    482   p_SetCoeff(result, q, dst->algRing);
     488  poly result = p_One(dst->algring);
     489  p_SetCoeff(result, q, dst->algring);
    483490  return (number)result;
    484491}
     
    488495{
    489496  assume(src == dst->algring->cf);
    490   poly result = p_Init(1, dst->algring);
    491   p_SetCoeff(result, naCopy(a, src), dst->algRing);
     497  poly result = p_One(dst->algring);
     498  p_SetCoeff(result, naCopy(a, src), dst->algring);
    492499  return (number)result;
    493500}
     
    499506  int n = n_Int(a, src);
    500507  number q = n_Init(n, dst->algring->cf);
    501   poly result = p_Init(1, dst->algring);
    502   p_SetCoeff(result, q, dst->algRing);
     508  poly result = p_One(dst->algring);
     509  p_SetCoeff(result, q, dst->algring);
    503510  return (number)result;
    504511}
     
    507514{
    508515  /* dst->cf is expected to be an (algebraic) extension field */
    509   assume(dst->type == n_Ext);
     516  assume(dst->cf->type == n_Ext);
    510517 
    511518  if (rField_is_Q(src) && rField_is_Q_a(dst))
     
    517524  if (rField_is_Q_a(src) && rField_is_Q_a(dst))
    518525  {
    519     if (strcmp(src->parameter[0], dst->parameter[0]) == 0)
     526    if (strcmp(rParameter(src)[0], rParameter(dst)[0]) == 0)
    520527      return naCopyMap;                                  /// Q(a)   --> Q(a)
    521528    else
     
    534541  if (rField_is_Zp_a(src) && rField_is_Zp_a(dst))
    535542  {
    536     if (strcmp(src->parameter[0], dst->parameter[0]) == 0)
     543    if (strcmp(rParameter(src)[0], rParameter(dst)[0]) == 0)
    537544      return naCopyMap;                                  /// Z/p(a) --> Z/p(a)
    538545    else
     
    583590  cf->cfSetMap       = naSetMap;
    584591  cf->cfGetDenom     = naGetDenom;
    585   cf->cfGetNumerator = naCopy;
     592  cf->cfGetNumerator = naGetNumerator;
    586593  cf->cfRePart       = naCopy;
    587594  cf->cfImPart       = naImPart;
Note: See TracChangeset for help on using the changeset viewer.