Changeset e0208dc in git


Ignore:
Timestamp:
Jan 26, 2021, 11:35:36 AM (2 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
Children:
45adda4d5309df54c9f7e6205887c42e91d19d22
Parents:
010a14be02b07fa1ee9a250d9e2251114f166424
git-author:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2021-01-26 11:35:36+01:00
git-committer:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2021-01-26 11:36:59+01:00
Message:
convertCF2Fmpz/convertCF2initFmpz
File:
1 edited

Legend:

Unmodified
Added
Removed
  • factory/FLINTconvert.cc

    r010a14 re0208dc  
    113113#include "FLINTconvert.h"
    114114
    115 // TODO!! decide if the input to convertCF2Fmpz is expected to be:
    116 //  initialized, or
    117 //  uninitialized
     115// assumes result to be uninitialiazed
    118116void convertCF2Fmpz (fmpz_t result, const CanonicalForm& f)
    119117{
    120118  if (f.isImm())
    121     *result=f.intval();                     // assumes uninitialized
    122     //fmpz_set_si (result, f.intval());
     119    *result=f.intval();
    123120  else
    124121  {
    125122    mpz_t gmp_val;
    126123    f.mpzval(gmp_val);
    127     fmpz_set_mpz (result, gmp_val);         // assumes initialized
     124    fmpz_init(result);
     125    fmpz_set_mpz (result, gmp_val);
     126    mpz_clear (gmp_val);
     127  }
     128}
     129
     130// special version assuming result is already initialized
     131void convertCF2initFmpz (fmpz_t result, const CanonicalForm& f)
     132{
     133  if (f.isImm())
     134    fmpz_set_si (result, f.intval());
     135  else
     136  {
     137    mpz_t gmp_val;
     138    f.mpzval(gmp_val);
     139
     140    mpz_swap(gmp_val, _fmpz_promote(result));
     141    _fmpz_demote_val(result);
     142
    128143    mpz_clear (gmp_val);
    129144  }
     
    135150  _fmpz_poly_set_length(result, degree(f)+1);
    136151  for (CFIterator i= f; i.hasTerms(); i++)
    137     convertCF2Fmpz (fmpz_poly_get_coeff_ptr(result, i.exp()), i.coeff()); // assumes initialized
     152    convertCF2initFmpz (fmpz_poly_get_coeff_ptr(result, i.exp()), i.coeff()); // assumes initialized
    138153}
    139154
     
    302317{
    303318  for (CFIterator i= f; i.hasTerms(); i++)
    304     convertCF2Fmpz (&result[i.exp()], i.coeff()); // assumes ?
     319    convertCF2initFmpz (&result[i.exp()], i.coeff()); // assumes initialized
    305320}
    306321
     
    315330  CanonicalForm den= bCommonDen (f);
    316331  convertFacCF2Fmpz_array (fmpq_poly_numref (result), f*den);
    317   convertCF2Fmpz (fmpq_poly_denref (result), den); // assumes initialized
     332  convertCF2initFmpz (fmpq_poly_denref (result), den); // assumes initialized
    318333
    319334  if (!isRat)
     
    412427  fmpz_t FLINTp;
    413428  fmpz_init (FLINTp);
    414   convertCF2Fmpz (FLINTp, b.getpk()); // assumes initialized
     429  convertCF2initFmpz (FLINTp, b.getpk()); // assumes initialized
    415430  fmpz_mod_ctx_t ctx;
    416431  fmpz_mod_ctx_init(ctx,FLINTp);
Note: See TracChangeset for help on using the changeset viewer.