My Project  UNKNOWN_GIT_VERSION
Functions
FLINTconvert.cc File Reference
#include <config.h>
#include "canonicalform.h"
#include "fac_util.h"
#include "cf_iter.h"
#include "cf_factory.h"
#include "gmpext.h"
#include "singext.h"
#include "cf_algorithm.h"
#include <stdio.h>
#include <flint/fmpz.h>
#include <flint/fmpq.h>
#include <flint/fmpz_poly.h>
#include <flint/fmpz_mod_poly.h>
#include <flint/nmod_poly.h>
#include <flint/fmpq_poly.h>
#include <flint/nmod_mat.h>
#include <flint/fmpz_mat.h>
#include <flint/fq.h>
#include <flint/fq_poly.h>
#include <flint/fq_nmod.h>
#include <flint/fq_nmod_poly.h>
#include <flint/fq_nmod_mat.h>
#include "FLINTconvert.h"

Go to the source code of this file.

Functions

void convertCF2Fmpz (fmpz_t result, const CanonicalForm &f)
 conversion of a factory integer to fmpz_t More...
 
void convertFacCF2Fmpz_poly_t (fmpz_poly_t result, const CanonicalForm &f)
 conversion of a factory univariate polynomial over Z to a fmpz_poly_t More...
 
CanonicalForm convertFmpz2CF (const fmpz_t coefficient)
 conversion of a FLINT integer to CanonicalForm More...
 
CanonicalForm convertFmpz_poly_t2FacCF (const fmpz_poly_t poly, const Variable &x)
 conversion of a FLINT poly over Z to CanonicalForm More...
 
void convertFacCF2nmod_poly_t (nmod_poly_t result, const CanonicalForm &f)
 conversion of a factory univariate polynomials over Z/p (for word size p) to nmod_poly_t More...
 
CanonicalForm convertnmod_poly_t2FacCF (const nmod_poly_t poly, const Variable &x)
 conversion of a FLINT poly over Z/p to CanonicalForm More...
 
void convertCF2Fmpq (fmpq_t result, const CanonicalForm &f)
 conversion of a factory rationals to fmpq_t More...
 
CanonicalForm convertFmpq_t2CF (const fmpq_t q)
 
CanonicalForm convertFmpq_poly_t2FacCF (const fmpq_poly_t p, const Variable &x)
 conversion of a FLINT poly over Q to CanonicalForm More...
 
void convertFacCF2Fmpz_array (fmpz *result, const CanonicalForm &f)
 
void convertFacCF2Fmpq_poly_t (fmpq_poly_t result, const CanonicalForm &f)
 conversion of a factory univariate polynomials over Q to fmpq_poly_t More...
 
CFFList convertFLINTnmod_poly_factor2FacCFFList (const nmod_poly_factor_t fac, const mp_limb_t leadingCoeff, const Variable &x)
 conversion of a FLINT factorization over Z/p (for word size p) to a CFFList More...
 
CFFList convertFLINTFq_nmod_poly_factor2FacCFFList (const fq_nmod_poly_factor_t fac, const Variable &x, const Variable &alpha, const fq_nmod_ctx_t fq_con)
 conversion of a FLINT factorization over Fq (for word size p) to a CFFList More...
 
void convertFacCF2Fmpz_mod_poly_t (fmpz_mod_poly_t result, const CanonicalForm &f, const fmpz_t p)
 conversion of a factory univariate poly over Z to a FLINT poly over Z/p (for non word size p) More...
 
CanonicalForm convertFmpz_mod_poly_t2FacCF (const fmpz_mod_poly_t poly, const Variable &x, const modpk &b)
 conversion of a FLINT poly over Z/p (for non word size p) to a CanonicalForm over Z More...
 
void convertFacCF2Fq_nmod_t (fq_nmod_t result, const CanonicalForm &f, const fq_nmod_ctx_t ctx)
 conversion of a factory element of F_q to a FLINT fq_nmod_t, does not do any memory allocation for poly More...
 
CanonicalForm convertFq_nmod_t2FacCF (const fq_nmod_t poly, const Variable &alpha)
 conversion of a FLINT element of F_q to a CanonicalForm with alg. variable alpha More...
 
void convertFacCF2Fq_t (fq_t result, const CanonicalForm &f, const fq_ctx_t ctx)
 conversion of a factory element of F_q (for non-word size p) to a FLINT fq_t More...
 
CanonicalForm convertFq_t2FacCF (const fq_t poly, const Variable &alpha)
 conversion of a FLINT element of F_q with non-word size p to a CanonicalForm with alg. variable alpha More...
 
