My Project
Loading...
Searching...
No Matches
FLINTconvert.cc File Reference

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

#include <config.h>
#include <string.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 "int_int.h"
#include "int_rat.h"
#include <cstdio>
#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.

Macros

#define Alloc(L)
 
#define Free(A, L)
 

Functions

void convertCF2Fmpz (fmpz_t result, const CanonicalForm &f)
 conversion of a factory integer to fmpz_t
 
void convertCF2initFmpz (fmpz_t result, const CanonicalForm &f)
 conversion of a factory integer to fmpz_t(init.)
 
void convertFacCF2Fmpz_poly_t (fmpz_poly_t result, const CanonicalForm &f)
 conversion of a factory univariate polynomial over Z to a fmpz_poly_t
 
CanonicalForm convertFmpz2CF (const fmpz_t coefficient)
 conversion of a FLINT integer to CanonicalForm
 
CanonicalForm convertFmpz_poly_t2FacCF (const fmpz_poly_t poly, const Variable &x)
 conversion of a FLINT poly over Z to CanonicalForm
 
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
 
CanonicalForm convertnmod_poly_t2FacCF (const nmod_poly_t poly, const Variable &x)
 conversion of a FLINT poly over Z/p to CanonicalForm
 
void convertCF2Fmpq (fmpq_t result, const CanonicalForm &f)
 conversion of a factory rationals to fmpq_t
 
CanonicalForm convertFmpq2CF (const fmpq_t q)
 conversion of a FLINT rational to CanonicalForm
 
CanonicalForm convertFmpq_poly_t2FacCF (const fmpq_poly_t p, const Variable &x)
 conversion of a FLINT poly over Q to CanonicalForm
 
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
 
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
 
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
 
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)
 
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
 
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
 
CanonicalForm convertFq_nmod_t2FacCF (const fq_nmod_t poly, const Variable &alpha, const fq_nmod_ctx_t)
 conversion of a FLINT element of F_q to a CanonicalForm with alg. variable alpha
 
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
 
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
 
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
 
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
 
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
 
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
 
void convertFacCFMatrix2Fmpz_mat_t (fmpz_mat_t M, const CFMatrix &m)
 conversion of a factory matrix over Z to a fmpz_mat_t
 
CFMatrixconvertFmpz_mat_t2FacCFMatrix (const fmpz_mat_t m)
 conversion of a FLINT matrix over Z to a factory matrix
 
void convertFacCFMatrix2nmod_mat_t (nmod_mat_t M, const CFMatrix &m)
 conversion of a factory matrix over Z/p to a nmod_mat_t
 
CFMatrixconvertNmod_mat_t2FacCFMatrix (const nmod_mat_t m)
 conversion of a FLINT matrix over Z/p to a factory matrix
 
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
 
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
 

Detailed Description

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

Author
Martin Lee

Definition in file FLINTconvert.cc.

Macro Definition Documentation

◆ Alloc

#define Alloc ( L)
Value:
#define omAlloc(size)

Definition at line 31 of file FLINTconvert.cc.

◆ Free

#define Free ( A,
L )
Value:
#define omFreeSize(addr, size)
#define A
Definition sirandom.c:24

Definition at line 32 of file FLINTconvert.cc.

Function Documentation

◆ convertCF2Fmpq()

void convertCF2Fmpq ( fmpq_t result,
const CanonicalForm & f )

conversion of a factory rationals to fmpq_t

Parameters
result[in,out] an fmpq_t
[in]fa CanonicalForm wrapping a rational

Definition at line 220 of file FLINTconvert.cc.

