Changeset aaf310 in git


Ignore:
Timestamp:
Oct 16, 2009, 12:29:28 PM (15 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
d1f231e3b792657bbd71d87ddd26f304449bd4f4
Parents:
6666eaa6f8a2ff004dc43a60643801895ec2db11
Message:
*hannes: more ring args


git-svn-id: file:///usr/local/Singular/svn/trunk@12193 2c84dea3-7e68-4137-9b89-c4e89433aadc
Location:
kernel
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • kernel/clapconv.cc

    r6666ea raaf310  
    33*  Computer Algebra System SINGULAR     *
    44****************************************/
    5 // $Id: clapconv.cc,v 1.20 2009-10-08 10:43:33 Singular Exp $
     5// $Id: clapconv.cc,v 1.21 2009-10-16 10:29:28 Singular Exp $
    66/*
    77* ABSTRACT: convert data between Singular and factory
     
    3535static void convRecGFGF ( const CanonicalForm & f, int * exp, poly & result );
    3636
    37 static number convFactoryNSingAN( const CanonicalForm &f);
     37static number convFactoryNSingAN( const CanonicalForm &f, const ring r);
    3838
    3939CanonicalForm convSingNFactoryN( number n, const ring r )
     
    236236
    237237static void
    238 convRecAP_R ( const CanonicalForm & f, int * exp, poly & result, int par_start, int var_start) ;
    239 
    240 poly convFactoryAPSingAP_R ( const CanonicalForm & f, int par_start, int var_start )
    241 {
    242   int n = pVariables+1+rPar(currRing);
     238convRecAP_R ( const CanonicalForm & f, int * exp, poly & result, int par_start, int var_start, const ring r) ;
     239
     240poly convFactoryAPSingAP_R ( const CanonicalForm & f, int par_start, int var_start, const ring r )
     241{
     242  int n = rVar(r)+rPar(r)+1;
    243243  int * exp = (int *)omAlloc0(n*sizeof(int));
    244244  poly result = NULL;
    245   convRecAP_R( f, exp, result,par_start, var_start );
     245  convRecAP_R( f, exp, result,par_start, var_start, r );
    246246  omFreeSize((ADDRESS)exp,n*sizeof(int));
    247247  return result;
    248248}
    249249
    250 poly convFactoryAPSingAP ( const CanonicalForm & f )
    251 {
    252   return convFactoryAPSingAP_R(f,0,rPar(currRing));
    253 }
    254 
    255 static void convRecAP_R ( const CanonicalForm & f, int * exp, poly & result, int par_start, int var_start )
     250poly convFactoryAPSingAP ( const CanonicalForm & f, const ring r )
     251{
     252  return convFactoryAPSingAP_R(f,0,rPar(r),r);
     253}
     254
     255static void convRecAP_R ( const CanonicalForm & f, int * exp, poly & result, int par_start, int var_start, const ring r )
    256256{
    257257  if (f.isZero())
     
    263263    {
    264264      exp[l] = i.exp();
    265       convRecAP_R( i.coeff(), exp, result, par_start, var_start );
     265      convRecAP_R( i.coeff(), exp, result, par_start, var_start, r);
    266266    }
    267267    exp[l] = 0;
     
    269269  else
    270270  {
    271     napoly z=(napoly)convFactoryASingA( f );
     271    napoly z=(napoly)convFactoryASingA( f,r );
    272272    if (z!=NULL)
    273273    {
    274       poly term = pInit();
     274      poly term = p_Init(r);
    275275      pNext( term ) = NULL;
    276276      int i;
    277       for ( i = 1; i <= pVariables; i++ )
    278         pSetExp( term, i , exp[i+var_start]);
     277      for ( i = rVar(r); i>0 ; i-- )
     278        p_SetExp( term, i , exp[i+var_start],r);
    279279      //if (rRing_has_Comp(currRing->algring)) p_SetComp(term, 0, currRing->algring); // done by pInit
    280280      if (par_start==0)
     
    282282        for ( i = 1; i <= var_start; i++ )
    283283        //z->e[i-1]+=exp[i];
    284           napAddExp(z,i,exp[i]);
     284          p_AddExp(z,i,exp[i],r->algring);
    285285      }
    286286      else
     
    288288        for ( i = par_start+1; i <= var_start+rPar(currRing); i++ )
    289289        //z->e[i-1]+=exp[i];
    290           napAddExp(z,i,exp[i-par_start]);
     290          p_AddExp(z,i,exp[i-par_start],r->algring);
    291291      }
    292292      pGetCoeff(term)=(number)omAlloc0Bin(rnumber_bin);
    293293      ((lnumber)pGetCoeff(term))->z=z;
    294       pSetm( term );
    295       result = pAdd( result, term );
     294      p_Setm( term,r );
     295      result = p_Add_q( result, term, r );
    296296    }
    297297  }
     
    342342}
    343343
    344 static number convFactoryNSingAN( const CanonicalForm &f)
     344static number convFactoryNSingAN( const CanonicalForm &f, const ring r)
    345345{
    346346  if ( f.isImm() )
    347     return n_Init( f.intval(), currRing->algring );
     347    return n_Init( f.intval(), r->algring );
    348348  else
    349349  {
     
    370370}
    371371
    372 napoly convFactoryASingA ( const CanonicalForm & f )
    373 {
    374   napoly a=NULL;
    375   napoly t;
     372napoly convFactoryASingA ( const CanonicalForm & f, const ring r )
     373{
     374  poly a=NULL;
     375  poly t;
    376376  for( CFIterator i=f; i.hasTerms(); i++)
    377377  {
    378378    t=napNew();
    379379    // pNext( t ) = NULL; //already done by napNew
    380     napGetCoeff(t)=convFactoryNSingAN( i.coeff() );
    381     if (n_IsZero(napGetCoeff(t),currRing->algring))
    382     {
    383       p_Delete(&t,nacRing);
    384     }
    385     else
    386     {
    387       napSetExp(t,1,i.exp());
    388       a=napAdd(a,t);
     380    pGetCoeff(t)=convFactoryNSingAN( i.coeff(), r );
     381    if (n_IsZero(napGetCoeff(t),r->algring))
     382    {
     383      p_Delete(&t,r->algring);
     384    }
     385    else
     386    {
     387      p_SetExp(t,1,i.exp(),r->algring);
     388      a=p_Add_q(a,t,r->algring);
    389389    }
    390390  }
    391391  if (a!=NULL)
    392392  {
    393     if (naMinimalPoly!=NULL)
    394     {
    395       if (p_GetExp(a,1,currRing->algring) >= p_GetExp(naMinimalPoly,1,currRing->algring))
    396         a = napRemainder( a, naMinimalPoly);
     393    if (r->minpoly!=NULL)
     394    {
     395      lnumber l=(lnumber)r->minpoly;
     396      if (p_GetExp(a,1,r->algring) >= p_GetExp(l->z,1,r->algring))
     397        a = napRemainder( a, l->z);
    397398    }
    398399  }
  • kernel/clapconv.h

    r6666ea raaf310  
    33*  Computer Algebra System SINGULAR     *
    44****************************************/
    5 // $Id: clapconv.h,v 1.7 2009-09-16 12:26:26 Singular Exp $
     5// $Id: clapconv.h,v 1.8 2009-10-16 10:29:28 Singular Exp $
    66/*
    77* ABSTRACT: convert data between Singular and factory
     
    2020
    2121CanonicalForm convSingAPFactoryAP ( poly p , const Variable & a, const ring r );
    22 poly convFactoryAPSingAP ( const CanonicalForm & f );
     22poly convFactoryAPSingAP ( const CanonicalForm & f, const ring r );
    2323poly convFactoryAPSingAP_R ( const CanonicalForm & f, int par_start, int var_start );
    2424
     
    2727
    2828CanonicalForm convSingAFactoryA ( napoly p , const Variable & a, const ring r );
    29 napoly convFactoryASingA ( const CanonicalForm & f );
     29napoly convFactoryASingA ( const CanonicalForm & f, const ring r );
    3030
    3131CanonicalForm convSingTrPFactoryP ( poly p, const ring r=currRing );
Note: See TracChangeset for help on using the changeset viewer.