void convertFacCF2Fq_poly_t (fq_poly_t result, const CanonicalForm &f, const fq_ctx_t ctx)
 conversion of a factory univariate poly over F_q (for non-word size p) to a FLINT fq_poly_t More...
 
void convertFacCF2Fq_nmod_poly_t (fq_nmod_poly_t result, const CanonicalForm &f, const fq_nmod_ctx_t ctx)
 conversion of a factory univariate poly over F_q to a FLINT fq_nmod_poly_t More...
 
CanonicalForm convertFq_poly_t2FacCF (const fq_poly_t p, const Variable &x, const Variable &alpha, const fq_ctx_t ctx)
 conversion of a FLINT poly over Fq (for non-word size p) to a CanonicalForm with alg. variable alpha and polynomial variable x More...
 
CanonicalForm convertFq_nmod_poly_t2FacCF (const fq_nmod_poly_t p, const Variable &x, const Variable &alpha, const fq_nmod_ctx_t ctx)
 conversion of a FLINT poly over Fq to a CanonicalForm with alg. variable alpha and polynomial variable x More...
 
void convertFacCFMatrix2Fmpz_mat_t (fmpz_mat_t M, const CFMatrix &m)
 conversion of a factory matrix over Z to a fmpz_mat_t More...
 
CFMatrixconvertFmpz_mat_t2FacCFMatrix (const fmpz_mat_t m)
 conversion of a FLINT matrix over Z to a factory matrix More...
 
void convertFacCFMatrix2nmod_mat_t (nmod_mat_t M, const CFMatrix &m)
 conversion of a factory matrix over Z/p to a nmod_mat_t More...
 
CFMatrixconvertNmod_mat_t2FacCFMatrix (const nmod_mat_t m)
 conversion of a FLINT matrix over Z/p to a factory matrix More...
 
void convertFacCFMatrix2Fq_nmod_mat_t (fq_nmod_mat_t M, const fq_nmod_ctx_t fq_con, const CFMatrix &m)
 conversion of a factory matrix over F_q to a fq_nmod_mat_t More...
 
CFMatrixconvertFq_nmod_mat_t2FacCFMatrix (const fq_nmod_mat_t m, const fq_nmod_ctx_t &fq_con, const Variable &alpha)
 conversion of a FLINT matrix over F_q to a factory matrix More...
 

Detailed Description

This file implements functions for conversion to FLINT (www.flintlib.org) and back.

Author
Martin Lee

Definition in file FLINTconvert.cc.

Function Documentation

◆ convertCF2Fmpq()

void convertCF2Fmpq ( fmpq_t  result,
const CanonicalForm f 
)

conversion of a factory rationals to fmpq_t

Definition at line 149 of file FLINTconvert.cc.

150 {
151  //ASSERT (isOn (SW_RATIONAL), "expected rational");
152  fmpz_t tmp1, tmp2;
153  fmpz_init (tmp1);
154  fmpz_init (tmp2);
155  if (f.isImm ())
156  {
157  fmpz_set_si (tmp1, f.num().intval());
158  fmpz_set_si (tmp2, f.den().intval());
159  }
160  else
161  {
162  mpz_t gmp_val;
163  gmp_numerator (f, gmp_val);
164  fmpz_set_mpz (tmp1, gmp_val);
165  mpz_clear (gmp_val);
166  gmp_denominator (f, gmp_val);
167  fmpz_set_mpz (tmp2, gmp_val);
168  mpz_clear (gmp_val);
169  }
170 
171  fmpz_set (fmpq_numref (result), tmp1);
172  fmpz_set (fmpq_denref (result), tmp2);
173  fmpz_clear (tmp1);
174  fmpz_clear (tmp2);
175 }

◆ convertCF2Fmpz()

void convertCF2Fmpz ( fmpz_t  result,
const CanonicalForm f 
)

conversion of a factory integer to fmpz_t

Definition at line 61 of file FLINTconvert.cc.

62 {
63  if (f.isImm())
64  fmpz_set_si (result, f.intval());
65  else
66  {
67  mpz_t gmp_val;
68  f.mpzval(gmp_val);
69  fmpz_set_mpz (result, gmp_val);
70  mpz_clear (gmp_val);
71  }
72 }

◆ convertFacCF2Fmpq_poly_t()

void convertFacCF2Fmpq_poly_t ( fmpq_poly_t  result,
const CanonicalForm f 
)

conversion of a factory univariate polynomials over Q to fmpq_poly_t

Definition at line 238 of file FLINTconvert.cc.