221{
222 //ASSERT (isOn (SW_RATIONAL), "expected rational");
223 if (f.isImm ())
224 {
225 fmpq_set_si(result, f.intval(), 1);
226 }
227 else if(f.inQ())
228 {
229 InternalCF *fi=f.getval();
230 if (fi->levelcoeff() == RationalDomain)
231 {
232 fmpz_set_mpz(fmpq_numref(result), InternalRational::MPQNUM( fi ));
233 fmpz_set_mpz(fmpq_denref(result), InternalRational::MPQDEN( fi ));
234 }
235 else
236 {
237 mpz_t gmp_val;
238 gmp_numerator (f, gmp_val);
239 fmpz_set_mpz (fmpq_numref (result), gmp_val);
240 mpz_clear (gmp_val);
241 gmp_denominator (f, gmp_val);
242 fmpz_set_mpz (fmpq_denref (result), gmp_val);
243 mpz_clear (gmp_val);
244 }
245 fi->deleteObject();
246 }
247 else if(f.inZ()) /* and not isImm() */
248 {
249 InternalInteger *fi=(InternalInteger*)f.getval();
250 fmpz_set_mpz (fmpq_numref (result), fi->thempi);
251 fmpz_one(fmpq_denref(result));
252 fi->deleteObject();
253 }
254 else
255 {
256 printf("wrong type\n");
257 }
258}
#define RationalDomain
Definition cf_defs.h:20
FILE * f
Definition checklibs.c:9
virtual class for internal CanonicalForm's
Definition int_cf.h:47
virtual int levelcoeff() const
Definition int_cf.h:68
int deleteObject()
Definition int_cf.h:61
factory's class for integers
Definition int_int.h:56
static mpz_ptr MPQDEN(const InternalCF *const c)
Definition int_rat.h:143
static mpz_ptr MPQNUM(const InternalCF *const c)
Definition int_rat.h:138
return result
void FACTORY_PUBLIC gmp_numerator(const CanonicalForm &f, mpz_ptr result)
Definition singext.cc:20
void FACTORY_PUBLIC gmp_denominator(const CanonicalForm &f, mpz_ptr result)
Definition singext.cc:40

◆ convertCF2Fmpz()

void convertCF2Fmpz ( fmpz_t result,
const CanonicalForm & f )

conversion of a factory integer to fmpz_t

Parameters
[out]resultan fmpz_t
[in]fa CanonicalForm wrapping an integer

Definition at line 120 of file FLINTconvert.cc.

121{
122 if (f.isImm())
123 *result=f.intval();
124 else
125 {
126 fmpz_init(result);
127 InternalInteger *fi=(InternalInteger*)f.getval();
128 fmpz_set_mpz (result, fi->thempi);
129 }
130}

◆ convertCF2initFmpz()

void convertCF2initFmpz ( fmpz_t result,
const CanonicalForm & f )

conversion of a factory integer to fmpz_t(init.)

Parameters
result[in,out] an fmpz_t
[in]fa CanonicalForm wrapping an integer

Definition at line 133 of file FLINTconvert.cc.

134{
135 if (f.isImm())
136 fmpz_set_si (result, f.intval());
137 else
138 {
139 InternalInteger *fi=(InternalInteger*)f.getval();
140 mpz_set(_fmpz_promote(result),fi->thempi);
141 _fmpz_demote_val(result);
142 fi->deleteObject();
143 }
144}

◆ 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

Parameters
result[in,out] an fmpq_poly_t
[in]funivariate poly over Q

Definition at line 320 of file FLINTconvert.cc.

321{
322 bool isRat= isOn (SW_RATIONAL);
323 if (!isRat)
324 On (SW_RATIONAL);
325
326 fmpq_poly_init2 (result, degree (f)+1);
327 _fmpq_poly_set_length (result, degree (f) + 1);
329 convertFacCF2Fmpz_array (fmpq_poly_numref (result), f*den);
330 convertCF2initFmpz (fmpq_poly_denref (result), den); // assumes initialized
331
332 if (!isRat)
334}
void convertFacCF2Fmpz_array(fmpz *result, const CanonicalForm &f)
void convertCF2initFmpz(fmpz_t result, const CanonicalForm &f)
conversion of a factory integer to fmpz_t(init.)
bool isOn(int sw)
switches
void On(int sw)
switches
void Off(int sw)
switches
int degree(const CanonicalForm &f)
CanonicalForm den(const CanonicalForm &f)
CanonicalForm bCommonDen(const CanonicalForm &f)
CanonicalForm bCommonDen ( const CanonicalForm & f )
static const int SW_RATIONAL
set to 1 for computations over Q
Definition cf_defs.h:31
factory's main class

◆ convertFacCF2Fmpz_array()

void convertFacCF2Fmpz_array ( fmpz * result,
const CanonicalForm & f )

Definition at line 314 of file FLINTconvert.cc.

