Changeset c3b7d1e in git


Ignore:
Timestamp:
Feb 1, 2021, 1:37:46 AM (2 years ago)
Author:
Karim Abou Zeid <karim23697@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'a657104b677b4c461d018cbf3204d72d34ad66a9')
Children:
7f6fff5afd5c76a57ccfa8440a2c329db0c215f5
Parents:
15fc5f19a9a19e268ea1f86d8e7d35f229908025
Message:
Enable fetch for LP
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • Singular/iparith.cc

    r15fc5f1 rc3b7d1e  
    21662166      }
    21672167    }
    2168     if ((iiOp!=FETCH_CMD) || (r->N!=currRing->N) || (rPar(r)!=rPar(currRing)))
     2168    if (
     2169        (iiOp!=FETCH_CMD) || (r->N!=currRing->N) || (rPar(r)!=rPar(currRing))
     2170#ifdef HAVE_SHIFTBBA
     2171          || rIsLPRing(currRing)
     2172#endif
     2173        )
    21692174    {
    21702175      perm=(int *)omAlloc0((r->N+1)*sizeof(int));
     
    22052210      else
    22062211      {
    2207         unsigned i;
    2208         if (par_perm_size!=0)
    2209           for(i=si_min(rPar(r),rPar(currRing));i>0;i--) par_perm[i-1]=-i;
    2210         for(i=si_min(r->N,currRing->N);i>0;i--) perm[i]=i;
     2212#ifdef HAVE_SHIFTBBA
     2213        if (rIsLPRing(currRing))
     2214        {
     2215          maFetchPermLP(r, currRing, perm);
     2216        }
     2217        else
     2218#endif
     2219        {
     2220          unsigned i;
     2221          if (par_perm_size!=0)
     2222            for(i=si_min(rPar(r),rPar(currRing));i>0;i--) par_perm[i-1]=-i;
     2223          for(i=si_min(r->N,currRing->N);i>0;i--) perm[i]=i;
     2224        }
    22112225      }
    22122226    }
  • Singular/maps_ip.cc

    r15fc5f1 rc3b7d1e  
    125125      break;
    126126    case BUCKET_CMD:
    127       if ((what==FETCH_CMD)&& (preimage_r->cf==currRing->cf))
     127      if (
     128          (what==FETCH_CMD) && (preimage_r->cf==currRing->cf)
     129#ifdef HAVE_SHIFTBBA
     130          && !rIsLPRing(currRing)
     131#endif
     132          )
    128133        res->data=(void *)prCopyR(sBucketPeek((sBucket_pt)data), preimage_r, currRing);
    129134      else
     
    139144    case POLY_CMD:
    140145    case VECTOR_CMD:
    141       if ((what==FETCH_CMD)&& (preimage_r->cf==currRing->cf))
     146      if (
     147          (what==FETCH_CMD) && (preimage_r->cf==currRing->cf)
     148#ifdef HAVE_SHIFTBBA
     149          && !rIsLPRing(currRing)
     150#endif
     151          )
    142152        res->data=(void *)prCopyR( (poly)data, preimage_r, currRing);
    143153      else
     
    169179        ((matrix)data)->rank=((matrix)data)->rows();
    170180      }
    171       if ((what==FETCH_CMD)&& (preimage_r->cf == currRing->cf))
     181      if (
     182          (what==FETCH_CMD) && (preimage_r->cf == currRing->cf)
     183#ifdef HAVE_SHIFTBBA
     184          && !rIsLPRing(currRing)
     185#endif
     186         )
    172187      {
    173188        for (i=R*C-1;i>=0;i--)
  • Singular/table.h

    r15fc5f1 rc3b7d1e  
    922922,{D(jjDBPRINT),   DBPRINT_CMD,     NONE,               -2      , ALLOW_NC |ALLOW_RING}
    923923//,{D(jjEXPORTTO_M),  EXPORTTO_CMD,    NONE,             -2      , ALLOW_NC |ALLOW_RING}
    924 ,{D(jjCALL2ARG),  FETCH_CMD,       ANY_TYPE/*or set by p*/,2   , ALLOW_PLURAL |ALLOW_RING}
     924,{D(jjCALL2ARG),  FETCH_CMD,       ANY_TYPE/*or set by p*/,2   , ALLOW_NC |ALLOW_RING}
    925925,{D(jjFETCH_M),   FETCH_CMD,       ANY_TYPE/*or set by p*/,3   , ALLOW_PLURAL |ALLOW_RING}
    926926,{D(jjFETCH_M),   FETCH_CMD,       ANY_TYPE/*or set by p*/,4   , ALLOW_PLURAL |ALLOW_RING}
  • libpolys/polys/monomials/maps.cc

    r15fc5f1 rc3b7d1e  
    300300        }
    301301      }
     302    }
     303  }
     304}
     305
     306void maFetchPermLP(const ring preimage_r, const ring dst_r, int * perm)
     307/* perm=(int *)omAlloc0(preimage_r->N+1 * sizeof(int)); */
     308{
     309  for (int i = 0; i < preimage_r->N + 1; i++) { perm[i] = 0; }
     310
     311  int preimage_lV = preimage_r->isLPring;
     312  int r_lV = dst_r->isLPring;
     313
     314  int preimage_ncgens = preimage_r->LPncGenCount;
     315  int r_ncges = dst_r->LPncGenCount;
     316
     317  int preimage_vars = preimage_lV - preimage_ncgens;
     318  int r_vars = r_lV - r_ncges;
     319
     320  // for each block
     321  for (int i = 0; i < si_min(preimage_r->N / preimage_lV, dst_r->N / r_lV); i++)
     322  {
     323    // align variables
     324    for (int j = 1; j <= si_min(preimage_vars, r_vars); j++)
     325    {
     326      perm[(i * preimage_lV) + j] = (i * r_lV) + j;
     327    }
     328
     329    // align ncgens
     330    for (int j = 1; j <= si_min(preimage_ncgens, r_ncges); j++)
     331    {
     332      perm[(i * preimage_lV) + preimage_vars + j] = (i * r_lV) + r_vars + j;
    302333    }
    303334  }
  • libpolys/polys/monomials/maps.h

    r15fc5f1 rc3b7d1e  
    2424                char const * const * const names,       int n,       char const * const * const par,       int nop,
    2525                int * perm, int *par_perm, n_coeffType ch, int lV);
     26void maFetchPermLP(const ring preimage_r, const ring dst_r, int * perm);
    2627#endif
    2728poly pSubstPoly(poly p, int var, poly image);
Note: See TracChangeset for help on using the changeset viewer.