31#define Alloc(L) omAlloc(L)
32#define Free(A,L) omFreeSize(A,L)
34#define Alloc(L) malloc(L)
35#define Free(A,L) free(A)
48#ifndef __GMP_BITS_PER_MP_LIMB
49#define __GMP_BITS_PER_MP_LIMB GMP_LIMB_BITS
51#include <flint/fmpz.h>
52#include <flint/fmpq.h>
53#include <flint/fmpz_poly.h>
54#include <flint/fmpz_mod_poly.h>
55#include <flint/nmod_poly.h>
56#include <flint/fmpq_poly.h>
57#include <flint/nmod_mat.h>
58#include <flint/fmpz_mat.h>
59#if ( __FLINT_RELEASE >= 20400)
61#include <flint/fq_poly.h>
62#include <flint/fq_nmod.h>
63#include <flint/fq_nmod_poly.h>
64#include <flint/fq_nmod_mat.h>
66#if ( __FLINT_RELEASE >= 20503)
67#include <flint/fmpq_mpoly.h>
68#include <flint/fmpz_mod.h>
71#if (__FLINT_RELEASE < 20700)
73static void fq_nmod_get_nmod_poly(nmod_poly_t a,
const fq_nmod_t
b,
const fq_nmod_ctx_t ctx)
75 FLINT_ASSERT(
b->mod.n == ctx->modulus->mod.n);
76 a->mod = ctx->modulus->mod;
80#include <flint/fq_nmod_mpoly.h>
83#if (__FLINT_RELEASE < 20700)
85void fq_nmod_set_nmod_poly(fq_nmod_t a,
const nmod_poly_t
b,
const fq_nmod_ctx_t ctx)
87 FLINT_ASSERT(a->mod.n ==
b->mod.n);
88 FLINT_ASSERT(a->mod.n == ctx->modulus->mod.n);
90 fq_nmod_reduce(a, ctx);
92#elif (__FLINT_RELEASE < 30000)
93void fq_nmod_set_nmod_poly(fq_nmod_t a,
const nmod_poly_t
b,
94 const fq_nmod_ctx_t ctx)
96 FLINT_ASSERT(a->mod.n ==
b->mod.n);
97 FLINT_ASSERT(a->mod.n == ctx->modulus->mod.n);
99 if (
b->length <= 2*(ctx->modulus->length - 1))
102 fq_nmod_reduce(a, ctx);
106 nmod_poly_rem(a,
b, ctx->modulus);
136 fmpz_set_si (
result,
f.intval());
156 if(!COEFF_IS_MPZ(*coefficient))
158 long coeff= fmpz_get_si(coefficient);
165 fmpz_get_mpz(gmp_val, coefficient);
176 for (
int i= 0;
i < fmpz_poly_length (poly);
i++)
178 coeff= fmpz_poly_get_coeff_ptr(poly,
i);
179 if (!fmpz_is_zero(coeff))
198 printf(
"convertCF2nmod_poly_t: coefficient not immediate!, char=%d\n",
211 for (
int i= 0;
i < nmod_poly_length(poly);
i++)
213 ulong coeff= nmod_poly_get_coeff_ui(poly,
i);
225 fmpq_set_si(
result,
f.intval(), 1);
239 fmpz_set_mpz (fmpq_numref (
result), gmp_val);
242 fmpz_set_mpz (fmpq_denref (
result), gmp_val);
251 fmpz_one(fmpq_denref(
result));
256 printf(
"wrong type\n");
265 if (fmpz_is_one(fmpq_denref(q)))
267 if (fmpz_fits_si(fmpq_numref(q)))
269 long i=fmpz_get_si(fmpq_numref(q));
275 fmpz_get_mpz (nnum, fmpq_numref (q));
285 fmpz_get_mpz (nnum, fmpq_numref (q));
286 fmpz_get_mpz (nden, fmpq_denref (q));
299 for (
long i= 0;
i < n;
i++)
302 fmpq_poly_get_coeff_fmpq (coeff,
p,
i);
303 if (fmpq_is_zero (coeff))
338 const mp_limb_t leadingCoeff,
343 if (leadingCoeff != 1)
348 for (
i = 0;
i < fac->num;
i++)
350 (nmod_poly_t &)fac->p[
i],
x),
355#if __FLINT_RELEASE >= 20503
358 const fmpz_poly_factor_t fac,
369 for (
i = 0;
i < fac->num;
i++)
371 (fmpz_poly_t &)fac->p[
i],
x),
377#if __FLINT_RELEASE >= 20400
381 const fq_nmod_ctx_t
fq_con
388 for (
i = 0;
i < fac->num;
i++)
400 #if (__FLINT_RELEASE >= 20700)
402 fmpz_mod_ctx_init(ctx,
p);
409 #if (__FLINT_RELEASE >= 20700)
410 fmpz_mod_poly_set_fmpz_poly (
result,
buf, ctx);
411 fmpz_mod_ctx_clear(ctx);
413 fmpz_mod_poly_set_fmpz_poly (
result,
buf);
415 fmpz_poly_clear (
buf);
423 fmpz_poly_init (
buf);
424 #if (__FLINT_RELEASE >= 20700)
429 fmpz_mod_ctx_init(ctx,FLINTp);
431 fmpz_mod_poly_get_fmpz_poly (
buf, poly, ctx);
433 fmpz_mod_poly_get_fmpz_poly (
buf, poly);
436 fmpz_poly_clear (
buf);
440#if __FLINT_RELEASE >= 20400
443 const fq_nmod_ctx_t ctx)
447 #if __FLINT_RELEASE >= 20503
458 printf(
"convertFacCF2Fq_nmod_t: coefficient not immediate!, char=%d\n",
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());
471 #if __FLINT_RELEASE >= 20503
487 fmpz_poly_init2 (
result, fq_ctx_degree(ctx));
488 _fmpz_poly_set_length(
result, fq_ctx_degree(ctx));
499 _fmpz_poly_normalise (
result);
520 fq_poly_set_coeff (
result,
i.exp(),
buf, ctx);
527 const fq_nmod_ctx_t ctx)
532 fq_nmod_init2 (
buf, ctx);
536 fq_nmod_poly_set_coeff (
result,
i.exp(),
buf, ctx);
537 fq_nmod_zero (
buf, ctx);
539 fq_nmod_clear (
buf, ctx);
548 long n= fq_poly_length (
p, ctx);
549 fq_init2 (coeff, ctx);
550 for (
long i= 0;
i < n;
i++)
552 fq_poly_get_coeff (coeff,
p,
i, ctx);
553 if (fq_is_zero (coeff, ctx))
556 fq_zero (coeff, ctx);
558 fq_clear (coeff, ctx);
569 long n= fq_nmod_poly_length (
p, ctx);
570 fq_nmod_init2 (coeff, ctx);
571 for (
long i= 0;
i < n;
i++)
573 fq_nmod_poly_get_coeff (coeff,
p,
i, ctx);
574 if (fq_nmod_is_zero (coeff, ctx))
577 fq_nmod_zero (coeff, ctx);
579 fq_nmod_clear (coeff, ctx);
587 fmpz_mat_init (
M, (
long)
m.rows(), (
long)
m.columns());
590 for(
i=
m.rows();
i>0;
i--)
592 for(
j=
m.columns();
j>0;
j--)
602 for(
i=
res->rows();
i>0;
i--)
604 for(
j=
res->columns();
j>0;
j--)
619 for(
i=
m.rows();
i>0;
i--)
621 for(
j=
m.columns();
j>0;
j--)
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();
634 for(
i=
res->rows();
i>0;
i--)
636 for(
j=
res->columns();
j>0;
j--)
644#if __FLINT_RELEASE >= 20400
649 fq_nmod_mat_init (
M, (
long)
m.rows(), (
long)
m.columns(),
fq_con);
651 for(
i=
m.rows();
i>0;
i--)
653 for(
j=
m.columns();
j>0;
j--)
662 const fq_nmod_ctx_t&
fq_con,
666 fq_nmod_mat_ncols (
m,
fq_con));
668 for(
i=
res->rows();
i>0;
i--)
670 for(
j=
res->columns();
j>0;
j--)
679#if __FLINT_RELEASE >= 20503
680static void convFlint_RecPP (
const CanonicalForm &
f, ulong *
exp, nmod_mpoly_t
result, nmod_mpoly_ctx_t ctx,
int N )
683 if ( !
f.inCoeffDomain() )
696 nmod_mpoly_push_term_ui_ui(
result,c,
exp,ctx);
700static void convFlint_RecPP (
const CanonicalForm &
f, ulong *
exp, fmpq_mpoly_t
result, fmpq_mpoly_ctx_t ctx,
int N )
703 if ( !
f.inBaseDomain() )
718 fmpq_mpoly_push_term_fmpq_ui(
result,c,
exp,ctx);
723static void convFlint_RecPP (
const CanonicalForm &
f, ulong *
exp, fmpz_mpoly_t
result, fmpz_mpoly_ctx_t ctx,
int N )
726 if ( !
f.inBaseDomain() )
741 fmpz_mpoly_push_term_fmpz_ui(
result,c,
exp,ctx);
746#if __FLINT_RELEASE >= 20700
747static void convFlint_RecPP (
const CanonicalForm &
f, ulong *
exp, fq_nmod_mpoly_t
result,
const fq_nmod_mpoly_ctx_t ctx,
int N,
const fq_nmod_ctx_t fq_ctx )
750 if ( !
f.inCoeffDomain() )
756 convFlint_RecPP(
i.coeff(),
exp,
result, ctx,
N, fq_ctx );
764 fq_nmod_mpoly_push_term_fq_nmod_ui(
result,c,
exp,ctx);
769void convFactoryPFlintMP (
const CanonicalForm &
f, nmod_mpoly_t
res, nmod_mpoly_ctx_t ctx,
int N )
771 if (
f.isZero())
return;
772 ulong *
exp = (ulong*)
Alloc(
N*
sizeof(ulong));
773 memset(
exp,0,
N*
sizeof(ulong));
776 convFlint_RecPP(
f,
exp,
res, ctx,
N );
781void convFactoryPFlintMP (
const CanonicalForm &
f, fmpq_mpoly_t
res, fmpq_mpoly_ctx_t ctx,
int N )
783 if (
f.isZero())
return;
784 ulong *
exp = (ulong*)
Alloc(
N*
sizeof(ulong));
785 memset(
exp,0,
N*
sizeof(ulong));
786 convFlint_RecPP(
f,
exp,
res, ctx,
N );
787 fmpq_mpoly_reduce(
res,ctx);
791void convFactoryPFlintMP (
const CanonicalForm &
f, fmpz_mpoly_t
res, fmpz_mpoly_ctx_t ctx,
int N )
793 if (
f.isZero())
return;
794 ulong *
exp = (ulong*)
Alloc(
N*
sizeof(ulong));
795 memset(
exp,0,
N*
sizeof(ulong));
796 convFlint_RecPP(
f,
exp,
res, ctx,
N );
801#if __FLINT_RELEASE >= 20700
802void convFactoryPFlintMP (
const CanonicalForm &
f, fq_nmod_mpoly_t
res, fq_nmod_mpoly_ctx_t ctx,
int N, fq_nmod_ctx_t fq_ctx )
804 if (
f.isZero())
return;
805 ulong *
exp = (ulong*)
Alloc(
N*
sizeof(ulong));
806 memset(
exp,0,
N*
sizeof(ulong));
809 convFlint_RecPP(
f,
exp,
res, ctx,
N, fq_ctx );
815CanonicalForm convFlintMPFactoryP(nmod_mpoly_t
f, nmod_mpoly_ctx_t ctx,
int N)
818 int d=nmod_mpoly_length(
f,ctx)-1;
819 ulong*
exp=(ulong*)
Alloc(
N*
sizeof(ulong));
820 for(
int i=d;
i>=0;
i--)
822 ulong c=nmod_mpoly_get_term_coeff_ui(
f,
i,ctx);
823 nmod_mpoly_get_term_exp_ui(
exp,
f,
i,ctx);
825 for (
int i = 0;
i <
N;
i++ )
835CanonicalForm convFlintMPFactoryP(fmpq_mpoly_t
f, fmpq_mpoly_ctx_t ctx,
int N)
838 int d=fmpq_mpoly_length(
f,ctx)-1;
839 ulong*
exp=(ulong*)
Alloc(
N*
sizeof(ulong));
842 for(
int i=d;
i>=0;
i--)
844 fmpq_mpoly_get_term_coeff_fmpq(c,
f,
i,ctx);
845 fmpq_mpoly_get_term_exp_ui(
exp,
f,
i,ctx);
847 for (
int i = 0;
i <
N;
i++ )
858CanonicalForm convFlintMPFactoryP(fmpz_mpoly_t
f, fmpz_mpoly_ctx_t ctx,
int N)
861 int d=fmpz_mpoly_length(
f,ctx)-1;
862 ulong*
exp=(ulong*)
Alloc(
N*
sizeof(ulong));
865 for(
int i=d;
i>=0;
i--)
867 fmpz_mpoly_get_term_coeff_fmpz(c,
f,
i,ctx);
868 fmpz_mpoly_get_term_exp_ui(
exp,
f,
i,ctx);
870 for (
int i = 0;
i <
N;
i++ )
885 nmod_mpoly_ctx_t ctx;
887 nmod_mpoly_t
f,
g,
res;
888 nmod_mpoly_init3(
f,lF,bits,ctx);
889 nmod_mpoly_init3(
g,lG,bits,ctx);
890 convFactoryPFlintMP(F,
f,ctx,
N);
891 convFactoryPFlintMP(
G,
g,ctx,
N);
892 nmod_mpoly_init(
res,ctx);
893 nmod_mpoly_mul(
res,
f,
g,ctx);
894 nmod_mpoly_clear(
g,ctx);
895 nmod_mpoly_clear(
f,ctx);
897 nmod_mpoly_clear(
res,ctx);
898 nmod_mpoly_ctx_clear(ctx);
906 fmpq_mpoly_ctx_t ctx;
907 fmpq_mpoly_ctx_init(ctx,
N,ORD_LEX);
908 fmpq_mpoly_t
f,
g,
res;
909 fmpq_mpoly_init3(
f,lF,bits,ctx);
910 fmpq_mpoly_init3(
g,lG,bits,ctx);
911 convFactoryPFlintMP(F,
f,ctx,
N);
912 convFactoryPFlintMP(
G,
g,ctx,
N);
913 fmpq_mpoly_init(
res,ctx);
914 fmpq_mpoly_mul(
res,
f,
g,ctx);
915 fmpq_mpoly_clear(
g,ctx);
916 fmpq_mpoly_clear(
f,ctx);
918 fmpq_mpoly_clear(
res,ctx);
919 fmpq_mpoly_ctx_clear(ctx);
926 int lf,lg,
m=1<<MPOLY_MIN_BITS;
930 nmod_mpoly_ctx_t ctx;
932 nmod_mpoly_t
f,
g,
res;
933 nmod_mpoly_init3(
f,lf,bits,ctx);
934 nmod_mpoly_init3(
g,lg,bits,ctx);
935 convFactoryPFlintMP(F,
f,ctx,
N);
936 convFactoryPFlintMP(
G,
g,ctx,
N);
937 nmod_mpoly_init(
res,ctx);
938 int ok=nmod_mpoly_gcd(
res,
f,
g,ctx);
939 nmod_mpoly_clear(
g,ctx);
940 nmod_mpoly_clear(
f,ctx);
944 RES=convFlintMPFactoryP(
res,ctx,
N);
946 nmod_mpoly_clear(
res,ctx);
947 nmod_mpoly_ctx_clear(ctx);
953 if (
f.inCoeffDomain() )
959 for (
i =
f;
i.hasTerms() && (!
result.isOne());
i++ )
969 fmpq_mpoly_ctx_t ctx;
970 fmpq_mpoly_ctx_init(ctx,
N,ORD_LEX);
971 fmpq_mpoly_t
f,
g,
res;
972 fmpq_mpoly_init(
f,ctx);
973 fmpq_mpoly_init(
g,ctx);
974 convFactoryPFlintMP(F,
f,ctx,
N);
975 convFactoryPFlintMP(
G,
g,ctx,
N);
976 fmpq_mpoly_init(
res,ctx);
977 int ok=fmpq_mpoly_gcd(
res,
f,
g,ctx);
978 fmpq_mpoly_clear(
g,ctx);
979 fmpq_mpoly_clear(
f,ctx);
985 if (!fmpq_mpoly_is_zero(
res, ctx))
993 RES=convFlintMPFactoryP(
res,ctx,
N);
995 RES*=
bgcd(b_content(F),b_content(
G));
997 fmpq_mpoly_clear(
res,ctx);
998 fmpq_mpoly_ctx_clear(ctx);
1004#if __FLINT_RELEASE >= 20700
1006convertFLINTFq_nmod_mpoly_factor2FacCFFList (
1007 fq_nmod_mpoly_factor_t fac,
1008 const fq_nmod_mpoly_ctx_t& ctx,
1010 const fq_nmod_ctx_t& fq_ctx,
1018 fq_nmod_init(c,fq_ctx);
1019 fq_nmod_mpoly_factor_get_constant_fq_nmod(c,fac,ctx);
1021 fq_nmod_clear(c,fq_ctx);
1024 fq_nmod_mpoly_init(
p,ctx);
1026 for (
i = 0;
i < fac->num;
i++)
1028 fq_nmod_mpoly_factor_get_base(
p,fac,
i,ctx);
1029 exp=fq_nmod_mpoly_factor_get_exp_si(fac,
i,ctx);
1033 fq_nmod_mpoly_clear(
p,ctx);
1038convertFacCF2Fq_nmod_mpoly_t (fq_nmod_mpoly_t
result,
1040 const fq_nmod_mpoly_ctx_t ctx,
1042 const fq_nmod_ctx_t fq_ctx
1045 if (
f.isZero())
return;
1046 ulong *
exp = (ulong*)
Alloc(
N*
sizeof(ulong));
1047 memset(
exp,0,
N*
sizeof(ulong));
1048 convFlint_RecPP(
f,
exp,
result, ctx,
N, fq_ctx );
1053convertFq_nmod_mpoly_t2FacCF (
const fq_nmod_mpoly_t
f,
1054 const fq_nmod_mpoly_ctx_t& ctx,
1056 const fq_nmod_ctx_t& fq_ctx,
1060 int d=fq_nmod_mpoly_length(
f,ctx)-1;
1061 ulong*
exp=(ulong*)
Alloc(
N*
sizeof(ulong));
1063 fq_nmod_init(c,fq_ctx);
1064 for(
int i=d;
i>=0;
i--)
1066 fq_nmod_mpoly_get_term_coeff_fq_nmod(c,
f,
i,ctx);
1067 fq_nmod_mpoly_get_term_exp_ui(
exp,
f,
i,ctx);
1069 for (
int i = 0;
i <
N;
i++ )
void convertFacCFMatrix2Fmpz_mat_t(fmpz_mat_t M, const CFMatrix &m)
conversion of a factory matrix over Z to a fmpz_mat_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....
CFMatrix * convertFmpz_mat_t2FacCFMatrix(const fmpz_mat_t m)
conversion of a FLINT matrix over Z to a factory matrix
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
CFMatrix * convertNmod_mat_t2FacCFMatrix(const nmod_mat_t m)
conversion of a FLINT matrix over Z/p 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
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...
CanonicalForm convertFmpz2CF(const fmpz_t coefficient)
conversion of a FLINT integer to CanonicalForm
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....
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...
CanonicalForm convertFmpq_poly_t2FacCF(const fmpq_poly_t p, const Variable &x)
conversion of a FLINT poly over Q to CanonicalForm
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
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 convertFacCF2Fmpz_array(fmpz *result, const CanonicalForm &f)
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
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 convertCF2Fmpz(fmpz_t result, const CanonicalForm &f)
conversion of a factory integer to fmpz_t
void convertCF2Fmpq(fmpq_t result, const CanonicalForm &f)
conversion of a factory rationals to fmpq_t
CanonicalForm convertnmod_poly_t2FacCF(const nmod_poly_t poly, const Variable &x)
conversion of a FLINT poly over Z/p to CanonicalForm
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)
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 convertFmpz_poly_t2FacCF(const fmpz_poly_t poly, const Variable &x)
conversion of a FLINT poly over Z to CanonicalForm
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
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
CanonicalForm convertFmpq2CF(const fmpq_t q)
conversion of a FLINT rational to CanonicalForm
void convertFacCF2Fmpq_poly_t(fmpq_poly_t result, const CanonicalForm &f)
conversion of a factory univariate polynomials over Q to fmpq_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
void convertCF2initFmpz(fmpz_t result, const CanonicalForm &f)
conversion of a factory integer to fmpz_t(init.)
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
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
This file defines functions for conversion to FLINT (www.flintlib.org) and back.
CFFList convertFLINTfmpz_poly_factor2FacCFFList(const fmpz_poly_factor_t fac, const Variable &x)
conversion of a FLINT factorization over Z to a CFFList
const CanonicalForm CFMap CFMap & N
CanonicalForm bCommonDen(const CanonicalForm &f)
CanonicalForm bCommonDen ( const CanonicalForm & f )
declarations of higher level algorithms.
#define STICKYASSERT(expression, message)
#define ASSERT(expression, message)
static const int SW_RATIONAL
set to 1 for computations over Q
static const int SW_SYMMETRIC_FF
set to 1 for symmetric representation over F_q
Interface to generate InternalCF's over various domains from intrinsic types or mpz_t's.
Iterators for CanonicalForm's.
static InternalCF * basic(int value)
static InternalCF * rational(long num, long den)
class to iterate through CanonicalForm's
virtual int levelcoeff() const
factory's class for integers
static mpz_ptr MPQDEN(const InternalCF *const c)
static mpz_ptr MPQNUM(const InternalCF *const c)
factory's class for variables
class to do operations mod p^k for int's p and k
nmod_poly_init(FLINTmipo, getCharacteristic())
operations mod p^k and some other useful functions for factorization
void FACTORY_PUBLIC gmp_numerator(const CanonicalForm &f, mpz_ptr result)
void FACTORY_PUBLIC gmp_denominator(const CanonicalForm &f, mpz_ptr result)
utility functions for gmp
Factory's internal integers.
Factory's internal rationals.
gmp_float exp(const gmp_float &a)
static int SI_LOG2(int v)
int status int void * buf
helper functions for conversion to and from Singular