315{
316 for (CFIterator i= f; i.hasTerms(); i++)
317 convertCF2initFmpz (&result[i.exp()], i.coeff()); // assumes initialized
318}
int i
Definition cfEzgcd.cc:132
class to iterate through CanonicalForm's
Definition cf_iter.h:44

◆ 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)

Parameters
result[in,out] fmpz_mod_poly_t
[in]funivariate poly over Z
[in]psome integer p

Definition at line 397 of file FLINTconvert.cc.

399{
400 #if (__FLINT_RELEASE >= 20700)
401 fmpz_mod_ctx_t ctx;
402 fmpz_mod_ctx_init(ctx,p);
403 fmpz_mod_poly_init2 (result, degree (f) + 1, ctx);
404 #else
405 fmpz_mod_poly_init2 (result, p, degree (f) + 1);
406 #endif
407 fmpz_poly_t buf;
409 #if (__FLINT_RELEASE >= 20700)
410 fmpz_mod_poly_set_fmpz_poly (result, buf, ctx);
411 fmpz_mod_ctx_clear(ctx);
412 #else
413 fmpz_mod_poly_set_fmpz_poly (result, buf);
414 #endif
415 fmpz_poly_clear (buf);
416}
void convertFacCF2Fmpz_poly_t(fmpz_poly_t result, const CanonicalForm &f)
conversion of a factory univariate polynomial over Z to a fmpz_poly_t
int p
Definition cfModGcd.cc:4086
int status int void * buf
Definition si_signals.h:69

◆ 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

Parameters
result[in,out] an fmpz_poly_t
[in]funivariate poly over Z

Definition at line 146 of file FLINTconvert.cc.

147{
148 fmpz_poly_init2 (result, degree (f)+1);
149 _fmpz_poly_set_length(result, degree(f)+1);
150 for (CFIterator i= f; i.hasTerms(); i++)
151 convertCF2initFmpz (fmpz_poly_get_coeff_ptr(result, i.exp()), i.coeff()); // assumes initialized
152}

◆ 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

Parameters
result[in,out] fq_nmod_poly_t
[in]funivariate poly over Fq
[in]ctxFq context

Definition at line 526 of file FLINTconvert.cc.

528{
529 fq_nmod_poly_init2 (result, degree (f)+1, ctx);
530 _fq_nmod_poly_set_length (result, degree (f) + 1, ctx);
531 fq_nmod_t buf;
532 fq_nmod_init2 (buf, ctx);
533 for (CFIterator i= f; i.hasTerms(); i++)
534 {
535 convertFacCF2Fq_nmod_t (buf, i.coeff(), ctx);
536 fq_nmod_poly_set_coeff (result, i.exp(), buf, ctx);
537 fq_nmod_zero (buf, ctx);
538 }
539 fq_nmod_clear (buf, ctx);
540}
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...

◆ 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

Parameters
result[in,out] fq_nmod_t
[in]felement of Fq
[in]ctxFq context

Definition at line 442 of file FLINTconvert.cc.

