Changeset 72f518 in git for libpolys


Ignore:
Timestamp:
Dec 2, 2016, 10:30:32 AM (7 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
44b732cf21d0418e6797e04111cd38378ac2210e
Parents:
4c2cc11df5c1bc75cd355889dc6552e42c58f356
Message:
rintegers.cc: use static, implement nrzInitMPZ
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libpolys/coeffs/rintegers.cc

    r4c2cc1 r72f518  
    2828#ifdef HAVE_RINGS
    2929
    30 
    31 number  nrzCopy        (number a, const coeffs r);
    32 int     nrzSize        (number a, const coeffs r);
    33 void    nrzDelete      (number *a, const coeffs r);
    34 BOOLEAN nrzGreaterZero (number k, const coeffs r);
    35 number  nrzMult        (number a, number b, const coeffs r);
    36 long    nrzInt         (number &n, const coeffs r);
    37 number  nrzAdd         (number a, number b, const coeffs r);
    38 number  nrzSub         (number a, number b, const coeffs r);
    39 void    nrzPower       (number a, int i, number * result, const coeffs r);
    40 BOOLEAN nrzIsZero      (number a, const coeffs r);
    41 BOOLEAN nrzIsOne       (number a, const coeffs r);
    42 BOOLEAN nrzIsMOne      (number a, const coeffs r);
    43 BOOLEAN nrzIsUnit      (number a, const coeffs r);
    44 number  nrzGetUnit     (number a, const coeffs r);
    45 number  nrzDiv         (number a, number b, const coeffs r);
    46 number  nrzExactDiv    (number a, number b, const coeffs r);
    47 number  nrzIntMod      (number a, number b, const coeffs r);
    48 number  nrzNeg         (number c, const coeffs r);
    49 number  nrzInvers      (number c, const coeffs r);
    50 BOOLEAN nrzGreater     (number a, number b, const coeffs r);
    51 BOOLEAN nrzDivBy       (number a, number b, const coeffs r);
    52 int     nrzDivComp     (number a, number b, const coeffs r);
    53 BOOLEAN nrzEqual       (number a, number b, const coeffs r);
    54 number  nrzLcm         (number a,number b, const coeffs r);
    55 number  nrzGcd         (number a,number b, const coeffs r);
    56 number  nrzExtGcd      (number a, number b, number *s, number *t, const coeffs r);
    57 nMapFunc nrzSetMap     (const coeffs src, const coeffs dst);
    58 void    nrzWrite       (number a, const coeffs r);
    59 const char *  nrzRead  (const char *s, number *a, const coeffs r);
    60 char *  nrzName        (number n, const coeffs r);
    61 void    nrzCoeffWrite  (const coeffs r, BOOLEAN details);
    62 #ifdef LDEBUG
    63 BOOLEAN nrzDBTest      (number a, const char *f, const int l, const coeffs r);
    64 #endif
    65 void    nrzSetExp(int c, coeffs r);
    66 void    nrzInitExp(int c, coeffs r);
    67 void    nrzDelete(number *a, const coeffs r);
    68 coeffs  nrzQuot1(number c, const coeffs r);
    69 
    70 //CanonicalForm nrzConvSingNFactoryN(number n, BOOLEAN setChar, const coeffs /*r*/);
    71 //number nrzConvFactoryNSingN(const CanonicalForm n, const coeffs r);
    72 
    73 number nrzMapQ(number from, const coeffs src, const coeffs dst);
    74 
    75 
    7630omBin gmp_nrz_bin = omGetSpecBin(sizeof(mpz_t));
    7731
     
    8034 * Multiply two numbers
    8135 */
    82 number nrzMult (number a, number b, const coeffs)
     36static number nrzMult (number a, number b, const coeffs)
    8337{
    8438  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    9145 * Give the smallest non unit k, such that a * x = k = b * y has a solution
    9246 */
    93 number nrzLcm (number a,number b,const coeffs)
     47static number nrzLcm (number a,number b,const coeffs)
    9448{
    9549  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    10357 * a solution.
    10458 */
    105 number nrzGcd (number a,number b,const coeffs)
     59static number nrzGcd (number a,number b,const coeffs)
    10660{
    10761  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    11569 * a solution and r, s, s.t. k = s*a + t*b
    11670 */
    117 number nrzExtGcd (number a, number b, number *s, number *t, const coeffs)
     71static number nrzExtGcd (number a, number b, number *s, number *t, const coeffs)
    11872{
    11973  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    12983}
    13084
    131 number nrzXExtGcd (number a, number b, number *s, number *t, number *u, number *v, const coeffs )
     85static number nrzXExtGcd (number a, number b, number *s, number *t, number *u, number *v, const coeffs )
    13286{
    13387  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    160114}
    161115
    162 void nrzPower (number a, int i, number * result, const coeffs)
     116static void nrzPower (number a, int i, number * result, const coeffs)
    163117{
    164118  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    178132}
    179133
    180 void nrzDelete(number *a, const coeffs)
     134static void nrzDelete(number *a, const coeffs)
    181135{
    182136  if (*a == NULL) return;
     
    186140}
    187141
    188 number nrzCopy(number a, const coeffs)
     142static number nrzCopy(number a, const coeffs)
    189143{
    190144  if (a==NULL) return NULL;
     
    201155#endif
    202156
    203 int nrzSize(number a, const coeffs)
     157static int nrzSize(number a, const coeffs)
    204158{
    205159  if (a == NULL) return 0;
     
    210164 * convert a number to int
    211165 */
    212 long nrzInt(number &n, const coeffs)
     166static long nrzInt(number &n, const coeffs)
    213167{
    214168  return mpz_get_si( (mpz_ptr)n);
    215169}
    216170
    217 number nrzAdd (number a, number b, const coeffs)
     171static number nrzAdd (number a, number b, const coeffs)
    218172{
    219173  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    223177}
    224178
    225 number nrzSub (number a, number b, const coeffs)
     179static number nrzSub (number a, number b, const coeffs)
    226180{
    227181  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    231185}
    232186
    233 number nrzGetUnit (number, const coeffs r)
     187static number nrzGetUnit (number, const coeffs r)
    234188{
    235189  return nrzInit(1, r);
    236190}
    237191
    238 BOOLEAN nrzIsUnit (number a, const coeffs)
     192static BOOLEAN nrzIsUnit (number a, const coeffs)
    239193{
    240194  return 0 == mpz_cmpabs_ui((mpz_ptr) a, 1);
    241195}
    242196
    243 BOOLEAN nrzIsZero (number  a, const coeffs)
     197static BOOLEAN nrzIsZero (number  a, const coeffs)
    244198{
    245199  return 0 == mpz_cmpabs_ui((mpz_ptr) a, 0);
    246200}
    247201
    248 BOOLEAN nrzIsOne (number a, const coeffs)
     202static BOOLEAN nrzIsOne (number a, const coeffs)
    249203{
    250204  return (a!=NULL) && (0 == mpz_cmp_si((mpz_ptr) a, 1));
    251205}
    252206
    253 BOOLEAN nrzIsMOne (number a, const coeffs)
     207static BOOLEAN nrzIsMOne (number a, const coeffs)
    254208{
    255209  return (a!=NULL) && (0 == mpz_cmp_si((mpz_ptr) a, -1));
    256210}
    257211
    258 BOOLEAN nrzEqual (number a,number b, const coeffs)
     212static BOOLEAN nrzEqual (number a,number b, const coeffs)
    259213{
    260214  return 0 == mpz_cmp((mpz_ptr) a, (mpz_ptr) b);
    261215}
    262216
    263 BOOLEAN nrzGreater (number a,number b, const coeffs)
     217static BOOLEAN nrzGreater (number a,number b, const coeffs)
    264218{
    265219  return 0 < mpz_cmp((mpz_ptr) a, (mpz_ptr) b);
    266220}
    267221
    268 BOOLEAN nrzGreaterZero (number k, const coeffs)
     222static BOOLEAN nrzGreaterZero (number k, const coeffs)
    269223{
    270224  return 0 < mpz_cmp_si((mpz_ptr) k, 0);
    271225}
    272226
    273 int nrzDivComp(number a, number b, const coeffs r)
     227static BOOLEAN nrzDivBy (number a,number b, const coeffs)
     228{
     229  return mpz_divisible_p((mpz_ptr) a, (mpz_ptr) b) != 0;
     230}
     231
     232static int nrzDivComp(number a, number b, const coeffs r)
    274233{
    275234  if (nrzDivBy(a, b, r))
     
    282241}
    283242
    284 BOOLEAN nrzDivBy (number a,number b, const coeffs)
    285 {
    286   return mpz_divisible_p((mpz_ptr) a, (mpz_ptr) b) != 0;
    287 }
    288 
    289 number nrzDiv (number a,number b, const coeffs)
     243static number nrzDiv (number a,number b, const coeffs)
    290244{
    291245  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    304258}
    305259
    306 number nrzExactDiv (number a,number b, const coeffs)
     260static number nrzExactDiv (number a,number b, const coeffs)
    307261{
    308262  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    312266}
    313267
    314 number nrzQuotRem (number a, number b, number * r, const coeffs )
     268static number nrzQuotRem (number a, number b, number * r, const coeffs )
    315269{
    316270  mpz_ptr qq = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    321275}
    322276
    323 number nrzIntMod (number a,number b, const coeffs)
     277static number nrzIntMod (number a,number b, const coeffs)
    324278{
    325279  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    333287}
    334288
    335 number  nrzInvers (number c, const coeffs r)
     289static number  nrzInvers (number c, const coeffs r)
    336290{
    337291  if (!nrzIsUnit((number) c, r))
     
    343297}
    344298
    345 number nrzNeg (number c, const coeffs)
     299static number nrzNeg (number c, const coeffs)
    346300{
    347301// nNeg inplace !!!
     
    350304}
    351305
    352 number nrzMapMachineInt(number from, const coeffs /*src*/, const coeffs /*dst*/)
     306static number nrzMapMachineInt(number from, const coeffs /*src*/, const coeffs /*dst*/)
    353307{
    354308  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    357311}
    358312
    359 number nrzMapZp(number from, const coeffs /*src*/, const coeffs /*dst*/)
     313static number nrzMapZp(number from, const coeffs /*src*/, const coeffs /*dst*/)
    360314{
    361315  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    364318}
    365319
    366 number nrzMapQ(number from, const coeffs src, const coeffs /*dst*/)
     320static number nrzMapQ(number from, const coeffs src, const coeffs /*dst*/)
    367321{
    368322  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    372326}
    373327
    374 nMapFunc nrzSetMap(const coeffs src, const coeffs /*dst*/)
     328static nMapFunc nrzSetMap(const coeffs src, const coeffs /*dst*/)
    375329{
    376330  /* dst = currRing */
     
    400354}
    401355
    402 
    403356/*
    404357 * set the exponent (allocate and init tables) (TODO)
     
    414367
    415368#ifdef LDEBUG
    416 BOOLEAN nrzDBTest (number, const char *, const int, const coeffs)
     369static BOOLEAN nrzDBTest (number, const char *, const int, const coeffs)
    417370{
    418371  return TRUE;//TODO
     
    488441}
    489442
    490 const char * nrzRead (const char *s, number *a, const coeffs)
     443static const char * nrzRead (const char *s, number *a, const coeffs)
    491444{
    492445  mpz_ptr z = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    499452}
    500453
    501 void    nrzCoeffWrite  (const coeffs, BOOLEAN /*details*/)
     454static void nrzCoeffWrite  (const coeffs, BOOLEAN /*details*/)
    502455{
    503456  PrintS("//   coeff. ring is : ZZ\n");
     
    514467}
    515468
    516 coeffs nrzQuot1(number c, const coeffs r)
     469static coeffs nrzQuot1(number c, const coeffs r)
    517470{
    518471    long ch = r->cfInt(c, r);
     
    525478    coeffs rr = nInitChar(n_Zn, (void*)&info);
    526479    return(rr);
     480}
     481
     482static number nrzInitMPZ(mpz_t m, const coeffs)
     483{
     484  mpz_ptr z = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     485  mpz_init_set(z, m);
     486  return (number)z;
    527487}
    528488
     
    547507  r->cfExactDiv= nrzExactDiv;
    548508  r->cfInit = nrzInit;
     509  r->cfInitMPZ = nrzInitMPZ;
    549510  r->cfSize  = nrzSize;
    550511  r->cfInt  = nrzInt;
     
    10841045 * TODO: do not create an mpz if not necessary
    10851046 */
    1086 number nrzInit (long i, const coeffs)
     1047static number nrzInit (long i, const coeffs)
    10871048{
    10881049  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
Note: See TracChangeset for help on using the changeset viewer.