The package no longer depends on RcppArmadillo.
The functions permuteVariables
and swapVariables
generated an error for a constant qspray
or a qspray
having only one term.
New function isHomogeneousQspray
, to check whether a qspray
polynomial is homogeneous.
The HallInnerProduct
function has been greatly improved, and it is now possible to get the result of the Hall inner product with a symbolic parameter (this result is a univariate qspray
whose variable represents the parameter).
The C++ code has now a large header file that can be used in other packages (by setting LinkingTo: qspray, Rcpp, RcppArmadillo
in the DESCRIPTION file). It is used by two upcoming packages: ratioOfQsprays (fractions of multivariate polynomials) and symbolicQspray (multivariate polynomials with symbolic parameters). Moreover, this code is templated. For example, multivariate polynomials with numeric (double
) coefficients can be represented by the objects of type Qspray<double>
, and instantiating this type automatically makes available the arithmetic operations for these polynomials.
The show
method of qspray
objects has been changed. The monomial previously printed as "x^(2, 0, 3)"
is now printed by default as "x^2.z^3"
if there are no more than three variables in the polynomial, otherwise it is printed as "x1^2.x3^3"
. But it is now possible to control the way a qspray
is printed with the help of the function showQsprayOption<-
. Helper functions to construct a custom show
method are provided.
The README has been updated. In particular, it contains a large section about the show options.
New function substituteQspray
, to substitute some values to a subset of the variables of a qspray
polynomial.
New function composeQspray
, to get the polynomial obtained by substituting the variables of a polynomial with polynomials. The new function changeVariables
is an alias of composeQspray
.
New function isPolynomialOf
, to check whether a qspray
polynomial can be written as a polynomial of some given qspray
polynomials, and to get this polynomial in case this is true. This uses Gröbner bases and thus this can be slow.
New function isSymmetricQspray
, to check whether the polynomial defined by a qspray
object is symmetric.
There was an error in qdivision
(without severe consequences).
The function as.function.qspray
now has a Boolean argument N
; if set to TRUE
, the function returns a numerical approximation of the result.
New function PSFpoly
, which computes the power sum polynomials.
New function MSPcombination
, to get a symmetric qspray
polynomial as a linear combination of the monomial symmetric polynomials.
New function compactSymmetricQspray
which prints a symmetric qspray
polynomial as a linear combination of the monomial symmetric polynomials.
New function qsprayDivision
, returning the quotient and the remainder of the division of a qspray
polynomial by a qspray
polynomial.
New function HallInnerProduct
, which computes the Hall inner product between two symmetric qspray
polynomials. Very inefficient (will be hopefully improved in the future).
New function characteristicPolynomial
, to get the characteristic polynomial of a square matrix as a qspray
polynomial.
Unit tests.
The polynomials are now printed with the lexicographic order of the monomials.
New function implicitization
, to transform a system of parametric equations to an implicit equation. This is based on Gröbner bases. This doesn't always work (use the 'giacR' package if needed).
The division step in the Buchberger algorithm is now performed in C++.
The groebner
function has been considerably improved, but it still can be very slow.
The implementation of the opposite polynomial was wrong (it did nothing).
The pretty form of a polynomial returned by prettyQspray
has been improved: now there are spaces around '+' and '-'.
The division of a polynomial by a bigq
number did not always work.
New function groebner
, to compute a Gröbner basis.
Fixed a small error in the C++ code.
Differentiation of qspray
polynomials (functions derivQspray
and dQspray
).
The package does not depend on 'RcppCGAL' neither 'RcppEigen' anymore. It now imports 'RationalMatrix' (to compute the determinant of a rational matrix).
Removed a useless function in the C++ code.
First release.