444{
445 bool save_sym_ff= isOn (SW_SYMMETRIC_FF);
446 if (save_sym_ff) Off (SW_SYMMETRIC_FF);
447 #if __FLINT_RELEASE >= 20503
448 nmod_poly_t res;
450 #endif
451 for (CFIterator i= f; i.hasTerms(); i++)
452 {
453 CanonicalForm c= i.coeff();
454 if (!c.isImm()) c=c.mapinto(); //c%= getCharacteristic();
455 if (!c.isImm())
456 { //This case will never happen if the characteristic is in fact a prime
457 // number, since all coefficients are represented as immediates
458 printf("convertFacCF2Fq_nmod_t: coefficient not immediate!, char=%d\n",
460 }
461 else
462 {
463 STICKYASSERT (i.exp() <= fq_nmod_ctx_degree(ctx), "convertFacCF2Fq_nmod_t: element is not reduced");
464 #if __FLINT_RELEASE >= 20503
465 nmod_poly_set_coeff_ui (res, i.exp(), c.intval());
466 #else
467 nmod_poly_set_coeff_ui (result, i.exp(), c.intval());
468 #endif
469 }
470 }
471 #if __FLINT_RELEASE >= 20503
472 fq_nmod_init(result,ctx);
473 fq_nmod_set_nmod_poly(result,res,ctx);
474 #endif
475 if (save_sym_ff) On (SW_SYMMETRIC_FF);
476}
int FACTORY_PUBLIC getCharacteristic()
Definition cf_char.cc:70
#define STICKYASSERT(expression, message)
Definition cf_assert.h:64
static const int SW_SYMMETRIC_FF
set to 1 for symmetric representation over F_q
Definition cf_defs.h:33
long intval() const
conversion functions
bool isImm() const
CanonicalForm mapinto() const
CanonicalForm res
Definition facAbsFact.cc:60
nmod_poly_init(FLINTmipo, getCharacteristic())

◆ 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

Parameters
result[in,out] fq_poly_t
[in]funivariate poly over Fq
[in]ctxFq context

Definition at line 509 of file FLINTconvert.cc.

511{
512 fq_poly_init2 (result, degree (f)+1, ctx);
513
514 _fq_poly_set_length (result, degree (f) + 1, ctx);
515
516 for (CFIterator i= f; i.hasTerms(); i++)
517 {
518 fq_t buf;
519 convertFacCF2Fq_t (buf, i.coeff(), ctx);
520 fq_poly_set_coeff (result, i.exp(), buf, ctx);
521 fq_clear (buf, ctx);
522 }
523}
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

◆ 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

Parameters
result[in,out] fq_t
[in]felement of Fq
[in]ctxFq context

Definition at line 485 of file FLINTconvert.cc.

486{
487 fmpz_poly_init2 (result, fq_ctx_degree(ctx));
488 _fmpz_poly_set_length(result, fq_ctx_degree(ctx));
489
490 for (CFIterator i= f; i.hasTerms(); i++)
491 {
492 ASSERT(i.exp() < result->length, "input is not reduced");
493 convertCF2initFmpz (fmpz_poly_get_coeff_ptr(result, i.exp()), i.coeff()); // assumes initialized
494 }
495
496 _fmpz_vec_scalar_mod_fmpz (result->coeffs, result->coeffs, result->length,
497 fq_ctx_prime(ctx));
498
499 _fmpz_poly_normalise (result);
500}
#define ASSERT(expression, message)
Definition cf_assert.h:99

◆ 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

Parameters
result[in, out] a nmod_poly_t
[in]funivariate poly over Z/p

Definition at line 186 of file FLINTconvert.cc.

187{
188 bool save_sym_ff= isOn(SW_SYMMETRIC_FF);
189 if (save_sym_ff) Off(SW_SYMMETRIC_FF);
190 nmod_poly_init2(result, getCharacteristic(), degree (f)+1);
191 for (CFIterator i= f; i.hasTerms(); i++)
192 {
193 CanonicalForm c= i.coeff();
194 if (!c.isImm()) c=c.mapinto(); //c%= getCharacteristic();
195 if (!c.isImm())
196 { //This case will never happen if the characteristic is in fact a prime
197 // number, since all coefficients are represented as immediates
198 printf("convertCF2nmod_poly_t: coefficient not immediate!, char=%d\n",
200 }
201 else
202 nmod_poly_set_coeff_ui (result, i.exp(), c.intval());
203 }
204 if (save_sym_ff) On(SW_SYMMETRIC_FF);
205}

◆ 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

Parameters
M[in,out] fmpz_mat_t
[in]mmatrix over Z

Definition at line 585 of file FLINTconvert.cc.

586{
587 fmpz_mat_init (M, (long) m.rows(), (long) m.columns());
588
589 int i,j;
590 for(i=m.rows();i>0;i--)
591 {
592 for(j=m.columns();j>0;j--)
593 {
594 convertCF2initFmpz (fmpz_mat_entry (M,i-1,j-1), m(i,j)); // assumes initialized
595 }
596 }
597}
int m
Definition cfEzgcd.cc:128
int j
Definition facHensel.cc:110
#define M
Definition sirandom.c:25

◆ 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

Parameters
M[in, out] fq_nmod_mat_t
[in]fq_conFq context
[in]mmatrix over Fq

Definition at line 646 of file FLINTconvert.cc.

648{
649 fq_nmod_mat_init (M, (long) m.rows(), (long) m.columns(), fq_con);
650 int i,j;
651 for(i=m.rows();i>0;i--)
652 {
653 for(j=m.columns();j>0;j--)
654 {
655 convertFacCF2nmod_poly_t (M->rows[i-1]+j-1, m (i,j));
656 }
657 }
658}
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
fq_nmod_ctx_t fq_con
Definition facHensel.cc:99

◆ 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

Parameters
M[in,out] nmod_mat_t
[in]mmatrix over Z/p

Definition at line 612 of file FLINTconvert.cc.

613{
614 nmod_mat_init (M, (long) m.rows(), (long) m.columns(), getCharacteristic());
615
616 bool save_sym_ff= isOn (SW_SYMMETRIC_FF);
617 if (save_sym_ff) Off (SW_SYMMETRIC_FF);
618 int i,j;
619 for(i=m.rows();i>0;i--)
620 {
621 for(j=m.columns();j>0;j--)
622 {
623 if(!(m(i,j)).isImm()) printf("convertFacCFMatrix2FLINTmat_zz_p: not imm.\n");
624 nmod_mat_entry (M,i-1,j-1)= (m(i,j)).intval();
625 }
626 }
627 if (save_sym_ff) On (SW_SYMMETRIC_FF);
628}

◆ 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

Parameters
[in]facfq_nmod_poly_factor_t
[in]xpolynomial variable
[in]alphaalgebraic variable
[in]fq_conFq context

Definition at line 379 of file FLINTconvert.cc.

383{
385
386 long i;
387
388 for (i = 0; i < fac->num; i++)
390 (fq_nmod_poly_t &)fac->poly[i], x, alpha, fq_con),
391 fac->exp[i]));
392 return result;
393}
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...
List< CFFactor > CFFList
Factor< CanonicalForm > CFFactor
Variable x
Definition cfModGcd.cc:4090
Variable alpha

