Changeset af378f7 in git
- Timestamp:
- Jan 30, 2008, 7:49:43 PM (15 years ago)
- Branches:
- (u'spielwiese', '8d54773d6c9e2f1d2593a28bc68b7eeab54ed529')
- Children:
- 2f959e83f22c8e788ce3941f4ac3eb2fb1df74c1
- Parents:
- 12ea9df042d8c883f3d3c722b2388c0424347a88
- Location:
- kernel
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/kutil.cc
r12ea9d raf378f7 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: kutil.cc,v 1.7 3 2008-01-30 09:14:04wienand Exp $ */4 /* $Id: kutil.cc,v 1.74 2008-01-30 18:49:42 wienand Exp $ */ 5 5 /* 6 6 * ABSTRACT: kernel: utils for kStd … … 2635 2635 { 2636 2636 number gcd = nGcd((number) 0, pGetCoeff(h), strat->tailRing); 2637 if ( (NATNUMBER) gcd > 1)2637 if (!nIsOne(gcd)) 2638 2638 { 2639 2639 poly p = p_Copy(h->next, strat->tailRing); 2640 /* long a = ((long) ((h)->coef)) / 2; 2641 long b = currRing->ch - 1; 2642 while (a % 2 == 0) 2643 { 2644 a = a / 2; 2645 b--; 2646 } 2647 p = p_Mult_nn(p, (number) twoPow(b), strat->tailRing); */ 2648 p = p_Mult_nn(p, nIntDiv(0, gcd), strat->tailRing); 2640 gcd = nIntDiv(0, gcd); 2641 p = p_Mult_nn(p, gcd, strat->tailRing); 2642 nDelete(&gcd); 2649 2643 2650 2644 if (p != NULL) -
kernel/p_Minus_mm_Mult_qq__T.cc
r12ea9d raf378f7 7 7 * Author: obachman (Olaf Bachmann) 8 8 * Created: 8/00 9 * Version: $Id: p_Minus_mm_Mult_qq__T.cc,v 1. 6 2007-05-10 08:12:42wienand Exp $9 * Version: $Id: p_Minus_mm_Mult_qq__T.cc,v 1.7 2008-01-30 18:49:43 wienand Exp $ 10 10 *******************************************************************/ 11 11 … … 68 68 tb = n_Mult(pGetCoeff(q), tm, r); 69 69 #ifdef HAVE_ZERODIVISORS 70 if ( (long) tb != 0) {70 if (!nIsZero(tb)) { 71 71 #endif 72 72 tc = pGetCoeff(p); … … 99 99 #ifdef HAVE_ZERODIVISORS 100 100 tb = n_Mult(pGetCoeff(q), tneg, r); 101 if ( (long) tb != 0)101 if (!nIsZero(tb)) 102 102 { 103 103 #endif -
kernel/p_Mult_nn__T.cc
r12ea9d raf378f7 7 7 * Author: obachman (Olaf Bachmann) 8 8 * Created: 8/00 9 * Version: $Id: p_Mult_nn__T.cc,v 1. 9 2007-05-10 08:12:42wienand Exp $9 * Version: $Id: p_Mult_nn__T.cc,v 1.10 2008-01-30 18:49:43 wienand Exp $ 10 10 *******************************************************************/ 11 11 … … 35 35 #else 36 36 number tmp = n_Mult(n, pGetCoeff(p), r); 37 if ( tmp != NULL)37 if (!nIsZero(tmp)) 38 38 { 39 p_SetCoeff(p, tmp, r); 39 number nc = pGetCoeff(p); 40 p_SetCoeff0(p, tmp, r); 41 n_Delete(&nc, r); 40 42 old = p; 41 43 pIter(p); … … 44 46 { 45 47 n_Delete(&tmp, r); 46 if (old == NULL) { q = pNext(q); } 47 else { pNext(old) = pNext(p); } 48 pIter(p); // TODO Free Monom OLIVER 48 if (old == NULL) 49 { 50 pIter(p); 51 p_DeleteLm(&q, r); 52 } 53 else 54 { 55 p_DeleteLm(&p, r); 56 pNext(old) = p; 57 } 49 58 } 50 59 #endif -
kernel/polys.cc
r12ea9d raf378f7 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: polys.cc,v 1.2 6 2007-07-24 12:29:31 SingularExp $ */4 /* $Id: polys.cc,v 1.27 2008-01-30 18:49:43 wienand Exp $ */ 5 5 6 6 /* … … 730 730 if (!nIsOne(k)) 731 731 { 732 c = nDiv(pGetCoeff(p1), k); 732 k = nInvers(k); 733 c = nMult(pGetCoeff(p1), k); 733 734 nDelete(&pGetCoeff(p1)); 734 735 pSetCoeff0(p1, c); … … 736 737 while (h != NULL) 737 738 { 738 c = n Div(pGetCoeff(h), k);739 c = nMult(pGetCoeff(h), k); 739 740 nDelete(&pGetCoeff(h)); 740 741 pSetCoeff0(h, c); -
kernel/rintegers.cc
r12ea9d raf378f7 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: rintegers.cc,v 1. 5 2008-01-30 13:03:41wienand Exp $ */4 /* $Id: rintegers.cc,v 1.6 2008-01-30 18:49:43 wienand Exp $ */ 5 5 /* 6 6 * ABSTRACT: numbers modulo n … … 274 274 { 275 275 char * start=s; 276 276 if (!(*s >= '0' && *s <= '9')) 277 { 278 mpz_init_set_si(i, 1); 279 return s; 280 } 281 mpz_init(i); 277 282 while (*s >= '0' && *s <= '9') s++; 278 283 if (*s=='\0') … … 290 295 } 291 296 297 292 298 char * nrzRead (char *s, number *a) 293 299 { -
kernel/rmodulon.cc
r12ea9d raf378f7 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: rmodulon.cc,v 1.1 0 2008-01-30 16:14:25wienand Exp $ */4 /* $Id: rmodulon.cc,v 1.11 2008-01-30 18:49:43 wienand Exp $ */ 5 5 /* 6 6 * ABSTRACT: numbers modulo n … … 61 61 int_number erg = (int_number) omAlloc(sizeof(MP_INT)); // evtl. spaeter mit bin 62 62 mpz_init(erg); 63 if (a == NULL) a = (number) nrnModul; 64 if (b == NULL) b = (number) nrnModul; 63 65 mpz_gcd(erg, (int_number) a, (int_number) b); 64 66 return (number) erg; 65 67 } 68 69 number nrnGcd3 (number a,number b, number c,ring r) 70 { 71 int_number erg = (int_number) omAlloc(sizeof(MP_INT)); // evtl. spaeter mit bin 72 mpz_init(erg); 73 if (a == NULL) a = (number) nrnModul; 74 if (b == NULL) b = (number) nrnModul; 75 if (c == NULL) c = (number) nrnModul; 76 mpz_gcd(erg, (int_number) a, (int_number) b); 77 mpz_gcd(erg, erg, (int_number) c); 78 return (number) erg; 79 } 80 66 81 67 82 /* … … 87 102 int_number erg = (int_number) omAlloc(sizeof(MP_INT)); // evtl. spaeter mit bin 88 103 mpz_init(erg); 89 mpz_pow_ui(erg, (int_number) a, i); 104 mpz_powm_ui(erg, (int_number) a, i, nrnModul); 105 *result = (number) erg; 106 } 107 108 /* 109 * create a number from int 110 */ 111 number nrnInit (int i) 112 { 113 int_number erg = (int_number) omAlloc(sizeof(MP_INT)); // evtl. spaeter mit bin 114 mpz_init_set_si(erg, i); 90 115 mpz_mod(erg, erg, nrnModul); 91 // int_number tmp = (int_number) omAlloc(sizeof(MP_INT)); // evtl. spaeter mit bin92 // mpz_init(tmp);93 // mpz_clear(erg);94 // omFree(erg);95 // erg = tmp;96 *result = (number) erg;97 }98 99 /*100 * create a number from int101 */102 number nrnInit (int i)103 {104 int_number erg = (int_number) omAlloc(sizeof(MP_INT)); // evtl. spaeter mit bin105 mpz_init_set_si(erg, i);106 116 return (number) erg; 107 117 } … … 139 149 } 140 150 141 number nrnGetUnit (number a) 142 { 143 return nrnDiv((number) nrnModul, nrnGcd(a, (number) nrnModul, NULL)); 151 number nrnGetUnit (number k) 152 { 153 return nrnInit(1); 154 number unit = nrnIntDiv(k, nrnGcd(k, 0, currRing)); 155 number gcd = nrnGcd(unit, 0, currRing); 156 if (!nrnIsOne(gcd)) 157 { 158 number tmp = nrnMult(unit, unit); 159 number gcd_new = nrnGcd(tmp, 0, currRing); 160 while (!nrnEqual(gcd_new, gcd)) 161 { 162 nrnDelete(&gcd, NULL); 163 gcd = gcd_new; 164 tmp = nrnMult(tmp, unit); 165 gcd_new = nrnGcd(tmp, 0, currRing); 166 } 167 unit = nrnAdd(unit, nrnIntDiv(0, gcd_new)); 168 nrnDelete(&gcd_new, NULL); 169 } 170 nrnDelete(&gcd, NULL); 171 return unit; 144 172 } 145 173 146 174 BOOLEAN nrnIsUnit (number a) 147 175 { 148 return nrnIsOne(nrnGcd(a, (number) nrnModul, NULL)); 176 number tmp = nrnGcd(a, (number) nrnModul, NULL); 177 bool res = nrnIsOne(tmp); 178 nrnDelete(&tmp, NULL); 179 return res; 149 180 } 150 181 … … 189 220 BOOLEAN nrnDivBy (number a,number b) 190 221 { 191 return mpz_divisible_p((int_number) a, (int_number) b) != 0; 222 number bs = nrnIntDiv(b, nrnGcd(a, b, NULL)); 223 bool res = nrnIsUnit(bs); 224 nrnDelete(&bs, NULL); 225 return res; 192 226 } 193 227 194 228 number nrnDiv (number a,number b) 195 229 { 196 int_number erg = (int_number) omAlloc(sizeof(MP_INT)); // evtl. spaeter mit bin 197 mpz_init(erg); 198 if (nrnDivBy(a, b)) 230 if (a == NULL) a = (number) nrnModul; 231 int_number erg = (int_number) omAlloc(sizeof(MP_INT)); // evtl. spaeter mit bin 232 mpz_init(erg); 233 if (mpz_divisible_p((int_number) a, (int_number) b)) 199 234 { 200 235 mpz_divexact(erg, (int_number) a, (int_number) b); … … 234 269 int_number erg = (int_number) omAlloc(sizeof(MP_INT)); // evtl. spaeter mit bin 235 270 mpz_init(erg); 271 if (a == NULL) a = (number) nrnModul; 236 272 mpz_tdiv_q(erg, (int_number) a, (int_number) b); 237 273 return (number) erg; … … 339 375 { 340 376 char * start=s; 341 377 if (!(*s >= '0' && *s <= '9')) 378 { 379 mpz_init_set_si(i, 1); 380 return s; 381 } 382 mpz_init(i); 342 383 while (*s >= '0' && *s <= '9') s++; 343 384 if (*s=='\0') … … 359 400 int_number z = (int_number) omAlloc(sizeof(MP_INT)); // evtl. spaeter mit bin 360 401 { 361 mpz_init(z);362 402 s = nlCPEatLongC(s, z); 363 403 }
Note: See TracChangeset
for help on using the changeset viewer.