Changeset 45cc512 in git for libpolys/polys


Ignore:
Timestamp:
Dec 5, 2013, 3:34:22 PM (10 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
0acf3e38387201ff9fd3220d3febd9296fda35dd
Parents:
6cce775fcf124d803afe198a1cae685953241af3
Message:
chg: rCharstr is now a wrapper for r->cf->cfCoeffString

fixes also: charstr for integer,2,3
Location:
libpolys/polys
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • libpolys/polys/ext_fields/algext.cc

    r6cce775 r45cc512  
    13271327}
    13281328
    1329 
     1329char* naCoeffString(const coeffs r) // currently also for tranext.
     1330{
     1331  const char* const* p=n_ParameterNames(r);
     1332  int l=0;
     1333  int i;
     1334  for(i=0; i<n_NumberOfParameters(r);i++)
     1335  {
     1336    l+=(strlen(p[i])+1);
     1337  }
     1338  char *s=(char *)omAlloc(l+10+1);
     1339  s[0]='\0';
     1340  snprintf(s,10+1,"%d",r->ch); /* Fp(a) or Q(a) */
     1341  char tt[2];
     1342  tt[0]=',';
     1343  tt[1]='\0';
     1344  for(i=0; i<n_NumberOfParameters(r);i++)
     1345  {
     1346    strcat(s,tt);
     1347    strcat(s,p[i]);
     1348  }
     1349  return s;
     1350}
    13301351
    13311352BOOLEAN naInitChar(coeffs cf, void * infoStruct)
     
    13581379  p_Test((poly)naMinpoly, naRing);
    13591380  #endif
     1381
     1382  cf->cfCoeffString = naCoeffString;
    13601383
    13611384  cf->cfGreaterZero  = naGreaterZero;
  • libpolys/polys/ext_fields/transext.cc

    r6cce775 r45cc512  
    23652365  cf->ch = R->cf->ch;
    23662366  cf->factoryVarOffset = R->cf->factoryVarOffset + rVar(R);
     2367  extern char* naCoeffString(const coeffs r);
     2368  cf->cfCoeffString = naCoeffString;
    23672369
    23682370  cf->cfGreaterZero  = ntGreaterZero;
  • libpolys/polys/monomials/ring.cc

    r6cce775 r45cc512  
    619619/// Decompose & Compose, rParameter & rPar
    620620char * rCharStr(ring r)
    621 {
    622   char *s;
    623   int i;
    624 
    625 #ifdef HAVE_RINGS
    626   if (rField_is_Ring_Z(r))
    627   {
    628     s=omStrDup("integer");                   // Z
    629     return s;
    630   }
    631   if(rField_is_Ring_2toM(r))
    632   {
    633     char* s = (char*) omAlloc(7+10+2);
    634     sprintf(s,"integer,%lu",r->cf->modExponent);
    635     return s;
    636   }
    637   if(rField_is_Ring_ModN(r))
    638   {
    639     long l = (long)mpz_sizeinbase(r->cf->modBase, 10) + 2+7;
    640     char* s = (char*) omAlloc(l);
    641     gmp_sprintf(s,"integer,%Zd",r->cf->modBase);
    642     return s;
    643   }
    644   if(rField_is_Ring_PtoM(r))
    645   {
    646     long l = (long)mpz_sizeinbase(r->cf->modBase, 10) + 2+7+10;
    647     char* s = (char*) omAlloc(l);
    648     gmp_sprintf(s,"integer,%Zd^%lu",r->cf->modBase,r->cf->modExponent);
    649     return s;
    650   }
    651 #endif
    652   if (rField_is_long_R(r))
    653   {
    654     i = MAX_INT_LEN*2+7; // 2 integers and real,,
    655     s=(char *)omAlloc(i);
    656     snprintf(s,i,"real,%d,%d",r->cf->float_len,r->cf->float_len2); /* long_R */
    657     return s;
    658   }
    659   if (rField_is_R(r))
    660   {
    661     return omStrDup("real"); /* short real */
    662   }
    663   char const * const * const params = rParameter(r);
    664   if (params==NULL)
    665   {
    666     s=(char *)omAlloc(MAX_INT_LEN+1);
    667     snprintf(s,MAX_INT_LEN+1,"%d",n_GetChar(r->cf));         /* Q, Z/p */
    668     return s;
    669   }
    670   if (rField_is_long_C(r))
    671   {
    672     i=strlen(params[0])+21;
    673     s=(char *)omAlloc(i);
    674     snprintf(s,i,"complex,%d,%s",r->cf->float_len,params[0]);   /* C */
    675     return s;
    676   }
    677   if (nCoeff_is_GF(r->cf))
    678   {
    679     i=strlen(params[0])+21;
    680     s=(char *)omAlloc(i);
    681     snprintf(s,i,"%d,%s",r->cf->m_nfCharQ,params[0]); /* GF(q)  */
    682     return s;
    683   }
    684   int l=0;
    685   for(i=0; i<rPar(r);i++)
    686   {
    687     l+=(strlen(params[i])+1);
    688   }
    689   s=(char *)omAlloc((long)(l+MAX_INT_LEN+1));
    690   s[0]='\0';
    691   snprintf(s,MAX_INT_LEN+1,"%d",r->cf->ch); /* Fp(a) or Q(a) */
    692   char tt[2];
    693   tt[0]=',';
    694   tt[1]='\0';
    695   for(i=0; i<rPar(r);i++)
    696   {
    697     strcat(s,tt);
    698     strcat(s,params[i]);
    699   }
    700   return s;
    701 }
     621{ return r->cf->cfCoeffString(r->cf); }
    702622
    703623char * rParStr(ring r)
Note: See TracChangeset for help on using the changeset viewer.