Changeset 994445 in git
- Timestamp:
- May 3, 2007, 3:50:10 PM (16 years ago)
- Branches:
- (u'spielwiese', '828514cf6e480e4bafc26df99217bf2a1ed1ef45')
- Children:
- bf64c41bd9346d70ecaaab3ee59f58f5d9d766e8
- Parents:
- 68f702755adfca2ca864e4c2c157ecd0db64cea8
- Location:
- kernel
- Files:
-
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/Makefile.in
r68f7027 r994445 100 100 longalg.cc longrat.cc longrat0.cc \ 101 101 maps.cc matpol.cc misc.cc gnumpfl.cc gnumpc.cc \ 102 rmodulo2m.cc \102 rmodulo2m.cc rmodulon.cc\ 103 103 modulop.cc mpr_complex.cc sparsmat.cc fast_maps.cc \ 104 104 fglmzero.cc fglmvec.cc fglmgauss.cc fglmhom.cc fglmcomb.cc \ … … 158 158 ffields.h khstd.h sparsmat.h gnumpfl.h gnumpc.h \ 159 159 fglm.h kstd1.h \ 160 rmodulo2m.h r atgring.h\160 rmodulo2m.h rmodulon.h ratgring.h\ 161 161 modulop.h sing_dbm.h weight.h \ 162 162 fglmgauss.h fglmvec.h \ -
kernel/kstd2.cc
r68f7027 r994445 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: kstd2.cc,v 1.4 1 2007-03-29 11:41:11 SingularExp $ */4 /* $Id: kstd2.cc,v 1.42 2007-05-03 13:50:08 wienand Exp $ */ 5 5 /* 6 6 * ABSTRACT - Kernel: alg. of Buchberger … … 188 188 */ 189 189 190 long factorial(longarg)191 { 192 longtmp = 1; arg++;190 NATNUMBER factorial(NATNUMBER arg) 191 { 192 NATNUMBER tmp = 1; arg++; 193 193 for (int i = 2; i < arg; i++) 194 194 { … … 206 206 poly p = input_p; 207 207 poly zeroPoly = NULL; 208 long a = (long) pGetCoeff(p);208 NATNUMBER a = (NATNUMBER) pGetCoeff(p); 209 209 210 210 int k_ind2 = 0; 211 211 int a_ind2 = ind2(a); 212 212 213 longk = 1;213 NATNUMBER k = 1; 214 214 // of interest is only k_ind2, special routine for improvement ... TODO OLIVER 215 215 for (int i = 1; i <= leadRing->N; i++) … … 218 218 } 219 219 220 a = ( long) pGetCoeff(p);220 a = (NATNUMBER) pGetCoeff(p); 221 221 222 222 number tmp1; … … 241 241 } 242 242 p_SetExp(lead_mult, i, p_GetExp(p, i,leadRing) - s_exp, tailRing); 243 for ( longj = 1; j <= s_exp; j++)243 for (NATNUMBER j = 1; j <= s_exp; j++) 244 244 { 245 245 tmp1 = nInit(j); … … 270 270 return tmp2; 271 271 } 272 /* longalpha_k = twoPow(leadRing->ch - k_ind2);272 /* NATNUMBER alpha_k = twoPow(leadRing->ch - k_ind2); 273 273 if (1 == 0 && alpha_k <= a) 274 274 { // Temporarly disabled, reducing coefficients not compatible with std TODO Oliver … … 276 276 for (int i = 1; i <= leadRing->N; i++) 277 277 { 278 for ( longj = 1; j <= p_GetExp(p, i, leadRing); j++)278 for (NATNUMBER j = 1; j <= p_GetExp(p, i, leadRing); j++) 279 279 { 280 280 tmp1 = nInit(j); … … 288 288 else 289 289 { 290 tmp3 = p_ISet(( long) tmp1, tailRing);290 tmp3 = p_ISet((NATNUMBER) tmp1, tailRing); 291 291 zeroPoly = p_Mult_q(zeroPoly, p_Add_q(tmp2, tmp3, tailRing), tailRing); 292 292 } 293 293 } 294 294 } 295 tmp2 = p_ISet(( long) pGetCoeff(zeroPoly), leadRing);295 tmp2 = p_ISet((NATNUMBER) pGetCoeff(zeroPoly), leadRing); 296 296 for (int i = 1; i <= leadRing->N; i++) 297 297 { -
kernel/kutil.cc
r68f7027 r994445 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: kutil.cc,v 1.5 0 2007-04-30 15:47:41 SingularExp $ */4 /* $Id: kutil.cc,v 1.51 2007-05-03 13:50:08 wienand Exp $ */ 5 5 /* 6 6 * ABSTRACT: kernel: utils for kStd … … 1025 1025 /* TODO move to numbers.cc 1026 1026 */ 1027 inline int nComp( long a, longb)1027 inline int nComp(NATNUMBER a, NATNUMBER b) 1028 1028 { 1029 1029 assume(a != 0 && b != 0); … … 2502 2502 void superenterpairs (poly h,int k,int ecart,int pos,kStrategy strat, int atR) 2503 2503 { 2504 assume (currRing->cring == 1)2504 assume (currRing->cring == 1); 2505 2505 // enter also zero divisor * poly, if this is non zero and of smaller degree 2506 2506 enterExtendedSpoly(h, strat); -
kernel/numbers.cc
r68f7027 r994445 2 2 * Computer Algebra System SINGULAR * 3 3 *****************************************/ 4 /* $Id: numbers.cc,v 1. 5 2007-01-29 16:58:32 SingularExp $ */4 /* $Id: numbers.cc,v 1.6 2007-05-03 13:50:09 wienand Exp $ */ 5 5 6 6 /* … … 25 25 #ifdef HAVE_RING2TOM 26 26 #include "rmodulo2m.h" 27 #endif 28 #ifdef HAVE_RINGMODN 29 #include "rmodulon.h" 27 30 #endif 28 31 … … 117 120 } 118 121 #endif 122 #ifdef HAVE_RINGMODN 123 /*----------------------ring Z / n----------------*/ 124 else if (rField_is_Ring_ModN(r)) 125 { 126 nrnSetExp(c, r); 127 } 128 #endif 119 129 else if (rField_is_Zp(r)) 120 130 /*----------------------char. p----------------*/ … … 313 323 #ifdef LDEBUG 314 324 // n->nDBTest=nr2mDBTest; 325 #endif 326 } 327 #endif 328 #ifdef HAVE_RINGMODN 329 /* -------------- Z/n ----------------------- */ 330 else if (rField_is_Ring_ModN(r)) 331 { 332 nrnInitExp(c,r); 333 n->nInit = nrnInit; 334 n->nCopy = ndCopy; 335 n->nInt = nrnInt; 336 n->nAdd = nrnAdd; 337 n->nSub = nrnSub; 338 n->nMult = nrnMult; 339 n->nDiv = nrnDiv; 340 n->nIntDiv = nrnIntDiv; 341 n->nExactDiv= nrnDiv; 342 n->nNeg = nrnNeg; 343 n->nInvers= nrnInvers; 344 n->nGreater = nrnGreater; 345 n->nEqual = nrnEqual; 346 n->nIsZero = nrnIsZero; 347 n->nIsOne = nrnIsOne; 348 n->nIsMOne = nrnIsMOne; 349 n->nGreaterZero = nrnGreaterZero; 350 n->nWrite = nrnWrite; 351 n->nRead = nrnRead; 352 n->nPower = nrnPower; 353 n->cfSetMap = nrnSetMap; 354 n->nNormalize = nDummy2; 355 n->nLcm = nrnLcm; 356 n->nGcd = nrnGcd; 357 // n->nGetUnit = nrnGetUnit; //TODO OLIVER 358 n->nName= ndName; 359 #ifdef LDEBUG 360 // n->nDBTest=nrnDBTest; 315 361 #endif 316 362 } -
kernel/pDebug.cc
r68f7027 r994445 7 7 * Author: obachman (Olaf Bachmann) 8 8 * Created: 8/00 9 * Version: $Id: pDebug.cc,v 1. 4 2007-02-07 10:47:53 SingularExp $9 * Version: $Id: pDebug.cc,v 1.5 2007-05-03 13:50:09 wienand Exp $ 10 10 *******************************************************************/ 11 11 … … 140 140 } 141 141 while (i); 142 #ifdef HAVE_RINGMODN 143 if (currRing->cring == 2) 144 { 145 WarnS("Not implemenet, 2007-05-03 12:22:46"); 146 } 147 #endif 142 148 #ifdef HAVE_RING2TOM 143 149 if (r->cring == 1) { -
kernel/pInline1.h
r68f7027 r994445 7 7 * Author: obachman (Olaf Bachmann) 8 8 * Created: 8/00 9 * Version: $Id: pInline1.h,v 1. 9 2007-03-10 15:41:49 levandovExp $9 * Version: $Id: pInline1.h,v 1.10 2007-05-03 13:50:09 wienand Exp $ 10 10 *******************************************************************/ 11 11 #ifndef PINLINE1_H … … 20 20 #include "structs.h" 21 21 #include "numbers.h" 22 #ifdef HAVE_RINGMODN 23 #include "febase.h" 24 #endif 22 25 23 26 #if PDEBUG > 0 || defined(NO_PINLINE1) … … 401 404 else 402 405 #endif 406 #ifdef HAVE_RINGMODN 407 if (r->cring == 2) { 408 PrintS("Not yet implemented, 2007-05-03 11:53:12"); 409 } 410 else 411 #endif 403 412 return TRUE; 404 413 } … … 451 460 long lside = (long) p_GetCoeff(a, r_a); 452 461 long rside = (long) p_GetCoeff(b, r_b); 453 // Später durch bitvergleiche viel schneller TODO OLIVER454 462 while (lside%2 == 0 && rside%2 == 0) { 455 463 lside = lside / 2; … … 457 465 } 458 466 return (lside%2 != 0); 467 } 468 else 469 #endif 470 #ifdef HAVE_RINGMODN 471 if (r_a->cring == 2 || r_b->cring == 2) { 472 PrintS("Not yet implemented, 2007-05-02 11:56:44"); 459 473 } 460 474 else … … 531 545 else 532 546 #endif 547 #ifdef HAVE_RINGMODN 548 if (r->cring == 2) { 549 PrintS("Not yet implemented 2007-05-02 11:55:20"); 550 return FALSE; 551 } 552 else 553 #endif 533 554 return _p_LmDivisibleByNoComp(a,b,r); 534 555 return FALSE; … … 545 566 else 546 567 #endif 568 #ifdef HAVE_RINGMODN 569 if (r_a->cring == 2) { 570 PrintS("Not yet implemented, 2007-05-03 11:59:20"); 571 } 572 else 573 #endif 547 574 return _p_LmDivisibleBy(a, r_a, b, r_b); 548 575 } -
kernel/p_Minus_mm_Mult_qq__T.cc
r68f7027 r994445 7 7 * Author: obachman (Olaf Bachmann) 8 8 * Created: 8/00 9 * Version: $Id: p_Minus_mm_Mult_qq__T.cc,v 1. 4 2006-02-15 13:01:22 SingularExp $9 * Version: $Id: p_Minus_mm_Mult_qq__T.cc,v 1.5 2007-05-03 13:50:09 wienand Exp $ 10 10 *******************************************************************/ 11 11 … … 67 67 Equal: // qm equals p 68 68 tb = n_Mult(pGetCoeff(q), tm, r); 69 #if def HAVE_RING2TOM69 #if defined(HAVE_RING2TOM)|| defined(HAVE_RINGMODN) 70 70 if ((long) tb != 0) { 71 71 #endif … … 86 86 p = p_LmFreeAndNext(p, r); 87 87 } 88 #if def HAVE_RING2TOM88 #if defined(HAVE_RING2TOM)|| defined(HAVE_RINGMODN) 89 89 } 90 90 #endif … … 97 97 98 98 Greater: 99 #if def HAVE_RING2TOM99 #if defined(HAVE_RING2TOM)|| defined(HAVE_RINGMODN) 100 100 tb = n_Mult(pGetCoeff(q), tneg, r); 101 101 if ((long) tb != 0) … … 104 104 pSetCoeff0(qm, n_Mult(pGetCoeff(q), tneg, r)); 105 105 a = pNext(a) = qm; // append qm to result and advance q 106 #if def HAVE_RING2TOM106 #if defined(HAVE_RING2TOM)|| defined(HAVE_RINGMODN) 107 107 } 108 108 else -
kernel/p_Mult_mm__T.cc
r68f7027 r994445 7 7 * Author: obachman (Olaf Bachmann) 8 8 * Created: 8/00 9 * Version: $Id: p_Mult_mm__T.cc,v 1. 4 2006-06-08 18:00:34wienand Exp $9 * Version: $Id: p_Mult_mm__T.cc,v 1.5 2007-05-03 13:50:09 wienand Exp $ 10 10 *******************************************************************/ 11 11 … … 35 35 pn = pGetCoeff(p); 36 36 number tmp = n_Mult(ln, pn, ri); 37 #if def HAVE_RING2TOM37 #if defined(HAVE_RING2TOM)|| defined(HAVE_RINGMODN) 38 38 if (n_IsZero(tmp, ri)) 39 39 { … … 58 58 p_MemAdd(p->exp, m_e, length); 59 59 p_MemAddAdjust(p, ri); 60 #if def HAVE_RING2TOM60 #if defined(HAVE_RING2TOM)|| defined(HAVE_RINGMODN) 61 61 before = p; 62 62 #endif -
kernel/p_Mult_nn__T.cc
r68f7027 r994445 7 7 * Author: obachman (Olaf Bachmann) 8 8 * Created: 8/00 9 * Version: $Id: p_Mult_nn__T.cc,v 1. 6 2006-06-07 18:44:24wienand Exp $9 * Version: $Id: p_Mult_nn__T.cc,v 1.7 2007-05-03 13:50:09 wienand Exp $ 10 10 *******************************************************************/ 11 11 … … 23 23 24 24 poly q = p; 25 #if def HAVE_RING2TOM25 #if defined(HAVE_RING2TOM)|| defined(HAVE_RINGMODN) 26 26 poly old = NULL; 27 27 #endif 28 28 while (p != NULL) 29 29 { 30 #if ndef HAVE_RING2TOM30 #if not(defined(HAVE_RING2TOM)|| defined(HAVE_RINGMODN)) 31 31 number nc = pGetCoeff(p); 32 32 pSetCoeff0(p, n_Mult(n, nc, r)); … … 35 35 #else 36 36 number tmp = n_Mult(n, pGetCoeff(p), r); 37 if (r->cring==0 || (r->cring ==1&& tmp != NULL))37 if (r->cring==0 || (r->cring > 0 && tmp != NULL)) 38 38 { 39 39 p_SetCoeff(p, tmp, r); -
kernel/p_Mult_q.cc
r68f7027 r994445 7 7 * Author: obachman (Olaf Bachmann) 8 8 * Created: 8/00 9 * Version: $Id: p_Mult_q.cc,v 1. 2 2006-01-13 18:10:05wienand Exp $9 * Version: $Id: p_Mult_q.cc,v 1.3 2007-05-03 13:50:09 wienand Exp $ 10 10 *******************************************************************/ 11 11 #include "mod2.h" … … 165 165 166 166 poly res = pp_Mult_mm(p,q,r); // holds initially q1*p 167 #if def HAVE_RING2TOM167 #if defined(HAVE_RING2TOM)|| defined(HAVE_RINGMODN) 168 168 if (res == NULL) { 169 169 res = p_ISet(1, r); … … 180 180 // now the main loop 181 181 Top: 182 #if def HAVE_RING2TOM182 #if defined(HAVE_RING2TOM)|| defined(HAVE_RINGMODN) 183 183 if (qn == NULL && rn == NULL) goto Work; 184 184 if (qn == NULL) goto Greater; … … 237 237 p_Delete(&q, r); 238 238 } 239 #if def HAVE_RING2TOM239 #if defined(HAVE_RING2TOM)|| defined(HAVE_RINGMODN) 240 240 if (n_IsZero(p_GetCoeff(res, r), r)) { 241 241 res = p_LmDeleteAndNext(res, r); -
kernel/polys.cc
r68f7027 r994445 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: polys.cc,v 1.1 4 2007-04-26 09:22:34wienand Exp $ */4 /* $Id: polys.cc,v 1.15 2007-05-03 13:50:09 wienand Exp $ */ 5 5 6 6 /* … … 141 141 poly prev=NULL; 142 142 int i; 143 #ifdef HAVE_RINGMODN 144 if (currRing->cring == 2) 145 { 146 WarnS("Not implemenet, 2007-05-03 12:22:46"); 147 } 148 #endif 143 149 #ifdef HAVE_RING2TOM 144 150 bool unit = true; … … 715 721 poly h; 716 722 number k, c; 723 #ifdef HAVE_RINGMODN 724 if (currRing->cring == 2) 725 { 726 WarnS("Not implemenet, 2007-05-03 12:22:46"); 727 } 728 #endif 717 729 #ifdef HAVE_RING2TOM 718 730 if (currRing->cring != 0) … … 738 750 } 739 751 } 752 else 740 753 #endif 741 754 if (p1!=NULL) -
kernel/polys1.cc
r68f7027 r994445 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: polys1.cc,v 1.2 5 2007-04-03 15:16:39 SingularExp $ */4 /* $Id: polys1.cc,v 1.26 2007-05-03 13:50:09 wienand Exp $ */ 5 5 6 6 /* … … 477 477 void pContent(poly ph) 478 478 { 479 #if def HAVE_RING2TOM480 if (currRing->cring !=0) {479 #if defined(HAVE_RING2TOM)|| defined(HAVE_RINGMODN) 480 if (currRing->cring > 0) { 481 481 if (ph!=NULL) 482 482 { … … 938 938 poly p; 939 939 940 #if def HAVE_RING2TOM941 if (currRing->cring == 1)940 #if defined(HAVE_RING2TOM)|| defined(HAVE_RINGMODN) 941 if (currRing->cring > 0) 942 942 { 943 943 pContent(ph); -
kernel/pp_Mult_mm__T.cc
r68f7027 r994445 7 7 * Author: obachman (Olaf Bachmann) 8 8 * Created: 8/00 9 * Version: $Id: pp_Mult_mm__T.cc,v 1. 3 2006-02-15 12:59:30 SingularExp $9 * Version: $Id: pp_Mult_mm__T.cc,v 1.4 2007-05-03 13:50:09 wienand Exp $ 10 10 *******************************************************************/ 11 11 … … 38 38 { 39 39 tmp = n_Mult(ln, pGetCoeff(p), ri); 40 #if def HAVE_RING2TOM41 if ( ri->cring==0 || (ri->cring ==1 && (long) tmp != 0))40 #if defined(HAVE_RING2TOM)|| defined(HAVE_RINGMODN) 41 if (! n_IsZero(tmp, ri)) 42 42 { 43 43 #endif … … 47 47 p_MemSum(q->exp, p->exp, m_e, length); 48 48 p_MemAddAdjust(q, ri); 49 #if def HAVE_RING2TOM49 #if defined(HAVE_RING2TOM)|| defined(HAVE_RINGMODN) 50 50 } 51 51 #endif -
kernel/pp_Mult_nn__T.cc
r68f7027 r994445 7 7 * Author: obachman (Olaf Bachmann) 8 8 * Created: 8/00 9 * Version: $Id: pp_Mult_nn__T.cc,v 1. 3 2006-01-16 14:02:52 SingularExp $9 * Version: $Id: pp_Mult_nn__T.cc,v 1.4 2007-05-03 13:50:10 wienand Exp $ 10 10 *******************************************************************/ 11 11 … … 28 28 do 29 29 { 30 #if ndef HAVE_RING2TOM30 #if not(defined(HAVE_RING2TOM)|| defined(HAVE_RINGMODN)) 31 31 p_AllocBin(pNext(q), bin, r); 32 32 q = pNext(q); -
kernel/ring.cc
r68f7027 r994445 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: ring.cc,v 1.5 6 2007-01-31 23:51:24 motsakExp $ */4 /* $Id: ring.cc,v 1.57 2007-05-03 13:50:10 wienand Exp $ */ 5 5 6 6 /* … … 2735 2735 2736 2736 // set intStrategy 2737 #if def HAVE_RING2TOM2738 if (rField_is_Extension(r) || rField_is_Q(r) || r Field_is_Ring_2toM(r))2737 #if defined(HAVE_RING2TOM)|| defined(HAVE_RINGMODN) 2738 if (rField_is_Extension(r) || rField_is_Q(r) || r->cring > 0) 2739 2739 #else 2740 2740 if (rField_is_Extension(r) || rField_is_Q(r)) -
kernel/ring.h
r68f7027 r994445 7 7 * ABSTRACT - the interpreter related ring operations 8 8 */ 9 /* $Id: ring.h,v 1.1 7 2007-01-31 23:51:25 motsakExp $ */9 /* $Id: ring.h,v 1.18 2007-05-03 13:50:10 wienand Exp $ */ 10 10 11 11 /* includes */ … … 92 92 inline BOOLEAN rField_is_Ring_2toM(ring r=currRing) 93 93 { return (r->cring == 1); } 94 94 #endif 95 96 #ifdef HAVE_RINGMODN 97 inline BOOLEAN rField_is_Ring_ModN(ring r=currRing) 98 { return (r->cring == 2); } 99 #endif 100 101 #if defined(HAVE_RING2TOM)|| defined(HAVE_RINGMODN) 95 102 inline BOOLEAN rField_is_Zp(ring r=currRing) 96 103 { return (r->cring == 0) && (r->ch > 1) && (r->parameter==NULL); } … … 192 199 inline BOOLEAN rField_has_simple_inverse(ring r=currRing) 193 200 /* { return (r->ch>1) || (r->ch== -1); } *//* Z/p, GF(p,n), R, long_R, long_C*/ 194 #if def HAVE_RING2TOM195 { return (r->cring ==1) || (r->ch>1) || ((r->ch== -1) && (r->float_len < 10)); } /* Z/2^n, Z/p, GF(p,n), R, long_R, long_C*/201 #if defined(HAVE_RING2TOM)|| defined(HAVE_RINGMODN) 202 { return (r->cring > 0) || (r->ch>1) || ((r->ch== -1) && (r->float_len < 10)); } /* Z/2^n, Z/p, GF(p,n), R, long_R, long_C*/ 196 203 #else 197 204 { return (r->ch>1) || ((r->ch== -1) && (r->float_len < 10)); } /* Z/p, GF(p,n), R, long_R, long_C*/ … … 199 206 200 207 inline BOOLEAN rField_has_simple_Alloc(ring r=currRing) 201 #if def HAVE_RING2TOM202 { return (r Field_is_Ring_2toM(r)|| rField_is_Zp(r) || rField_is_GF(r) || rField_is_R(r)); }208 #if defined(HAVE_RING2TOM)|| defined(HAVE_RINGMODN) 209 { return (r->cring > 0 || rField_is_Zp(r) || rField_is_GF(r) || rField_is_R(r)); } 203 210 #else 204 211 { return (rField_is_Zp(r) || rField_is_GF(r) || rField_is_R(r)); } -
kernel/rmodulo2m.cc
r68f7027 r994445 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: rmodulo2m.cc,v 1. 6 2006-12-06 17:43:32 SingularExp $ */4 /* $Id: rmodulo2m.cc,v 1.7 2007-05-03 13:50:10 wienand Exp $ */ 5 5 /* 6 6 * ABSTRACT: numbers modulo 2^m … … 21 21 #ifdef HAVE_RING2TOM 22 22 int nr2mExp; 23 longnr2mModul;23 NATNUMBER nr2mModul; 24 24 25 25 /* … … 28 28 number nr2mMult (number a,number b) 29 29 { 30 if ((( long)a == 0) || ((long)b == 0))30 if (((NATNUMBER)a == 0) || ((NATNUMBER)b == 0)) 31 31 return (number)0; 32 32 else … … 39 39 number nr2mLcm (number a,number b,ring r) 40 40 { 41 longres = 0;42 if (( long) a == 0) a = (number) 1;43 if (( long) b == 0) b = (number) 1;44 while (( long) a % 2 == 0)45 { 46 a = (number) (( long) a / 2);47 if (( long) b % 2 == 0) b = (number) ((long) b / 2);41 NATNUMBER res = 0; 42 if ((NATNUMBER) a == 0) a = (number) 1; 43 if ((NATNUMBER) b == 0) b = (number) 1; 44 while ((NATNUMBER) a % 2 == 0) 45 { 46 a = (number) ((NATNUMBER) a / 2); 47 if ((NATNUMBER) b % 2 == 0) b = (number) ((NATNUMBER) b / 2); 48 48 res++; 49 49 } 50 while (( long) b % 2 == 0)51 { 52 b = (number) (( long) b / 2);50 while ((NATNUMBER) b % 2 == 0) 51 { 52 b = (number) ((NATNUMBER) b / 2); 53 53 res++; 54 54 } … … 62 62 number nr2mGcd (number a,number b,ring r) 63 63 { 64 longres = 0;65 if (( long) a == 0 && (long) b == 0) return (number) 1;66 while (( long) a % 2 == 0 && (long) b % 2 == 0)67 { 68 a = (number) (( long) a / 2);69 b = (number) (( long) b / 2);64 NATNUMBER res = 0; 65 if ((NATNUMBER) a == 0 && (NATNUMBER) b == 0) return (number) 1; 66 while ((NATNUMBER) a % 2 == 0 && (NATNUMBER) b % 2 == 0) 67 { 68 a = (number) ((NATNUMBER) a / 2); 69 b = (number) ((NATNUMBER) b / 2); 70 70 res++; 71 71 } 72 if (( long) b % 2 == 0)73 { 74 return (number) ((1L << res));// * ( long) a); // (2**res)*a a ist Einheit75 } 76 else 77 { 78 return (number) ((1L << res));// * ( long) b); // (2**res)*b b ist Einheit72 if ((NATNUMBER) b % 2 == 0) 73 { 74 return (number) ((1L << res));// * (NATNUMBER) a); // (2**res)*a a ist Einheit 75 } 76 else 77 { 78 return (number) ((1L << res));// * (NATNUMBER) b); // (2**res)*b b ist Einheit 79 79 } 80 80 } … … 85 85 { 86 86 //npInit(1,result); 87 *( long*)result = 1;87 *(NATNUMBER *)result = 1; 88 88 } 89 89 else if (i==1) … … 103 103 number nr2mInit (int i) 104 104 { 105 longii = i;105 NATNUMBER ii = i; 106 106 while (ii < 0) ii += nr2mModul; 107 107 while ((ii>1) && (ii >= nr2mModul)) ii -= nr2mModul; … … 114 114 int nr2mInt(number &n) 115 115 { 116 if (( long)n > (nr2mModul >>1)) return (int)((long)n - nr2mModul);117 else return (int)(( long)n);116 if ((NATNUMBER)n > (nr2mModul >>1)) return (int)((NATNUMBER)n - nr2mModul); 117 else return (int)((NATNUMBER)n); 118 118 } 119 119 … … 130 130 BOOLEAN nr2mIsZero (number a) 131 131 { 132 return 0 == ( long)a;132 return 0 == (NATNUMBER)a; 133 133 } 134 134 135 135 BOOLEAN nr2mIsOne (number a) 136 136 { 137 return 1 == ( long)a;137 return 1 == (NATNUMBER)a; 138 138 } 139 139 140 140 BOOLEAN nr2mIsMOne (number a) 141 141 { 142 return nr2mModul == ( long)a + 1;142 return nr2mModul == (NATNUMBER)a + 1; 143 143 } 144 144 … … 150 150 BOOLEAN nr2mGreater (number a,number b) 151 151 { 152 if (( long) a == 0) return TRUE;153 if (( long) b == 0) return FALSE;154 while (( long) a % 2 == 0 && (long) b % 2 == 0)155 { 156 a = (number) (( long) a / 2);157 b = (number) (( long) b / 2);158 } 159 return (( long) b % 2 == 1);152 if ((NATNUMBER) a == 0) return TRUE; 153 if ((NATNUMBER) b == 0) return FALSE; 154 while ((NATNUMBER) a % 2 == 0 && (NATNUMBER) b % 2 == 0) 155 { 156 a = (number) ((NATNUMBER) a / 2); 157 b = (number) ((NATNUMBER) b / 2); 158 } 159 return ((NATNUMBER) b % 2 == 1); 160 160 } 161 161 162 162 BOOLEAN nr2mGreaterZero (number k) 163 163 { 164 int h = (int)(( long) k);164 int h = (int)((NATNUMBER) k); 165 165 return ((int)h !=0) && (h <= (nr2mModul>>1)); 166 166 } … … 219 219 #endif 220 220 221 long InvMod(longa)221 NATNUMBER InvMod(NATNUMBER a) 222 222 { 223 223 long d, s, t; … … 235 235 { 236 236 // Table !!! 237 longinv;238 inv = InvMod(( long)c);237 NATNUMBER inv; 238 inv = InvMod((NATNUMBER)c); 239 239 return (number) inv; 240 240 } … … 242 242 number nr2mDiv (number a,number b) 243 243 { 244 if (( long)a==0)244 if ((NATNUMBER)a==0) 245 245 return (number)0; 246 else if (( long)b%2==0)247 { 248 if (( long)b != 0)246 else if ((NATNUMBER)b%2==0) 247 { 248 if ((NATNUMBER)b != 0) 249 249 { 250 while (( long) b%2 == 0 && (long) a%2 == 0)250 while ((NATNUMBER) b%2 == 0 && (NATNUMBER) a%2 == 0) 251 251 { 252 a = (number) (( long) a / 2);253 b = (number) (( long) b / 2);252 a = (number) ((NATNUMBER) a / 2); 253 b = (number) ((NATNUMBER) b / 2); 254 254 } 255 255 } 256 if (( long) b%2 == 0)256 if ((NATNUMBER) b%2 == 0) 257 257 { 258 258 WerrorS("div by zero divisor"); … … 265 265 number nr2mIntDiv (number a,number b) 266 266 { 267 if (( long)a==0)267 if ((NATNUMBER)a==0) 268 268 { 269 269 return (number) 0; … … 271 271 else 272 272 { 273 return (number) (( long) a / (long) b);273 return (number) ((NATNUMBER) a / (NATNUMBER) b); 274 274 } 275 275 } … … 277 277 number nr2mInvers (number c) 278 278 { 279 if (( long)c%2==0)279 if ((NATNUMBER)c%2==0) 280 280 { 281 281 WerrorS("division by zero divisor"); … … 287 287 number nr2mNeg (number c) 288 288 { 289 if (( long)c==0) return c;289 if ((NATNUMBER)c==0) return c; 290 290 return nr2mNegM(c); 291 291 } … … 342 342 BOOLEAN nr2mDBTest (number a, char *f, int l) 343 343 { 344 if ((( long)a<0) || ((long)a>nr2mModul))344 if (((NATNUMBER)a<0) || ((NATNUMBER)a>nr2mModul)) 345 345 { 346 346 return FALSE; … … 352 352 void nr2mWrite (number &a) 353 353 { 354 if (( long)a > (nr2mModul >>1)) StringAppend("-%d",(int)(nr2mModul-((long)a)));355 else StringAppend("%d",(int)(( long)a));354 if ((NATNUMBER)a > (nr2mModul >>1)) StringAppend("-%d",(int)(nr2mModul-((NATNUMBER)a))); 355 else StringAppend("%d",(int)((NATNUMBER)a)); 356 356 } 357 357 -
kernel/rmodulo2m.h
r68f7027 r994445 4 4 * Computer Algebra System SINGULAR * 5 5 ****************************************/ 6 /* $Id: rmodulo2m.h,v 1. 3 2006-12-06 17:43:32 SingularExp $ */6 /* $Id: rmodulo2m.h,v 1.4 2007-05-03 13:50:10 wienand Exp $ */ 7 7 /* 8 8 * ABSTRACT: numbers modulo 2^m … … 12 12 13 13 extern int nr2mExp; 14 extern longnr2mModul;14 extern NATNUMBER nr2mModul; 15 15 16 16 BOOLEAN nr2mGreaterZero (number k); … … 46 46 { 47 47 return (number) 48 (((( unsigned long) a)*((unsigned long) b)) % ((unsigned long) nr2mModul));48 ((((NATNUMBER) a)*((NATNUMBER) b)) % ((NATNUMBER) nr2mModul)); 49 49 } 50 50 51 51 static inline number nr2mAddM(number a, number b) 52 52 { 53 long r = (long)a + (long)b;53 NATNUMBER r = (NATNUMBER)a + (NATNUMBER)b; 54 54 return (number) (r >= nr2mModul ? r - nr2mModul : r); 55 55 } … … 57 57 static inline number nr2mSubM(number a, number b) 58 58 { 59 return (number)(( long)a<(long)b ?60 nr2mModul-( long)b+(long)a : (long)a-(long)b);59 return (number)((NATNUMBER)a<(NATNUMBER)b ? 60 nr2mModul-(NATNUMBER)b+(NATNUMBER)a : (NATNUMBER)a-(NATNUMBER)b); 61 61 } 62 62 63 #define nr2mNegM(A) (number)(nr2mModul-( long)(A))63 #define nr2mNegM(A) (number)(nr2mModul-(NATNUMBER)(A)) 64 64 #define nr2mEqualM(A,B) ((A)==(B)) 65 65 -
kernel/structs.h
r68f7027 r994445 4 4 * Computer Algebra System SINGULAR * 5 5 ****************************************/ 6 /* $Id: structs.h,v 1.3 4 2007-04-18 16:15:58 SingularExp $ */6 /* $Id: structs.h,v 1.35 2007-05-03 13:50:10 wienand Exp $ */ 7 7 /* 8 8 * ABSTRACT … … 10 10 11 11 #include <string.h> /* for memset */ 12 13 #ifndef NATNUMBER 14 #define NATNUMBER unsigned long 15 #endif 12 16 13 17 /* standard types */ … … 532 536 struct omBin_s* PolyBin; /* Bin from where monoms are allocated */ 533 537 int ch; /* characteristic */ 534 #if def HAVE_RING2TOM538 #if defined(HAVE_RING2TOM)|| defined(HAVE_RINGMODN) 535 539 int cring; /* cring = 0 => coefficient field, cring = 1 => coeffs from Z/2^m */ 536 540 #endif
Note: See TracChangeset
for help on using the changeset viewer.