◆ 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

Parameters
[in]faca nmod_poly_factor_t
[in]leadingCoeffleading coefficient
[in]xvariable the result should have

Definition at line 337 of file FLINTconvert.cc.

341{
343 if (leadingCoeff != 1)
344 result.insert (CFFactor (CanonicalForm ((long) leadingCoeff), 1));
345
346 long i;
347
348 for (i = 0; i < fac->num; i++)
350 (nmod_poly_t &)fac->p[i],x),
351 fac->exp[i]));
352 return result;
353}
CanonicalForm convertnmod_poly_t2FacCF(const nmod_poly_t poly, const Variable &x)
conversion of a FLINT poly over Z/p to CanonicalForm

◆ convertFmpq2CF()

CanonicalForm convertFmpq2CF ( const fmpq_t q)

conversion of a FLINT rational to CanonicalForm

Definition at line 260 of file FLINTconvert.cc.

261{
262 bool isRat= isOn (SW_RATIONAL);
263 if (!isRat) On (SW_RATIONAL);
265 if (fmpz_is_one(fmpq_denref(q)))
266 {
267 if (fmpz_fits_si(fmpq_numref(q)))
268 {
269 long i=fmpz_get_si(fmpq_numref(q));
270 if (!isRat) Off (SW_RATIONAL);
271 return CanonicalForm(i);
272 }
273 mpz_t nnum;
274 mpz_init (nnum);
275 fmpz_get_mpz (nnum, fmpq_numref (q));
277 if (!isRat) Off (SW_RATIONAL);
278 return result;
279 }
280
282 mpz_t nnum, nden;
283 mpz_init (nnum);
284 mpz_init (nden);
285 fmpz_get_mpz (nnum, fmpq_numref (q));
286 fmpz_get_mpz (nden, fmpq_denref (q));
287
288 result= CanonicalForm( CFFactory::rational( nnum, nden, false));
289 if (!isRat) Off (SW_RATIONAL);
290 return result;
291}
CanonicalForm num(const CanonicalForm &f)
static InternalCF * basic(int value)
Definition cf_factory.cc:61
static InternalCF * rational(long num, long den)

◆ convertFmpq_poly_t2FacCF()

CanonicalForm convertFmpq_poly_t2FacCF ( const fmpq_poly_t p,
const Variable & x )

conversion of a FLINT poly over Q to CanonicalForm

Parameters
[in]pan fmpq_poly_t
[in]xvariable the result should have

Definition at line 294 of file FLINTconvert.cc.