239 {
240  bool isRat= isOn (SW_RATIONAL);
241  if (!isRat)
242  On (SW_RATIONAL);
243 
244  fmpq_poly_init2 (result, degree (f)+1);
245  _fmpq_poly_set_length (result, degree (f) + 1);
247  convertFacCF2Fmpz_array (fmpq_poly_numref (result), f*den);
248  convertCF2Fmpz (fmpq_poly_denref (result), den);
249 
250  if (!isRat)
251  Off (SW_RATIONAL);
252 }

◆ convertFacCF2Fmpz_array()

void convertFacCF2Fmpz_array ( fmpz *  result,
const CanonicalForm f 
)

Definition at line 232 of file FLINTconvert.cc.

233 {
234  for (CFIterator i= f; i.hasTerms(); i++)
235  convertCF2Fmpz (&result[i.exp()], i.coeff());
236 }

◆ convertFacCF2Fmpz_mod_poly_t()

void convertFacCF2Fmpz_mod_poly_t ( fmpz_mod_poly_t  result,
const CanonicalForm f,
const fmpz_t  p 
)

conversion of a factory univariate poly over Z to a FLINT poly over Z/p (for non word size p)

Definition at line 293 of file FLINTconvert.cc.

295 {
296  fmpz_mod_poly_init2 (result, p, degree (f) + 1);
297  fmpz_poly_t buf;
299  fmpz_mod_poly_set_fmpz_poly (result, buf);
300  fmpz_poly_clear (buf);
301 }

◆ convertFacCF2Fmpz_poly_t()

void convertFacCF2Fmpz_poly_t ( fmpz_poly_t  result,
const CanonicalForm f 
)

conversion of a factory univariate polynomial over Z to a fmpz_poly_t

Definition at line 74 of file FLINTconvert.cc.

75 {
76  fmpz_poly_init2 (result, degree (f)+1);
77  _fmpz_poly_set_length(result, degree(f)+1);
78  for (CFIterator i= f; i.hasTerms(); i++)
79  convertCF2Fmpz (fmpz_poly_get_coeff_ptr(result, i.exp()), i.coeff());
80 }

◆ convertFacCF2Fq_nmod_poly_t()

void convertFacCF2Fq_nmod_poly_t ( fq_nmod_poly_t  result,
const CanonicalForm f,
const fq_nmod_ctx_t  ctx 
)

conversion of a factory univariate poly over F_q to a FLINT fq_nmod_poly_t

Definition at line 385 of file FLINTconvert.cc.

387 {
388  fq_nmod_poly_init2 (result, degree (f)+1, ctx);
389  _fq_nmod_poly_set_length (result, degree (f) + 1, ctx);
390  fq_nmod_t buf;
391  fq_nmod_init2 (buf, ctx);
392  for (CFIterator i= f; i.hasTerms(); i++)
393  {
394  convertFacCF2Fq_nmod_t (buf, i.coeff(), ctx);
395  fq_nmod_poly_set_coeff (result, i.exp(), buf, ctx);
396  fq_nmod_zero (buf, ctx);
397  }
398  fq_nmod_clear (buf, ctx);
399 }

◆ convertFacCF2Fq_nmod_t()

void convertFacCF2Fq_nmod_t ( fq_nmod_t  result,
const CanonicalForm f,
const fq_nmod_ctx_t  ctx 
)

conversion of a factory element of F_q to a FLINT fq_nmod_t, does not do any memory allocation for poly

Definition at line 317 of file FLINTconvert.cc.

