Changeset bac8611 in git for kernel/rmodulon.cc
- Timestamp:
- Feb 1, 2008, 4:11:34 PM (16 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- befecbc5f2fd0929fe1c00f9ed52cc5c128a3612
- Parents:
- 3901ebf059dc5ef7abe8c2726771e6d8edee6d96
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/rmodulon.cc
r3901ebf rbac8611 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: rmodulon.cc,v 1.1 4 2008-02-01 10:31:44 wienand Exp $ */4 /* $Id: rmodulon.cc,v 1.15 2008-02-01 15:11:34 wienand Exp $ */ 5 5 /* 6 6 * ABSTRACT: numbers modulo n … … 23 23 24 24 typedef MP_INT *int_number; 25 omBin gmp_ bin = omGetSpecBin(sizeof(MP_INT));25 omBin gmp_nrn_bin = omGetSpecBin(sizeof(MP_INT)); 26 26 27 27 int_number nrnModul = NULL; … … 35 35 number nrnInit (int i) 36 36 { 37 int_number erg = (int_number) omAllocBin(gmp_ bin); // evtl. spaeter mit bin37 int_number erg = (int_number) omAllocBin(gmp_nrn_bin); // evtl. spaeter mit bin 38 38 mpz_init_set_si(erg, i); 39 39 mpz_mod(erg, erg, nrnModul); … … 44 44 { 45 45 mpz_clear((int_number) *a); 46 omFreeBin((ADDRESS) *a, gmp_bin); 46 omFreeBin((ADDRESS) *a, gmp_nrn_bin); 47 *a = NULL; 48 } 49 50 number nrnCopy(number a) 51 { 52 int_number erg = (int_number) omAllocBin(gmp_nrn_bin); // evtl. spaeter mit bin 53 mpz_init_set(erg, (int_number) a); 54 return (number) erg; 55 } 56 57 number cfrnCopy(number a, const ring r) 58 { 59 return nrnCopy(a); 60 } 61 62 int nrnSize(number a) 63 { 64 if (a == NULL) return 0; 65 return sizeof(MP_INT); 47 66 } 48 67 … … 60 79 number nrnMult (number a, number b) 61 80 { 62 int_number erg = (int_number) omAllocBin(gmp_ bin); // evtl. spaeter mit bin81 int_number erg = (int_number) omAllocBin(gmp_nrn_bin); // evtl. spaeter mit bin 63 82 mpz_init(erg); 64 83 mpz_mul(erg, (int_number) a, (int_number) b); … … 69 88 void nrnPower (number a, int i, number * result) 70 89 { 71 int_number erg = (int_number) omAllocBin(gmp_ bin); // evtl. spaeter mit bin90 int_number erg = (int_number) omAllocBin(gmp_nrn_bin); // evtl. spaeter mit bin 72 91 mpz_init(erg); 73 92 mpz_powm_ui(erg, (int_number) a, i, nrnModul); … … 77 96 number nrnAdd (number a, number b) 78 97 { 79 int_number erg = (int_number) omAllocBin(gmp_ bin); // evtl. spaeter mit bin98 int_number erg = (int_number) omAllocBin(gmp_nrn_bin); // evtl. spaeter mit bin 80 99 mpz_init(erg); 81 100 mpz_add(erg, (int_number) a, (int_number) b); … … 86 105 number nrnSub (number a, number b) 87 106 { 88 int_number erg = (int_number) omAllocBin(gmp_ bin); // evtl. spaeter mit bin107 int_number erg = (int_number) omAllocBin(gmp_nrn_bin); // evtl. spaeter mit bin 89 108 mpz_init(erg); 90 109 mpz_sub(erg, (int_number) a, (int_number) b); … … 95 114 number nrnNeg (number c) 96 115 { 97 int_number erg = (int_number) omAllocBin(gmp_ bin); // evtl. spaeter mit bin116 int_number erg = (int_number) omAllocBin(gmp_nrn_bin); // evtl. spaeter mit bin 98 117 mpz_init(erg); 99 118 mpz_sub(erg, nrnModul, (int_number) c); … … 103 122 number nrnInvers (number c) 104 123 { 105 int_number erg = (int_number) omAllocBin(gmp_ bin); // evtl. spaeter mit bin124 int_number erg = (int_number) omAllocBin(gmp_nrn_bin); // evtl. spaeter mit bin 106 125 mpz_init(erg); 107 126 mpz_invert(erg, (int_number) c, nrnModul); … … 129 148 { 130 149 if ((a == NULL) && (b == NULL)) return nrnInit(0); 131 int_number erg = (int_number) omAllocBin(gmp_ bin); // evtl. spaeter mit bin150 int_number erg = (int_number) omAllocBin(gmp_nrn_bin); // evtl. spaeter mit bin 132 151 mpz_init_set(erg, nrnModul); 133 152 if (a != NULL) mpz_gcd(erg, erg, (int_number) a); … … 139 158 number nrnGcd3 (number a,number b, number c,ring r) 140 159 { 141 int_number erg = (int_number) omAllocBin(gmp_ bin); // evtl. spaeter mit bin160 int_number erg = (int_number) omAllocBin(gmp_nrn_bin); // evtl. spaeter mit bin 142 161 mpz_init(erg); 143 162 if (a == NULL) a = (number) nrnModul; … … 157 176 number nrnExtGcd (number a, number b, number *s, number *t) 158 177 { 159 int_number erg = (int_number) omAllocBin(gmp_ bin); // evtl. spaeter mit bin160 int_number bs = (int_number) omAllocBin(gmp_ bin); // evtl. spaeter mit bin161 int_number bt = (int_number) omAllocBin(gmp_ bin); // evtl. spaeter mit bin178 int_number erg = (int_number) omAllocBin(gmp_nrn_bin); // evtl. spaeter mit bin 179 int_number bs = (int_number) omAllocBin(gmp_nrn_bin); // evtl. spaeter mit bin 180 int_number bt = (int_number) omAllocBin(gmp_nrn_bin); // evtl. spaeter mit bin 162 181 mpz_init(erg); 163 182 mpz_init(bs); … … 264 283 { 265 284 if (a == NULL) a = (number) nrnModul; 266 int_number erg = (int_number) omAllocBin(gmp_ bin); // evtl. spaeter mit bin285 int_number erg = (int_number) omAllocBin(gmp_nrn_bin); // evtl. spaeter mit bin 267 286 mpz_init(erg); 268 287 if (mpz_divisible_p((int_number) a, (int_number) b)) … … 296 315 number nrnIntDiv (number a,number b) 297 316 { 298 int_number erg = (int_number) omAllocBin(gmp_ bin); // evtl. spaeter mit bin317 int_number erg = (int_number) omAllocBin(gmp_nrn_bin); // evtl. spaeter mit bin 299 318 mpz_init(erg); 300 319 if (a == NULL) a = (number) nrnModul; … … 330 349 nrnDelete((number*) &nrnMinusOne, NULL); 331 350 } 332 nrnModul = (int_number) omAllocBin(gmp_ bin); // evtl. spaeter mit bin351 nrnModul = (int_number) omAllocBin(gmp_nrn_bin); // evtl. spaeter mit bin 333 352 mpz_init(nrnModul); 334 353 mpz_set_ull(nrnModul, nrnBase); 335 354 mpz_pow_ui(nrnModul, nrnModul, nrnExponent); 336 355 337 nrnMinusOne = (int_number) omAllocBin(gmp_ bin); // evtl. spaeter mit bin356 nrnMinusOne = (int_number) omAllocBin(gmp_nrn_bin); // evtl. spaeter mit bin 338 357 mpz_init(nrnMinusOne); 339 358 mpz_sub_ui(nrnMinusOne, nrnModul, 1); … … 408 427 char * nrnRead (char *s, number *a) 409 428 { 410 int_number z = (int_number) omAllocBin(gmp_ bin); // evtl. spaeter mit bin429 int_number z = (int_number) omAllocBin(gmp_nrn_bin); // evtl. spaeter mit bin 411 430 { 412 431 s = nlCPEatLongC(s, z);
Note: See TracChangeset
for help on using the changeset viewer.