| 2469 | } |
| 2470 | |
| 2471 | ideal kStd(ideal F, ideal Q, tHomog h,intvec ** w, intvec *hilb,int syzComp, |
| 2472 | int newIdeal, intvec *vw, s_poly_proc_t sp) |
| 2473 | { |
| 2474 | if(idIs0(F)) |
| 2475 | return idInit(1,F->rank); |
| 2476 | |
| 2477 | if((Q!=NULL)&&(idIs0(Q))) Q=NULL; |
| 2478 | #ifdef HAVE_SHIFTBBA |
| 2479 | if(rIsLPRing(currRing)) return kStdShift(F, Q, h, w, hilb, syzComp, newIdeal, vw, FALSE); |
| 2480 | #endif |
| 2481 | |
| 2482 | /* test HC precomputation*/ |
| 2483 | poly save_noether=currRing->ppNoether; |
| 2484 | int ak = id_RankFreeModule(F,currRing); |
| 2485 | if((ak==0) |
| 2486 | && (h!=isHomog) |
| 2487 | && (w==NULL) |
| 2488 | && (hilb==NULL) |
| 2489 | && (vw==NULL) |
| 2490 | && (newIdeal==0) |
| 2491 | && (sp==NULL) |
| 2492 | && rOrd_is_ds(currRing) |
| 2493 | && rField_is_Q (currRing) |
| 2494 | && !rIsPluralRing(currRing)) |
| 2495 | currRing->ppNoether=kTryHC(F,Q); |
| 2496 | |
| 2497 | ideal r; |
| 2498 | BOOLEAN b=currRing->pLexOrder,toReset=FALSE; |
| 2499 | BOOLEAN delete_w=(w==NULL); |
| 2500 | kStrategy strat=new skStrategy; |
| 2501 | |
| 2502 | strat->s_poly=sp; |
| 2503 | if(!TEST_OPT_RETURN_SB) |
| 2504 | strat->syzComp = syzComp; |
| 2505 | if (TEST_OPT_SB_1 |
| 2506 | &&(!rField_is_Ring(currRing)) |
| 2507 | ) |
| 2508 | strat->newIdeal = newIdeal; |
| 2509 | if (rField_has_simple_inverse(currRing)) |
| 2510 | strat->LazyPass=20; |
| 2511 | else |
| 2512 | strat->LazyPass=2; |
| 2513 | strat->LazyDegree = 1; |
| 2514 | strat->ak = ak; |
| 2515 | strat->kModW=kModW=NULL; |
| 2516 | strat->kHomW=kHomW=NULL; |
| 2517 | if (vw != NULL) |
| 2518 | { |
| 2519 | currRing->pLexOrder=FALSE; |
| 2520 | strat->kHomW=kHomW=vw; |
| 2521 | strat->pOrigFDeg = currRing->pFDeg; |
| 2522 | strat->pOrigLDeg = currRing->pLDeg; |
| 2523 | pSetDegProcs(currRing,kHomModDeg); |
| 2524 | toReset = TRUE; |
| 2525 | } |
| 2526 | if (h==testHomog) |
| 2527 | { |
| 2528 | if (strat->ak == 0) |