Changeset 638c230 in git


Ignore:
Timestamp:
Jul 21, 2014, 5:08:47 PM (10 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
2a2ba4fcd246395ea2e5d241d8945e66d030c103a6220140edf75f76ad53c0c68c15bc93888c1868
Parents:
bb965979c7d2760b9dc6eb5c19522c4d28c7d5bb
Message:
fix: subst of parameter for alg/trans. extensions
Files:
3 added
2 edited

Legend:

Unmodified
Added
Removed
  • Singular/maps_ip.cc

    rbb9659 r638c230  
    116116        res->data=(void *)prCopyR( (poly)data, preimage_r, currRing);
    117117      else
    118         if ( (what==IMAP_CMD) || /*(*/ (what==FETCH_CMD) /*)*/) /* && (nMap!=nCopy)*/
     118        if ( (what==IMAP_CMD) || /*(*/ (what==FETCH_CMD) /*)*/) /* && (nMap!=nCopy)*/
    119119        res->data=(void *)p_PermPoly((poly)data,perm,preimage_r,currRing, nMap,par_perm,P);
    120120      else /*if (what==MAP_CMD)*/
     
    154154      }
    155155      else
    156         if ( (what==IMAP_CMD) || /*(*/ (what==FETCH_CMD) /*)*/) /* && (nMap!=nCopy)*/
     156      if ( (what==IMAP_CMD) || /*(*/ (what==FETCH_CMD) /*)*/) /* && (nMap!=nCopy)*/
    157157      {
    158158        for (i=R*C-1;i>=0;i--)
     
    236236poly pSubstPar(poly p, int par, poly image)
    237237{
    238   assume( nCoeff_is_transExt(currRing->cf) ); // nCoeff_is_Extension???
    239238  const ring R = currRing->cf->extRing;
    240 
    241239  ideal theMapI = idInit(rPar(currRing),1);
    242240  nMapFunc nMap = n_SetMap(R->cf, currRing->cf);
    243 
    244241  int i;
    245242  for(i = rPar(currRing);i>0;i--)
     
    261258
    262259  p_Normalize(p,currRing);
    263   while (p!=NULL)
    264   {
    265     memset(v,0,sizeof(sleftv));
    266 
    267     number d = n_GetDenom(p_GetCoeff(p, currRing), currRing);
    268     assume( p_Test((poly)NUM(d), R) );
    269 
    270     if ( n_IsOne (d, currRing->cf) )
    271     {
    272       n_Delete(&d, currRing); d = NULL;
    273     }
    274     else if (!p_IsConstant((poly)NUM(d), R))
    275     {
    276       WarnS("ignoring denominators of coefficients...");
    277       n_Delete(&d, currRing); d = NULL;
    278     }
    279 
    280     number num = n_GetNumerator(p_GetCoeff(p, currRing), currRing);
    281     memset(&tmpW,0,sizeof(sleftv));
    282     tmpW.rtyp = POLY_CMD;
    283     if (num==NULL) // minpoly
    284     {
    285       num=(number)(currRing->cf->extRing->qideal->m[0]);
    286       tmpW.data = num;
     260  if (currRing->cf->rep==n_rep_rat_fct )
     261  {
     262    while (p!=NULL)
     263    {
     264      memset(v,0,sizeof(sleftv));
     265
     266      number d = n_GetDenom(p_GetCoeff(p, currRing), currRing);
     267      assume( p_Test((poly)NUM(d), R) );
     268
     269      if ( n_IsOne (d, currRing->cf) )
     270      {
     271        n_Delete(&d, currRing); d = NULL;
     272      }
     273      else if (!p_IsConstant((poly)NUM(d), R))
     274      {
     275        WarnS("ignoring denominators of coefficients...");
     276        n_Delete(&d, currRing); d = NULL;
     277      }
     278
     279      number num = n_GetNumerator(p_GetCoeff(p, currRing), currRing);
     280      memset(&tmpW,0,sizeof(sleftv));
     281      tmpW.rtyp = POLY_CMD;
     282      assume( p_Test((poly)NUM(num), R) );
     283
     284      tmpW.data = NUM (num); // a copy of this poly will be used
     285
     286      p_Normalize(NUM(num),R);
    287287      if (maApplyFetch(MAP_CMD,theMap,v,&tmpW,R,NULL,NULL,0,nMap))
    288288      {
     
    290290        v->data=NULL;
    291291      }
    292     }
    293     else
    294     {
    295       assume( p_Test((poly)NUM(num), R) );
    296 
    297       tmpW.data = NUM (num); // a copy of this poly will be used
    298 
    299       p_Normalize(NUM(num),R);
     292      n_Delete(&num, currRing);
     293      //TODO check for memory leaks
     294      poly pp = pHead(p);
     295      //PrintS("map:");pWrite(pp);
     296      if( d != NULL )
     297      {
     298        pSetCoeff(pp, n_Invers(d, currRing->cf));
     299        n_Delete(&d, currRing); // d = NULL;
     300      }
     301      else
     302        pSetCoeff(pp, nInit(1));
     303
     304      //PrintS("->");pWrite((poly)(v->data));
     305      poly ppp = pMult((poly)(v->data),pp);
     306      //PrintS("->");pWrite(ppp);
     307      res=pAdd(res,ppp);
     308      pIter(p);
     309    }
     310  }
     311  else if (currRing->cf->rep==n_rep_poly )
     312  {
     313    while (p!=NULL)
     314    {
     315      memset(v,0,sizeof(sleftv));
     316
     317      number num = n_GetNumerator(p_GetCoeff(p, currRing), currRing);
     318      memset(&tmpW,0,sizeof(sleftv));
     319      tmpW.rtyp = POLY_CMD;
     320      assume( p_Test((poly)num, R) );
     321
     322
     323      p_Normalize((poly)num,R);
     324      if (num==NULL) num=(number)R->qideal->m[0];
     325      tmpW.data = num; // a copy of this poly will be used
    300326      if (maApplyFetch(MAP_CMD,theMap,v,&tmpW,R,NULL,NULL,0,nMap))
    301327      {
     
    303329        v->data=NULL;
    304330      }
    305       n_Delete(&num, currRing);
    306     }
    307     //TODO check for memory leaks
    308     poly pp = pHead(p);
    309     //PrintS("map:");pWrite(pp);
    310     if( d != NULL )
    311     {
    312       pSetCoeff(pp, n_Invers(d, currRing->cf));
    313       n_Delete(&d, currRing); // d = NULL;
    314     }
    315     else
    316       pSetCoeff(pp, nInit(1));
    317 
    318     //PrintS("->");pWrite((poly)(v->data));
    319     poly ppp = pMult((poly)(v->data),pp);
    320     //PrintS("->");pWrite(ppp);
    321     res=pAdd(res,ppp);
    322     pIter(p);
     331      if (num!=(number)R->qideal->m[0]) n_Delete(&num, currRing);
     332      //TODO check for memory leaks
     333      poly pp = pHead(p);
     334      //PrintS("map:");pWrite(pp);
     335      pSetCoeff(pp,n_Init(1,currRing));
     336      //PrintS("cf->");pWrite((poly)(v->data));
     337      poly ppp = pMult((poly)(v->data),pp);
     338      //PrintS("->");pWrite(ppp);
     339      res=pAdd(res,ppp);
     340      pIter(p);
     341    }
     342  }
     343  else
     344  {
     345    WerrorS("cannot apply subst for these coeffcients");
    323346  }
    324347  idDelete((ideal *)(&theMap));
  • Tst/Short/ok_s.lst

    rbb9659 r638c230  
    140140bug_tr599
    141141bug_tr604
     142bug_tr627
    142143bug_genus_etc
    143144bug_x_i_j
Note: See TracChangeset for help on using the changeset viewer.