319 {
320  bool save_sym_ff= isOn (SW_SYMMETRIC_FF);
321  if (save_sym_ff) Off (SW_SYMMETRIC_FF);
322  for (CFIterator i= f; i.hasTerms(); i++)
323  {
324  CanonicalForm c= i.coeff();
325  if (!c.isImm()) c=c.mapinto(); //c%= getCharacteristic();
326  if (!c.isImm())
327  { //This case will never happen if the characteristic is in fact a prime
328  // number, since all coefficients are represented as immediates
329  printf("convertFacCF2Fq_nmod_t: coefficient not immediate!, char=%d\n",
331  }
332  else
333  {
334  STICKYASSERT (i.exp() <= fq_nmod_ctx_degree(ctx), "convertFacCF2Fq_nmod_t: element is not reduced");
335  nmod_poly_set_coeff_ui (result, i.exp(), c.intval());
336  }
337  }
338  if (save_sym_ff) On (SW_SYMMETRIC_FF);
339 }

◆ convertFacCF2Fq_poly_t()

void convertFacCF2Fq_poly_t ( fq_poly_t  result,
const CanonicalForm f,
const fq_ctx_t  ctx 
)

conversion of a factory univariate poly over F_q (for non-word size p) to a FLINT fq_poly_t

Definition at line 367 of file FLINTconvert.cc.

369 {
370  fq_poly_init2 (result, degree (f)+1, ctx);
371  _fq_poly_set_length (result, degree (f) + 1, ctx);
372  fmpz_poly_t buf;
373  for (CFIterator i= f; i.hasTerms(); i++)
374  {
375  convertFacCF2Fmpz_poly_t (buf, i.coeff());
376  _fmpz_vec_scalar_mod_fmpz (buf->coeffs, buf->coeffs, degree (i.coeff()) + 1,
377  &ctx->p);
378  _fmpz_poly_normalise (buf);
379  fq_poly_set_coeff (result, i.exp(), buf, ctx);
380  fmpz_poly_clear (buf);
381  }
382 }

◆ convertFacCF2Fq_t()

void convertFacCF2Fq_t ( fq_t  result,
const CanonicalForm f,
const fq_ctx_t  ctx 
)

conversion of a factory element of F_q (for non-word size p) to a FLINT fq_t

Definition at line 348 of file FLINTconvert.cc.

349 {
350  fmpz_poly_init2 (result, fq_ctx_degree(ctx));
351  ASSERT (degree (f) < fq_ctx_degree (ctx), "input is not reduced");
352  _fmpz_poly_set_length(result, degree(f)+1);
353  for (CFIterator i= f; i.hasTerms(); i++)
354  convertCF2Fmpz (fmpz_poly_get_coeff_ptr(result, i.exp()), i.coeff());
355  _fmpz_vec_scalar_mod_fmpz (result->coeffs, result->coeffs, degree (f) + 1,
356  &ctx->p);
357  _fmpz_poly_normalise (result);
358 }

◆ convertFacCF2nmod_poly_t()

void convertFacCF2nmod_poly_t ( nmod_poly_t  result,
const CanonicalForm f 
)

conversion of a factory univariate polynomials over Z/p (for word size p) to nmod_poly_t

Definition at line 115 of file FLINTconvert.cc.

116 {
117  bool save_sym_ff= isOn (SW_SYMMETRIC_FF);
118  if (save_sym_ff) Off (SW_SYMMETRIC_FF);
119  nmod_poly_init2 (result, getCharacteristic(), degree (f)+1);
120  for (CFIterator i= f; i.hasTerms(); i++)
121  {
122  CanonicalForm c= i.coeff();
123  if (!c.isImm()) c=c.mapinto(); //c%= getCharacteristic();
124  if (!c.isImm())
125  { //This case will never happen if the characteristic is in fact a prime
126  // number, since all coefficients are represented as immediates
127  printf("convertCF2nmod_poly_t: coefficient not immediate!, char=%d\n",
129  }
130  else
131  nmod_poly_set_coeff_ui (result, i.exp(), c.intval());
132  }
133  if (save_sym_ff) On (SW_SYMMETRIC_FF);
134 }

◆ convertFacCFMatrix2Fmpz_mat_t()

void convertFacCFMatrix2Fmpz_mat_t ( fmpz_mat_t  M,
const CFMatrix m 
)

conversion of a factory matrix over Z to a fmpz_mat_t

Definition at line 444 of file FLINTconvert.cc.

445 {
446  fmpz_mat_init (M, (long) m.rows(), (long) m.columns());
447 
448  int i,j;
449  for(i=m.rows();i>0;i--)
450  {
451  for(j=m.columns();j>0;j--)
452  {
453  convertCF2Fmpz (fmpz_mat_entry (M,i-1,j-1), m(i,j));
454  }
455  }
456 }

◆ convertFacCFMatrix2Fq_nmod_mat_t()

void convertFacCFMatrix2Fq_nmod_mat_t ( fq_nmod_mat_t  M,
const fq_nmod_ctx_t  fq_con,
const CFMatrix m 
)

conversion of a factory matrix over F_q to a fq_nmod_mat_t

Definition at line 505 of file FLINTconvert.cc.

507 {
508  fq_nmod_mat_init (M, (long) m.rows(), (long) m.columns(), fq_con);
509  int i,j;
510  for(i=m.rows();i>0;i--)
511  {
512  for(j=m.columns();j>0;j--)
513  {
514  convertFacCF2nmod_poly_t (M->rows[i-1]+j-1, m (i,j));
515  }
516  }
517 }

◆ convertFacCFMatrix2nmod_mat_t()

void convertFacCFMatrix2nmod_mat_t ( nmod_mat_t  M,
const CFMatrix m 
)

conversion of a factory matrix over Z/p to a nmod_mat_t

Definition at line 471 of file FLINTconvert.cc.

472 {
473  nmod_mat_init (M, (long) m.rows(), (long) m.columns(), getCharacteristic());
474 
475  bool save_sym_ff= isOn (SW_SYMMETRIC_FF);
476  if (save_sym_ff) Off (SW_SYMMETRIC_FF);
477  int i,j;
478  for(i=m.rows();i>0;i--)
479  {
480  for(j=m.columns();j>0;j--)
481  {
482  if(!(m(i,j)).isImm()) printf("convertFacCFMatrix2FLINTmat_zz_p: not imm.\n");
483  nmod_mat_entry (M,i-1,j-1)= (m(i,j)).intval();
484  }
485  }
486  if (save_sym_ff) On (SW_SYMMETRIC_FF);
487 }

◆ convertFLINTFq_nmod_poly_factor2FacCFFList()

CFFList convertFLINTFq_nmod_poly_factor2FacCFFList ( const fq_nmod_poly_factor_t  fac,
const Variable x,
const Variable alpha,
const fq_nmod_ctx_t  fq_con 
)

conversion of a FLINT factorization over Fq (for word size p) to a CFFList

Definition at line 275 of file FLINTconvert.cc.

279 {
280  CFFList result;
281 
282  long i;
283 
284  for (i = 0; i < fac->num; i++)
286  (fq_nmod_poly_t &)fac->poly[i], x, alpha, fq_con),
287  fac->exp[i]));
288  return result;
289 }

