Changeset 0aaff9 in git


Ignore:
Timestamp:
Feb 22, 2021, 6:56:41 PM (3 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', '5b153614cbc72bfa198d75b1e9e33dab2645d9fe')
Children:
2d0b446076a13e01d8341c20186f907b41259873
Parents:
b1d05db4b7eb9b213112ad9f8d89f45fd8513c79
Message:
extend modulo (p1)
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • Singular/iparith.cc

    rb1d05d r0aaff9  
    67156715  id_Delete((ideal *)&I,currRing);
    67166716  res->data = (char *)m;
     6717  return FALSE;
     6718}
     6719static BOOLEAN jjMODULO3(leftv res, leftv u, leftv v, leftv w)
     6720{
     6721  if (w->rtyp!=IDHDL) return TRUE; /* idhdhl required */
     6722  intvec *w_u=(intvec *)atGet(u,"isHomog",INTVEC_CMD);
     6723  tHomog hom=testHomog;
     6724  if (w_u!=NULL)
     6725  {
     6726    w_u=ivCopy(w_u);
     6727    hom=isHomog;
     6728  }
     6729  intvec *w_v=(intvec *)atGet(v,"isHomog",INTVEC_CMD);
     6730  if (w_v!=NULL)
     6731  {
     6732    w_v=ivCopy(w_v);
     6733    hom=isHomog;
     6734  }
     6735  if ((w_u!=NULL) && (w_v==NULL))
     6736    w_v=ivCopy(w_u);
     6737  if ((w_v!=NULL) && (w_u==NULL))
     6738    w_u=ivCopy(w_v);
     6739  ideal u_id=(ideal)u->Data();
     6740  ideal v_id=(ideal)v->Data();
     6741  if (w_u!=NULL)
     6742  {
     6743     if ((*w_u).compare((w_v))!=0)
     6744     {
     6745       WarnS("incompatible weights");
     6746       delete w_u; w_u=NULL;
     6747       hom=testHomog;
     6748     }
     6749     else
     6750     {
     6751       if ((!idTestHomModule(u_id,currRing->qideal,w_v))
     6752       || (!idTestHomModule(v_id,currRing->qideal,w_v)))
     6753       {
     6754         WarnS("wrong weights");
     6755         delete w_u; w_u=NULL;
     6756         hom=testHomog;
     6757       }
     6758     }
     6759  }
     6760  idhdl h=(idhdl)w->data;
     6761  res->data = (char *)idModulo(u_id,v_id ,hom,&w_u, &(h->data.umatrix));
     6762  if (w_u!=NULL)
     6763  {
     6764    atSet(res,omStrDup("isHomog"),w_u,INTVEC_CMD);
     6765  }
     6766  delete w_v;
     6767  //if (TEST_OPT_RETURN_SB) setFlag(res,FLAG_STD);
    67176768  return FALSE;
    67186769}
  • Singular/iparith.inc

    rb1d05d r0aaff9  
    687687// operation: matrix (module, int, int)  ->  matrix
    688688// operation: matrix (matrix, int, int)  ->  matrix
     689// operation: modulo (ideal, ideal, matrix)  ->  module
     690// operation: modulo (module, module, matrix)  ->  module
    689691// operation: smatrix (module, int, int)  ->  smatrix
    690692// operation: smatrix (smatrix, int, int)  ->  smatrix
     
    14851487  iiArithAddCmd("mod",                 0,  37, '/', 124);
    14861488  iiArithAddCmd("module",              0, 278, 313, 125);
    1487   iiArithAddCmd("modulo",              0, 451, CMD_2, 126);
     1489  iiArithAddCmd("modulo",              0, 451, CMD_23, 126);
    14881490  iiArithAddCmd("monitor",             0, 452, CMD_12, 127);
    14891491  iiArithAddCmd("monomial",            0, 292, CMD_1, 128);
  • Singular/table.h

    rb1d05d r0aaff9  
    850850,{D(jjMATRIX_Mo),      MATRIX_CMD, MATRIX_CMD, MODUL_CMD,  INT_CMD,    INT_CMD, ALLOW_NC |ALLOW_RING}
    851851,{D(jjMATRIX_Ma),      MATRIX_CMD, MATRIX_CMD, MATRIX_CMD, INT_CMD,    INT_CMD, ALLOW_NC |ALLOW_RING}
     852,{D(jjMODULO3),        MODULO_CMD, MODUL_CMD,  IDEAL_CMD,  IDEAL_CMD,  MATRIX_CMD, ALLOW_NC |ALLOW_RING}
     853,{D(jjMODULO3),        MODULO_CMD, MODUL_CMD,  MODUL_CMD,  MODUL_CMD,  MATRIX_CMD, ALLOW_NC |ALLOW_RING}
    852854,{D(jjSMATRIX_Mo),     SMATRIX_CMD,SMATRIX_CMD,MODUL_CMD,  INT_CMD,    INT_CMD, ALLOW_NC |ALLOW_RING}
    853855,{D(jjSMATRIX_Mo),     SMATRIX_CMD,SMATRIX_CMD,SMATRIX_CMD,INT_CMD,    INT_CMD, ALLOW_NC |ALLOW_RING}
     
    11141116  { "mod",         0, '%' ,               MULDIV_OP},
    11151117  { "module",      0, MODUL_CMD ,         RING_DECL_LIST},
    1116   { "modulo",      0, MODULO_CMD ,        CMD_2},
     1118  { "modulo",      0, MODULO_CMD ,        CMD_23},
    11171119  { "monitor",     0, MONITOR_CMD ,       CMD_12},
    11181120  { "monomial",    0, MONOM_CMD ,         CMD_1},
  • kernel/ideals.cc

    rb1d05d r0aaff9  
    22842284*/
    22852285//ideal idModulo (ideal h2,ideal h1)
    2286 ideal idModulo (ideal h2,ideal h1, tHomog hom, intvec ** w)
     2286ideal idModulo (ideal h2,ideal h1, tHomog hom, intvec ** w, matrix *T)
    22872287{
    22882288  intvec *wtmp=NULL;
     2289  if (T!=NULL) idDelete((ideal*)T);
    22892290
    22902291  int i,k,rk,flength=0,slength,length;
     
    24052406
    24062407  idTest(s_temp);
    2407   unsigned save_opt;
     2408  unsigned save_opt,save_opt2;
    24082409  SI_SAVE_OPT1(save_opt);
     2410  SI_SAVE_OPT2(save_opt2);
    24092411  si_opt_1 |= Sy_bit(OPT_REDTAIL_SYZ);
    24102412  ideal s_temp1 = kStd(s_temp,currRing->qideal,hom,&wtmp,NULL,length);
    24112413  SI_RESTORE_OPT1(save_opt);
     2414  SI_RESTORE_OPT2(save_opt2);
    24122415
    24132416  //if (wtmp!=NULL)  Print("output weights:");wtmp->show(1);PrintLn();
     
    24212424  if (wtmp!=NULL) delete wtmp;
    24222425
    2423   for (i=0;i<IDELEMS(s_temp1);i++)
    2424   {
    2425     if ((s_temp1->m[i]!=NULL)
    2426     && (((int)pGetComp(s_temp1->m[i]))<=length))
    2427     {
    2428       p_Delete(&(s_temp1->m[i]),currRing);
    2429     }
    2430     else
    2431     {
    2432       p_Shift(&(s_temp1->m[i]),-length,currRing);
     2426  if (T==NULL)
     2427  {
     2428    for (i=0;i<IDELEMS(s_temp1);i++)
     2429    {
     2430      if (s_temp1->m[i]!=NULL)
     2431      {
     2432        if (((int)pGetComp(s_temp1->m[i]))<=length)
     2433        {
     2434          p_Delete(&(s_temp1->m[i]),currRing);
     2435        }
     2436        else
     2437        {
     2438          p_Shift(&(s_temp1->m[i]),-length,currRing);
     2439        }
     2440      }
     2441    }
     2442  }
     2443  else
     2444  {
     2445    *T=mpNew(IDELEMS(s_temp1),IDELEMS(h2));
     2446    for (i=0;i<IDELEMS(s_temp1);i++)
     2447    {
     2448      if (s_temp1->m[i]!=NULL)
     2449      {
     2450        if (((int)pGetComp(s_temp1->m[i]))<=length)
     2451        {
     2452          do
     2453          {
     2454            p_LmDelete(&(s_temp1->m[i]),currRing);
     2455          } while((int)pGetComp(s_temp1->m[i])<=length);
     2456          poly q = prMoveR( s_temp1->m[i], syz_ring,orig_ring);
     2457          s_temp1->m[i] = NULL;
     2458          if (q!=NULL)
     2459          {
     2460            q=pReverse(q);
     2461            do
     2462            {
     2463              poly p = q;
     2464              long t=pGetComp(p);
     2465              pIter(q);
     2466              pNext(p) = NULL;
     2467              pSetComp(p,0);
     2468              pSetmComp(p);
     2469              MATELEM(*T,(int)t-length,i) = pAdd(MATELEM(*T,(int)t-k,i),p);
     2470            } while (q != NULL);
     2471          }
     2472        }
     2473        else
     2474        {
     2475          p_Shift(&(s_temp1->m[i]),-length,currRing);
     2476        }
     2477      }
    24332478    }
    24342479  }
  • kernel/ideals.h

    rb1d05d r0aaff9  
    189189}
    190190
    191 ideal   idModulo (ideal h1,ideal h2, tHomog h=testHomog, intvec ** w=NULL);
     191ideal   idModulo (ideal h1,ideal h2, tHomog h=testHomog, intvec ** w=NULL, matrix *T=NULL);
    192192matrix  idCoeffOfKBase(ideal arg, ideal kbase, poly how);
    193193
Note: See TracChangeset for help on using the changeset viewer.