295{
297 fmpq_t coeff;
298 long n= p->length;
299 for (long i= 0; i < n; i++)
300 {
301 fmpq_init (coeff);
302 fmpq_poly_get_coeff_fmpq (coeff, p, i);
303 if (fmpq_is_zero (coeff))
304 {
305 fmpq_clear (coeff);
306 continue;
307 }
308 result += convertFmpq2CF (coeff)*power (x, i);
309 fmpq_clear (coeff);
310 }
311 return result;
312}
CanonicalForm convertFmpq2CF(const fmpq_t q)
conversion of a FLINT rational to CanonicalForm
CanonicalForm power(const CanonicalForm &f, int n)
exponentiation

◆ convertFmpz2CF()

CanonicalForm convertFmpz2CF ( const fmpz_t coefficient)

conversion of a FLINT integer to CanonicalForm

Parameters
[in]coefficienta FLINT integer

Definition at line 154 of file FLINTconvert.cc.

155{
156 if(!COEFF_IS_MPZ(*coefficient))
157 {
158 long coeff= fmpz_get_si(coefficient);
159 return CanonicalForm(coeff);
160 }
161 else
162 {
163 mpz_t gmp_val;
164 mpz_init(gmp_val);
165 fmpz_get_mpz(gmp_val, coefficient);
167 return result;
168 }
169}

◆ convertFmpz_mat_t2FacCFMatrix()

CFMatrix * convertFmpz_mat_t2FacCFMatrix ( const fmpz_mat_t m)

conversion of a FLINT matrix over Z to a factory matrix

Parameters
[in]mfmpz_mat_t

Definition at line 598 of file FLINTconvert.cc.

599{
600 CFMatrix *res=new CFMatrix(fmpz_mat_nrows (m),fmpz_mat_ncols (m));
601 int i,j;
602 for(i=res->rows();i>0;i--)
603 {
604 for(j=res->columns();j>0;j--)
605 {
606 (*res)(i,j)=convertFmpz2CF(fmpz_mat_entry (m,i-1,j-1));
607 }
608 }
609 return res;
610}
CanonicalForm convertFmpz2CF(const fmpz_t coefficient)
conversion of a FLINT integer to CanonicalForm
Matrix< CanonicalForm > CFMatrix

◆ 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

Parameters
[in]polyfmpz_mod_poly_t
[in]xvariable the result should have
[in]bcoeff bound to map coeffs in (-p/2,p/2)

Definition at line 419 of file FLINTconvert.cc.

421{
422 fmpz_poly_t buf;
423 fmpz_poly_init (buf);
424 #if (__FLINT_RELEASE >= 20700)
425 fmpz_t FLINTp;
426 fmpz_init (FLINTp);
427 convertCF2initFmpz (FLINTp, b.getpk()); // assumes initialized
428 fmpz_mod_ctx_t ctx;
429 fmpz_mod_ctx_init(ctx,FLINTp);
430 fmpz_clear(FLINTp);
431 fmpz_mod_poly_get_fmpz_poly (buf, poly, ctx);
432 #else
433 fmpz_mod_poly_get_fmpz_poly (buf, poly);
434 #endif
436 fmpz_poly_clear (buf);
437 return b (result);
438}
CanonicalForm convertFmpz_poly_t2FacCF(const fmpz_poly_t poly, const Variable &x)
conversion of a FLINT poly over Z to CanonicalForm
CanonicalForm b
Definition cfModGcd.cc:4111

◆ convertFmpz_poly_t2FacCF()

CanonicalForm convertFmpz_poly_t2FacCF ( const fmpz_poly_t poly,
const Variable & x )

conversion of a FLINT poly over Z to CanonicalForm

Parameters
[in]polyan fmpz_poly_t
[in]xvariable the result should have

Definition at line 172 of file FLINTconvert.cc.

173{
175 fmpz* coeff;
176 for (int i= 0; i < fmpz_poly_length (poly); i++)
177 {
178 coeff= fmpz_poly_get_coeff_ptr(poly, i);
179 if (!fmpz_is_zero(coeff))
180 result += convertFmpz2CF(coeff)*power (x,i);
181 }
182 return result;
183}

◆ 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

