Changeset 4d1ae5 in git


Ignore:
Timestamp:
Jun 21, 2010, 7:41:28 PM (13 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'f875bbaccd0831e36aaed09ff6adeb3eb45aeb94')
Children:
f1c465fbf33937cf812c6bfc9bdc7a4e5c585fd4
Parents:
925a43c559bf2bd9536bcb511626e89f6552ac3e
git-author:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2010-06-21 19:41:28+02:00
git-committer:
Mohamed Barakat <mohamed.barakat@rwth-aachen.de>2011-11-09 11:55:15+01:00
Message:
syntax fixes for test (rmodulo2m, rmodulon)
Location:
coeffs
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • coeffs/longrat.h

    r925a43c r4d1ae5  
    7070number   nlBigInt(number &n);
    7171#ifdef HAVE_RINGS
    72 void     nlGMP(number &i, number n);
     72void     nlGMP(number &i, number n, const coeffs r);
    7373#endif
    7474BOOLEAN  nlGreaterZero(number za, const coeffs r);
  • coeffs/rintegers.cc

    r925a43c r4d1ae5  
    235235}
    236236
    237 number  nrzInvers (number c)
     237number  nrzInvers (number c, const coeffs r)
    238238{
    239239  if (!nrzIsUnit((number) c))
     
    242242    return (number)0; //TODO
    243243  }
    244   return nrzCopy(c);
     244  return nrzCopy(c,r);
    245245}
    246246
     
    270270  int_number erg = (int_number) omAllocBin(gmp_nrz_bin);
    271271  mpz_init(erg);
    272   nlGMP(from, (number) erg);
     272  nlGMP(from, (number) erg, src);
    273273  return (number) erg;
    274274}
  • coeffs/rintegers.h

    r925a43c r4d1ae5  
    1414extern NATNUMBER nrzModul;
    1515
    16 number  nrzCopy        (number a);
    17 number  cfrzCopy       (number a, const coeffs r);
     16number  nrzCopy       (number a, const coeffs r);
    1817int     nrzSize        (number a);
    1918void    nrzDelete      (number *a, const coeffs r);
  • coeffs/rmodulo2m.cc

    r925a43c r4d1ae5  
    6464     r->cfDBTest      = nr2mDBTest;
    6565#endif
     66     r->has_simple_Alloc=TRUE;
    6667}
    6768
     
    530531  mpz_init_set_ui(k, dst->nr2mModul);
    531532
    532   nlGMP(from, (number)erg);
     533  nlGMP(from, (number)erg, dst);
    533534  mpz_and(erg, erg, k);
    534535  number res = (number)mpz_get_ui(erg);
  • coeffs/rmodulon.cc

    r925a43c r4d1ae5  
    99#include <string.h>
    1010#include "config.h"
     11#include <auxiliary.h>
    1112
    1213#ifdef HAVE_RINGS
     
    2930void nrnInitChar (coeffs r, void*)
    3031{
    31      nrnInitExp(c, r);
    32      n->cfInit       = nrnInit;
    33      n->cfDelete     = nrnDelete;
    34      n->cfCopy       = nrnCopy;
    35      n->nSize        = nrnSize;
    36      n->n_Int        = nrnInt;
    37      n->nAdd         = nrnAdd;
    38      n->nSub         = nrnSub;
    39      n->nMult        = nrnMult;
    40      n->nDiv         = nrnDiv;
    41      n->nIntDiv      = nrnIntDiv;
    42      n->nIntMod      = nrnMod;
    43      n->nExactDiv    = nrnDiv;
    44      n->nNeg         = nrnNeg;
    45      n->nInvers      = nrnInvers;
    46      n->nDivBy       = nrnDivBy;
    47      n->nDivComp     = nrnDivComp;
    48      n->nGreater     = nrnGreater;
    49      n->nEqual       = nrnEqual;
    50      n->nIsZero      = nrnIsZero;
    51      n->nIsOne       = nrnIsOne;
    52      n->nIsMOne      = nrnIsMOne;
    53      n->nGreaterZero = nrnGreaterZero;
    54      n->cfWrite      = nrnWrite;
    55      n->nRead        = nrnRead;
    56      n->nPower       = nrnPower;
    57      n->cfSetMap     = nrnSetMap;
    58      n->nNormalize   = ndNormalize;
    59      n->nLcm         = nrnLcm;
    60      n->nGcd         = nrnGcd;
    61      n->nIsUnit      = nrnIsUnit;
    62      n->nGetUnit     = nrnGetUnit;
    63      n->nExtGcd      = nrnExtGcd;
    64      n->nName        = nrnName;
     32     nrnInitExp(r->ch, r);
     33     r->cfInit       = nrnInit;
     34     r->cfDelete     = nrnDelete;
     35     r->cfCopy       = nrnCopy;
     36     r->cfSize        = nrnSize;
     37     r->cfInt        = nrnInt;
     38     r->cfAdd         = nrnAdd;
     39     r->cfSub         = nrnSub;
     40     r->cfMult        = nrnMult;
     41     r->cfDiv         = nrnDiv;
     42     r->cfIntDiv      = nrnIntDiv;
     43     r->cfIntMod      = nrnMod;
     44     r->cfExactDiv    = nrnDiv;
     45     r->cfNeg         = nrnNeg;
     46     r->cfInvers      = nrnInvers;
     47     r->cfDivBy       = nrnDivBy;
     48     r->cfDivComp     = nrnDivComp;
     49     r->cfGreater     = nrnGreater;
     50     r->cfEqual       = nrnEqual;
     51     r->cfIsZero      = nrnIsZero;
     52     r->cfIsOne       = nrnIsOne;
     53     r->cfIsMOne      = nrnIsMOne;
     54     r->cfGreaterZero = nrnGreaterZero;
     55     r->cfWrite      = nrnWrite;
     56     r->cfRead        = nrnRead;
     57     r->cfPower       = nrnPower;
     58     r->cfSetMap     = nrnSetMap;
     59     r->cfNormalize   = ndNormalize;
     60     r->cfLcm         = nrnLcm;
     61     r->cfGcd         = nrnGcd;
     62     r->cfIsUnit      = nrnIsUnit;
     63     r->cfGetUnit     = nrnGetUnit;
     64     r->cfExtGcd      = nrnExtGcd;
     65     r->cfName        = ndName;
    6566#ifdef LDEBUG
    66      n->nDBTest      = nrnDBTest;
     67     r->cfDBTest      = nrnDBTest;
    6768#endif
    6869}
     
    265266{
    266267  number tmp = nrnGcd(a, (number) r->nrnModul, r);
    267   bool res = nrnIsOne(tmp);
     268  bool res = nrnIsOne(tmp,r);
    268269  nrnDelete(&tmp, NULL);
    269270  return res;
     
    277278  mpz_tdiv_q(unit, (int_number) k, unit);
    278279  int_number gcd = (int_number) nrnGcd((number) unit, 0, r);
    279   if (!nrnIsOne((number) gcd))
     280  if (!nrnIsOne((number) gcd,r))
    280281  {
    281282    int_number ctmp;
    282283    // tmp := unit^2
    283     int_number tmp = (int_number) nrnMult((number) unit,(number) unit);
     284    int_number tmp = (int_number) nrnMult((number) unit,(number) unit,r);
    284285    // gcd_new := gcd(tmp, 0)
    285286    int_number gcd_new = (int_number) nrnGcd((number) tmp, 0, r);
    286     while (!nrnEqual((number) gcd_new,(number) gcd))
     287    while (!nrnEqual((number) gcd_new,(number) gcd,r))
    287288    {
    288289      // gcd := gcd_new
     
    323324int nrnDivComp(number a, number b, const coeffs r)
    324325{
    325   if (nrnEqual(a, b)) return 2;
     326  if (nrnEqual(a, b,r)) return 2;
    326327  if (mpz_divisible_p((int_number) a, (int_number) b)) return -1;
    327328  if (mpz_divisible_p((int_number) b, (int_number) a)) return 1;
    328   return 0;
     329  return 2;
    329330}
    330331
     
    343344    int_number gcd = (int_number) nrnGcd(a, b, r);
    344345    mpz_divexact(erg, (int_number) b, gcd);
    345     if (!nrnIsUnit((number) erg))
     346    if (!nrnIsUnit((number) erg,r))
    346347    {
    347348      WerrorS("Division not possible, even by cancelling zero divisors.");
     
    352353    }
    353354    // a / gcd(a,b) * [b / gcd (a,b)]^(-1)
    354     int_number tmp = (int_number) nrnInvers((number) erg);
     355    int_number tmp = (int_number) nrnInvers((number) erg,r);
    355356    mpz_divexact(erg, (int_number) a, gcd);
    356357    mpz_mul(erg, erg, tmp);
     
    362363}
    363364
    364 number nrnMod (number a, number b, const coeffs r)
     365number nrnMod (number a, number b, const coeffs R)
    365366{
    366367  /*
     
    387388  mpz_init(g);
    388389  mpz_init_set_si(r,(long)0);
    389   mpz_gcd(g, (int_number) r->nrnModul, (int_number)b); // g is now as above
     390  mpz_gcd(g, (int_number) R->nrnModul, (int_number)b); // g is now as above
    390391  if (mpz_cmp_si(g, (long)1) != 0) mpz_mod(r, (int_number)a, g); // the case g <> 1
    391392  mpz_clear(g);
     
    409410int_number nrnMapCoef = NULL;
    410411
    411 number nrnMapModN(number from, const coeffs r)
    412 {
    413   return nrnMult(from, (number) nrnMapCoef);
    414 }
    415 
    416 number nrnMap2toM(number from, const coeffs r)
     412number nrnMapModN(number from, const coeffs src, const coeffs dst)
     413{
     414  return nrnMult(from, (number) nrnMapCoef, dst);
     415}
     416
     417number nrnMap2toM(number from, const coeffs src, const coeffs dst)
    417418{
    418419  int_number erg = (int_number) omAllocBin(gmp_nrz_bin);
    419420  mpz_init(erg);
    420421  mpz_mul_ui(erg, nrnMapCoef, (NATNUMBER) from);
    421   mpz_mod(erg, erg, r->nrnModul);
    422   return (number) erg;
    423 }
    424 
    425 number nrnMapZp(number from, const coeffs r)
    426 {
    427   int_number erg = (int_number) omAllocBin(gmp_nrz_bin);
    428   mpz_init(erg);
     422  mpz_mod(erg, erg, dst->nrnModul);
     423  return (number) erg;
     424}
     425
     426number nrnMapZp(number from, const coeffs src, const coeffs dst)
     427{
     428  int_number erg = (int_number) omAllocBin(gmp_nrz_bin);
     429  mpz_init(erg);
     430  // TODO: use npInt(...)
    429431  mpz_mul_si(erg, nrnMapCoef, (NATNUMBER) from);
    430   mpz_mod(erg, erg, r->nrnModul);
    431   return (number) erg;
    432 }
    433 
    434 number nrnMapGMP(number from, const coeffs r)
    435 {
    436   int_number erg = (int_number) omAllocBin(gmp_nrz_bin);
    437   mpz_init(erg);
    438   mpz_mod(erg, (int_number) from, r->nrnModul);
    439   return (number) erg;
    440 }
    441 
    442 number nrnMapQ(number from, const coeffs r)
    443 {
    444   int_number erg = (int_number) omAllocBin(gmp_nrz_bin);
    445   mpz_init(erg);
    446   nlGMP(from, (number) erg);
    447   mpz_mod(erg, erg, r->nrnModul);
    448   return (number) erg;
    449 }
    450 
    451 nMapFunc nrnSetMap(const ring src, const ring dst)
     432  mpz_mod(erg, erg, dst->nrnModul);
     433  return (number) erg;
     434}
     435
     436number nrnMapGMP(number from, const coeffs src, const coeffs dst)
     437{
     438  int_number erg = (int_number) omAllocBin(gmp_nrz_bin);
     439  mpz_init(erg);
     440  mpz_mod(erg, (int_number) from, dst->nrnModul);
     441  return (number) erg;
     442}
     443
     444number nrnMapQ(number from, const coeffs src, const coeffs dst)
     445{
     446  int_number erg = (int_number) omAllocBin(gmp_nrz_bin);
     447  mpz_init(erg);
     448  nlGMP(from, (number) erg, dst);
     449  mpz_mod(erg, erg, dst->nrnModul);
     450  return (number) erg;
     451}
     452
     453nMapFunc nrnSetMap(const coeffs src, const coeffs dst)
    452454{
    453455  /* dst = currRing->cf */
    454   if (rField_is_Ring_Z(src))
     456  if (nField_is_Ring_Z(src))
    455457  {
    456458    return nrnMapGMP;
    457459  }
    458   if (rField_is_Q(src))
     460  if (nField_is_Q(src))
    459461  {
    460462    return nrnMapQ;
    461463  }
    462464  // Some type of Z/n ring / field
    463   if (rField_is_Ring_ModN(src) || rField_is_Ring_PtoM(src) || rField_is_Ring_2toM(src) || rField_is_Zp(src))
     465  if (nField_is_Ring_ModN(src) || nField_is_Ring_PtoM(src) || nField_is_Ring_2toM(src) || nField_is_Zp(src))
    464466  {
    465467    if (   (src->ringtype > 0)
     
    470472      int_number nrnMapModul = (int_number) omAllocBin(gmp_nrz_bin);
    471473      // Computing the n of Z/n
    472       if (rField_is_Zp(src))
     474      if (nField_is_Zp(src))
    473475      {
    474476        mpz_init_set_si(nrnMapModul, src->ch);
     
    487489        mpz_init(nrnMapCoef);
    488490      }
    489       if (mpz_divisible_p(nrnMapModul, r->nrnModul))
     491      if (mpz_divisible_p(nrnMapModul, dst->nrnModul))
    490492      {
    491493        mpz_set_si(nrnMapCoef, 1);
    492494      }
    493495      else
    494       if (nrnDivBy(NULL, (number) nrnMapModul))
     496      if (nrnDivBy(NULL, (number) nrnMapModul,dst))
    495497      {
    496         mpz_divexact(nrnMapCoef, r->nrnModul, nrnMapModul);
    497         int_number tmp = r->nrnModul;
    498         r->nrnModul = nrnMapModul;
    499         if (!nrnIsUnit((number) nrnMapCoef))
     498        mpz_divexact(nrnMapCoef, dst->nrnModul, nrnMapModul);
     499        int_number tmp = dst->nrnModul;
     500        dst->nrnModul = nrnMapModul;
     501        if (!nrnIsUnit((number) nrnMapCoef,dst))
    500502        {
    501           r->nrnModul = tmp;
    502           nrnDelete((number*) &nrnMapModul, r);
     503          dst->nrnModul = tmp;
     504          nrnDelete((number*) &nrnMapModul, dst);
    503505          return NULL;
    504506        }
    505         int_number inv = (int_number) nrnInvers((number) nrnMapCoef);
    506         r->nrnModul = tmp;
     507        int_number inv = (int_number) nrnInvers((number) nrnMapCoef,dst);
     508        dst->nrnModul = tmp;
    507509        mpz_mul(nrnMapCoef, nrnMapCoef, inv);
    508         mpz_mod(nrnMapCoef, nrnMapCoef, r->nrnModul);
    509         nrnDelete((number*) &inv, r);
     510        mpz_mod(nrnMapCoef, nrnMapCoef, dst->nrnModul);
     511        nrnDelete((number*) &inv, dst);
    510512      }
    511513      else
    512514      {
    513         nrnDelete((number*) &nrnMapModul, r);
     515        nrnDelete((number*) &nrnMapModul, dst);
    514516        return NULL;
    515517      }
    516       nrnDelete((number*) &nrnMapModul, r);
    517       if (rField_is_Ring_2toM(src))
     518      nrnDelete((number*) &nrnMapModul, dst);
     519      if (nField_is_Ring_2toM(src))
    518520        return nrnMap2toM;
    519       else if (rField_is_Zp(src))
     521      else if (nField_is_Zp(src))
    520522        return nrnMapZp;
    521523      else
  • coeffs/rmodulon.h

    r925a43c r4d1ae5  
    4747#define  nrnWrite      nrzWrite
    4848const char *  nrnRead  (const char *s, number *a, const coeffs r);
    49 char *  nrnName        (number n, const coeffs r);
    5049#ifdef LDEBUG
    5150BOOLEAN nrnDBTest      (number a, const char *f, const int l, const coeffs r);
Note: See TracChangeset for help on using the changeset viewer.