◆ convertFLINTnmod_poly_factor2FacCFFList()

CFFList convertFLINTnmod_poly_factor2FacCFFList ( const nmod_poly_factor_t  fac,
const mp_limb_t  leadingCoeff,
const Variable x 
)

conversion of a FLINT factorization over Z/p (for word size p) to a CFFList

Definition at line 255 of file FLINTconvert.cc.

259 {
260  CFFList result;
261  if (leadingCoeff != 1)
262  result.insert (CFFactor (CanonicalForm ((long) leadingCoeff), 1));
263 
264  long i;
265 
266  for (i = 0; i < fac->num; i++)
268  (nmod_poly_t &)fac->p[i],x),
269  fac->exp[i]));
270  return result;
271 }

◆ convertFmpq_poly_t2FacCF()

CanonicalForm convertFmpq_poly_t2FacCF ( const fmpq_poly_t  p,
const Variable x 
)

conversion of a FLINT poly over Q to CanonicalForm

Definition at line 212 of file FLINTconvert.cc.

213 {
215  fmpq_t coeff;
216  long n= p->length;
217  for (long i= 0; i < n; i++)
218  {
219  fmpq_init (coeff);
220  fmpq_poly_get_coeff_fmpq (coeff, p, i);
221  if (fmpq_is_zero (coeff))
222  {
223  fmpq_clear (coeff);
224  continue;
225  }
226  result += convertFmpq_t2CF (coeff)*power (x, i);
227  fmpq_clear (coeff);
228  }
229  return result;
230 }

◆ convertFmpq_t2CF()

CanonicalForm convertFmpq_t2CF ( const fmpq_t  q)

Definition at line 177 of file FLINTconvert.cc.

178 {
179  bool isRat= isOn (SW_RATIONAL);
180  if (!isRat)
181  On (SW_RATIONAL);
182 
184  mpz_t nnum, nden;
185  mpz_init (nnum);
186  mpz_init (nden);
187  fmpz_get_mpz (nnum, fmpq_numref (q));
188  fmpz_get_mpz (nden, fmpq_denref (q));
189 
191  if (mpz_is_imm (nnum) && mpz_is_imm (nden))
192  {
193  num= CanonicalForm (mpz_get_si(nnum));
194  den= CanonicalForm (mpz_get_si(nden));
195  mpz_clear (nnum);
196  mpz_clear (nden);
197  result= num/den;
198  if (!isRat)
199  Off (SW_RATIONAL);
200  return result;
201  }
202  else
203  {
204  result= make_cf (nnum, nden, false);
205  if (!isRat)
206  Off (SW_RATIONAL);
207  return result;
208  }
209 }

◆ convertFmpz2CF()

CanonicalForm convertFmpz2CF ( const fmpz_t  coefficient)

conversion of a FLINT integer to CanonicalForm

Definition at line 82 of file FLINTconvert.cc.

83 {
84  if (fmpz_cmp_si (coefficient, MINIMMEDIATE) >= 0 &&
85  fmpz_cmp_si (coefficient, MAXIMMEDIATE) <= 0)
86  {
87  long coeff= fmpz_get_si (coefficient);
88  return CanonicalForm (coeff);
89  }
90  else
91  {
92  mpz_t gmp_val;
93  mpz_init (gmp_val);
94  fmpz_get_mpz (gmp_val, coefficient);
96  return result;
97  }
98 }

