Changeset 61d32c in git
- Timestamp:
- Feb 15, 2009, 9:33:56 PM (14 years ago)
- Branches:
- (u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
- Children:
- 416ea2bc9e1b72d15cc10ae59eb6997e0a9e9355
- Parents:
- 73e5a2e509b87abd4ed980fe5f5f004ee1cd75e2
- Location:
- kernel
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/f5data.cc
r73e5a2 r61d32c 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: f5data.cc,v 1. 5 2009-02-11 21:24:07ederc Exp $ */4 /* $Id: f5data.cc,v 1.6 2009-02-15 20:33:56 ederc Exp $ */ 5 5 /* 6 6 * ABSTRACT: lpolynomial definition … … 35 35 36 36 void LPoly::setPoly(poly p) { 37 //poly _p = pInit(); 38 //_p = pCopy(p); 37 39 polynomial = p; 38 40 } 39 41 40 42 void LPoly::setTerm(poly t) { 43 //poly _t = pInit(); 44 //_t = pCopy(t); 41 45 term = t; 42 46 } -
kernel/f5gb.cc
r73e5a2 r61d32c 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: f5gb.cc,v 1.2 7 2009-02-12 12:43:31ederc Exp $ */4 /* $Id: f5gb.cc,v 1.28 2009-02-15 20:33:56 ederc Exp $ */ 5 5 /* 6 6 * ABSTRACT: f5gb interface … … 77 77 pWrite(gPrev->getFirst()->getPoly()); 78 78 Print("2nd gPrev: "); 79 Print("%p",gPrev->getFirst()->getNext());79 pWrite(gPrev->getFirst()->getNext()->getPoly()); 80 80 //pWrite(gPrev->getFirst()->getNext()->getPoly()); 81 81 CList* critPairs = new CList(); … … 103 103 // DEBUG STUFF FOR SPOLYLIST 104 104 LNode* temp = sPolyList->getFirst(); 105 while(NULL != temp ->getLPoly()) {105 while(NULL != temp && NULL != temp->getLPoly()) { 106 106 Print("Spolylist element: "); 107 107 pWrite(temp->getPoly()); … … 121 121 } 122 122 lTag->insert(gPrev->getFirst()); 123 Print("COMPLETED FIRST IN F5INC: \n"); 124 pWrite(completed->getFirst()->getPoly()); 123 125 return gPrev; 124 126 } … … 294 296 void computeSPols(CNode* first, RTagList* rTag, RList* rules, LList* sPolyList) { 295 297 CNode* temp = first; 296 staticpoly sp = pInit();298 poly sp = pInit(); 297 299 Print("###############################IN SPOLS##############################\n"); 298 300 while(NULL != temp->getData()) { … … 382 384 if(NULL != sPolyList->getFirst()->getLPoly()) { 383 385 LNode* temp = sPolyList->getFirst(); 384 Print("HIER REDUCTION\n"); 385 while(NULL != temp ->getLPoly()) {386 Print("SPOLYLIST FIRST START: %p\n",temp); 387 while(NULL != temp && NULL != temp->getLPoly()) { 386 388 if(NULL != completed->getFirst()->getLPoly()) { 387 389 Print("BIS HIERHIN UND NICHT WEITER\n"); 388 390 Print("%p\n",completed->getFirst()); 389 391 pWrite(completed->getFirst()->getPoly()); 392 Print("ADDRESS OF TERM: %p\n",completed->getFirst()->getTerm()); 393 pWrite(completed->getFirst()->getTerm()); 390 394 } 391 395 tempNF = kNF(gbPrev,currQuotient,temp->getPoly()); 392 pWrite(tempNF);393 pWrite(temp->getPoly());394 396 temp->setPoly(tempNF); 395 pWrite(temp->getPoly());396 397 // test if normal form is zero 397 398 if(NULL == tempNF) { … … 400 401 // TODO: problem is that when deleting the first element, the origin of the 401 402 // corresponding rule is deleted! 402 temp = temp->getNext(); 403 Print("LENGTH OF SPOLYLIST: %d\n",sPolyList->getLength()); 404 //temp = temp->getNext(); 403 405 //sPolyList->setFirst(temp); 404 406 Print("///////////////////////////////////////////////////////////////////////\n"); 405 Print(" %p\n",temp);406 Print("%p\n",temp->getLPoly());407 Print("SPOLYLIST FIRST ELEMENT: %p\n",temp); 408 //Print("%p\n",temp->getLPoly()); 407 409 Print("///////////////////////////////////////////////////////////////////////\n"); 408 410 } 409 411 else { 410 Print("HIERLALA\n");411 if(NULL != completed->getFirst()->getLPoly()) {412 Print("%p\n",completed->getFirst());413 pWrite(completed->getFirst()->getPoly());414 }415 //416 //417 //418 //419 // NOTE: until this point the element completed->getFirst()->getPoly() exists!!!420 //421 //422 //423 //424 412 ret = topReduction(temp, completed, gPrev, rules, lTag, rTag); 425 413 // in topReduction() the investigated first element of sPolyList will be deleted after its … … 429 417 430 418 completed = ret->getCompleted(); 431 432 Print("%p\n",completed->getFirst()); 433 Print("%p\n",ret->getCompleted()->getFirst()); 434 pWrite(completed->getFirst()->getPoly()); 435 Print("~~~HIER~~~\n"); 436 Print("%d\n",completed->getFirst()->getIndex()); 419 Print("ZURUECK IN REDUCTION COMPLETED TERM ADDRESS: %p\n",completed->getFirst()->getTerm()); 420 pWrite(completed->getFirst()->getTerm()); 437 421 if(NULL != ret->getToDo()) { 438 422 sPolyList->insertByLabel(ret->getToDo()->getFirst()); 439 423 } 440 424 } 441 temp = sPolyList->getFirst(); 442 Print("END WHILE LOOP: "); 443 Print("%p\n",completed->getFirst()); 444 pWrite(completed->getFirst()->getPoly()); 445 446 } 447 } 448 return ret->getCompleted(); 425 if(NULL != temp) { 426 sPolyList->setFirst(temp->getNext()); 427 temp = sPolyList->getFirst(); 428 } 429 else { 430 return completed; 431 } 432 Print("ADDRESS OF TERM: %p\n",completed->getFirst()->getTerm()); 433 434 //pWrite(completed->getFirst()->getPoly()); 435 Print("SPOLYLIST FIRST NOW: %p\n",temp); 436 //pWrite(temp->getPoly()); 437 } 438 } 439 Print("RETURN VALUE OF REDUCTION(): %p\n",completed->getFirst()); 440 Print("ADDRESS OF TERM: %p\n",completed->getFirst()->getTerm()); 441 Print("ADDRESS OF POLY: %p\n",completed->getFirst()->getPoly()); 442 pWrite(completed->getFirst()->getPoly()); 443 return completed; 449 444 } 450 445 … … 459 454 TopRed* topReduction(LNode* l, LList* completed, LList* gPrev, RList* rules, LTagList* lTag, RTagList* rTag) { 460 455 Print("##########################################In topREDUCTION!########################################\n"); 461 LNode* red = new LNode(); 456 Print("L BEGIN TOP RED: %p\n",l->getLPoly()); 457 pWrite(l->getPoly()); 458 pWrite(l->getTerm()); 459 Print("ADDRESS OF TERM: %p\n",l->getTerm()); 460 //pWrite(completed->getFirst()->getPoly()); 461 LNode* red = new LNode(); 462 462 463 do { 463 464 red = findReductor(l, completed, gPrev, rules, lTag, rTag, 464 465 red->getGPrevRedCheck(), red->getCompletedRedCheck()); 465 Print("HIER TOP RED\n");466 466 // no reductor found 467 467 if(NULL == red) { 468 pWrite(l->getPoly());469 pNorm(l->getPoly());470 pWrite(l->getPoly());471 Print("________________________INSERT IN COMPLETED!____________________________\n");472 468 completed->insert(l->getLPoly()); 473 Print(" %p\n",completed->getFirst()->getLPoly());474 Print("%d\n",completed->getFirst()->getIndex());475 pWrite(completed->getFirst()->get Poly());469 Print("AT INSERTION IN COMPLETED ADDRESS OF TERM: %p\n",l->getTerm()); 470 Print("AT INSERTION IN COMPLETED ADDRESS OF TERM II: %p\n",completed->getFirst()->getTerm()); 471 pWrite(completed->getFirst()->getTerm()); 476 472 TopRed* ret = new TopRed(completed,NULL); 477 473 return ret; … … 479 475 // reductor found 480 476 else { 481 Print("REDUCTOR VORHER: ");482 pWrite(red->getPoly());483 477 red->setPoly(ppMult_nn(red->getPoly(),pGetCoeff(l->getPoly()))); 484 Print("REDUCTOR NACHHER: ");485 pWrite(red->getPoly());486 478 } 487 479 } while(NULL != red); … … 497 489 LNode* findReductor(LNode* l,LList* completed,LList* gPrev, RList* rules, LTagList* lTag,RTagList* rTag, 498 490 LNode* gPrevRedCheck, LNode* completedRedCheck) { 499 number nOne = nInit(1); 500 static poly u = pInit(); 501 static poly redPoly = pInit(); 491 Print("HIER FIND REDUCTOR\n"); 492 number nOne = nInit(1); 493 poly u = pOne(); 494 poly redPoly = pOne(); 502 495 poly t = pHead(l->getPoly()); 503 496 LNode* temp = new LNode(); 504 497 // setting starting point for search of reductors in gPrev 505 Print("----------------------------------------------------------------------------%p\n",completed->getFirst()->getLPoly());506 498 if(NULL != gPrevRedCheck) { 507 499 temp = gPrevRedCheck; … … 512 504 // search only for reductors with the same index, as reductions with elements of lower 513 505 // index were already done in reduction() beforehand 514 while(NULL != temp ->getLPoly() && temp->getIndex() == l->getIndex()) {506 while(NULL != temp && NULL != temp->getLPoly() && temp->getIndex() == l->getIndex()) { 515 507 // divides head term t? 516 Print("HIER FIND\n");517 508 if(pLmDivisibleByNoComp(temp->getPoly(),t)) { 518 509 u = pDivide(t,pHead(temp->getPoly())); … … 522 513 pNorm(redPoly); 523 514 u = ppMult_qq(u,temp->getTerm()); 515 pSetCoeff(u,nOne); 524 516 Print("IN FIND REDUCTOR: "); 525 pWrite(u);526 pWrite(redPoly);527 // same label? NOTE: also used to528 if(pLmCmp(u,l->getTerm()) != 0) {529 // passing criterion 2?530 if(!criterion2(&u,temp, rules, rTag)) {531 // passing criterion 1?532 Print("HIER DRIN\n");533 if(!criterion1(&u,temp,lTag)) {534 // set tag findRedCheck such that you can start at this point when the535 // next time a reductor is searched for in findReductor()536 LNode* red = new LNode(u,temp->getIndex(),redPoly,NULL,temp->getNext(),completedRedCheck);537 return red;538 }539 }540 }541 }542 temp = temp->getNext();543 }544 545 // do the same as above now for the elements in completed546 if(NULL != completedRedCheck) {547 temp = completedRedCheck;548 }549 else {550 temp = completed->getFirst();551 Print("HIER FIND2\n");552 Print("%p\n",temp->getLPoly());553 }554 // search only for reductors with the same index, as reductions with elements of lower555 // index where already done in reduction() beforehand556 while(NULL != temp->getLPoly()) {557 // divides head term t?558 if(pLmDivisibleByNoComp(temp->getPoly(),t)) {559 u = pDivide(t,pHead(temp->getPoly()));560 redPoly = ppMult_qq(u,temp->getPoly());561 u = ppMult_qq(u,temp->getTerm());562 Print("IN FIND REDUCTOR1: ");563 517 pWrite(u); 564 518 pWrite(redPoly); … … 571 525 // set tag findRedCheck such that you can start at this point when the 572 526 // next time a reductor is searched for in findReductor() 527 LNode* red = new LNode(u,temp->getIndex(),redPoly,NULL,temp->getNext(),completedRedCheck); 528 return red; 529 } 530 } 531 } 532 } 533 temp = temp->getNext(); 534 } 535 if(0 != completed->getLength()) { 536 // do the same as above now for the elements in completed 537 if(NULL != completedRedCheck) { 538 temp = completedRedCheck; 539 } 540 else { 541 Print("HIER DRIN\n"); 542 temp = completed->getFirst(); 543 pWrite(temp->getTerm()); 544 } 545 // search only for reductors with the same index, as reductions with elements of lower 546 // index where already done in reduction() beforehand 547 while(NULL != temp && NULL != temp->getLPoly() && NULL != temp->getPoly()) { 548 // divides head term t? 549 if(pLmDivisibleByNoComp(temp->getPoly(),t)) { 550 u = pDivide(t,pHead(temp->getPoly())); 551 pSetCoeff(u,nOne); 552 pWrite(u); 553 redPoly = ppMult_qq(u,temp->getPoly()); 554 pWrite(temp->getPoly()); 555 pWrite(temp->getTerm()); 556 u = ppMult_qq(u,temp->getTerm()); 557 // same label? NOTE: also used to 558 if(pLmCmp(u,l->getTerm()) != 0) { 559 // passing criterion 2? 560 if(!criterion2(&u,temp, rules, rTag)) { 561 // passing criterion 1? 562 if(!criterion1(&u,temp,lTag)) { 563 // set tag findRedCheck such that you can start at this point when the 564 // next time a reductor is searched for in findReductor() 573 565 LNode* red = new LNode(u,temp->getIndex(),redPoly,NULL,gPrevRedCheck,temp->getNext()); 574 566 return red; … … 579 571 temp = temp->getNext(); 580 572 } 581 573 } 582 574 // no reductor found 583 575 Print("HIER DU NULL!\n"); … … 617 609 } 618 610 LList* gPrev = new LList(ONE, i, id->m[0]); 611 Print("%p\n",id->m[0]); 612 pWrite(id->m[0]); 613 Print("%p\n",gPrev->getFirst()->getPoly()); 614 pWrite(gPrev->getFirst()->getPoly()); 615 619 616 lTag->insert(gPrev->getFirst()); 620 617 // computing the groebner basis of the elements of index < actual index -
kernel/f5lists.cc
r73e5a2 r61d32c 48 48 49 49 LNode::LNode(poly t, int i, poly p, Rule* r, LNode* gPCheck, LNode* CompCheck) { 50 LPoly* lp =new LPoly(t,i,p,r);50 LPoly* lp = new LPoly(t,i,p,r); 51 51 data = lp; 52 52 next = NULL;
Note: See TracChangeset
for help on using the changeset viewer.