Changeset 2f864f in git
- Timestamp:
- Apr 25, 2014, 11:08:33 AM (10 years ago)
- Branches:
- (u'spielwiese', '5b153614cbc72bfa198d75b1e9e33dab2645d9fe')
- Children:
- 496d32096dc1f1c559bf60d8a50a2a64954c798b
- Parents:
- 3e31b23164a20e1e92831c2b2593d0e9883ee807
- git-author:
- Adi Popescu <adi_popescum@yahoo.de>2014-04-25 11:08:33+02:00
- git-committer:
- Adi Popescu <adi_popescum@yahoo.de>2014-05-05 11:08:44+02:00
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/ipassign.cc
r3e31b2 r2f864f 744 744 assume(res->Data()==NULL); 745 745 origr = rCopy(currRing); 746 qr = rCopy(currRing); 746 747 747 748 #ifdef HAVE_RINGS … … 749 750 if((rField_is_Ring(currRing)) && (idPosConstant(id) != -1)) 750 751 { 751 qr = updateQring(currRing, id, idPosConstant(id)); 752 if(qr == NULL) 752 //qr = updateQring(currRing, id, idPosConstant(id)); 753 //rWrite(currRing); 754 number c; 755 //printf("\n"); 756 c = p_GetCoeff(id->m[idPosConstant(id)], currRing); 757 qr->cf = currRing->cf->cfQuot1(c, currRing->cf); 758 //rWrite(qr); 759 if(qr->cf == NULL) 753 760 return TRUE; 754 761 } -
libpolys/coeffs/coeffs.h
r3e31b2 r2f864f 376 376 int_number modNumber; 377 377 unsigned long mod2mMask; 378 378 379 #endif 380 //change basering r to r/c 381 coeffs (*cfQuot1)(number c, const coeffs r); 382 379 383 /*CF: for blackbox rings */ 380 384 void * data; … … 950 954 } 951 955 956 static inline coeffs cfQuot1(number c, const coeffs r) 957 { assume(r != NULL); return r->cfQuot1(c, r); } 958 952 959 /// print a number (BEWARE of string buffers!) 953 960 /// mostly for debugging -
libpolys/coeffs/modulop.cc
r3e31b2 r2f864f 555 555 { 556 556 i++; 557 r->npExpTable[i] =(int)(((long)w * (long)r->npExpTable[i-1]) 558 % r->ch); 557 r->npExpTable[i] =(int)(((long)w * (long)r->npExpTable[i-1]) % r->ch); 559 558 r->npLogTable[r->npExpTable[i]] = i; 560 559 if /*(i == r->ch - 1 ) ||*/ (/*(*/ r->npExpTable[i] == 1 /*)*/) -
libpolys/coeffs/rintegers.cc
r3e31b2 r2f864f 21 21 #include <coeffs/mpr_complex.h> 22 22 #include <coeffs/rintegers.h> 23 #include <coeffs/rmodulon.h> 23 24 #include "si_gmp.h" 24 25 … … 386 387 { 387 388 return omStrDup("integer"); 389 } 390 391 coeffs nrzcfQuot1(number c, const coeffs r) 392 { 393 int ch = r->cfInt(c, r); 394 int_number dummy; 395 dummy = (int_number) omAlloc(sizeof(mpz_t)); 396 mpz_init_set_ui(dummy, ch); 397 ZnmInfo info; 398 info.base = dummy; 399 info.exp = (unsigned long) 1; 400 coeffs rr = nInitChar(n_Zn, (void*)&info); 401 return(rr); 388 402 } 389 403 … … 429 443 r->cfSetMap = nrzSetMap; 430 444 r->cfCoeffWrite = nrzCoeffWrite; 445 r->cfQuot1 = nrzcfQuot1; 431 446 // debug stuff 432 447 -
libpolys/coeffs/rintegers.h
r3e31b2 r2f864f 52 52 void nrzInitExp(int c, coeffs r); 53 53 void nrzDelete(number *a, const coeffs r); 54 coeffs nrzcfQuot1(number c, const coeffs r); 54 55 55 56 number nrzMapQ(number from, const coeffs src, const coeffs dst); -
libpolys/coeffs/rmodulo2m.cc
r3e31b2 r2f864f 21 21 #include <coeffs/mpr_complex.h> 22 22 #include <coeffs/rmodulo2m.h> 23 #include <coeffs/rmodulon.h> 23 24 #include "si_gmp.h" 24 25 … … 42 43 int m=(int)(long)(p); 43 44 unsigned long mm=r->mod2mMask; 44 if (( mm>>m)==1L) return TRUE;45 if (((mm+1)>>m)==1L) return TRUE; 45 46 } 46 47 return FALSE; … … 52 53 sprintf(s,"integer,2,%lu",r->modExponent); 53 54 return s; 55 } 56 57 coeffs nr2mcfQuot1(number c, const coeffs r) 58 { 59 coeffs rr; 60 int ch = r->cfInt(c, r); 61 mpz_t a,b; 62 mpz_init_set(a, r->modNumber); 63 mpz_init_set_ui(b, ch); 64 int_number gcd; 65 gcd = (int_number) omAlloc(sizeof(mpz_t)); 66 mpz_init(gcd); 67 mpz_gcd(gcd, a,b); 68 if(mpz_cmp_ui(gcd, 1) == 0) 69 { 70 WerrorS("constant in q-ideal is coprime to modulus in ground ring"); 71 WerrorS("Unable to create qring!"); 72 return NULL; 73 } 74 if(mpz_cmp_ui(gcd, 2) == 0) 75 { 76 rr = nInitChar(n_Zp, (void*)2); 77 } 78 else 79 { 80 ZnmInfo info; 81 info.base = r->modBase; 82 int kNew = 1; 83 mpz_t baseTokNew; 84 mpz_init(baseTokNew); 85 mpz_set(baseTokNew, r->modBase); 86 while(mpz_cmp(gcd, baseTokNew) > 0) 87 { 88 kNew++; 89 mpz_mul(baseTokNew, baseTokNew, r->modBase); 90 } 91 info.exp = kNew; 92 mpz_clear(baseTokNew); 93 rr = nInitChar(n_Z2m, (void*)(long)kNew); 94 } 95 return(rr); 54 96 } 55 97 … … 105 147 r->cfCoeffWrite = nr2mCoeffWrite; 106 148 r->cfInit_bigint = nr2mMapQ; 149 r->cfQuot1 = nr2mcfQuot1; 107 150 #ifdef LDEBUG 108 151 r->cfDBTest = nr2mDBTest; -
libpolys/coeffs/rmodulo2m.h
r3e31b2 r2f864f 48 48 char * nr2mName (number n, const coeffs r); 49 49 void nr2mCoeffWrite (const coeffs r, BOOLEAN details); 50 coeffs nr2mcfQuot1(number c, const coeffs r); 50 51 #ifdef LDEBUG 51 52 BOOLEAN nr2mDBTest (number a, const char *f, const int l, const coeffs r); -
libpolys/coeffs/rmodulon.cc
r3e31b2 r2f864f 57 57 omFreeSize(b,l); 58 58 return s; 59 } 60 61 coeffs nrncfQuot1(number c, const coeffs r) 62 { 63 coeffs rr; 64 int ch = r->cfInt(c, r); 65 mpz_t a,b; 66 mpz_init_set(a, r->modNumber); 67 mpz_init_set_ui(b, ch); 68 int_number gcd; 69 gcd = (int_number) omAlloc(sizeof(mpz_t)); 70 mpz_init(gcd); 71 mpz_gcd(gcd, a,b); 72 if(mpz_cmp_ui(gcd, 1) == 0) 73 { 74 WerrorS("constant in q-ideal is coprime to modulus in ground ring"); 75 WerrorS("Unable to create qring!"); 76 return NULL; 77 } 78 if(r->modExponent == 1) 79 { 80 ZnmInfo info; 81 info.base = gcd; 82 info.exp = (unsigned long) 1; 83 rr = nInitChar(n_Zn, (void*)&info); 84 } 85 else 86 { 87 ZnmInfo info; 88 info.base = r->modBase; 89 int kNew = 1; 90 mpz_t baseTokNew; 91 mpz_init(baseTokNew); 92 mpz_set(baseTokNew, r->modBase); 93 while(mpz_cmp(gcd, baseTokNew) > 0) 94 { 95 kNew++; 96 mpz_mul(baseTokNew, baseTokNew, r->modBase); 97 } 98 //printf("\nkNew = %i\n",kNew); 99 info.exp = kNew; 100 mpz_clear(baseTokNew); 101 rr = nInitChar(n_Znm, (void*)&info); 102 } 103 return(rr); 59 104 } 60 105 … … 111 156 r->cfInit_bigint = nrnMapQ; 112 157 r->cfKillChar = ndKillChar; 158 r->cfQuot1 = nrncfQuot1; 113 159 #ifdef LDEBUG 114 160 r->cfDBTest = nrnDBTest; -
libpolys/coeffs/rmodulon.h
r3e31b2 r2f864f 54 54 void nrnSetExp(unsigned long c, const coeffs r); 55 55 void nrnInitExp(unsigned long c, const coeffs r); 56 coeffs nrncfQuot1(number c, const coeffs r); 56 57 57 58 number nrnMapQ(number from, const coeffs src, const coeffs dst);
Note: See TracChangeset
for help on using the changeset viewer.