◆ convertFmpz_mat_t2FacCFMatrix()

CFMatrix* convertFmpz_mat_t2FacCFMatrix ( const fmpz_mat_t  m)

conversion of a FLINT matrix over Z to a factory matrix

Definition at line 457 of file FLINTconvert.cc.

458 {
459  CFMatrix *res=new CFMatrix(fmpz_mat_nrows (m),fmpz_mat_ncols (m));
460  int i,j;
461  for(i=res->rows();i>0;i--)
462  {
463  for(j=res->columns();j>0;j--)
464  {
465  (*res)(i,j)=convertFmpz2CF(fmpz_mat_entry (m,i-1,j-1));
466  }
467  }
468  return res;
469 }

◆ convertFmpz_mod_poly_t2FacCF()

CanonicalForm convertFmpz_mod_poly_t2FacCF ( const fmpz_mod_poly_t  poly,
const Variable x,
const modpk b 
)

conversion of a FLINT poly over Z/p (for non word size p) to a CanonicalForm over Z

Definition at line 304 of file FLINTconvert.cc.

306 {
307  fmpz_poly_t buf;
308  fmpz_poly_init (buf);
309  fmpz_mod_poly_get_fmpz_poly (buf, poly);
311  fmpz_poly_clear (buf);
312  return b (result);
313 }

◆ convertFmpz_poly_t2FacCF()

CanonicalForm convertFmpz_poly_t2FacCF ( const fmpz_poly_t  poly,
const Variable x 
)

conversion of a FLINT poly over Z to CanonicalForm

Definition at line 101 of file FLINTconvert.cc.

102 {
104  fmpz* coeff;
105  for (int i= 0; i < fmpz_poly_length (poly); i++)
106  {
107  coeff= fmpz_poly_get_coeff_ptr (poly, i);
108  if (!fmpz_is_zero (coeff))
109  result += convertFmpz2CF (coeff)*power (x,i);
110  }
111  return result;
112 }

◆ convertFq_nmod_mat_t2FacCFMatrix()

CFMatrix* convertFq_nmod_mat_t2FacCFMatrix ( const fq_nmod_mat_t  m,
const fq_nmod_ctx_t &  fq_con,
const Variable alpha 
)

conversion of a FLINT matrix over F_q to a factory matrix

Definition at line 520 of file FLINTconvert.cc.

523 {
524  CFMatrix *res=new CFMatrix(fq_nmod_mat_nrows (m, fq_con),
525  fq_nmod_mat_ncols (m, fq_con));
526  int i,j;
527  for(i=res->rows();i>0;i--)
528  {
529  for(j=res->columns();j>0;j--)
530  {
531  (*res)(i,j)=convertFq_nmod_t2FacCF (fq_nmod_mat_entry (m, i-1, j-1),
532  alpha);
533  }
534  }
535  return res;
536 }

◆ convertFq_nmod_poly_t2FacCF()

CanonicalForm convertFq_nmod_poly_t2FacCF ( const fq_nmod_poly_t  p,
const Variable x,
const Variable alpha,
const fq_nmod_ctx_t  ctx 
)

conversion of a FLINT poly over Fq to a CanonicalForm with alg. variable alpha and polynomial variable x

Definition at line 423 of file FLINTconvert.cc.

425 {
427  fq_nmod_t coeff;
428  long n= fq_nmod_poly_length (p, ctx);
429  fq_nmod_init2 (coeff, ctx);
430  for (long i= 0; i < n; i++)
431  {
432  fq_nmod_poly_get_coeff (coeff, p, i, ctx);
433  if (fq_nmod_is_zero (coeff, ctx))
434  continue;
435  result += convertFq_nmod_t2FacCF (coeff, alpha)*power (x, i);
436  fq_nmod_zero (coeff, ctx);
437  }
438  fq_nmod_clear (coeff, ctx);
439 
440  return result;
441 }

◆ convertFq_nmod_t2FacCF()

CanonicalForm convertFq_nmod_t2FacCF ( const fq_nmod_t  poly,
const Variable alpha 
)

conversion of a FLINT element of F_q to a CanonicalForm with alg. variable alpha

Definition at line 342 of file FLINTconvert.cc.

343 {
344  return convertnmod_poly_t2FacCF (poly, alpha);
345 }

◆ convertFq_poly_t2FacCF()

CanonicalForm convertFq_poly_t2FacCF ( const fq_poly_t  p,
const Variable x,
const Variable alpha,
const fq_ctx_t  ctx 
)

