Changeset fcf6c4 in git
- Timestamp:
- Apr 12, 2019, 1:52:33 PM (4 years ago)
- Branches:
- (u'spielwiese', '828514cf6e480e4bafc26df99217bf2a1ed1ef45')
- Children:
- 51b5853275964eb90183d3490cd0f77df75505c1
- Parents:
- 8cfc9149aafe2ed41aafc94efb1cddf86a07bbcf
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/iparith.cc
r8cfc91 rfcf6c4 2314 2314 static BOOLEAN jjFRES3(leftv res, leftv u, leftv v, leftv w) 2315 2315 { 2316 assumeStdFlag(u); 2317 ideal id = (ideal)u->Data(); 2318 int max_length = (int)(long)v->Data(); 2319 if (max_length < 0) { 2320 WerrorS("length for fres must not be negative"); 2321 return TRUE; 2322 } 2323 if (max_length == 0) { 2324 max_length = currRing->N+1; 2325 if (currRing->qideal != NULL) { 2326 Warn("full resolution in a qring may be infinite, " 2327 "setting max length to %d", max_length); 2328 } 2329 } 2330 char *method = (char *)w->Data(); 2331 /* For the moment, only "complete" (default), "frame", or "extended frame" 2332 * are allowed. Another useful option would be "linear strand". 2333 */ 2334 if (strcmp(method, "complete") != 0 2335 && strcmp(method, "frame") != 0 2336 && strcmp(method, "extended frame") != 0 2337 && strcmp(method, "single module") != 0) { 2338 WerrorS("wrong optional argument for fres"); 2339 } 2340 syStrategy r = syFrank(id, max_length, method); 2341 assume(r->fullres != NULL); 2342 res->data = (void *)r; 2343 return FALSE; 2316 assumeStdFlag(u); 2317 ideal id = (ideal)u->Data(); 2318 int max_length = (int)(long)v->Data(); 2319 if (max_length < 0) 2320 { 2321 WerrorS("length for fres must not be negative"); 2322 return TRUE; 2323 } 2324 if (max_length == 0) 2325 { 2326 max_length = currRing->N+1; 2327 if (currRing->qideal != NULL) 2328 { 2329 Warn("full resolution in a qring may be infinite, " 2330 "setting max length to %d", max_length); 2331 } 2332 } 2333 char *method = (char *)w->Data(); 2334 /* For the moment, only "complete" (default), "frame", or "extended frame" 2335 * are allowed. Another useful option would be "linear strand". 2336 */ 2337 if (strcmp(method, "complete") != 0 2338 && strcmp(method, "frame") != 0 2339 && strcmp(method, "extended frame") != 0 2340 && strcmp(method, "single module") != 0) 2341 { 2342 WerrorS("wrong optional argument for fres"); 2343 return TRUE; 2344 } 2345 syStrategy r = syFrank(id, max_length, method); 2346 assume(r->fullres != NULL); 2347 res->data = (void *)r; 2348 return FALSE; 2344 2349 } 2345 2350 … … 3483 3488 { 3484 3489 // see jjSYZYGY 3490 intvec *ww=(intvec *)atGet(u,"isHomog",INTVEC_CMD); 3485 3491 intvec *w=NULL; 3492 tHomog hom=testHomog; 3486 3493 ideal I=(ideal)u->Data(); 3487 3494 GbVariant alg=syGetAlgorithm((char*)v->Data(),currRing,I); 3488 res->data = (char *)idSyzygies(I,testHomog,&w,TRUE,FALSE,NULL,alg); 3495 if (ww!=NULL) 3496 { 3497 if (idTestHomModule(I,currRing->qideal,ww)) 3498 { 3499 w=ivCopy(ww); 3500 int add_row_shift=w->min_in(); 3501 (*w)-=add_row_shift; 3502 hom=isHomog; 3503 } 3504 else 3505 { 3506 //WarnS("wrong weights"); 3507 delete ww; ww=NULL; 3508 hom=testHomog; 3509 } 3510 } 3511 else 3512 { 3513 if (u->Typ()==IDEAL_CMD) 3514 if (idHomIdeal(I,currRing->qideal)) 3515 hom=isHomog; 3516 } 3517 ideal S=idSyzygies(I,hom,&w,TRUE,FALSE,NULL,alg); 3489 3518 if (w!=NULL) delete w; 3519 res->data = (char *)S; 3520 if (hom==isHomog) 3521 { 3522 int vl=S->rank; 3523 intvec *vv=new intvec(vl); 3524 if ((u->Typ()==IDEAL_CMD)||(ww==NULL)) 3525 { 3526 for(int i=0;i<vl;i++) 3527 { 3528 if (I->m[i]!=NULL) 3529 (*vv)[i]=p_Deg(I->m[i],currRing); 3530 } 3531 } 3532 else 3533 { 3534 p_SetModDeg(ww, currRing); 3535 for(int i=0;i<vl;i++) 3536 { 3537 if (I->m[i]!=NULL) 3538 (*vv)[i]=currRing->pFDeg(I->m[i],currRing); 3539 } 3540 p_SetModDeg(NULL, currRing); 3541 } 3542 if (idTestHomModule(S,currRing->qideal,vv)) 3543 atSet(res,omStrDup("isHomog"),vv,INTVEC_CMD); 3544 else 3545 delete vv; 3546 } 3490 3547 if (TEST_OPT_RETURN_SB) setFlag(res,FLAG_STD); 3491 3548 return FALSE; … … 3620 3677 static BOOLEAN jjDUMMY(leftv res, leftv u) 3621 3678 { 3622 res->data = (char *)u->CopyD(); 3679 // res->data = (char *)u->CopyD(); 3680 // also copy attributes: 3681 res->Copy(u); 3623 3682 return FALSE; 3624 3683 } … … 4446 4505 } 4447 4506 4448 4449 4507 static BOOLEAN jjKBASE(leftv res, leftv v) 4450 4508 { … … 5089 5147 ideal v_id=(ideal)v->Data(); 5090 5148 tHomog hom=testHomog; 5091 int add_row_shift=0;5092 5149 if (ww!=NULL) 5093 5150 { … … 5095 5152 { 5096 5153 w=ivCopy(ww); 5097 add_row_shift=w->min_in();5154 int add_row_shift=w->min_in(); 5098 5155 (*w)-=add_row_shift; 5099 5156 hom=isHomog; -
Singular/table.h
r8cfc91 rfcf6c4 663 663 ,{D(jjHILBERT2), HILBERT_CMD, INTVEC_CMD, MODUL_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING | NO_ZERODIVISOR} 664 664 ,{D(jjHOMOG1_W), HOMOG_CMD, INT_CMD, IDEAL_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING} 665 ,{D(jjHOMOG1_W), HOMOG_CMD, INT_CMD, MODUL_CMD, 665 ,{D(jjHOMOG1_W), HOMOG_CMD, INT_CMD, MODUL_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING} 666 666 ,{D(jjHOMOG_P), HOMOG_CMD, POLY_CMD, POLY_CMD, POLY_CMD, ALLOW_PLURAL |ALLOW_RING} 667 667 ,{D(jjHOMOG_P), HOMOG_CMD, VECTOR_CMD, VECTOR_CMD, POLY_CMD, ALLOW_PLURAL |ALLOW_RING}
Note: See TracChangeset
for help on using the changeset viewer.