Changeset 9bdba5 in git for factory


Ignore:
Timestamp:
Oct 27, 2020, 2:08:01 PM (3 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
6c0138c673567884c6a0476d4496df51b0d7c049
Parents:
ba9e24e67185c12eb7966da1c68fcef2d90666d0
Message:
more FLINT conversions: fmpz_mpoly
Location:
factory
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • factory/FLINTconvert.cc

    rba9e24 r9bdba5  
    711711}
    712712
     713static void convFlint_RecPP ( const CanonicalForm & f, ulong * exp, fmpz_mpoly_t result, fmpz_mpoly_ctx_t ctx, int N )
     714{
     715  // assume f!=0
     716  if ( ! f.inBaseDomain() )
     717  {
     718    int l = f.level();
     719    for ( CFIterator i = f; i.hasTerms(); i++ )
     720    {
     721      exp[N-l] = i.exp();
     722      convFlint_RecPP( i.coeff(), exp, result, ctx, N );
     723    }
     724    exp[N-l] = 0;
     725  }
     726  else
     727  {
     728    fmpz_t c;
     729    fmpz_init(c);
     730    convertCF2Fmpz(c,f);
     731    fmpz_mpoly_push_term_fmpz_ui(result,c,exp,ctx);
     732    fmpz_clear(c);
     733  }
     734}
     735
    713736void convFactoryPFlintMP ( const CanonicalForm & f, nmod_mpoly_t res, nmod_mpoly_ctx_t ctx, int N )
    714737{
     
    733756}
    734757
     758void convFactoryPFlintMP ( const CanonicalForm & f, fmpz_mpoly_t res, fmpz_mpoly_ctx_t ctx, int N )
     759{
     760  if (f.isZero()) return;
     761  ulong * exp = (ulong*)Alloc(N*sizeof(ulong));
     762  memset(exp,0,N*sizeof(ulong));
     763  convFlint_RecPP( f, exp, res, ctx, N );
     764  //fmpz_mpoly_reduce(res,ctx);
     765  Free(exp,N*sizeof(ulong));
     766}
     767
    735768CanonicalForm convFlintMPFactoryP(nmod_mpoly_t f, nmod_mpoly_ctx_t ctx, int N)
    736769{
     
    772805  }
    773806  fmpq_clear(c);
     807  Free(exp,N*sizeof(ulong));
     808  return result;
     809}
     810
     811CanonicalForm convFlintMPFactoryP(fmpz_mpoly_t f, fmpz_mpoly_ctx_t ctx, int N)
     812{
     813  CanonicalForm result;
     814  int d=fmpz_mpoly_length(f,ctx)-1;
     815  ulong* exp=(ulong*)Alloc(N*sizeof(ulong));
     816  fmpz_t c;
     817  fmpz_init(c);
     818  for(int i=d; i>=0; i--)
     819  {
     820    fmpz_mpoly_get_term_coeff_fmpz(c,f,i,ctx);
     821    fmpz_mpoly_get_term_exp_ui(exp,f,i,ctx);
     822    CanonicalForm term=convertFmpz2CF(c);
     823    for ( int i = 0; i <N; i++ )
     824    {
     825      if (exp[i]!=0) term*=CanonicalForm( Variable( N-i ), exp[i] );
     826    }
     827    result+=term;
     828  }
     829  fmpz_clear(c);
    774830  Free(exp,N*sizeof(ulong));
    775831  return result;
  • factory/FLINTconvert.h

    rba9e24 r9bdba5  
    275275void convFactoryPFlintMP ( const CanonicalForm & f, nmod_mpoly_t res, nmod_mpoly_ctx_t ctx, int N );
    276276void convFactoryPFlintMP ( const CanonicalForm & f, fmpq_mpoly_t res, fmpq_mpoly_ctx_t ctx, int N );
     277void convFactoryPFlintMP ( const CanonicalForm & f, fmpz_mpoly_t res, fmpz_mpoly_ctx_t ctx, int N );
    277278CanonicalForm convFlintMPFactoryP(nmod_mpoly_t f, nmod_mpoly_ctx_t ctx, int N);
    278279CanonicalForm convFlintMPFactoryP(fmpq_mpoly_t f, fmpq_mpoly_ctx_t ctx, int N);
    279 #endif
    280 #endif
    281 #endif
     280CanonicalForm convFlintMPFactoryP(fmpz_mpoly_t f, fmpz_mpoly_ctx_t ctx, int N);
     281#endif
     282#endif
     283#endif
Note: See TracChangeset for help on using the changeset viewer.