Changeset 028192 in git
- Timestamp:
- Mar 31, 2011, 7:37:45 PM (12 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'a800fe4b3e9d37a38c5a10cc0ae9dfa0c15a4ee6')
- Children:
- ccd3333fa9eb4f770c3cca33d5e125c9565938ec
- Parents:
- 3f2fb2cdc5019bbfc97d4fa27121402be181a8a3
- git-author:
- Oleksandr Motsak <motsak@mathematik.uni-kl.de>2011-03-31 19:37:45+02:00
- git-committer:
- Mohamed Barakat <mohamed.barakat@rwth-aachen.de>2011-11-09 12:04:17+01:00
- Location:
- libpolys
- Files:
-
- 1 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
libpolys/coeffs/coeffs.h
r3f2fb2 r028192 42 42 #endif 43 43 44 // the access methods (part 1) (see also part2 below): 45 // 46 // the routines w.r.t. currRing: 47 // (should only be used in the context of currRing, i.e. in the interpreter) 48 #define nCopy(n) n_Copy(n, currRing->cf) 49 #define nDelete(n) n_Delete(n, currRing->cf) 50 #define nMult(n1, n2) n_Mult(n1, n2, currRing->cf) 51 #define nAdd(n1, n2) n_Add(n1, n2, currRing->cf) 52 #define nIsZero(n) n_IsZero(n, currRing->cf) 53 #define nEqual(n1, n2) n_Equal(n1, n2, currRing->cf) 54 #define nNeg(n) n_Neg(n, currRing->cf) 55 #define nSub(n1, n2) n_Sub(n1, n2, currRing->cf) 56 #define nGetChar() nInternalChar(currRing->cf) 57 #define nInit(i) n_Init(i, currRing->cf) 58 #define nIsOne(n) n_IsOne(n, currRing->cf) 59 #define nIsMOne(n) n_IsMOne(n, currRing->cf) 60 #define nGreaterZero(n) n_GreaterZero(n, currRing->cf) 61 #define nWrite(n) n_Write(n,currRing->cf) 62 #define nNormalize(n) n_Normalize(n,currRing->cf) 63 #define nGcd(a, b) n_Gcd(a,b,currRing->cf) 64 #define nIntDiv(a, b) n_IntDiv(a,b,currRing->cf) 65 #define nDiv(a, b) n_Div(a,b,currRing->cf) 66 #define nInvers(a) n_Invers(a,currRing->cf) 67 #define nExactDiv(a, b) n_ExactDiv(a,b,currRing->cf) 68 #define nTest(a) n_Test(a,currRing->cf) 69 70 #define nInpMult(a, b) n_InpMult(a,b,currRing->cf) 71 #define nPower(a, b, res) n_Power(a,b,res,currRing->cf) 72 #define nSize(n) n_Size(n,currRing->cf) 73 #define nGetDenom(N) n_GetDenom((N),currRing->cf) 74 #define nGetNumerator(N) n_GetNumerator((N),currRing->cf) 75 76 #define nSetMap(R) n_SetMap(R,currRing->cf) 44 45 46 77 47 78 48 struct n_Procs_s; … … 404 374 { return nInternalChar(r); } 405 375 406 #endif 407 376 377 378 /* 379 // the access methods (part 1) (see also part2 below): 380 // 381 // the routines w.r.t. currRing: 382 // (should only be used in the context of currRing, i.e. in the interpreter) 383 #define nCopy(n) n_Copy(n, currRing->cf) 384 #define nDelete(n) n_Delete(n, currRing->cf) 385 #define nMult(n1, n2) n_Mult(n1, n2, currRing->cf) 386 #define nAdd(n1, n2) n_Add(n1, n2, currRing->cf) 387 #define nIsZero(n) n_IsZero(n, currRing->cf) 388 #define nEqual(n1, n2) n_Equal(n1, n2, currRing->cf) 389 #define nNeg(n) n_Neg(n, currRing->cf) 390 #define nSub(n1, n2) n_Sub(n1, n2, currRing->cf) 391 #define nGetChar() nInternalChar(currRing->cf) 392 #define nInit(i) n_Init(i, currRing->cf) 393 #define nIsOne(n) n_IsOne(n, currRing->cf) 394 #define nIsMOne(n) n_IsMOne(n, currRing->cf) 395 #define nGreaterZero(n) n_GreaterZero(n, currRing->cf) 396 #define nWrite(n) n_Write(n,currRing->cf) 397 #define nNormalize(n) n_Normalize(n,currRing->cf) 398 #define nGcd(a, b) n_Gcd(a,b,currRing->cf) 399 #define nIntDiv(a, b) n_IntDiv(a,b,currRing->cf) 400 #define nDiv(a, b) n_Div(a,b,currRing->cf) 401 #define nInvers(a) n_Invers(a,currRing->cf) 402 #define nExactDiv(a, b) n_ExactDiv(a,b,currRing->cf) 403 #define nTest(a) n_Test(a,currRing->cf) 404 405 #define nInpMult(a, b) n_InpMult(a,b,currRing->cf) 406 #define nPower(a, b, res) n_Power(a,b,res,currRing->cf) 407 #define nSize(n) n_Size(n,currRing->cf) 408 #define nGetDenom(N) n_GetDenom((N),currRing->cf) 409 #define nGetNumerator(N) n_GetNumerator((N),currRing->cf) 410 411 #define nSetMap(R) n_SetMap(R,currRing->cf) 412 */ 413 414 #endif 415 -
libpolys/polys/ideals.h
r3f2fb2 r028192 8 8 * ABSTRACT - all basic methods to manipulate ideals 9 9 */ 10 #include <kernel/structs.h> 11 #include <kernel/ring.h> 10 // #include <kernel/structs.h> 11 12 #include <polys/monomials/ring.h> 12 13 13 14 struct sip_sideal … … 18 19 int ncols; 19 20 #define IDELEMS(i) ((i)->ncols) 21 #define MATCOLS(i) ((i)->ncols) 22 #define MATROWS(i) ((i)->nrows) 23 #define MATELEM(mat,i,j) ((mat)->m)[MATCOLS((mat)) * ((i)-1) + (j)-1] 24 20 25 }; 21 26 … … 28 33 }; 29 34 35 class ip_smatrix; 36 typedef ip_smatrix * matrix; 37 30 38 struct sideal_list; 31 39 typedef struct sideal_list * ideal_list; 40 32 41 struct sideal_list 33 42 { … … 51 60 52 61 /// delete an ideal 53 #define idDelete(h) id_Delete(h, currRing)62 // #define idDelete(h) id_Delete(h, currRing) 54 63 void id_Delete (ideal* h, ring r); 55 64 void id_ShallowDelete (ideal* h, ring r); … … 92 101 93 102 ideal id_Copy (ideal h1,const ring r); 94 #define idCopy(A) id_Copy(A,currRing) 103 #ifdef PDEBUG 104 ideal idDBCopy(ideal h1,const char *f,int l,const ring r); 105 #define id_DBCopy(A,r) idDBCopy(A,__FILE__,__LINE__,r) 106 #define idCopy(A,r) id_DBCopy(A,r) 107 #else 108 #define idCopy(A,r) id_Copy(A,r) 109 #endif 110 111 95 112 /*adds two ideals without simplifying the result*/ 96 113 ideal idSimpleAdd (ideal h1,ideal h2); … … 109 126 110 127 long idRankFreeModule(ideal m, ring lmRing, ring tailRing); 111 inline long idRankFreeModule(ideal m, ring r = currRing) 112 {return idRankFreeModule(m, r, r);} 128 129 static inline long idRankFreeModule(ideal m, ring r){ return idRankFreeModule(m, r, r); } 130 113 131 // returns TRUE, if idRankFreeModule(m) > 0 114 BOOLEAN idIsModule(ideal m, ring r = currRing);132 BOOLEAN idIsModule(ideal m, const ring r); 115 133 BOOLEAN idHomIdeal (ideal id, ideal Q=NULL); 116 134 BOOLEAN idHomModule(ideal m, ideal Q,intvec **w); … … 195 213 ideal idTransp(ideal a); 196 214 // version of "ideal idTransp(ideal)" which works within a given ring. 197 ideal id_Transp(ideal a, const ring rRing = currRing);215 ideal id_Transp(ideal a, const ring rRing); 198 216 199 217 intvec *idQHomWeight(ideal id); … … 209 227 ideal idFarey(ideal x, number N); 210 228 211 ideal id_TensorModuleMult(const int m, const ideal M, const ring rRing = currRing); // image of certain map for BGG229 ideal id_TensorModuleMult(const int m, const ideal M, const ring rRing); // image of certain map for BGG 212 230 213 231 #ifdef PDEBUG 214 232 /* Shows an ideal -- only for debugging */ 215 void idShow(const ideal id, const ring lmRing = currRing, const ring tailRing = currRing, const int debugPrint = 0);233 void idShow(const ideal id, const ring lmRing, const ring tailRing, const int debugPrint = 0); 216 234 #else 217 235 #define idShow(id, lmRing, tailRing, debugPrint) ((void)0) -
libpolys/polys/matpol.h
r3f2fb2 r028192 8 8 * ABSTRACT 9 9 */ 10 #include <kernel/structs.h> 11 #include <kernel/ring.h> 10 11 // #include <kernel/structs.h> 12 #include <polys/monomials/ring.h> 12 13 13 14 // THIS IS REALLY DIRTY: ip_smatrix HAS TO BE IDENTICAL TO ip_sideal … … 32 33 matrix mpNew(int r, int c); 33 34 matrix mpCopy(matrix a); 34 void mpDelete(matrix* a, const ring r = currRing);35 matrix mpCopy(const matrix a, const ring rSrc, const ring rDst = currRing);35 void mpDelete(matrix* a, const ring r); 36 matrix mpCopy(const matrix a, const ring rSrc, const ring rDst); 36 37 matrix mpInitP(int r, int c, poly p); 37 38 matrix mpInitI(int r, int c, int v); … … 49 50 poly mpDet (matrix m); 50 51 matrix mpWedge(matrix a, int ar); 51 BOOLEAN mpJacobi(leftv res,leftv a);52 BOOLEAN mpKoszul(leftv res,leftv b/*in*/, leftv c/*ip*/, leftv id=NULL);52 // BOOLEAN mpJacobi(leftv res,leftv a); 53 // BOOLEAN mpKoszul(leftv res,leftv b/*in*/, leftv c/*ip*/, leftv id=NULL); 53 54 poly mpDetBareiss (matrix a); 54 55 -
libpolys/polys/monomials/maps.cc
r3f2fb2 r028192 7 7 */ 8 8 9 #include <omalloc/omalloc.h> 9 10 #include <misc/options.h> 10 #include <monomials/p_polys.h> 11 11 12 #include <coeffs/coeffs.h> 12 13 #include <coeffs/numbers.h> 13 #include <monomials/ring.h> 14 #include <simpleideals.h> 15 #include <omalloc/omalloc.h> 14 15 #include <polys/monomials/p_polys.h> 16 #include <polys/monomials/ring.h> 17 #include <polys/simpleideals.h> 16 18 #include <polys/prCopy.h> 17 #include <polys/ext_fields/longtrans.h>19 // #include <polys/ext_fields/longtrans.h> 18 20 #include <polys/monomials/maps.h> 19 21 20 22 #ifdef HAVE_PLURAL 21 #include < kernel/gring.h>23 #include <polys/nc/nc.h> 22 24 #endif 23 25 -
libpolys/polys/monomials/p_polys.cc
r3f2fb2 r028192 21 21 22 22 #include <polys/weight.h> 23 #include <polys/ideals.h> 23 24 24 25 #include <polys/monomials/ring.h> -
libpolys/polys/monomials/p_polys.h
r3f2fb2 r028192 74 74 * 75 75 ***************************************************************/ 76 77 poly p_One(const ring r); 78 76 79 int p_MinDeg(poly p,intvec *w, const ring R); 77 80 -
libpolys/polys/monomials/ring.cc
r3f2fb2 r028192 30 30 // #include "../Singular/ipshell.h" 31 31 #include <polys/templates/p_Procs.h> 32 33 #include <polys/matpol.h> 34 #include <polys/ideals.h> 35 32 36 #ifdef HAVE_PLURAL 33 // #include <gring.h>34 // #include <sca.h>37 #include <polys/nc/nc.h> 38 #include <polys/nc/sca.h> 35 39 #endif 36 40 // #include <???/maps.h> … … 405 409 for (j = i+1; j<=r->N; j++) 406 410 { 407 nl = n IsOne(p_GetCoeff(MATELEM(r->GetNC()->C,i,j),r->GetNC()->basering));411 nl = n_IsOne(p_GetCoeff(MATELEM(r->GetNC()->C,i,j),r->GetNC()->basering), r->cf); 408 412 if ( (MATELEM(r->GetNC()->D,i,j)!=NULL) || (!nl) ) 409 413 { … … 1432 1436 { 1433 1437 assume(MATELEM(C1,i,j) != NULL); 1434 MATELEM(C,i,j) = p PermPoly(MATELEM(C1,i,j), perm1, R1, sum, nMap1, par_perm1, rPar(R1)); // need ADD + CMP ops.1438 MATELEM(C,i,j) = p_PermPoly(MATELEM(C1,i,j), perm1, R1, sum, nMap1, par_perm1, rPar(R1)); // need ADD + CMP ops. 1435 1439 1436 1440 if (MATELEM(D1,i,j) != NULL) 1437 MATELEM(D,i,j) = p PermPoly(MATELEM(D1,i,j), perm1, R1, sum, nMap1, par_perm1, rPar(R1));1441 MATELEM(D,i,j) = p_PermPoly(MATELEM(D1,i,j), perm1, R1, sum, nMap1, par_perm1, rPar(R1)); 1438 1442 } 1439 1443 … … 1448 1452 { 1449 1453 assume(MATELEM(C2,i,j) != NULL); 1450 MATELEM(C,rVar(R1)+i,rVar(R1)+j) = p PermPoly(MATELEM(C2,i,j),perm2,R2,nMap2,par_perm2,rPar(R2));1454 MATELEM(C,rVar(R1)+i,rVar(R1)+j) = p_PermPoly(MATELEM(C2,i,j),perm2,R2,sum, nMap2,par_perm2,rPar(R2)); 1451 1455 1452 1456 if (MATELEM(D2,i,j) != NULL) 1453 MATELEM(D,rVar(R1)+i,rVar(R1)+j) = p PermPoly(MATELEM(D2,i,j),perm2,R2,nMap2,par_perm2,rPar(R2));1457 MATELEM(D,rVar(R1)+i,rVar(R1)+j) = p_PermPoly(MATELEM(D2,i,j),perm2,R2,sum, nMap2,par_perm2,rPar(R2)); 1454 1458 } 1455 1459 … … 4216 4220 4217 4221 pFDeg_CASE(p_Totaldegree); else 4218 pFDeg_CASE(p WFirstTotalDegree); else4219 pFDeg_CASE(p WTotaldegree); else4220 pFDeg_CASE(p Deg); else4222 pFDeg_CASE(p_WFirstTotalDegree); else 4223 pFDeg_CASE(p_WTotaldegree); else 4224 pFDeg_CASE(p_Deg); else 4221 4225 Print("(%p)", r->pFDeg); // default case 4222 4226 … … 4906 4910 /// Finds p^th IS ordering, and returns its position in r->typ[] 4907 4911 /// returns -1 if something went wrong! 4908 int rGetISPos(const int p = 0, const ring r = currRing)4912 int rGetISPos(const int p, const ring r) 4909 4913 { 4910 4914 // Put the reference set F into the ring -ordering -recor … … 5482 5486 5483 5487 assume(MATELEM(src->GetNC()->C,i,j) != NULL); 5484 MATELEM(C,nj,ni) = p PermPoly(MATELEM(src->GetNC()->C,i,j),perm,src,nMap,par_perm,src->P);5488 MATELEM(C,nj,ni) = p_PermPoly(MATELEM(src->GetNC()->C,i,j),perm,src,r, nMap,par_perm,src->P); 5485 5489 5486 5490 if(MATELEM(src->GetNC()->D,i,j) != NULL) 5487 MATELEM(D,nj,ni) = p PermPoly(MATELEM(src->GetNC()->D,i,j),perm,src,nMap,par_perm,src->P);5491 MATELEM(D,nj,ni) = p_PermPoly(MATELEM(src->GetNC()->D,i,j),perm,src,r, nMap,par_perm,src->P); 5488 5492 } 5489 5493 } -
libpolys/polys/monomials/ring.h
r3f2fb2 r028192 34 34 typedef kBucket* kBucket_pt; 35 35 36 struct sip_sideal; 37 typedef struct sip_sideal * ideal; 38 39 struct sip_smap; 40 typedef struct sip_smap * map; 41 42 36 43 #if SIZEOF_LONG == 4 37 44 typedef long long int64; … … 48 55 typedef void (*p_SetmProc)(poly p, const ring r); 49 56 50 struct sip_sideal 51 { 52 poly* m; 53 long rank; 54 int nrows; 55 int ncols; 56 #define IDELEMS(i) ((i)->ncols) 57 #define MATCOLS(i) ((i)->ncols) 58 #define MATROWS(i) ((i)->nrows) 59 #define MATELEM(mat,i,j) ((mat)->m)[MATCOLS((mat)) * ((i)-1) + (j)-1] 60 }; 61 typedef struct sip_sideal * ideal; 62 63 struct sip_smap 64 { 65 poly *m; 66 char *preimage; 67 int nrows; 68 int ncols; 69 }; 70 typedef struct sip_smap * map; 57 71 58 72 59 typedef enum … … 325 312 inline nc_struct*& GetNC() { return _nc; }; // public!!! 326 313 #endif 314 public: 315 operator coeffs() const { return cf; } 327 316 }; 328 317 -
libpolys/polys/nc/gring.h
r3f2fb2 r028192 16 16 #include <kernel/matpol.h> 17 17 18 // the part, related to the interface19 // Changes r, Assumes that all other input belongs to curr20 BOOLEAN nc_CallPlural(matrix cc, matrix dd, poly cn, poly dn, ring r,21 bool bSetupQuotient = false,22 bool bCopyInput = true,23 bool bBeQuiet = false,24 ring curr = currRing,25 bool dummy_ring = false26 /* allow to create a nc-ring with 1 variable*/);27 28 18 // BOOLEAN nc_CheckOrdCondition(matrix D, ring r); 29 19 // BOOLEAN nc_CheckOrdCondition(ring r); // with D == r->GetNC()->D … … 41 31 // this should be used by p_ProcsSet in p_Procs_Set.h 42 32 void nc_p_ProcsSet(ring rGR, p_Procs_s* p_Procs); 43 44 // this function should be used inside QRing definition!45 // we go from rG into factor ring rGR with factor ideal rGR->qideal.46 bool nc_SetupQuotient(ring rGR, const ring rG = NULL, bool bCopy = false); // rG == NULL means that there is no base G-algebra47 33 48 34 … … 52 38 ring nc_rCreateNCcomm(ring r); 53 39 54 void nc_rKill(ring r); // complete destructor55 56 BOOLEAN nc_rComplete(const ring src, ring dest, bool bSetupQuotient = true); // in ring.cc57 58 bool nc_rCopy(ring res, const ring r, bool bSetupQuotient);59 60 40 61 41 // poly _gnc_p_Mult_q(poly p, poly q, const int copy, const ring r); … … 65 45 poly _nc_pp_Mult_qq(const poly p, const poly q, const ring r); 66 46 67 68 /* subst: */69 poly nc_pSubst(poly p, int n, poly e);70 47 71 48 /* copy : */ … … 93 70 94 71 poly p_CopyEmbed(poly p, ring srcRing, int shift, int par_shift); 95 poly pOppose(ring Rop, poly p);96 ideal idOppose(ring Rop, ideal I);97 72 98 73 … … 243 218 244 219 245 // Macros used to access upper triangle matrices C,D... (which are actually ideals) // afaik246 #define UPMATELEM(i,j,nVar) ( (nVar * ((i)-1) - ((i) * ((i)-1))/2 + (j)-1)-(i) )247 220 248 221 -
libpolys/polys/nc/nc.h
r3f2fb2 r028192 37 37 // ////////////////////////////////////////////////////// 38 38 39 // Macros used to access upper triangle matrices C,D... (which are actually ideals) // afaik 40 #define UPMATELEM(i,j,nVar) ( (nVar * ((i)-1) - ((i) * ((i)-1))/2 + (j)-1)-(i) ) 41 42 /// complete destructor 43 void nc_rKill(ring r); 39 44 40 45 … … 303 308 304 309 310 // the part, related to the interface 311 // Changes r, Assumes that all other input belongs to curr 312 BOOLEAN nc_CallPlural(matrix cc, matrix dd, poly cn, poly dn, ring r, 313 bool bSetupQuotient, //< false 314 bool bCopyInput, //< true 315 bool bBeQuiet, //< false 316 ring curr, 317 bool dummy_ring = false 318 /* allow to create a nc-ring with 1 variable*/); 319 320 321 BOOLEAN nc_rComplete(const ring src, ring dest, bool bSetupQuotient = true); // in ring.cc 322 323 // this function should be used inside QRing definition! 324 // we go from rG into factor ring rGR with factor ideal rGR->qideal. 325 bool nc_SetupQuotient(ring rGR, const ring rG = NULL, bool bCopy = false); // rG == NULL means that there is no base G-algebra 326 327 328 bool nc_rCopy(ring res, const ring r, bool bSetupQuotient); 329 330 poly pOppose(ring Rop_src, poly p, const ring Rop_dst); 331 ideal idOppose(ring Rop_src, ideal I, const ring Rop_dst); 332 305 333 #endif /* HAVE_PLURAL */ 306 334 -
libpolys/polys/pInline0.h
r3f2fb2 r028192 21 21 #include <polys/monomials/ring.h> 22 22 23 /***************************************************************24 *25 * poly things which are independent of ring26 *27 ***************************************************************/28 29 30 /*231 * returns the length of a (numbers of monomials)32 * respect syzComp33 */34 poly pLast(poly a, int &l);35 23 36 24 #endif // PINLINE_CC
Note: See TracChangeset
for help on using the changeset viewer.