- Timestamp:
- Dec 2, 2016, 10:30:32 AM (7 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- 44b732cf21d0418e6797e04111cd38378ac2210e
- Parents:
- 4c2cc11df5c1bc75cd355889dc6552e42c58f356
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libpolys/coeffs/rintegers.cc
r4c2cc1 r72f518 28 28 #ifdef HAVE_RINGS 29 29 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 LDEBUG63 BOOLEAN nrzDBTest (number a, const char *f, const int l, const coeffs r);64 #endif65 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 76 30 omBin gmp_nrz_bin = omGetSpecBin(sizeof(mpz_t)); 77 31 … … 80 34 * Multiply two numbers 81 35 */ 82 number nrzMult (number a, number b, const coeffs)36 static number nrzMult (number a, number b, const coeffs) 83 37 { 84 38 mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 91 45 * Give the smallest non unit k, such that a * x = k = b * y has a solution 92 46 */ 93 number nrzLcm (number a,number b,const coeffs)47 static number nrzLcm (number a,number b,const coeffs) 94 48 { 95 49 mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 103 57 * a solution. 104 58 */ 105 number nrzGcd (number a,number b,const coeffs)59 static number nrzGcd (number a,number b,const coeffs) 106 60 { 107 61 mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 115 69 * a solution and r, s, s.t. k = s*a + t*b 116 70 */ 117 numbernrzExtGcd (number a, number b, number *s, number *t, const coeffs)71 static number nrzExtGcd (number a, number b, number *s, number *t, const coeffs) 118 72 { 119 73 mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 129 83 } 130 84 131 numbernrzXExtGcd (number a, number b, number *s, number *t, number *u, number *v, const coeffs )85 static number nrzXExtGcd (number a, number b, number *s, number *t, number *u, number *v, const coeffs ) 132 86 { 133 87 mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 160 114 } 161 115 162 void nrzPower (number a, int i, number * result, const coeffs)116 static void nrzPower (number a, int i, number * result, const coeffs) 163 117 { 164 118 mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 178 132 } 179 133 180 void nrzDelete(number *a, const coeffs)134 static void nrzDelete(number *a, const coeffs) 181 135 { 182 136 if (*a == NULL) return; … … 186 140 } 187 141 188 number nrzCopy(number a, const coeffs)142 static number nrzCopy(number a, const coeffs) 189 143 { 190 144 if (a==NULL) return NULL; … … 201 155 #endif 202 156 203 int nrzSize(number a, const coeffs)157 static int nrzSize(number a, const coeffs) 204 158 { 205 159 if (a == NULL) return 0; … … 210 164 * convert a number to int 211 165 */ 212 long nrzInt(number &n, const coeffs)166 static long nrzInt(number &n, const coeffs) 213 167 { 214 168 return mpz_get_si( (mpz_ptr)n); 215 169 } 216 170 217 number nrzAdd (number a, number b, const coeffs)171 static number nrzAdd (number a, number b, const coeffs) 218 172 { 219 173 mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 223 177 } 224 178 225 number nrzSub (number a, number b, const coeffs)179 static number nrzSub (number a, number b, const coeffs) 226 180 { 227 181 mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 231 185 } 232 186 233 numbernrzGetUnit (number, const coeffs r)187 static number nrzGetUnit (number, const coeffs r) 234 188 { 235 189 return nrzInit(1, r); 236 190 } 237 191 238 BOOLEAN nrzIsUnit (number a, const coeffs)192 static BOOLEAN nrzIsUnit (number a, const coeffs) 239 193 { 240 194 return 0 == mpz_cmpabs_ui((mpz_ptr) a, 1); 241 195 } 242 196 243 BOOLEAN nrzIsZero (number a, const coeffs)197 static BOOLEAN nrzIsZero (number a, const coeffs) 244 198 { 245 199 return 0 == mpz_cmpabs_ui((mpz_ptr) a, 0); 246 200 } 247 201 248 BOOLEAN nrzIsOne (number a, const coeffs)202 static BOOLEAN nrzIsOne (number a, const coeffs) 249 203 { 250 204 return (a!=NULL) && (0 == mpz_cmp_si((mpz_ptr) a, 1)); 251 205 } 252 206 253 BOOLEAN nrzIsMOne (number a, const coeffs)207 static BOOLEAN nrzIsMOne (number a, const coeffs) 254 208 { 255 209 return (a!=NULL) && (0 == mpz_cmp_si((mpz_ptr) a, -1)); 256 210 } 257 211 258 BOOLEAN nrzEqual (number a,number b, const coeffs)212 static BOOLEAN nrzEqual (number a,number b, const coeffs) 259 213 { 260 214 return 0 == mpz_cmp((mpz_ptr) a, (mpz_ptr) b); 261 215 } 262 216 263 BOOLEAN nrzGreater (number a,number b, const coeffs)217 static BOOLEAN nrzGreater (number a,number b, const coeffs) 264 218 { 265 219 return 0 < mpz_cmp((mpz_ptr) a, (mpz_ptr) b); 266 220 } 267 221 268 BOOLEAN nrzGreaterZero (number k, const coeffs)222 static BOOLEAN nrzGreaterZero (number k, const coeffs) 269 223 { 270 224 return 0 < mpz_cmp_si((mpz_ptr) k, 0); 271 225 } 272 226 273 int nrzDivComp(number a, number b, const coeffs r) 227 static BOOLEAN nrzDivBy (number a,number b, const coeffs) 228 { 229 return mpz_divisible_p((mpz_ptr) a, (mpz_ptr) b) != 0; 230 } 231 232 static int nrzDivComp(number a, number b, const coeffs r) 274 233 { 275 234 if (nrzDivBy(a, b, r)) … … 282 241 } 283 242 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) 243 static number nrzDiv (number a,number b, const coeffs) 290 244 { 291 245 mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 304 258 } 305 259 306 number nrzExactDiv (number a,number b, const coeffs)260 static number nrzExactDiv (number a,number b, const coeffs) 307 261 { 308 262 mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 312 266 } 313 267 314 number nrzQuotRem (number a, number b, number * r, const coeffs )268 static number nrzQuotRem (number a, number b, number * r, const coeffs ) 315 269 { 316 270 mpz_ptr qq = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 321 275 } 322 276 323 number nrzIntMod (number a,number b, const coeffs)277 static number nrzIntMod (number a,number b, const coeffs) 324 278 { 325 279 mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 333 287 } 334 288 335 number nrzInvers (number c, const coeffs r)289 static number nrzInvers (number c, const coeffs r) 336 290 { 337 291 if (!nrzIsUnit((number) c, r)) … … 343 297 } 344 298 345 number nrzNeg (number c, const coeffs)299 static number nrzNeg (number c, const coeffs) 346 300 { 347 301 // nNeg inplace !!! … … 350 304 } 351 305 352 number nrzMapMachineInt(number from, const coeffs /*src*/, const coeffs /*dst*/)306 static number nrzMapMachineInt(number from, const coeffs /*src*/, const coeffs /*dst*/) 353 307 { 354 308 mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 357 311 } 358 312 359 number nrzMapZp(number from, const coeffs /*src*/, const coeffs /*dst*/)313 static number nrzMapZp(number from, const coeffs /*src*/, const coeffs /*dst*/) 360 314 { 361 315 mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 364 318 } 365 319 366 number nrzMapQ(number from, const coeffs src, const coeffs /*dst*/)320 static number nrzMapQ(number from, const coeffs src, const coeffs /*dst*/) 367 321 { 368 322 mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 372 326 } 373 327 374 nMapFunc nrzSetMap(const coeffs src, const coeffs /*dst*/)328 static nMapFunc nrzSetMap(const coeffs src, const coeffs /*dst*/) 375 329 { 376 330 /* dst = currRing */ … … 400 354 } 401 355 402 403 356 /* 404 357 * set the exponent (allocate and init tables) (TODO) … … 414 367 415 368 #ifdef LDEBUG 416 BOOLEAN nrzDBTest (number, const char *, const int, const coeffs)369 static BOOLEAN nrzDBTest (number, const char *, const int, const coeffs) 417 370 { 418 371 return TRUE;//TODO … … 488 441 } 489 442 490 const char * nrzRead (const char *s, number *a, const coeffs)443 static const char * nrzRead (const char *s, number *a, const coeffs) 491 444 { 492 445 mpz_ptr z = (mpz_ptr) omAllocBin(gmp_nrz_bin); … … 499 452 } 500 453 501 voidnrzCoeffWrite (const coeffs, BOOLEAN /*details*/)454 static void nrzCoeffWrite (const coeffs, BOOLEAN /*details*/) 502 455 { 503 456 PrintS("// coeff. ring is : ZZ\n"); … … 514 467 } 515 468 516 coeffs nrzQuot1(number c, const coeffs r)469 static coeffs nrzQuot1(number c, const coeffs r) 517 470 { 518 471 long ch = r->cfInt(c, r); … … 525 478 coeffs rr = nInitChar(n_Zn, (void*)&info); 526 479 return(rr); 480 } 481 482 static 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; 527 487 } 528 488 … … 547 507 r->cfExactDiv= nrzExactDiv; 548 508 r->cfInit = nrzInit; 509 r->cfInitMPZ = nrzInitMPZ; 549 510 r->cfSize = nrzSize; 550 511 r->cfInt = nrzInt; … … 1084 1045 * TODO: do not create an mpz if not necessary 1085 1046 */ 1086 number nrzInit (long i, const coeffs)1047 static number nrzInit (long i, const coeffs) 1087 1048 { 1088 1049 mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
Note: See TracChangeset
for help on using the changeset viewer.