Changeset 44b732c in git


Ignore:
Timestamp:
Dec 2, 2016, 11:25:43 AM (7 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
Children:
b0c4944a4b9999bd38a271be9f2c1b1821edeb44
Parents:
72f5181b0615d9c0f91fee1c8cc55d57b70d9b58
Message:
rintegers.cc: use static, implement nrzInitMPZ (for CF variant)
Location:
libpolys
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • libpolys/coeffs/rintegers.cc

    r72f518 r44b732c  
    599599
    600600
    601 int nrzSize(number a, const coeffs)
     601static int nrzSize(number a, const coeffs)
    602602{
    603603  if (a == NULL) return 0;
     
    705705 * Give the smallest non unit k, such that a * x = k = b * y has a solution
    706706 */
    707 number nrzLcm (number a, number b, const coeffs R)
     707static number nrzLcm (number a, number b, const coeffs R)
    708708{
    709709  #ifdef CF_DEBUG
     
    740740}
    741741
     742static number nrzCopy(number a, const coeffs)
     743{
     744  if (n_Z_IS_SMALL(a)) return a;
     745  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     746  mpz_init_set(erg, (mpz_ptr) a);
     747  return (number) erg;
     748}
     749
    742750/*
    743751 * Give the largest non unit k, such that a = x * k, b = y * k has
    744752 * a solution.
    745753 */
    746 number nrzGcd (number a,number b,const coeffs R)
     754static number nrzGcd (number a,number b,const coeffs R)
    747755{
    748756  if (n_Z_IS_SMALL(a) && n_Z_IS_SMALL(b))
     
    821829}
    822830
    823 number  nrzExtGcd (number a, number b, number *s, number *t, const coeffs)
     831static number  nrzExtGcd (number a, number b, number *s, number *t, const coeffs)
    824832{
    825833  if (n_Z_IS_SMALL(a) && n_Z_IS_SMALL(b))
     
    865873}
    866874#if CF_DEBUG
    867 number _nrzXExtGcd(number, number, number *, number *, number *, number *, const coeffs);
    868 number nrzXExtGcd(number a, number b, number *x, number * y, number * u, number * v, const coeffs R)
     875static number _nrzXExtGcd(number, number, number *, number *, number *, number *, const coeffs);
     876static number nrzXExtGcd(number a, number b, number *x, number * y, number * u, number * v, const coeffs R)
    869877{
    870878  char * s;
     
    889897  return c;
    890898}
    891 number  _nrzXExtGcd (number a, number b, number *s, number *t, number *u, number *v, const coeffs )
     899static number  _nrzXExtGcd (number a, number b, number *s, number *t, number *u, number *v, const coeffs )
    892900#else
    893 number  nrzXExtGcd (number a, number b, number *s, number *t, number *u, number *v, const coeffs )
     901static number  nrzXExtGcd (number a, number b, number *s, number *t, number *u, number *v, const coeffs )
    894902#endif
    895903{
     
    955963}
    956964#if CF_DEBUG
    957 number _nrzQuotRem(number, number, number *, const coeffs);
    958 number nrzQuotRem(number a, number b, number * r, const coeffs R)
     965static number _nrzQuotRem(number, number, number *, const coeffs);
     966static number nrzQuotRem(number a, number b, number * r, const coeffs R)
    959967{
    960968  StringSetS("QuotRem: ");
     
    975983  return c;
    976984}
    977 number _nrzQuotRem (number a, number b, number * r, const coeffs )
     985static number _nrzQuotRem (number a, number b, number * r, const coeffs )
    978986#else
    979 number nrzQuotRem (number a, number b, number * r, const coeffs )
     987static number nrzQuotRem (number a, number b, number * r, const coeffs )
    980988#endif
    981989{
     
    10271035}
    10281036
    1029 
    1030 void nrzPower (number a, int i, number * result, const coeffs)
     1037static void nrzPower (number a, int i, number * result, const coeffs)
    10311038{
    10321039  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    10451052 * TODO: do not create an mpz if not necessary
    10461053 */
    1047 static number nrzInit (long i, const coeffs)
     1054number nrzInit (long i, const coeffs)
    10481055{
    10491056  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    10521059}
    10531060
    1054 void nrzDelete(number *a, const coeffs)
     1061static number nrzInitMPZ(mpz_t m, const coeffs)
     1062{
     1063  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     1064  mpz_init_set(erg, m);
     1065  return nrz_short((number) erg);
     1066}
     1067
     1068
     1069static void nrzDelete(number *a, const coeffs)
    10551070{
    10561071  if (*a == NULL) return;
     
    10611076  }
    10621077  *a = NULL;
    1063 }
    1064 
    1065 number nrzCopy(number a, const coeffs)
    1066 {
    1067   if (n_Z_IS_SMALL(a)) return a;
    1068   mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
    1069   mpz_init_set(erg, (mpz_ptr) a);
    1070   return (number) erg;
    10711078}
    10721079
     
    10741081 * convert a number to int
    10751082 */
    1076 long nrzInt(number &n, const coeffs)
     1083static long nrzInt(number &n, const coeffs)
    10771084{
    10781085  if (n_Z_IS_SMALL(n)) return SR_TO_INT(n);
     
    10801087}
    10811088#if CF_DEBUG
    1082 number _nrzAdd(number, number, const coeffs);
    1083 number nrzAdd(number a, number b, const coeffs R)
     1089static number _nrzAdd(number, number, const coeffs);
     1090static number nrzAdd(number a, number b, const coeffs R)
    10841091{
    10851092  StringSetS("Add: ");
     
    10951102  return c;
    10961103}
    1097 number _nrzAdd (number a, number b, const coeffs )
     1104static number _nrzAdd (number a, number b, const coeffs )
    10981105#else
    1099 number nrzAdd (number a, number b, const coeffs )
     1106static number nrzAdd (number a, number b, const coeffs )
    11001107#endif
    11011108{
     
    11401147}
    11411148
    1142 number nrzSub (number a, number b,  const coeffs )
     1149static number nrzSub (number a, number b,  const coeffs )
    11431150{
    11441151  if (n_Z_IS_SMALL(a) && n_Z_IS_SMALL(b))
     
    11851192}
    11861193
    1187 number  nrzGetUnit (number n, const coeffs r)
    1188 {
    1189   if (nrzGreaterZero(n, r))
    1190     return INT_TO_SR(1);
    1191   else
    1192     return INT_TO_SR(-1);
    1193 }
    1194 
    1195 number nrzAnn(number n, const coeffs)
    1196 {
    1197   if (SR_TO_INT(n))  // in Z: the annihilator of !=0 is 0
    1198     return INT_TO_SR(0);
    1199   else
    1200     return INT_TO_SR(1);
    1201 }
    1202 
    1203 BOOLEAN nrzIsUnit (number a, const coeffs)
    1204 {
    1205   return ABS(SR_TO_INT(a))==1;
    1206 }
    1207 
    1208 BOOLEAN nrzIsZero (number  a, const coeffs)
    1209 {
    1210   return (a==NULL) || (a==INT_TO_SR(0));
    1211 }
    1212 
    1213 BOOLEAN nrzIsOne (number a, const coeffs)
    1214 {
    1215   return a==INT_TO_SR(1);
    1216 }
    1217 
    1218 BOOLEAN nrzIsMOne (number a, const coeffs)
    1219 {
    1220   return a==INT_TO_SR(-1);
    1221 }
    1222 
    1223 BOOLEAN nrzEqual (number a,number b, const coeffs)
    1224 {
    1225   if (n_Z_IS_SMALL(a) && n_Z_IS_SMALL(b))
    1226     return a==b;
    1227   else if (n_Z_IS_SMALL(a) || n_Z_IS_SMALL(b))
    1228     return FALSE;
    1229   else
    1230     return 0 == mpz_cmp((mpz_ptr) a, (mpz_ptr) b);
    1231 }
    1232 
    1233 BOOLEAN nrzGreater (number a,number b, const coeffs)
     1194static BOOLEAN nrzGreater (number a,number b, const coeffs)
    12341195{
    12351196  if (n_Z_IS_SMALL(a) && n_Z_IS_SMALL(b))
     
    12421203}
    12431204
    1244 BOOLEAN nrzGreaterZero (number k, const coeffs C)
     1205static BOOLEAN nrzGreaterZero (number k, const coeffs C)
    12451206{
    12461207  return nrzGreater(k, INT_TO_SR(0), C);
    12471208}
    12481209
    1249 int nrzDivComp(number a, number b, const coeffs r)
     1210static number  nrzGetUnit (number n, const coeffs r)
     1211{
     1212  if (nrzGreaterZero(n, r))
     1213    return INT_TO_SR(1);
     1214  /*else*/
     1215    return INT_TO_SR(-1);
     1216}
     1217
     1218static number nrzAnn(number n, const coeffs)
     1219{
     1220  if (SR_TO_INT(n))  // in Z: the annihilator of !=0 is 0
     1221    return INT_TO_SR(0);
     1222  else
     1223    return INT_TO_SR(1);
     1224}
     1225
     1226static BOOLEAN nrzIsUnit (number a, const coeffs)
     1227{
     1228  return ABS(SR_TO_INT(a))==1;
     1229}
     1230
     1231static BOOLEAN nrzIsZero (number  a, const coeffs)
     1232{
     1233  return (a==NULL) || (a==INT_TO_SR(0));
     1234}
     1235
     1236static BOOLEAN nrzIsOne (number a, const coeffs)
     1237{
     1238  return a==INT_TO_SR(1);
     1239}
     1240
     1241static BOOLEAN nrzIsMOne (number a, const coeffs)
     1242{
     1243  return a==INT_TO_SR(-1);
     1244}
     1245
     1246static BOOLEAN nrzEqual (number a,number b, const coeffs)
     1247{
     1248  if (n_Z_IS_SMALL(a) && n_Z_IS_SMALL(b))
     1249    return a==b;
     1250  else if (n_Z_IS_SMALL(a) || n_Z_IS_SMALL(b))
     1251    return FALSE;
     1252  else
     1253    return 0 == mpz_cmp((mpz_ptr) a, (mpz_ptr) b);
     1254}
     1255
     1256static BOOLEAN nrzDivBy (number a,number b, const coeffs)
     1257{
     1258  if (n_Z_IS_SMALL(a) && n_Z_IS_SMALL(b))
     1259  {
     1260    return SR_TO_INT(a) %SR_TO_INT(b) ==0;
     1261  }
     1262  else if (n_Z_IS_SMALL(a))
     1263  {
     1264    return a==INT_TO_SR(0);
     1265  }
     1266  else if (n_Z_IS_SMALL(b))
     1267  {
     1268    return mpz_divisible_ui_p((mpz_ptr)a, (unsigned long)ABS(SR_TO_INT(b))) != 0;
     1269  }
     1270  else
     1271    return mpz_divisible_p((mpz_ptr) a, (mpz_ptr) b) != 0;
     1272}
     1273
     1274static int nrzDivComp(number a, number b, const coeffs r)
    12501275{
    12511276  if (nrzDivBy(a, b, r))
     
    12581283}
    12591284
    1260 BOOLEAN nrzDivBy (number a,number b, const coeffs)
    1261 {
    1262   if (n_Z_IS_SMALL(a) && n_Z_IS_SMALL(b))
    1263   {
    1264     return SR_TO_INT(a) %SR_TO_INT(b) ==0;
    1265   }
    1266   else if (n_Z_IS_SMALL(a))
    1267   {
    1268     return a==INT_TO_SR(0);
    1269   }
    1270   else if (n_Z_IS_SMALL(b))
    1271   {
    1272     return mpz_divisible_ui_p((mpz_ptr)a, (unsigned long)ABS(SR_TO_INT(b))) != 0;
    1273   }
    1274   else
    1275     return mpz_divisible_p((mpz_ptr) a, (mpz_ptr) b) != 0;
    1276 }
    1277 
    1278 number nrzDiv (number a,number b, const coeffs)
     1285static number nrzDiv (number a,number b, const coeffs)
    12791286{
    12801287  assume(SR_TO_INT(b));
     
    13411348}
    13421349
    1343 number nrzExactDiv (number a,number b, const coeffs)
     1350static number nrzExactDiv (number a,number b, const coeffs)
    13441351{
    13451352  assume(SR_TO_INT(b));
     
    13621369}
    13631370
    1364 number nrzIntMod (number a,number b, const coeffs)
     1371static number nrzIntMod (number a,number b, const coeffs)
    13651372{
    13661373  mpz_t aa, bb;
     
    13871394}
    13881395
    1389 number  nrzInvers (number c, const coeffs r)
     1396static number  nrzInvers (number c, const coeffs r)
    13901397{
    13911398  if (!nrzIsUnit((number) c, r))
     
    13971404}
    13981405
    1399 number nrzNeg (number c, const coeffs)
     1406static number nrzNeg (number c, const coeffs)
    14001407{
    14011408// nNeg inplace !!!
     
    14771484}
    14781485
    1479 number nrzMapMachineInt(number from, const coeffs /*src*/, const coeffs /*dst*/)
     1486static number nrzMapMachineInt(number from, const coeffs /*src*/, const coeffs /*dst*/)
    14801487{
    14811488  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    14841491}
    14851492
    1486 number nrzMapZp(number from, const coeffs /*src*/, const coeffs /*dst*/)
     1493static number nrzMapZp(number from, const coeffs /*src*/, const coeffs /*dst*/)
    14871494{
    14881495  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    14911498}
    14921499
    1493 number nrzModNMap(number from, const coeffs /* src */, const coeffs /*dst*/)
     1500static number nrzModNMap(number from, const coeffs /* src */, const coeffs /*dst*/)
    14941501{
    14951502  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    14981505}
    14991506
    1500 number nrzMapQ(number from, const coeffs /* src */, const coeffs dst)
     1507static number nrzMapQ(number from, const coeffs /* src */, const coeffs dst)
    15011508{
    15021509  if (SR_HDL(from) & SR_INT)
     
    15121519}
    15131520
    1514 nMapFunc nrzSetMap(const coeffs src, const coeffs /*dst*/)
     1521static nMapFunc nrzSetMap(const coeffs src, const coeffs /*dst*/)
    15151522{
    15161523  /* dst = rintegers */
     
    16241631}
    16251632
    1626 const char * nrzRead (const char *s, number *a, const coeffs)
     1633static const char * nrzRead (const char *s, number *a, const coeffs)
    16271634{
    16281635  mpz_ptr z = (mpz_ptr) omAllocBin(gmp_nrz_bin);
     
    16351642}
    16361643
    1637 void    nrzCoeffWrite  (const coeffs, BOOLEAN /*details*/)
     1644static void nrzCoeffWrite  (const coeffs, BOOLEAN /*details*/)
    16381645{
    16391646  //PrintS("// ZZ\n");
     
    16911698}
    16921699
    1693 coeffs nrzQuot1(number c, const coeffs r)
     1700static coeffs nrzQuot1(number c, const coeffs r)
    16941701{
    16951702    mpz_ptr dummy;
     
    17291736  r->cfExactDiv= nrzExactDiv;
    17301737  r->cfInit = nrzInit;
     1738  r->cfInitMPZ = nrzInitMPZ;
    17311739  r->cfSize  = nrzSize;
    17321740  r->cfInt  = nrzInt;
  • libpolys/misc/auxiliary.h

    r72f518 r44b732c  
    2828// ---------------- Singular standard types etc.
    2929/* SI_INTEGER_VARIANT: 1: from longrat.cc
    30  *                     2: GMP
    31  *                     3: rintegers.cc */
     30 *                     2: GMP (in rintegers.cc)
     31 *                     3: CF (in rintegers.cc) */
    3232#define SI_INTEGER_VARIANT 2
    3333
Note: See TracChangeset for help on using the changeset viewer.