28#define Alloc(L) omAlloc(L)
29#define Free(A,L) omFreeSize(A,L)
31#define Alloc(L) malloc(L)
32#define Free(A,L) free(A)
45#ifndef __GMP_BITS_PER_MP_LIMB
46#define __GMP_BITS_PER_MP_LIMB GMP_LIMB_BITS
48#include <flint/fmpz.h>
49#include <flint/fmpq.h>
50#include <flint/fmpz_poly.h>
51#include <flint/fmpz_mod_poly.h>
52#include <flint/nmod_poly.h>
53#include <flint/fmpq_poly.h>
54#include <flint/nmod_mat.h>
55#include <flint/fmpz_mat.h>
56#if ( __FLINT_RELEASE >= 20400)
58#include <flint/fq_poly.h>
59#include <flint/fq_nmod.h>
60#include <flint/fq_nmod_poly.h>
61#include <flint/fq_nmod_mat.h>
63#if ( __FLINT_RELEASE >= 20503)
64#include <flint/fmpq_mpoly.h>
65#include <flint/fmpz_mod.h>
68#if (__FLINT_RELEASE < 20700)
70static void fq_nmod_get_nmod_poly(nmod_poly_t a,
const fq_nmod_t
b,
const fq_nmod_ctx_t ctx)
72 FLINT_ASSERT(
b->
mod.n == ctx->modulus->
mod.n);
73 a->mod = ctx->modulus->mod;
77#include <flint/fq_nmod_mpoly.h>
80#if (__FLINT_RELEASE < 20700)
82void fq_nmod_set_nmod_poly(fq_nmod_t a,
const nmod_poly_t
b,
const fq_nmod_ctx_t ctx)
84 FLINT_ASSERT(a->mod.n ==
b->
mod.n);
85 FLINT_ASSERT(a->mod.n == ctx->modulus->mod.n);
87 fq_nmod_reduce(a, ctx);
90void fq_nmod_set_nmod_poly(fq_nmod_t a,
const nmod_poly_t
b,
91 const fq_nmod_ctx_t ctx)
93 FLINT_ASSERT(a->mod.n ==
b->
mod.n);
94 FLINT_ASSERT(a->mod.n == ctx->modulus->mod.n);
96 if (
b->length <= 2*(ctx->modulus->length - 1))
99 fq_nmod_reduce(a, ctx);
103 nmod_poly_rem(a,
b, ctx->modulus);
126 fmpz_set_mpz (
result, gmp_val);
135 fmpz_set_si (
result,
f.intval());
141 mpz_swap(gmp_val, _fmpz_promote(
result));
158 if(!COEFF_IS_MPZ(*coefficient)
162 long coeff= fmpz_get_si (coefficient);
169 fmpz_get_mpz (gmp_val, coefficient);
180 for (
int i= 0;
i < fmpz_poly_length (poly);
i++)
182 coeff= fmpz_poly_get_coeff_ptr (poly,
i);
183 if (!fmpz_is_zero (coeff))
202 printf(
"convertCF2nmod_poly_t: coefficient not immediate!, char=%d\n",
215 for (
int i= 0;
i < nmod_poly_length (poly);
i++)
217 ulong coeff= nmod_poly_get_coeff_ui (poly,
i);
229 fmpq_set_si (
result,
f.intval(), 1);
235 fmpz_set_mpz (fmpq_numref (
result), gmp_val);
238 fmpz_set_mpz (fmpq_denref (
result), gmp_val);
245 fmpz_set_mpz (fmpq_numref (
result), gmp_val);
247 fmpz_one(fmpq_denref(
result));
251 printf(
"wrong type\n");
265 fmpz_get_mpz (nnum, fmpq_numref (q));
266 fmpz_get_mpz (nden, fmpq_denref (q));
279 else if (mpz_cmp_si(nden,1)==0)
302 for (
long i= 0;
i < n;
i++)
305 fmpq_poly_get_coeff_fmpq (coeff,
p,
i);
306 if (fmpq_is_zero (coeff))
341 const mp_limb_t leadingCoeff,
346 if (leadingCoeff != 1)
351 for (
i = 0;
i < fac->num;
i++)
353 (nmod_poly_t &)fac->p[
i],
x),
358#if __FLINT_RELEASE >= 20503
361 const fmpz_poly_factor_t fac,
372 for (
i = 0;
i < fac->num;
i++)
374 (fmpz_poly_t &)fac->p[
i],
x),
380#if __FLINT_RELEASE >= 20400
384 const fq_nmod_ctx_t
fq_con
391 for (
i = 0;
i < fac->num;
i++)
403 #if (__FLINT_RELEASE >= 20700)
405 fmpz_mod_ctx_init(ctx,
p);
412 #if (__FLINT_RELEASE >= 20700)
413 fmpz_mod_poly_set_fmpz_poly (
result,
buf, ctx);
414 fmpz_mod_ctx_clear(ctx);
416 fmpz_mod_poly_set_fmpz_poly (
result,
buf);
418 fmpz_poly_clear (
buf);
426 fmpz_poly_init (
buf);
427 #if (__FLINT_RELEASE >= 20700)
432 fmpz_mod_ctx_init(ctx,FLINTp);
434 fmpz_mod_poly_get_fmpz_poly (
buf, poly, ctx);
436 fmpz_mod_poly_get_fmpz_poly (
buf, poly);
439 fmpz_poly_clear (
buf);
443#if __FLINT_RELEASE >= 20400
446 const fq_nmod_ctx_t ctx)
450 #if __FLINT_RELEASE >= 20503
461 printf(
"convertFacCF2Fq_nmod_t: coefficient not immediate!, char=%d\n",
466 STICKYASSERT (
i.exp() <= fq_nmod_ctx_degree(ctx),
"convertFacCF2Fq_nmod_t: element is not reduced");
467 #if __FLINT_RELEASE >= 20503
468 nmod_poly_set_coeff_ui (
res,
i.exp(), c.
intval());
474 #if __FLINT_RELEASE >= 20503
490 fmpz_poly_init2 (
result, fq_ctx_degree(ctx));
491 _fmpz_poly_set_length(
result, fq_ctx_degree(ctx));
502 _fmpz_poly_normalise (
result);
523 fq_poly_set_coeff (
result,
i.exp(),
buf, ctx);
530 const fq_nmod_ctx_t ctx)
535 fq_nmod_init2 (
buf, ctx);
539 fq_nmod_poly_set_coeff (
result,
i.exp(),
buf, ctx);
540 fq_nmod_zero (
buf, ctx);
542 fq_nmod_clear (
buf, ctx);
551 long n= fq_poly_length (
p, ctx);
552 fq_init2 (coeff, ctx);
553 for (
long i= 0;
i < n;
i++)
555 fq_poly_get_coeff (coeff,
p,
i, ctx);
556 if (fq_is_zero (coeff, ctx))
559 fq_zero (coeff, ctx);
561 fq_clear (coeff, ctx);
572 long n= fq_nmod_poly_length (
p, ctx);
573 fq_nmod_init2 (coeff, ctx);
574 for (
long i= 0;
i < n;
i++)
576 fq_nmod_poly_get_coeff (coeff,
p,
i, ctx);
577 if (fq_nmod_is_zero (coeff, ctx))
580 fq_nmod_zero (coeff, ctx);
582 fq_nmod_clear (coeff, ctx);
590 fmpz_mat_init (
M, (
long)
m.rows(), (
long)
m.columns());
593 for(
i=
m.rows();
i>0;
i--)
595 for(
j=
m.columns();
j>0;
j--)
605 for(
i=
res->rows();
i>0;
i--)
607 for(
j=
res->columns();
j>0;
j--)
622 for(
i=
m.rows();
i>0;
i--)
624 for(
j=
m.columns();
j>0;
j--)
626 if(!(
m(
i,
j)).isImm()) printf(
"convertFacCFMatrix2FLINTmat_zz_p: not imm.\n");
627 nmod_mat_entry (
M,
i-1,
j-1)= (
m(
i,
j)).intval();
637 for(
i=
res->rows();
i>0;
i--)
639 for(
j=
res->columns();
j>0;
j--)
647#if __FLINT_RELEASE >= 20400
652 fq_nmod_mat_init (
M, (
long)
m.rows(), (
long)
m.columns(),
fq_con);
654 for(
i=
m.rows();
i>0;
i--)
656 for(
j=
m.columns();
j>0;
j--)
665 const fq_nmod_ctx_t&
fq_con,
669 fq_nmod_mat_ncols (
m,
fq_con));
671 for(
i=
res->rows();
i>0;
i--)
673 for(
j=
res->columns();
j>0;
j--)
682#if __FLINT_RELEASE >= 20503
683static void convFlint_RecPP (
const CanonicalForm &
f, ulong *
exp, nmod_mpoly_t
result, nmod_mpoly_ctx_t ctx,
int N )
686 if ( !
f.inCoeffDomain() )
699 nmod_mpoly_push_term_ui_ui(
result,c,
exp,ctx);
703static void convFlint_RecPP (
const CanonicalForm &
f, ulong *
exp, fmpq_mpoly_t
result, fmpq_mpoly_ctx_t ctx,
int N )
706 if ( !
f.inBaseDomain() )
721 fmpq_mpoly_push_term_fmpq_ui(
result,c,
exp,ctx);
726static void convFlint_RecPP (
const CanonicalForm &
f, ulong *
exp, fmpz_mpoly_t
result, fmpz_mpoly_ctx_t ctx,
int N )
729 if ( !
f.inBaseDomain() )
744 fmpz_mpoly_push_term_fmpz_ui(
result,c,
exp,ctx);
749#if __FLINT_RELEASE >= 20700
750static 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 )
753 if ( !
f.inCoeffDomain() )
759 convFlint_RecPP(
i.coeff(),
exp,
result, ctx,
N, fq_ctx );
767 fq_nmod_mpoly_push_term_fq_nmod_ui(
result,c,
exp,ctx);
772void convFactoryPFlintMP (
const CanonicalForm &
f, nmod_mpoly_t
res, nmod_mpoly_ctx_t ctx,
int N )
774 if (
f.isZero())
return;
775 ulong *
exp = (ulong*)
Alloc(
N*
sizeof(ulong));
776 memset(
exp,0,
N*
sizeof(ulong));
779 convFlint_RecPP(
f,
exp,
res, ctx,
N );
784void convFactoryPFlintMP (
const CanonicalForm &
f, fmpq_mpoly_t
res, fmpq_mpoly_ctx_t ctx,
int N )
786 if (
f.isZero())
return;
787 ulong *
exp = (ulong*)
Alloc(
N*
sizeof(ulong));
788 memset(
exp,0,
N*
sizeof(ulong));
789 convFlint_RecPP(
f,
exp,
res, ctx,
N );
790 fmpq_mpoly_reduce(
res,ctx);
794void convFactoryPFlintMP (
const CanonicalForm &
f, fmpz_mpoly_t
res, fmpz_mpoly_ctx_t ctx,
int N )
796 if (
f.isZero())
return;
797 ulong *
exp = (ulong*)
Alloc(
N*
sizeof(ulong));
798 memset(
exp,0,
N*
sizeof(ulong));
799 convFlint_RecPP(
f,
exp,
res, ctx,
N );
804#if __FLINT_RELEASE >= 20700
805void convFactoryPFlintMP (
const CanonicalForm &
f, fq_nmod_mpoly_t
res, fq_nmod_mpoly_ctx_t ctx,
int N, fq_nmod_ctx_t fq_ctx )
807 if (
f.isZero())
return;
808 ulong *
exp = (ulong*)
Alloc(
N*
sizeof(ulong));
809 memset(
exp,0,
N*
sizeof(ulong));
812 convFlint_RecPP(
f,
exp,
res, ctx,
N, fq_ctx );
818CanonicalForm convFlintMPFactoryP(nmod_mpoly_t
f, nmod_mpoly_ctx_t ctx,
int N)
821 int d=nmod_mpoly_length(
f,ctx)-1;
822 ulong*
exp=(ulong*)
Alloc(
N*
sizeof(ulong));
823 for(
int i=d;
i>=0;
i--)
825 ulong c=nmod_mpoly_get_term_coeff_ui(
f,
i,ctx);
826 nmod_mpoly_get_term_exp_ui(
exp,
f,
i,ctx);
828 for (
int i = 0;
i <
N;
i++ )
838CanonicalForm convFlintMPFactoryP(fmpq_mpoly_t
f, fmpq_mpoly_ctx_t ctx,
int N)
841 int d=fmpq_mpoly_length(
f,ctx)-1;
842 ulong*
exp=(ulong*)
Alloc(
N*
sizeof(ulong));
845 for(
int i=d;
i>=0;
i--)
847 fmpq_mpoly_get_term_coeff_fmpq(c,
f,
i,ctx);
848 fmpq_mpoly_get_term_exp_ui(
exp,
f,
i,ctx);
850 for (
int i = 0;
i <
N;
i++ )
861CanonicalForm convFlintMPFactoryP(fmpz_mpoly_t
f, fmpz_mpoly_ctx_t ctx,
int N)
864 int d=fmpz_mpoly_length(
f,ctx)-1;
865 ulong*
exp=(ulong*)
Alloc(
N*
sizeof(ulong));
868 for(
int i=d;
i>=0;
i--)
870 fmpz_mpoly_get_term_coeff_fmpz(c,
f,
i,ctx);
871 fmpz_mpoly_get_term_exp_ui(
exp,
f,
i,ctx);
873 for (
int i = 0;
i <
N;
i++ )
888 nmod_mpoly_ctx_t ctx;
890 nmod_mpoly_t
f,
g,
res;
891 nmod_mpoly_init3(
f,lF,bits,ctx);
892 nmod_mpoly_init3(
g,lG,bits,ctx);
893 convFactoryPFlintMP(F,
f,ctx,
N);
894 convFactoryPFlintMP(
G,
g,ctx,
N);
895 nmod_mpoly_init(
res,ctx);
896 nmod_mpoly_mul(
res,
f,
g,ctx);
897 nmod_mpoly_clear(
g,ctx);
898 nmod_mpoly_clear(
f,ctx);
900 nmod_mpoly_clear(
res,ctx);
901 nmod_mpoly_ctx_clear(ctx);
909 fmpq_mpoly_ctx_t ctx;
910 fmpq_mpoly_ctx_init(ctx,
N,ORD_LEX);
911 fmpq_mpoly_t
f,
g,
res;
912 fmpq_mpoly_init3(
f,lF,bits,ctx);
913 fmpq_mpoly_init3(
g,lG,bits,ctx);
914 convFactoryPFlintMP(F,
f,ctx,
N);
915 convFactoryPFlintMP(
G,
g,ctx,
N);
916 fmpq_mpoly_init(
res,ctx);
917 fmpq_mpoly_mul(
res,
f,
g,ctx);
918 fmpq_mpoly_clear(
g,ctx);
919 fmpq_mpoly_clear(
f,ctx);
921 fmpq_mpoly_clear(
res,ctx);
922 fmpq_mpoly_ctx_clear(ctx);
929 int lf,lg,
m=1<<MPOLY_MIN_BITS;
933 nmod_mpoly_ctx_t ctx;
935 nmod_mpoly_t
f,
g,
res;
936 nmod_mpoly_init3(
f,lf,bits,ctx);
937 nmod_mpoly_init3(
g,lg,bits,ctx);
938 convFactoryPFlintMP(F,
f,ctx,
N);
939 convFactoryPFlintMP(
G,
g,ctx,
N);
940 nmod_mpoly_init(
res,ctx);
941 int ok=nmod_mpoly_gcd(
res,
f,
g,ctx);
942 nmod_mpoly_clear(
g,ctx);
943 nmod_mpoly_clear(
f,ctx);
947 RES=convFlintMPFactoryP(
res,ctx,
N);
949 nmod_mpoly_clear(
res,ctx);
950 nmod_mpoly_ctx_clear(ctx);
956 if (
f.inCoeffDomain() )
962 for (
i =
f;
i.hasTerms() && (!
result.isOne());
i++ )
972 fmpq_mpoly_ctx_t ctx;
973 fmpq_mpoly_ctx_init(ctx,
N,ORD_LEX);
974 fmpq_mpoly_t
f,
g,
res;
975 fmpq_mpoly_init(
f,ctx);
976 fmpq_mpoly_init(
g,ctx);
977 convFactoryPFlintMP(F,
f,ctx,
N);
978 convFactoryPFlintMP(
G,
g,ctx,
N);
979 fmpq_mpoly_init(
res,ctx);
980 int ok=fmpq_mpoly_gcd(
res,
f,
g,ctx);
981 fmpq_mpoly_clear(
g,ctx);
982 fmpq_mpoly_clear(
f,ctx);
988 if (!fmpq_mpoly_is_zero(
res, ctx))
996 RES=convFlintMPFactoryP(
res,ctx,
N);
998 RES*=
bgcd(b_content(F),b_content(
G));
1000 fmpq_mpoly_clear(
res,ctx);
1001 fmpq_mpoly_ctx_clear(ctx);
1007#if __FLINT_RELEASE >= 20700
1009convertFLINTFq_nmod_mpoly_factor2FacCFFList (
1010 fq_nmod_mpoly_factor_t fac,
1011 const fq_nmod_mpoly_ctx_t& ctx,
1013 const fq_nmod_ctx_t& fq_ctx,
1021 fq_nmod_init(c,fq_ctx);
1022 fq_nmod_mpoly_factor_get_constant_fq_nmod(c,fac,ctx);
1024 fq_nmod_clear(c,fq_ctx);
1027 fq_nmod_mpoly_init(
p,ctx);
1029 for (
i = 0;
i < fac->num;
i++)
1031 fq_nmod_mpoly_factor_get_base(
p,fac,
i,ctx);
1032 exp=fq_nmod_mpoly_factor_get_exp_si(fac,
i,ctx);
1036 fq_nmod_mpoly_clear(
p,ctx);
1041convertFacCF2Fq_nmod_mpoly_t (fq_nmod_mpoly_t
result,
1043 const fq_nmod_mpoly_ctx_t ctx,
1045 const fq_nmod_ctx_t fq_ctx
1048 if (
f.isZero())
return;
1049 ulong *
exp = (ulong*)
Alloc(
N*
sizeof(ulong));
1050 memset(
exp,0,
N*
sizeof(ulong));
1051 convFlint_RecPP(
f,
exp,
result, ctx,
N, fq_ctx );
1056convertFq_nmod_mpoly_t2FacCF (
const fq_nmod_mpoly_t
f,
1057 const fq_nmod_mpoly_ctx_t& ctx,
1059 const fq_nmod_ctx_t& fq_ctx,
1063 int d=fq_nmod_mpoly_length(
f,ctx)-1;
1064 ulong*
exp=(ulong*)
Alloc(
N*
sizeof(ulong));
1066 fq_nmod_init(c,fq_ctx);
1067 for(
int i=d;
i>=0;
i--)
1069 fq_nmod_mpoly_get_term_coeff_fq_nmod(c,
f,
i,ctx);
1070 fq_nmod_mpoly_get_term_exp_ui(
exp,
f,
i,ctx);
1072 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
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
bool mpz_is_imm(const mpz_t mpi)
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