Changeset 3ed6cb7 in git


Ignore:
Timestamp:
Aug 6, 2013, 3:57:54 PM (9 years ago)
Author:
Adrian Popescu <adi_popescum@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'ad2543eab51733612ba7d118afc77edca719600e')
Children:
80b5a4f4abeb4677a1aeb9571235feed5da2f137
Parents:
c25b56c93e1f5abb74b2bc879f2484f1796dfdd7
git-author:
Adrian Popescu <adi_popescum@yahoo.de>2013-08-06 15:57:54+02:00
git-committer:
Oleksandr Motsak <motsak@mathematik.uni-kl.de>2013-08-06 18:36:05+02:00
Message:
Hilbert Criterion in local degree orderings for inhomogemous ideals
Location:
kernel
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • kernel/khstd.cc

    rc25b56c r3ed6cb7  
    99#include "config.h"
    1010#endif /* HAVE_CONFIG_H */
     11
    1112#include <kernel/mod2.h>
     13#include <misc/options.h>
     14#include <misc/intvec.h>
     15#include <polys/simpleideals.h>
    1216#include <kernel/febase.h>
    13 #include <misc/options.h>
    1417#include <kernel/polys.h>
    15 #include <misc/intvec.h>
    1618#include <kernel/kutil.h>
    1719#include <kernel/stairc.h>
    1820#include <kernel/kstd1.h>
    1921#include <kernel/khstd.h>
     22
     23#define ADIDEBUG 0
    2024
    2125
     
    127131  }
    128132}
     133
     134
     135void khCheckLocInhom(ideal Q, intvec *w, intvec *hilb, int &count,
     136             kStrategy strat)
     137             
     138/*
     139This will be used for the local orderings in the case of the inhomogenous ideals.
     140Assume f1,...,fs are already in the standard basis. Test if hilb(LM(f1),...,LM(fs),1)
     141is equal to the inputed one.
     142If no, do nothing.
     143If Yes, we know that all polys that we need are already in the standard basis
     144so delete all the remaining pairs
     145*/
     146{
     147int i;
     148ideal Lm;
     149intvec *newhilb;
     150
     151Lm = id_Head(strat->Shdl,currRing);
     152
     153newhilb =hHstdSeries(Lm,w,strat->kHomW,Q,currRing);
     154
     155#if ADIDEBUG
     156PrintS("\nOriginal\n");
     157int   j, l, k;
     158  if (hilb == NULL)
     159    return;
     160  l = hilb->length()-1;
     161  k = (*hilb)[l];
     162  for (i = 0; i < l; i++)
     163  {
     164    j = (*hilb)[i];
     165    if (j != 0)
     166    {
     167      Print("//  %8d t^%d\n", j, i+k);
     168    }
     169  }
     170  PrintS("\nActual\n");
     171  if (newhilb == NULL)
     172    return;
     173  l = newhilb->length()-1;
     174  k = (*newhilb)[l];
     175  for (i = 0; i < l; i++)
     176  {
     177    j = (*newhilb)[i];
     178    if (j != 0)
     179    {
     180      Print("//  %8d t^%d\n", j, i+k);
     181    }
     182  }
     183#endif
     184
     185if(newhilb->compare(hilb) == 0)
     186        {
     187                while (strat->Ll>=0)
     188          {
     189            count++;
     190            if(TEST_OPT_PROT)
     191            {
     192              PrintS("h");
     193              mflush();
     194            }
     195            deleteInL(strat->L,&strat->Ll,strat->Ll,strat);
     196          }
     197          delete newhilb;
     198          return;
     199   }
     200   
     201id_Delete(&Lm,currRing);
     202       
     203}
  • kernel/khstd.h

    rc25b56c r3ed6cb7  
    1414                        /* ideal S=strat->Shdl, poly p=strat->P.p */
    1515
     16void khCheckLocInhom(ideal Q, intvec *w, intvec *hilb, int &count,
     17             kStrategy strat);
    1618#endif
  • kernel/kstd1.cc

    rc25b56c r3ed6cb7  
    17331733
    17341734      // apply hilbert criterion
    1735       if (hilb!=NULL) khCheck(Q,w,hilb,hilbeledeg,hilbcount,strat);
     1735      if (hilb!=NULL)
     1736        {
     1737        if (strat->homog==isHomog)
     1738                khCheck(Q,w,hilb,hilbeledeg,hilbcount,strat);
     1739        else
     1740                khCheckLocInhom(Q,w,hilb,hilbcount,strat);
     1741        }
    17361742
    17371743      // clear strat->P
  • kernel/kutil.cc

    rc25b56c r3ed6cb7  
    72407240void initHilbCrit(ideal/*F*/, ideal /*Q*/, intvec **hilb,kStrategy strat)
    72417241{
     7242
     7243  //if the ordering is local, then hilb criterion
     7244  //can be used also if tzhe ideal is not homogenous
     7245  if((currRing->OrdSgn == -1) && (currRing->MixedOrder == 0 ))
     7246  #ifdef HAVE_RINGS
     7247  {
     7248  if(rField_is_Ring(currRing))
     7249        *hilb=NULL;
     7250  else
     7251        return;
     7252  }
     7253#endif
    72427254  if (strat->homog!=isHomog)
    72437255  {
Note: See TracChangeset for help on using the changeset viewer.