conversion of a FLINT poly over Fq (for non-word size p) to a CanonicalForm with alg. variable alpha and polynomial variable x

Definition at line 402 of file FLINTconvert.cc.

404 {
406  fq_t coeff;
407  long n= fq_poly_length (p, ctx);
408  fq_init2 (coeff, ctx);
409  for (long i= 0; i < n; i++)
410  {
411  fq_poly_get_coeff (coeff, p, i, ctx);
412  if (fq_is_zero (coeff, ctx))
413  continue;
414  result += convertFq_t2FacCF (coeff, alpha)*power (x, i);
415  fq_zero (coeff, ctx);
416  }
417  fq_clear (coeff, ctx);
418 
419  return result;
420 }

◆ convertFq_t2FacCF()

CanonicalForm convertFq_t2FacCF ( const fq_t  poly,
const Variable alpha 
)

conversion of a FLINT element of F_q with non-word size p to a CanonicalForm with alg. variable alpha

Definition at line 361 of file FLINTconvert.cc.

362 {
363  return convertFmpz_poly_t2FacCF (poly, alpha);
364 }

◆ convertNmod_mat_t2FacCFMatrix()

CFMatrix* convertNmod_mat_t2FacCFMatrix ( const nmod_mat_t  m)

conversion of a FLINT matrix over Z/p to a factory matrix

Definition at line 489 of file FLINTconvert.cc.

490 {
491  CFMatrix *res=new CFMatrix(nmod_mat_nrows (m), nmod_mat_ncols (m));
492  int i,j;
493  for(i=res->rows();i>0;i--)
494  {
495  for(j=res->columns();j>0;j--)
496  {
497  (*res)(i,j)=CanonicalForm((long) nmod_mat_entry (m, i-1, j-1));
498  }
499  }
500  return res;
501 }

◆ convertnmod_poly_t2FacCF()

CanonicalForm convertnmod_poly_t2FacCF ( const nmod_poly_t  poly,
const Variable x 
)

conversion of a FLINT poly over Z/p to CanonicalForm

Definition at line 137 of file FLINTconvert.cc.

