diff --git a/doc/latex/create_doc.c b/doc/latex/create_doc.c index 22791721fd..af8067c2a0 100644 --- a/doc/latex/create_doc.c +++ b/doc/latex/create_doc.c @@ -22,9 +22,11 @@ static char * docsin[] = { "../../fmpz_mat/doc/fmpz_mat.txt", "../../fmpz_poly/doc/fmpz_poly.txt", "../../fmpz_poly_factor/doc/fmpz_poly_factor.txt", + "../../fmpz_mpoly/doc/fmpz_mpoly.txt", "../../fmpq/doc/fmpq.txt", "../../fmpq_mat/doc/fmpq_mat.txt", "../../fmpq_poly/doc/fmpq_poly.txt", + "../../fmpq_mpoly/doc/fmpq_mpoly.txt", "../../fmpz_poly_q/doc/fmpz_poly_q.txt", "../../fmpz_poly_mat/doc/fmpz_poly_mat.txt", "../../nmod_vec/doc/nmod_vec.txt", @@ -76,9 +78,11 @@ static char * docsout[] = { "input/fmpz_mat.tex", "input/fmpz_poly.tex", "input/fmpz_poly_factor.tex", + "input/fmpz_mpoly.tex", "input/fmpq.tex", "input/fmpq_mat.tex", "input/fmpq_poly.tex", + "input/fmpq_mpoly.tex", "input/fmpz_poly_q.tex", "input/fmpz_poly_mat.tex", "input/nmod_vec.tex", diff --git a/doc/latex/flint-manual.tex b/doc/latex/flint-manual.tex index c82acac99a..77ac9a1015 100644 --- a/doc/latex/flint-manual.tex +++ b/doc/latex/flint-manual.tex @@ -1389,12 +1389,17 @@ \section{Definition of the fmpz\_poly\_t type} \chapter{fmpz\_poly\_factor: Polynomial factorisation over $\Z$} \epigraph{Factorisation of polynomials over $\Z$}{} -The \code{fmpz_poly_factor} module is included automatically with -\code{fmpz_poly.h}. One should not try to include \code{fmpz_poly_factor.h} -directly. - \input{input/fmpz_poly_factor.tex} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Multivariate integer polynomials +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\chapter{fmpz\_mpoly: Multivariate polynomials over arbitrary precision integers} +\epigraph{Multivariate polynomials over $\Z$}{} + +\input{input/fmpz_mpoly.tex} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Rational numbers % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1590,6 +1595,15 @@ \section{Simple example} \input{input/fmpz_poly_q.tex} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Multivariate integer polynomials +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\chapter{fmpq\_mpoly: Multivariate polynomials over the rationals} +\epigraph{Multivariate polynomials over $\Q$}{} + +\input{input/fmpq_mpoly.tex} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Matrices over integer polynomials % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/fmpq_mpoly/doc/fmpq_mpoly.txt b/fmpq_mpoly/doc/fmpq_mpoly.txt index 02aa073fff..a33bbda998 100644 --- a/fmpq_mpoly/doc/fmpq_mpoly.txt +++ b/fmpq_mpoly/doc/fmpq_mpoly.txt @@ -644,7 +644,7 @@ void fmpq_mpoly_integral(fmpq_mpoly_t poly1, const fmpq_mpoly_t poly2, slong var, const fmpq_mpoly_ctx_t ctx) Set \code{poly1} to the integral with the fewest number of terms - of \{poly2} with respect to the variable of index \code{var}. + of \code{poly2} with respect to the variable of index \code{var}. ******************************************************************************* diff --git a/fmpz/doc/fmpz.txt b/fmpz/doc/fmpz.txt index c466167923..290fa8f914 100644 --- a/fmpz/doc/fmpz.txt +++ b/fmpz/doc/fmpz.txt @@ -219,9 +219,9 @@ void fmpz_set_signed_uiuiui(fmpz_t f, ulong hi, ulong mid, ulong lo) void fmpz_set_ui_array(fmpz_t out, const ulong * in, slong in_len) - Sets \code{out} to the nonnegative integer \code{in[0] + in[1]*X - + ... + in[in_len - 1]*X^(in_len - 1)} where \code{X = 2^FLINT_BITS}. - It is assumed that \code{in_len > 0}. + Sets \code{out} to the nonnegative integer + \code{in[0] + in[1]*X + ... + in[in_len - 1]*X^(in_len - 1)} + where \code{X = 2^FLINT_BITS}. It is assumed that \code{in_len > 0}. void fmpz_get_ui_array(ulong * out, slong out_len, const fmpz_t in) diff --git a/fmpz_mpoly/doc/fmpz_mpoly.txt b/fmpz_mpoly/doc/fmpz_mpoly.txt index 84bc436780..a08cb5037b 100644 --- a/fmpz_mpoly/doc/fmpz_mpoly.txt +++ b/fmpz_mpoly/doc/fmpz_mpoly.txt @@ -595,7 +595,7 @@ void fmpz_mpoly_scalar_divexact_fmpz(fmpz_mpoly_t poly1, const fmpz_mpoly_t poly2, const fmpz_t c, const fmpz_mpoly_ctx_t ctx) Set \code{poly1} to \code{poly2} divided by the multiprecision integer $c$. - The division is assumed to be exact. + The division is assumed to be exact. ******************************************************************************* @@ -607,11 +607,11 @@ slong _fmpz_mpoly_mul_johnson(fmpz ** poly1, ulong ** exp1, slong * alloc, const fmpz * poly2, const ulong * exp2, slong len2, const fmpz * poly3, const ulong * exp3, slong len3, slong N) - Set \code{(poly1, exp1, alloc)} to \code{(poly2, exps2, len2)} times - \code{(poly3, exps3, len3)} using Johnson's heap method (see papers by - Michael Monagan and Roman Pearce). The function realocates its output, hence - the double indirection, and returns the length of the product. The function - assumes the exponent vectors take N words. No aliasing is allowed. + Set \code{(poly1, exp1, alloc)} to \code{(poly2, exps2, len2)} times + \code{(poly3, exps3, len3)} using Johnson's heap method (see papers by + Michael Monagan and Roman Pearce). The function realocates its output, hence + the double indirection, and returns the length of the product. The function + assumes the exponent vectors take N words. No aliasing is allowed. void fmpz_mpoly_mul_johnson(fmpz_mpoly_t poly1, const fmpz_mpoly_t poly2, const fmpz_mpoly_t poly3, @@ -632,15 +632,15 @@ slong _fmpz_mpoly_mul_array(fmpz ** poly1, ulong ** exp1, const fmpz * poly3, const ulong * exp3, slong len3, slong * mults, slong num, slong bits) - Set \code{(poly1, exp1, alloc)} to \code{(poly2, exps2, len2)} times - \code{(poly3, exps3, len3)} by accumulating coefficients in a big, dense - array. The function realocates its output, hence the double indirection, and - returns the length of the product. The array \code{mults} is a list of bases - to be used in encoding the array indices from the exponents. They should - exceed the maximum exponent for each field of the exponent vectors of the - output. The output exponent vectors will be packed with fields of the given - number of bits. The number of variables is given by \code{num}$. No aliasing - is allowed. + Set \code{(poly1, exp1, alloc)} to \code{(poly2, exps2, len2)} times + \code{(poly3, exps3, len3)} by accumulating coefficients in a big, dense + array. The function realocates its output, hence the double indirection, and + returns the length of the product. The array \code{mults} is a list of bases + to be used in encoding the array indices from the exponents. They should + exceed the maximum exponent for each field of the exponent vectors of the + output. The output exponent vectors will be packed with fields of the given + number of bits. The number of variables is given by \code{num}. No aliasing + is allowed. int fmpz_mpoly_mul_array(fmpz_mpoly_t poly1, const fmpz_mpoly_t poly2, const fmpz_mpoly_t poly3, @@ -884,7 +884,7 @@ void fmpz_mpoly_derivative(fmpz_mpoly_t poly1, void fmpz_mpoly_integral(fmpz_mpoly_t poly1, fmpz_t scale, const fmpz_mpoly_t poly2, slong idx, const fmpz_mpoly_ctx_t ctx) - Set \code{poly1} and \code{scale} so that \{poly1} is an integral of + Set \code{poly1} and \code{scale} so that \code{poly1} is an integral of \code{poly2*scale} with respect to the variable of index \code{idx}, where \code{scale} is positive and as small as possible. This function throws an exception upon exponent overflow. @@ -959,7 +959,7 @@ int fmpz_mpoly_discriminant(fmpz_mpoly_t poly1, const fmpz_mpoly_t poly2, void fmpz_mpoly_univar_init(fmpz_mpoly_univar_t poly, const fmpz_mpoly_ctx_t ctx); - Initialize \{poly}. + Initialize \code{poly}. void fmpz_mpoly_univar_clear(fmpz_mpoly_univar_t poly, const fmpz_mpoly_ctx_t ctx);