Parameters
[in]mfq_nmod_mat_t
[in]fq_conFq context
[in]alphaalgebraic variable

Definition at line 661 of file FLINTconvert.cc.

664{
665 CFMatrix *res=new CFMatrix(fq_nmod_mat_nrows (m, fq_con),
666 fq_nmod_mat_ncols (m, fq_con));
667 int i,j;
668 for(i=res->rows();i>0;i--)
669 {
670 for(j=res->columns();j>0;j--)
671 {
672 (*res)(i,j)=convertFq_nmod_t2FacCF (fq_nmod_mat_entry (m, i-1, j-1),
673 alpha, fq_con);
674 }
675 }
676 return res;
677}
CanonicalForm convertFq_nmod_t2FacCF(const fq_nmod_t poly, const Variable &alpha, const fq_nmod_ctx_t)
conversion of a FLINT element of F_q to a CanonicalForm with alg. variable alpha

◆ 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

Parameters
[in]pfq_nmod_poly_t
[in]xpolynomial var.
[in]alphaalgebraic var.
[in]ctxFq context

Definition at line 564 of file FLINTconvert.cc.

566{
568 fq_nmod_t coeff;
569 long n= fq_nmod_poly_length (p, ctx);
570 fq_nmod_init2 (coeff, ctx);
571 for (long i= 0; i < n; i++)
572 {
573 fq_nmod_poly_get_coeff (coeff, p, i, ctx);
574 if (fq_nmod_is_zero (coeff, ctx))
575 continue;
576 result += convertFq_nmod_t2FacCF (coeff, alpha, ctx)*power (x, i);
577 fq_nmod_zero (coeff, ctx);
578 }
579 fq_nmod_clear (coeff, ctx);
580
581 return result;
582}

◆ convertFq_nmod_t2FacCF()

CanonicalForm convertFq_nmod_t2FacCF ( const fq_nmod_t poly,
const Variable & alpha,
const fq_nmod_ctx_t ctx )

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

Parameters
[in]polyfq_nmod_t
[in]alphaalgebraic variable
[in]ctxcontext

Definition at line 479 of file FLINTconvert.cc.

480{
481 return convertnmod_poly_t2FacCF (poly, alpha);
482}

◆ 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

Parameters
[in]pfq_poly_t
[in]xpolynomial variable
[in]alphaalgebraic variable
[in]ctxFq context

Definition at line 543 of file FLINTconvert.cc.

545{
547 fq_t coeff;
548 long n= fq_poly_length (p, ctx);
549 fq_init2 (coeff, ctx);
550 for (long i= 0; i < n; i++)
551 {
552 fq_poly_get_coeff (coeff, p, i, ctx);
553 if (fq_is_zero (coeff, ctx))
554 continue;
555 result += convertFq_t2FacCF (coeff, alpha)*power (x, i);
556 fq_zero (coeff, ctx);
557 }
558 fq_clear (coeff, ctx);
559
560 return result;
561}
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....

◆ 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

Parameters
[in]polyfq_t
[in]alphaalgebraic variable

Definition at line 503 of file FLINTconvert.cc.

504{
505 return convertFmpz_poly_t2FacCF (poly, alpha);
506}

◆ convertNmod_mat_t2FacCFMatrix()

CFMatrix * convertNmod_mat_t2FacCFMatrix ( const nmod_mat_t m)

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

Parameters
[in]mnmod_mat_t

Definition at line 630 of file FLINTconvert.cc.

631{
632 CFMatrix *res=new CFMatrix(nmod_mat_nrows (m), nmod_mat_ncols (m));
633 int i,j;
634 for(i=res->rows();i>0;i--)
635 {
636 for(j=res->columns();j>0;j--)
637 {
638 (*res)(i,j)=CanonicalForm((long) nmod_mat_entry (m, i-1, j-1));
639 }
640 }
641 return res;
642}

◆ 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

Parameters
[in]polya nmod_poly_t
[in]xvariable the result should have

Definition at line 208 of file FLINTconvert.cc.

209{
211 for (int i= 0; i < nmod_poly_length(poly); i++)
212 {
213 ulong coeff= nmod_poly_get_coeff_ui(poly, i);
214 if (coeff != 0)
215 result += CanonicalForm ((long)coeff)*power (x,i);
216 }
217 return result;
218}