138 {
140  for (int i= 0; i < nmod_poly_length (poly); i++)
141  {
142  ulong coeff= nmod_poly_get_coeff_ui (poly, i);
143  if (coeff != 0)
144  result += CanonicalForm ((long)coeff)*power (x,i);
145  }
146  return result;
147 }
Matrix
Definition: ftmpl_matrix.h:20
MINIMMEDIATE
const long MINIMMEDIATE
Definition: imm.h:54
convertnmod_poly_t2FacCF
CanonicalForm convertnmod_poly_t2FacCF(const nmod_poly_t poly, const Variable &x)
conversion of a FLINT poly over Z/p to CanonicalForm
Definition: FLINTconvert.cc:137
SW_RATIONAL
static const int SW_RATIONAL
set to 1 for computations over Q
Definition: cf_defs.h:28
isOn
bool isOn(int sw)
switches
Definition: canonicalform.cc:1912
j
int j
Definition: facHensel.cc:105
f
FILE * f
Definition: checklibs.c:9
CFIterator
class to iterate through CanonicalForm's
Definition: cf_iter.h:44
x
Variable x
Definition: cfModGcd.cc:4023
convertFacCF2Fmpz_array
void convertFacCF2Fmpz_array(fmpz *result, const CanonicalForm &f)
Definition: FLINTconvert.cc:232
result
return result
Definition: facAbsBiFact.cc:76
convertCF2Fmpz
void convertCF2Fmpz(fmpz_t result, const CanonicalForm &f)
conversion of a factory integer to fmpz_t
Definition: FLINTconvert.cc:61
fq_con
fq_nmod_ctx_t fq_con
Definition: facHensel.cc:94
num
CanonicalForm num(const CanonicalForm &f)
Definition: canonicalform.h:330
convertFq_nmod_t2FacCF
CanonicalForm convertFq_nmod_t2FacCF(const fq_nmod_t poly, const Variable &alpha)
conversion of a FLINT element of F_q to a CanonicalForm with alg. variable alpha
Definition: FLINTconvert.cc:342
power
CanonicalForm power(const CanonicalForm &f, int n)
exponentiation
Definition: canonicalform.cc:1837
MAXIMMEDIATE
const long MAXIMMEDIATE
Definition: imm.h:55
make_cf
CanonicalForm make_cf(const mpz_ptr n)
Definition: singext.cc:66
CFMatrix
Matrix< CanonicalForm > CFMatrix
Definition: canonicalform.h:391
CanonicalForm::isImm
bool isImm() const
Definition: canonicalform.h:107
getCharacteristic
int getCharacteristic()
Definition: cf_char.cc:51
b
CanonicalForm b
Definition: cfModGcd.cc:4044
CanonicalForm
factory's main class
Definition: canonicalform.h:83
CanonicalForm::intval
long intval() const
conversion functions
Definition: canonicalform.cc:197
convertFacCF2nmod_poly_t
void convertFacCF2nmod_poly_t(nmod_poly_t result, const CanonicalForm &f)
conversion of a factory univariate polynomials over Z/p (for word size p) to nmod_poly_t
Definition: FLINTconvert.cc:115
convertFq_nmod_poly_t2FacCF
CanonicalForm convertFq_nmod_poly_t2FacCF(const fq_nmod_poly_t p, const Variable &x, const Variable &alpha, const fq_nmod_ctx_t ctx)
conversion of a FLINT poly over Fq to a CanonicalForm with alg. variable alpha and polynomial variabl...
Definition: FLINTconvert.cc:423
i
int i
Definition: cfEzgcd.cc:125
res
CanonicalForm res
Definition: facAbsFact.cc:64
ASSERT
#define ASSERT(expression, message)
Definition: cf_assert.h:99
convertFmpz2CF
CanonicalForm convertFmpz2CF(const fmpz_t coefficient)
conversion of a FLINT integer to CanonicalForm
Definition: FLINTconvert.cc:82
M
#define M
Definition: sirandom.c:24
buf
int status int void * buf
Definition: si_signals.h:59
alpha
Variable alpha
Definition: facAbsBiFact.cc:52
CFFactory::basic
static InternalCF * basic(long value)
Definition: cf_factory.cc:30
convertFacCF2Fq_nmod_t
void convertFacCF2Fq_nmod_t(fq_nmod_t result, const CanonicalForm &f, const fq_nmod_ctx_t ctx)
conversion of a factory element of F_q to a FLINT fq_nmod_t, does not do any memory allocation for po...
Definition: FLINTconvert.cc:317
tmp1
CFList tmp1
Definition: facFqBivar.cc:70
den
CanonicalForm den(const CanonicalForm &f)
Definition: canonicalform.h:333
Off
void Off(int sw)
switches
Definition: canonicalform.cc:1905
Factor
Definition: ftmpl_factor.h:18
STICKYASSERT
#define STICKYASSERT(expression, message)
Definition: cf_assert.h:64
convertFmpz_poly_t2FacCF
CanonicalForm convertFmpz_poly_t2FacCF(const fmpz_poly_t poly, const Variable &x)
conversion of a FLINT poly over Z to CanonicalForm
Definition: FLINTconvert.cc:101
bCommonDen
CanonicalForm bCommonDen(const CanonicalForm &f)
CanonicalForm bCommonDen ( const CanonicalForm & f )
Definition: cf_algorithm.cc:293
convertFmpq_t2CF
CanonicalForm convertFmpq_t2CF(const fmpq_t q)
Definition: FLINTconvert.cc:177
m
int m
Definition: cfEzgcd.cc:121
SW_SYMMETRIC_FF
static const int SW_SYMMETRIC_FF
set to 1 for symmetric representation over F_q
Definition: cf_defs.h:30
gmp_denominator
void gmp_denominator(const CanonicalForm &f, mpz_ptr result)
Definition: singext.cc:40
gmp_numerator
void gmp_numerator(const CanonicalForm &f, mpz_ptr result)
Definition: singext.cc:20
p
int p
Definition: cfModGcd.cc:4019
List
Definition: ftmpl_list.h:20
CanonicalForm::mapinto
CanonicalForm mapinto() const
Definition: canonicalform.cc:206
convertFq_t2FacCF
CanonicalForm convertFq_t2FacCF(const fq_t poly, const Variable &alpha)
conversion of a FLINT element of F_q with non-word size p to a CanonicalForm with alg....
Definition: FLINTconvert.cc:361
tmp2
CFList tmp2
Definition: facFqBivar.cc:70
convertFacCF2Fmpz_poly_t
void convertFacCF2Fmpz_poly_t(fmpz_poly_t result, const CanonicalForm &f)
conversion of a factory univariate polynomial over Z to a fmpz_poly_t
Definition: FLINTconvert.cc:74
mpz_is_imm
bool mpz_is_imm(const mpz_t mpi)
Definition: gmpext.h:19
degree
int degree(const CanonicalForm &f)
Definition: canonicalform.h:309
On
void On(int sw)
switches
Definition: canonicalform.cc:1898