Changeset 042a24 in git


Ignore:
Timestamp:
Jun 1, 2016, 2:44:49 PM (8 years ago)
Author:
Adi Popescu <adi_popescum@…>
Branches:
(u'spielwiese', '4a9821a93ffdc22a6696668bd4f6b8c9de3e6c5f')
Children:
459ec942488fc3417e5bcc3965cb5119e5add894
Parents:
4c763255f4dd5b9eec63865956842ea416de3f03
Message:
add: kSba, after some loops kStd
Location:
kernel/GBEngine
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • kernel/GBEngine/kspoly.cc

    r4c7632 r042a24  
    272272
    273273#endif
    274     #ifdef HAVE_RINGS
    275274    if(rField_is_Ring(currRing))
    276275    {
     
    305304      }
    306305    }
    307     #endif
    308306    //pDelete(&f1);
    309307    // go on with the computations only if the signature of p2 is greater than the
  • kernel/GBEngine/kstd1.cc

    r4c7632 r042a24  
    24522452          int newIdeal, intvec *vw)
    24532453{
    2454   if(idIs0(F))
    2455     return idInit(1,F->rank);
    2456 
    2457   ideal r;
    2458   BOOLEAN b=currRing->pLexOrder,toReset=FALSE;
    2459   BOOLEAN delete_w=(w==NULL);
    2460   kStrategy strat=new skStrategy;
    2461   strat->sbaOrder = sbaOrder;
    2462   if (arri!=0)
    2463   {
    2464     strat->rewCrit1 = arriRewDummy;
    2465     strat->rewCrit2 = arriRewCriterion;
    2466     strat->rewCrit3 = arriRewCriterionPre;
     2454  if(!rField_is_Ring(currRing))
     2455  {
     2456    if(idIs0(F))
     2457      return idInit(1,F->rank);
     2458
     2459    ideal r;
     2460    BOOLEAN b=currRing->pLexOrder,toReset=FALSE;
     2461    BOOLEAN delete_w=(w==NULL);
     2462    kStrategy strat=new skStrategy;
     2463    strat->sbaOrder = sbaOrder;
     2464    if (arri!=0)
     2465    {
     2466      strat->rewCrit1 = arriRewDummy;
     2467      strat->rewCrit2 = arriRewCriterion;
     2468      strat->rewCrit3 = arriRewCriterionPre;
     2469    }
     2470    else
     2471    {
     2472      strat->rewCrit1 = faugereRewCriterion;
     2473      strat->rewCrit2 = faugereRewCriterion;
     2474      strat->rewCrit3 = faugereRewCriterion;
     2475    }
     2476
     2477    if(!TEST_OPT_RETURN_SB)
     2478      strat->syzComp = syzComp;
     2479    if (TEST_OPT_SB_1)
     2480      if(!rField_is_Ring(currRing))
     2481        strat->newIdeal = newIdeal;
     2482    if (rField_has_simple_inverse(currRing))
     2483      strat->LazyPass=20;
     2484    else
     2485      strat->LazyPass=2;
     2486    strat->LazyDegree = 1;
     2487    strat->enterOnePair=enterOnePairNormal;
     2488    strat->chainCrit=chainCritNormal;
     2489    if (TEST_OPT_SB_1) strat->chainCrit=chainCritOpt_1;
     2490    strat->ak = id_RankFreeModule(F,currRing);
     2491    strat->kModW=kModW=NULL;
     2492    strat->kHomW=kHomW=NULL;
     2493    if (vw != NULL)
     2494    {
     2495      currRing->pLexOrder=FALSE;
     2496      strat->kHomW=kHomW=vw;
     2497      strat->pOrigFDeg = currRing->pFDeg;
     2498      strat->pOrigLDeg = currRing->pLDeg;
     2499      pSetDegProcs(currRing,kHomModDeg);
     2500      toReset = TRUE;
     2501    }
     2502    if (h==testHomog)
     2503    {
     2504      if (strat->ak == 0)
     2505      {
     2506        h = (tHomog)idHomIdeal(F,Q);
     2507        w=NULL;
     2508      }
     2509      else if (!TEST_OPT_DEGBOUND)
     2510      {
     2511        h = (tHomog)idHomModule(F,Q,w);
     2512      }
     2513    }
     2514    currRing->pLexOrder=b;
     2515    if (h==isHomog)
     2516    {
     2517      if (strat->ak > 0 && (w!=NULL) && (*w!=NULL))
     2518      {
     2519        strat->kModW = kModW = *w;
     2520        if (vw == NULL)
     2521        {
     2522          strat->pOrigFDeg = currRing->pFDeg;
     2523          strat->pOrigLDeg = currRing->pLDeg;
     2524          pSetDegProcs(currRing,kModDeg);
     2525          toReset = TRUE;
     2526        }
     2527      }
     2528      currRing->pLexOrder = TRUE;
     2529      if (hilb==NULL) strat->LazyPass*=2;
     2530    }
     2531    strat->homog=h;
     2532  #ifdef KDEBUG
     2533    idTest(F);
     2534    if(Q != NULL)
     2535      idTest(Q);
     2536  #endif
     2537  #ifdef HAVE_PLURAL
     2538    if (rIsPluralRing(currRing))
     2539    {
     2540      const BOOLEAN bIsSCA  = rIsSCA(currRing) && strat->z2homog; // for Z_2 prod-crit
     2541      strat->no_prod_crit   = ! bIsSCA;
     2542      if (w!=NULL)
     2543        r = nc_GB(F, Q, *w, hilb, strat, currRing);
     2544      else
     2545        r = nc_GB(F, Q, NULL, hilb, strat, currRing);
     2546    }
     2547    else
     2548  #endif
     2549    {
     2550      if (rHasLocalOrMixedOrdering(currRing))
     2551      {
     2552        if (w!=NULL)
     2553          r=mora(F,Q,*w,hilb,strat);
     2554        else
     2555          r=mora(F,Q,NULL,hilb,strat);
     2556      }
     2557      else
     2558      {
     2559        if (w!=NULL)
     2560          r=sba(F,Q,*w,hilb,strat);
     2561        else
     2562          r=sba(F,Q,NULL,hilb,strat);
     2563      }
     2564    }
     2565  #ifdef KDEBUG
     2566    idTest(r);
     2567  #endif
     2568    if (toReset)
     2569    {
     2570      kModW = NULL;
     2571      pRestoreDegProcs(currRing,strat->pOrigFDeg, strat->pOrigLDeg);
     2572    }
     2573    currRing->pLexOrder = b;
     2574  //Print("%d reductions canceled \n",strat->cel);
     2575    HCord=strat->HCord;
     2576    //delete(strat);
     2577    if ((delete_w)&&(w!=NULL)&&(*w!=NULL)) delete *w;
     2578    return r;
    24672579  }
    24682580  else
    24692581  {
    2470     strat->rewCrit1 = faugereRewCriterion;
    2471     strat->rewCrit2 = faugereRewCriterion;
    2472     strat->rewCrit3 = faugereRewCriterion;
    2473   }
    2474 
    2475   if(!TEST_OPT_RETURN_SB)
    2476     strat->syzComp = syzComp;
    2477   if (TEST_OPT_SB_1)
    2478     if(!rField_is_Ring(currRing))
    2479       strat->newIdeal = newIdeal;
    2480   if (rField_has_simple_inverse(currRing))
    2481     strat->LazyPass=20;
    2482   else
    2483     strat->LazyPass=2;
    2484   strat->LazyDegree = 1;
    2485   strat->enterOnePair=enterOnePairNormal;
    2486   strat->chainCrit=chainCritNormal;
    2487   if (TEST_OPT_SB_1) strat->chainCrit=chainCritOpt_1;
    2488   strat->ak = id_RankFreeModule(F,currRing);
    2489   strat->kModW=kModW=NULL;
    2490   strat->kHomW=kHomW=NULL;
    2491   if (vw != NULL)
    2492   {
    2493     currRing->pLexOrder=FALSE;
    2494     strat->kHomW=kHomW=vw;
    2495     strat->pOrigFDeg = currRing->pFDeg;
    2496     strat->pOrigLDeg = currRing->pLDeg;
    2497     pSetDegProcs(currRing,kHomModDeg);
    2498     toReset = TRUE;
    2499   }
    2500   if (h==testHomog)
    2501   {
    2502     if (strat->ak == 0)
    2503     {
    2504       h = (tHomog)idHomIdeal(F,Q);
    2505       w=NULL;
    2506     }
    2507     else if (!TEST_OPT_DEGBOUND)
    2508     {
    2509       h = (tHomog)idHomModule(F,Q,w);
    2510     }
    2511   }
    2512   currRing->pLexOrder=b;
    2513   if (h==isHomog)
    2514   {
    2515     if (strat->ak > 0 && (w!=NULL) && (*w!=NULL))
    2516     {
    2517       strat->kModW = kModW = *w;
    2518       if (vw == NULL)
    2519       {
     2582    //--------------------------RING CASE-------------------------
     2583    if(idIs0(F))
     2584      return idInit(1,F->rank);
     2585    ideal r;
     2586    r = idCopy(F);
     2587    int sbaEnterS = -1;
     2588    bool sigdrop = TRUE;
     2589    #if ADIDEBUG
     2590    printf("\nEnter the nice kSba loop\n");
     2591    #endif
     2592    //This is how we set the SBA algorithm;
     2593    int totalsbaruns = -1,loops = 0;
     2594    while(sigdrop && (loops < totalsbaruns || totalsbaruns == -1))
     2595    {
     2596      loops++;
     2597      if(loops == 1)
     2598        sigdrop = FALSE;
     2599      BOOLEAN b=currRing->pLexOrder,toReset=FALSE;
     2600      BOOLEAN delete_w=(w==NULL);
     2601      kStrategy strat=new skStrategy;
     2602      strat->sbaEnterS = sbaEnterS;
     2603      strat->sigdrop = sigdrop;
     2604      printf("\nsbaEnterS beginning = %i\n",strat->sbaEnterS);
     2605      printf("\nsigdrop beginning = %i\n",strat->sigdrop);
     2606      strat->sbaOrder = sbaOrder;
     2607      if (arri!=0)
     2608      {
     2609        strat->rewCrit1 = arriRewDummy;
     2610        strat->rewCrit2 = arriRewCriterion;
     2611        strat->rewCrit3 = arriRewCriterionPre;
     2612      }
     2613      else
     2614      {
     2615        strat->rewCrit1 = faugereRewCriterion;
     2616        strat->rewCrit2 = faugereRewCriterion;
     2617        strat->rewCrit3 = faugereRewCriterion;
     2618      }
     2619
     2620      if(!TEST_OPT_RETURN_SB)
     2621        strat->syzComp = syzComp;
     2622      if (TEST_OPT_SB_1)
     2623        if(!rField_is_Ring(currRing))
     2624          strat->newIdeal = newIdeal;
     2625      if (rField_has_simple_inverse(currRing))
     2626        strat->LazyPass=20;
     2627      else
     2628        strat->LazyPass=2;
     2629      strat->LazyDegree = 1;
     2630      strat->enterOnePair=enterOnePairNormal;
     2631      strat->chainCrit=chainCritNormal;
     2632      if (TEST_OPT_SB_1) strat->chainCrit=chainCritOpt_1;
     2633      strat->ak = id_RankFreeModule(F,currRing);
     2634      strat->kModW=kModW=NULL;
     2635      strat->kHomW=kHomW=NULL;
     2636      if (vw != NULL)
     2637      {
     2638        currRing->pLexOrder=FALSE;
     2639        strat->kHomW=kHomW=vw;
    25202640        strat->pOrigFDeg = currRing->pFDeg;
    25212641        strat->pOrigLDeg = currRing->pLDeg;
    2522         pSetDegProcs(currRing,kModDeg);
     2642        pSetDegProcs(currRing,kHomModDeg);
    25232643        toReset = TRUE;
    25242644      }
    2525     }
    2526     currRing->pLexOrder = TRUE;
    2527     if (hilb==NULL) strat->LazyPass*=2;
    2528   }
    2529   strat->homog=h;
    2530 #ifdef KDEBUG
    2531   idTest(F);
    2532   if(Q != NULL)
    2533     idTest(Q);
    2534 #endif
    2535 #ifdef HAVE_PLURAL
    2536   if (rIsPluralRing(currRing))
    2537   {
    2538     const BOOLEAN bIsSCA  = rIsSCA(currRing) && strat->z2homog; // for Z_2 prod-crit
    2539     strat->no_prod_crit   = ! bIsSCA;
    2540     if (w!=NULL)
    2541       r = nc_GB(F, Q, *w, hilb, strat, currRing);
    2542     else
    2543       r = nc_GB(F, Q, NULL, hilb, strat, currRing);
    2544   }
    2545   else
    2546 #endif
    2547   {
    2548     if (rHasLocalOrMixedOrdering(currRing))
    2549     {
    2550       if (w!=NULL)
    2551         r=mora(F,Q,*w,hilb,strat);
     2645      if (h==testHomog)
     2646      {
     2647        if (strat->ak == 0)
     2648        {
     2649          h = (tHomog)idHomIdeal(F,Q);
     2650          w=NULL;
     2651        }
     2652        else if (!TEST_OPT_DEGBOUND)
     2653        {
     2654          h = (tHomog)idHomModule(F,Q,w);
     2655        }
     2656      }
     2657      currRing->pLexOrder=b;
     2658      if (h==isHomog)
     2659      {
     2660        if (strat->ak > 0 && (w!=NULL) && (*w!=NULL))
     2661        {
     2662          strat->kModW = kModW = *w;
     2663          if (vw == NULL)
     2664          {
     2665            strat->pOrigFDeg = currRing->pFDeg;
     2666            strat->pOrigLDeg = currRing->pLDeg;
     2667            pSetDegProcs(currRing,kModDeg);
     2668            toReset = TRUE;
     2669          }
     2670        }
     2671        currRing->pLexOrder = TRUE;
     2672        if (hilb==NULL) strat->LazyPass*=2;
     2673      }
     2674      strat->homog=h;
     2675    #ifdef KDEBUG
     2676      idTest(F);
     2677      if(Q != NULL)
     2678        idTest(Q);
     2679    #endif
     2680    #ifdef HAVE_PLURAL
     2681      if (rIsPluralRing(currRing))
     2682      {
     2683        const BOOLEAN bIsSCA  = rIsSCA(currRing) && strat->z2homog; // for Z_2 prod-crit
     2684        strat->no_prod_crit   = ! bIsSCA;
     2685        if (w!=NULL)
     2686          r = nc_GB(F, Q, *w, hilb, strat, currRing);
     2687        else
     2688          r = nc_GB(F, Q, NULL, hilb, strat, currRing);
     2689      }
    25522690      else
    2553         r=mora(F,Q,NULL,hilb,strat);
    2554     }
    2555     else
    2556     {
    2557       if (w!=NULL)
    2558         r=sba(F,Q,*w,hilb,strat);
    2559       else
    2560       {
    2561         //It is set to True, just to know that it is the first run
    2562         strat->sigdrop = FALSE;
    2563         strat->sbaEnterS = -1;
    2564         r=sba(F,Q,NULL,hilb,strat);
    2565         #if ADIDEBUG
    2566         printf("\nSBA Run 1: %i elements (syzCrit = %i,rewCrit = %i)\n",IDELEMS(r),strat->nrsyzcrit,strat->nrrewcrit);
    2567         //idPrint(r);
    2568         getchar();
    2569         #endif
    2570         int sbarun = 2;
    2571         while(strat->sigdrop)
     2691    #endif
     2692      {
     2693        if (rHasLocalOrMixedOrdering(currRing))
    25722694        {
    2573           r=sba(r,Q,NULL,hilb,strat);
     2695          if (w!=NULL)
     2696            r=mora(F,Q,*w,hilb,strat);
     2697          else
     2698            r=mora(F,Q,NULL,hilb,strat);
     2699        }
     2700        else
     2701        {
     2702          if (w!=NULL)
     2703            r=sba(r,Q,*w,hilb,strat);
     2704          else
     2705          {
     2706            r=sba(r,Q,NULL,hilb,strat);
     2707          }
    25742708          #if ADIDEBUG
    2575           printf("SBA Run %i: %i elements (syzCrit = %i,rewCrit = %i)\n",sbarun++,IDELEMS(r),strat->nrsyzcrit,strat->nrrewcrit);
    2576           //idPrint(r);
    2577           getchar();
     2709          printf("\nSBA Run %i: %i elements (syzCrit = %i,rewCrit = %i)\n",loops,IDELEMS(r),strat->nrsyzcrit,strat->nrrewcrit);
     2710          idPrint(r);
     2711          //getchar();
    25782712          #endif
    25792713        }
    25802714      }
    2581     }
    2582   }
    2583 #ifdef KDEBUG
    2584   idTest(r);
    2585 #endif
    2586   if (toReset)
    2587   {
    2588     kModW = NULL;
    2589     pRestoreDegProcs(currRing,strat->pOrigFDeg, strat->pOrigLDeg);
    2590   }
    2591   currRing->pLexOrder = b;
    2592 //Print("%d reductions canceled \n",strat->cel);
    2593   HCord=strat->HCord;
    2594   //delete(strat);
    2595   if ((delete_w)&&(w!=NULL)&&(*w!=NULL)) delete *w;
    2596   return r;
     2715    #ifdef KDEBUG
     2716      idTest(r);
     2717    #endif
     2718      if (toReset)
     2719      {
     2720        kModW = NULL;
     2721        pRestoreDegProcs(currRing,strat->pOrigFDeg, strat->pOrigLDeg);
     2722      }
     2723      currRing->pLexOrder = b;
     2724    //Print("%d reductions canceled \n",strat->cel);
     2725      HCord=strat->HCord;
     2726      sigdrop = strat->sigdrop;
     2727      sbaEnterS = strat->sbaEnterS;
     2728      #if ADIDEBUG
     2729      printf("\nsbaEnterS = %i\n",sbaEnterS);
     2730      #endif
     2731      delete(strat);
     2732      if ((delete_w)&&(w!=NULL)&&(*w!=NULL)) delete *w;
     2733    }
     2734    // Go to std
     2735    if(sigdrop)
     2736    {
     2737      #if ADIDEBUG
     2738      printf("\nWent to std\n");
     2739      //idPrint(r);
     2740      getchar();
     2741      #endif
     2742      r = kStd(r, Q, h, w, hilb, syzComp, newIdeal, vw);
     2743    }
     2744    return r;
     2745  }
    25972746}
    25982747
  • kernel/GBEngine/kstd2.cc

    r4c7632 r042a24  
    29352935    exitSba(strat);
    29362936    rChangeCurrRing (currRingOld);
     2937    if(strat->tailRing == sRing)
     2938      strat->tailRing = currRing;
    29372939    rDelete (sRing);
    29382940  }
  • kernel/GBEngine/kutil.cc

    r4c7632 r042a24  
    1089910899  if (lmBin != NULL)
    1090010900    omMergeStickyBinIntoBin(lmBin, currRing->PolyBin);
    10901   if (tailBin != NULL)
     10901  if (tailBin != NULL && !rField_is_Ring(currRing))
    1090210902    omMergeStickyBinIntoBin(tailBin,
    1090310903                            (tailRing != NULL ? tailRing->PolyBin:
Note: See TracChangeset for help on using the changeset viewer.