Changeset 44b732c in git
- Timestamp:
- Dec 2, 2016, 11:25:43 AM (7 years ago)
- Branches:
- (u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
- Children:
- b0c4944a4b9999bd38a271be9f2c1b1821edeb44
- Parents:
- 72f5181b0615d9c0f91fee1c8cc55d57b70d9b58
- Location:
- libpolys
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
libpolys/coeffs/rintegers.cc
r72f518 r44b732c 599 599 600 600 601 int nrzSize(number a, const coeffs)601 static int nrzSize(number a, const coeffs) 602 602 { 603 603 if (a == NULL) return 0; … … 705 705 * Give the smallest non unit k, such that a * x = k = b * y has a solution 706 706 */ 707 number nrzLcm (number a, number b, const coeffs R)707 static number nrzLcm (number a, number b, const coeffs R) 708 708 { 709 709 #ifdef CF_DEBUG … … 740 740 } 741 741 742 static 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 742 750 /* 743 751 * Give the largest non unit k, such that a = x * k, b = y * k has 744 752 * a solution. 745 753 */ 746 number nrzGcd (number a,number b,const coeffs R)754 static number nrzGcd (number a,number b,const coeffs R) 747 755 { 748 756 if (n_Z_IS_SMALL(a) && n_Z_IS_SMALL(b)) … … 821 829 } 822 830 823 number nrzExtGcd (number a, number b, number *s, number *t, const coeffs)831 static number nrzExtGcd (number a, number b, number *s, number *t, const coeffs) 824 832 { 825 833 if (n_Z_IS_SMALL(a) && n_Z_IS_SMALL(b)) … … 865 873 } 866 874 #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)875 static number _nrzXExtGcd(number, number, number *, number *, number *, number *, const coeffs); 876 static number nrzXExtGcd(number a, number b, number *x, number * y, number * u, number * v, const coeffs R) 869 877 { 870 878 char * s; … … 889 897 return c; 890 898 } 891 number _nrzXExtGcd (number a, number b, number *s, number *t, number *u, number *v, const coeffs )899 static number _nrzXExtGcd (number a, number b, number *s, number *t, number *u, number *v, const coeffs ) 892 900 #else 893 number nrzXExtGcd (number a, number b, number *s, number *t, number *u, number *v, const coeffs )901 static number nrzXExtGcd (number a, number b, number *s, number *t, number *u, number *v, const coeffs ) 894 902 #endif 895 903 { … … 955 963 } 956 964 #if CF_DEBUG 957 number _nrzQuotRem(number, number, number *, const coeffs);958 number nrzQuotRem(number a, number b, number * r, const coeffs R)965 static number _nrzQuotRem(number, number, number *, const coeffs); 966 static number nrzQuotRem(number a, number b, number * r, const coeffs R) 959 967 { 960 968 StringSetS("QuotRem: "); … … 975 983 return c; 976 984 } 977 number _nrzQuotRem (number a, number b, number * r, const coeffs )985 static number _nrzQuotRem (number a, number b, number * r, const coeffs ) 978 986 #else 979 number nrzQuotRem (number a, number b, number * r, const coeffs )987 static number nrzQuotRem (number a, number b, number * r, const coeffs ) 980 988 #endif 981 989 { … … 1027 1035 } 1028 1036 1029 1030 void nrzPower (number a, int i, number * result, const coeffs) 1037 static void nrzPower (number a, int i, number * result, const coeffs) 1031 1038 { 1032 1039 mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 1045 1052 * TODO: do not create an mpz if not necessary 1046 1053 */ 1047 staticnumber nrzInit (long i, const coeffs)1054 number nrzInit (long i, const coeffs) 1048 1055 { 1049 1056 mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 1052 1059 } 1053 1060 1054 void nrzDelete(number *a, const coeffs) 1061 static 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 1069 static void nrzDelete(number *a, const coeffs) 1055 1070 { 1056 1071 if (*a == NULL) return; … … 1061 1076 } 1062 1077 *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;1071 1078 } 1072 1079 … … 1074 1081 * convert a number to int 1075 1082 */ 1076 long nrzInt(number &n, const coeffs)1083 static long nrzInt(number &n, const coeffs) 1077 1084 { 1078 1085 if (n_Z_IS_SMALL(n)) return SR_TO_INT(n); … … 1080 1087 } 1081 1088 #if CF_DEBUG 1082 number _nrzAdd(number, number, const coeffs);1083 number nrzAdd(number a, number b, const coeffs R)1089 static number _nrzAdd(number, number, const coeffs); 1090 static number nrzAdd(number a, number b, const coeffs R) 1084 1091 { 1085 1092 StringSetS("Add: "); … … 1095 1102 return c; 1096 1103 } 1097 number _nrzAdd (number a, number b, const coeffs )1104 static number _nrzAdd (number a, number b, const coeffs ) 1098 1105 #else 1099 number nrzAdd (number a, number b, const coeffs )1106 static number nrzAdd (number a, number b, const coeffs ) 1100 1107 #endif 1101 1108 { … … 1140 1147 } 1141 1148 1142 number nrzSub (number a, number b, const coeffs )1149 static number nrzSub (number a, number b, const coeffs ) 1143 1150 { 1144 1151 if (n_Z_IS_SMALL(a) && n_Z_IS_SMALL(b)) … … 1185 1192 } 1186 1193 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) 1194 static BOOLEAN nrzGreater (number a,number b, const coeffs) 1234 1195 { 1235 1196 if (n_Z_IS_SMALL(a) && n_Z_IS_SMALL(b)) … … 1242 1203 } 1243 1204 1244 BOOLEAN nrzGreaterZero (number k, const coeffs C)1205 static BOOLEAN nrzGreaterZero (number k, const coeffs C) 1245 1206 { 1246 1207 return nrzGreater(k, INT_TO_SR(0), C); 1247 1208 } 1248 1209 1249 int nrzDivComp(number a, number b, const coeffs r) 1210 static 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 1218 static 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 1226 static BOOLEAN nrzIsUnit (number a, const coeffs) 1227 { 1228 return ABS(SR_TO_INT(a))==1; 1229 } 1230 1231 static BOOLEAN nrzIsZero (number a, const coeffs) 1232 { 1233 return (a==NULL) || (a==INT_TO_SR(0)); 1234 } 1235 1236 static BOOLEAN nrzIsOne (number a, const coeffs) 1237 { 1238 return a==INT_TO_SR(1); 1239 } 1240 1241 static BOOLEAN nrzIsMOne (number a, const coeffs) 1242 { 1243 return a==INT_TO_SR(-1); 1244 } 1245 1246 static 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 1256 static 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 1274 static int nrzDivComp(number a, number b, const coeffs r) 1250 1275 { 1251 1276 if (nrzDivBy(a, b, r)) … … 1258 1283 } 1259 1284 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) 1285 static number nrzDiv (number a,number b, const coeffs) 1279 1286 { 1280 1287 assume(SR_TO_INT(b)); … … 1341 1348 } 1342 1349 1343 number nrzExactDiv (number a,number b, const coeffs)1350 static number nrzExactDiv (number a,number b, const coeffs) 1344 1351 { 1345 1352 assume(SR_TO_INT(b)); … … 1362 1369 } 1363 1370 1364 number nrzIntMod (number a,number b, const coeffs)1371 static number nrzIntMod (number a,number b, const coeffs) 1365 1372 { 1366 1373 mpz_t aa, bb; … … 1387 1394 } 1388 1395 1389 number nrzInvers (number c, const coeffs r)1396 static number nrzInvers (number c, const coeffs r) 1390 1397 { 1391 1398 if (!nrzIsUnit((number) c, r)) … … 1397 1404 } 1398 1405 1399 number nrzNeg (number c, const coeffs)1406 static number nrzNeg (number c, const coeffs) 1400 1407 { 1401 1408 // nNeg inplace !!! … … 1477 1484 } 1478 1485 1479 number nrzMapMachineInt(number from, const coeffs /*src*/, const coeffs /*dst*/)1486 static number nrzMapMachineInt(number from, const coeffs /*src*/, const coeffs /*dst*/) 1480 1487 { 1481 1488 mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 1484 1491 } 1485 1492 1486 number nrzMapZp(number from, const coeffs /*src*/, const coeffs /*dst*/)1493 static number nrzMapZp(number from, const coeffs /*src*/, const coeffs /*dst*/) 1487 1494 { 1488 1495 mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 1491 1498 } 1492 1499 1493 number nrzModNMap(number from, const coeffs /* src */, const coeffs /*dst*/)1500 static number nrzModNMap(number from, const coeffs /* src */, const coeffs /*dst*/) 1494 1501 { 1495 1502 mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 1498 1505 } 1499 1506 1500 number nrzMapQ(number from, const coeffs /* src */, const coeffs dst)1507 static number nrzMapQ(number from, const coeffs /* src */, const coeffs dst) 1501 1508 { 1502 1509 if (SR_HDL(from) & SR_INT) … … 1512 1519 } 1513 1520 1514 nMapFunc nrzSetMap(const coeffs src, const coeffs /*dst*/)1521 static nMapFunc nrzSetMap(const coeffs src, const coeffs /*dst*/) 1515 1522 { 1516 1523 /* dst = rintegers */ … … 1624 1631 } 1625 1632 1626 const char * nrzRead (const char *s, number *a, const coeffs)1633 static const char * nrzRead (const char *s, number *a, const coeffs) 1627 1634 { 1628 1635 mpz_ptr z = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 1635 1642 } 1636 1643 1637 voidnrzCoeffWrite (const coeffs, BOOLEAN /*details*/)1644 static void nrzCoeffWrite (const coeffs, BOOLEAN /*details*/) 1638 1645 { 1639 1646 //PrintS("// ZZ\n"); … … 1691 1698 } 1692 1699 1693 coeffs nrzQuot1(number c, const coeffs r)1700 static coeffs nrzQuot1(number c, const coeffs r) 1694 1701 { 1695 1702 mpz_ptr dummy; … … 1729 1736 r->cfExactDiv= nrzExactDiv; 1730 1737 r->cfInit = nrzInit; 1738 r->cfInitMPZ = nrzInitMPZ; 1731 1739 r->cfSize = nrzSize; 1732 1740 r->cfInt = nrzInt; -
libpolys/misc/auxiliary.h
r72f518 r44b732c 28 28 // ---------------- Singular standard types etc. 29 29 /* 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) */ 32 32 #define SI_INTEGER_VARIANT 2 33 33
Note: See TracChangeset
for help on using the changeset viewer.