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.