Changeset 8d9aa75 in git for libpolys/coeffs/flintcf_Q.cc


Ignore:
Timestamp:
Apr 7, 2016, 3:34:19 PM (8 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', '38dfc5131670d387a89455159ed1e071997eec94')
Children:
a7045fe97d43a7d2f8cfb9568d3d9866e37ad4ad
Parents:
da39e41dbe428e5ee861185b2afe386aae8f7a4d
Message:
ssi: serialization for flint_Zn, flint_Q
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libpolys/coeffs/flintcf_Q.cc

    rda39e4 r8d9aa75  
    490490  return (number)res;
    491491}
     492static void WriteFd(number a, FILE *f, const coeffs)
     493{
     494  // format: len a_len(num den) .. a_0
     495  fmpq_poly_ptr aa=(fmpq_poly_ptr)a;
     496  int l=fmpq_poly_length(aa);
     497  fprintf(f,"%d ",l);
     498  mpq_t m;
     499  mpq_init(m);
     500  mpz_t num,den;
     501  mpz_init(num);
     502  mpz_init(den);
     503  for(int i=l; i>=0; i--)
     504  {
     505    fmpq_poly_get_coeff_mpq(m,(fmpq_poly_ptr)a,i);
     506    mpq_get_num(num,m);
     507    mpq_get_den(den,m);
     508    mpz_out_str (f,SSI_BASE, num);
     509    fputc(' ',f);
     510    mpz_out_str (f,SSI_BASE, den);
     511    fputc(' ',f);
     512  }
     513  mpz_clear(den);
     514  mpz_clear(num);
     515  mpq_clear(m);
     516}
     517static number ReadFd(s_buff f, const coeffs)
     518{
     519  // format: len a_len .. a_0
     520  fmpq_poly_ptr aa=(fmpq_poly_ptr)omAlloc(sizeof(fmpq_poly_t));
     521  fmpq_poly_init(aa);
     522  int l=s_readint(f);
     523  mpz_t num,den;
     524  mpq_t m;
     525  mpq_init(m);
     526  for (int i=l;i>=0;i--)
     527  {
     528    s_readmpz_base (f,num, SSI_BASE);
     529    mpq_set_num(m,num);
     530    mpz_clear(num);
     531    s_readmpz_base (f,den, SSI_BASE);
     532    mpq_set_den(m,den);
     533    mpz_clear(den);
     534    fmpq_poly_set_coeff_mpq(aa,i,m);
     535  }
     536  mpq_clear(m);
     537  return (number)aa;
     538}
    492539// cfClearContent
    493540// cfClearDenominators
    494541static number ConvFactoryNSingN( const CanonicalForm n, const coeffs r)
    495542{
     543  WerrorS("not yet: ConvFactoryNSingN");
    496544}
    497545static CanonicalForm ConvSingNFactoryN( number n, BOOLEAN setChar, const coeffs r )
     
    572620  cf->convFactoryNSingN=ConvFactoryNSingN;
    573621  cf->convSingNFactoryN=ConvSingNFactoryN;
     622  cf->cfWriteFd  = WriteFd;
     623  cf->cfReadFd = ReadFd;
    574624#ifdef LDEBUG
    575625  cf->cfDBTest       = DBTest;
Note: See TracChangeset for help on using the changeset viewer.