Changeset 4a36b2 in git


Ignore:
Timestamp:
Feb 13, 2019, 11:29:37 AM (5 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'd25190065115c859833252500a64cfb7b11e3a50')
Children:
b1e0dd78cc6ae3934a488bded565038f3b73951a
Parents:
9f4994c7265afa8b7c3144596516f6e4293f60f9
Message:
opt: output of polys in LP rings
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Singular/subexpr.cc

    r9f4994 r4a36b2  
    17311731          && (p_Totaldegree(p,currRing)>1))
    17321732          {
    1733             p_Delete(&p,currRing);
     1733            p_LmDelete(&p,currRing);
    17341734            /* v->rtyp = UNKNOWN; - already set */
    17351735            return; /* error, report "unknown id" */
  • libpolys/polys/polys0.cc

    r9f4994 r4a36b2  
    6767
    6868  int i;
     69  {
     70    for (i=0; i<rVar(r); i++)
     71    {
     72      {
     73        long ee = p_GetExp(p,i+1,r);
     74        if (ee!=0L)
     75        {
     76          if (wroteCoef)
     77            StringAppendS("*");
     78          //else
     79          wroteCoef=(bNotShortOut);
     80          writeGen=TRUE;
     81          StringAppendS(rRingVar(i, r));
     82          if (ee != 1L)
     83          {
     84            if (bNotShortOut) StringAppendS("^");
     85            StringAppend("%ld", ee);
     86          }
     87        }
     88      }
     89    }
     90  }
     91  //StringAppend("{%d}",p->Order);
     92  if (p_GetComp(p, r) != (long)ko)
     93  {
     94    if (writeGen) StringAppendS("*");
     95    StringAppend("gen(%d)", p_GetComp(p, r));
     96  }
     97}
     98
     99/*2
     100* writes a monomial (p),
     101* uses form x*gen(.) if ko != coloumn number of p
     102*/
    69103#ifdef HAVE_SHIFTBBA
    70   if (rIsLPRing(r)) // this implies bNotShortOut
     104static void writemonLP(poly p, int ko, const ring r)
     105{
     106  assume(r != NULL);
     107  const coeffs C = r->cf;
     108  assume(C != NULL);
     109
     110  BOOLEAN wroteCoef=FALSE,writeGen=FALSE;
     111
     112  if (((p_GetComp(p,r) == ko)
     113    &&(p_LmIsConstantComp(p, r)))
     114  || ((!n_IsOne(pGetCoeff(p),C))
     115    && (!n_IsMOne(pGetCoeff(p),C))
     116  )
     117  )
     118  {
     119    n_WriteLong(pGetCoeff(p),C);
     120
     121    wroteCoef=TRUE;
     122    writeGen=TRUE;
     123  }
     124  else if (n_IsMOne(pGetCoeff(p),C))
     125  {
     126    if (n_GreaterZero(pGetCoeff(p),C))
     127    {
     128      n_WriteLong(pGetCoeff(p),C);
     129
     130      wroteCoef=TRUE;
     131      writeGen=TRUE;
     132    }
     133    else
     134      StringAppendS("-");
     135  }
     136
     137  int i;
    71138  {
    72139    int lV = r->isLPring;
     
    105172    }
    106173  }
    107   else
    108 #endif
    109   {
    110     for (i=0; i<rVar(r); i++)
    111     {
    112       {
    113         long ee = p_GetExp(p,i+1,r);
    114         if (ee!=0L)
    115         {
    116           if (wroteCoef)
    117             StringAppendS("*");
    118           //else
    119           wroteCoef=(bNotShortOut);
    120           writeGen=TRUE;
    121           StringAppendS(rRingVar(i, r));
    122           if (ee != 1L)
    123           {
    124             if (bNotShortOut) StringAppendS("^");
    125             StringAppend("%ld", ee);
    126           }
    127         }
    128       }
    129     }
    130   }
    131174  //StringAppend("{%d}",p->Order);
    132175  if (p_GetComp(p, r) != (long)ko)
     
    136179  }
    137180}
     181#endif
    138182
    139183/// if possible print p in a short way...
     
    188232  && (nCoeff_is_transExt(lmRing->cf)))
    189233    p_Normalize(p,lmRing); /* Manual/absfact.tst */
    190   if ((p_GetComp(p, lmRing) == 0) || (!lmRing->VectorOut))
    191   {
    192     writemon(p,0, lmRing);
    193     p = pNext(p);
    194     while (p!=NULL)
    195     {
    196       assume((p->coef==NULL)||(!n_IsZero(p->coef,tailRing->cf)));
    197       if ((p->coef==NULL)||n_GreaterZero(p->coef,tailRing->cf))
    198         StringAppendS("+");
    199       writemon(p,0, tailRing);
     234#ifdef HAVE_SHIFTBBA
     235  if(lmRing->isLPring)
     236  {
     237    if ((p_GetComp(p, lmRing) == 0) || (!lmRing->VectorOut))
     238    {
     239      writemonLP(p,0, lmRing);
    200240      p = pNext(p);
    201     }
    202     return;
     241      while (p!=NULL)
     242      {
     243        assume((p->coef==NULL)||(!n_IsZero(p->coef,tailRing->cf)));
     244        if ((p->coef==NULL)||n_GreaterZero(p->coef,tailRing->cf))
     245          StringAppendS("+");
     246        writemonLP(p,0, tailRing);
     247        p = pNext(p);
     248      }
     249      return;
     250    }
     251  }
     252  else
     253#endif
     254  {
     255    if ((p_GetComp(p, lmRing) == 0) || (!lmRing->VectorOut))
     256    {
     257      writemon(p,0, lmRing);
     258      p = pNext(p);
     259      while (p!=NULL)
     260      {
     261        assume((p->coef==NULL)||(!n_IsZero(p->coef,tailRing->cf)));
     262        if ((p->coef==NULL)||n_GreaterZero(p->coef,tailRing->cf))
     263          StringAppendS("+");
     264        writemon(p,0, tailRing);
     265        p = pNext(p);
     266      }
     267      return;
     268    }
    203269  }
    204270
    205271  long k = 1;
    206272  StringAppendS("[");
    207   loop
    208   {
    209     while (k < p_GetComp(p,lmRing))
    210     {
    211       StringAppendS("0,");
     273#ifdef HAVE_SHIFTBBA
     274  if(lmRing->isLPring)
     275  {
     276    loop
     277    {
     278      while (k < p_GetComp(p,lmRing))
     279      {
     280        StringAppendS("0,");
     281        k++;
     282      }
     283      writemonLP(p,k,lmRing);
     284      pIter(p);
     285      while ((p!=NULL) && (k == p_GetComp(p, tailRing)))
     286      {
     287        if (n_GreaterZero(p->coef,tailRing->cf)) StringAppendS("+");
     288        writemonLP(p,k,tailRing);
     289        pIter(p);
     290      }
     291      if (p == NULL) break;
     292      StringAppendS(",");
    212293      k++;
    213294    }
    214     writemon(p,k,lmRing);
    215     pIter(p);
    216     while ((p!=NULL) && (k == p_GetComp(p, tailRing)))
    217     {
    218       if (n_GreaterZero(p->coef,tailRing->cf)) StringAppendS("+");
    219       writemon(p,k,tailRing);
     295  }
     296  else
     297#endif
     298  {
     299    loop
     300    {
     301      while (k < p_GetComp(p,lmRing))
     302      {
     303        StringAppendS("0,");
     304        k++;
     305      }
     306      writemon(p,k,lmRing);
    220307      pIter(p);
    221     }
    222     if (p == NULL) break;
    223     StringAppendS(",");
    224     k++;
     308      while ((p!=NULL) && (k == p_GetComp(p, tailRing)))
     309      {
     310        if (n_GreaterZero(p->coef,tailRing->cf)) StringAppendS("+");
     311        writemon(p,k,tailRing);
     312        pIter(p);
     313      }
     314      if (p == NULL) break;
     315      StringAppendS(",");
     316      k++;
     317    }
    225318  }
    226319  StringAppendS("]");
Note: See TracChangeset for help on using the changeset viewer.