All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to the Haskell Package Versioning Policy.
First release.
-
New functions
toList
,sprayTerms
andbombieriSpray
. -
New operation
.^
, to multiply a spray by an integer. -
Added some unit tests.
New function derivSpray
, to differentiate a spray.
-
Powers(..)
is now exported. -
Completed the README to show how to deal with symbolic coefficients.
-
New functions
prettySpray'
andprettySprayXYZ
. -
New function
substituteSpray
. -
New function
sprayDivision
, to perform the division of a spray by a list of sprays. -
New function
groebner
, to compute a Gröbner basis of a list of sprays. -
New function
isSymmetricSpray
, to check whether a spray is a symmetric polynomial. -
New function
isPolynomialOf
, to check whether a spray can be expressed as a polynomial of a given list of sprays.
-
New functions
permuteVariables
andswapVariables
. -
New function
resultant
, to compute the resultant of two sprays. -
New function
subresultants
, to compute the subresultants of two sprays.
-
Improved the documentation.
-
Flipped the order of appearance of the terms in the output of the
prettySpray
functions.
- Fixed an error in
esPolynomial
, which resulted to a bug inisSymmetricSpray
.
-
New unit tests.
-
Fixed
resultant
andsubresultants
: the variables of the sprays they return were incorrect. -
New function
gcdQX
, to compute the greatest common divisor of two univariate sprays with rational coefficients.
-
Flipped the order of the arguments in
permuteVariables
andswapVariables
. -
New function
gcdSpray
, to compute the greatest common divisor of two sprays with coefficients in a field. -
The function
gcdQX
has been removed sincegcdSpray
is more general. -
The function
sprayDivision
has been renamed tosprayDivisionRemainder
. -
New function
sprayDivision
, returning the quotient and the remainder of the division of two sprays.
-
New function
resultant'
which computes the resultant of two sprays with coefficients in a field. Thus it is less general than the functionresultant
but it is more efficient. -
Fixed a small mistake in
isSymmetricSpray
andisPolynomialOf
: these functions didn't deal with the constant term of the spray. -
New function
psPolynomial
which computes the power sum polynomials. -
A particular type of sprays, namely
SymbolicSpray a
, has been introduced. The coefficients of these sprays are ratios of univariate polynomials witha
coefficients. There is a specializationSymbolicQSpray
for the case whena
is a type of rational numbers. The necessary instances have been defined and there is the functionprettySymbolic(Q)Spray
to display such sprays. There are also some functions to perform evaluation of such sprays.
-
New function
collinearSprays
which checks whether two sprays are collinear. -
The function
isPolynomialOf
threw an error when the number of variables in the spray to be tested was less than the number of variables in the list of sprays. That is me who programmed this error and this was wrong: for example,x = p1 - p2^*^p3
withp1 = x + y^*^z
,p2 = y
, andp3 = z
. -
New functions to print sprays with numeric coefficients, such as
prettyNumSpray
andprettyQSpray
. -
The functions
prettySpray
,prettySpray'
andprettySpray''
have been changed. -
New functions to print symbolic sprays.
-
Documentation and README have been improved.
-
Defined
qlone
, which is the same aslone
but always returns a rational spray (aQSpray
spray). -
The function
sprayDivision
ran into an infinite loop when the divisor was constant. This has been fixed. -
New function
characteristicPolynomial
, to compute the characteristic polynomial of a matrix. -
Gegenbauer polynomials. They have been implemented mainly to provide an illustration of the type
Spray (Spray a)
in README. -
New function
evalSpraySpray
, to evaluate the spray coefficients of aSpray (Spray a)
spray, thereby yielding aSpray a
spray. -
New type
RatioOfSprays a
, whose objects represent ratios of polynomials represented by twoSpray a
objects. Thus the typeSpray (RatioOfSprays a)
allows more possibilities than the typeSymbolicSpray a
because it is not restricted to univariate fractions of polynomials, and obviously it also allows more possibilities than the typeSpray (Spray a)
. Instances and arithmetic operations for these ratios of sprays have been defined. The result of an arithmetic operation always is an irreducible fraction. See README for examples. -
Jacobi polynomials. They have been implemented mainly to experiment the type
Spray (RatioOfSprays a)
. By the way, this type has been namedParametricSpray a
, but this is possibly temporary. -
The class
HasVariables a
has been introduced in order to have some functions which apply to bothSpray a
objects andRatioOfSprays a
objects. -
The function
derivSpray
no longer exists. To get a derivative of a spray, use thederivative
function, which is also applicable to a ratio of sprays (this is a method of the classHasVariables
). -
A spray with coefficients in a field can now be divided by a scalar by using the
/>
operator. This operator can also be used to divide a ratio of sprays (with coefficients in a field) by a scalar.
-
The type
SymbolicSpray a
has been renamed toOneParameterSpray a
, and all functions names which contained the stringSymbolic
have been changed by replacingSymbolic
withOnePerameter
. -
The class
HasVariables
, which is instantiated forSpray
andRatioOfSprays
, has a new methodchangeVariables
allowing to perform polynomial transformations of the variables of a spray and of a ratio of sprays. For sprays, this is the same as thecomposeSpray
function. -
The class
HasVariables
is now also instantiated forRatioOfPolynomials
. -
The type alias
ParametricSpray a = Spray (RatioOfSprays a)
has been kept and the type aliasSimpleParametricSpray a = Spray (Spray a)
has been introduced. We say that aSpray b
spray is parametric whenb
has theHasVariables
instance. So this applies to aParametricSpray a
spray, to aSimpleParametricSpray a
spray, and also to aOneParameterSpray a
spray (recall thatOneParameterSpray a = Spray (RatioOfPolynomials a)
). -
Functions to print
ParametricSpray
sprays andSimpleParametricSpray
sprays. -
Function
numberOfParameters
, returning the number of parameters of a parametric spray, that is to say the number of variables occurring in the coefficients of this spray. -
Function
changeParameters
, to perform polynomial transformations of the parameters of a parametric spray. -
Function
substituteParameters
, to replace the parameters of a parametric spray with some values. For aSimpleParametricSpray
spray, this function is the same asevalSpraySpray
(which will probably disappear in the future). -
Function
evalParametricSpray
, to replace the variables of a parametric spray with some values.
-
The efficiency of the arithmetic on the
RatioOfSprays
fractions of polynomials has been greatly improved for the univariate case. According to some benchmarks on the Jack polynomials, theParametricSpray
sprays with only one parameter are now more efficient than theOneParameterSpray
sprays. -
For this reason, the Jack polynomials with a symbolic Jack parameter, implemented in the 'jackpolynomials' package, are represented by
ParametricSpray
sprays in a new version of the package, while there were previously represented byOneParameterSpray
sprays. -
Slight improvements of the code in general.
-
Function
lone'
to construct monomials likex_n^p
more efficiently thanlone n ^**^ p
. -
Function
monomial
to construct monomials likex_1^4.x_3^7
.
-
The class
HasVariables
has been renamed toFunctionLike
, and the arithmetic operations for sprays (^+^
,^-^
,^*^
,^**^
,*^
) have been moved to this class. Therefore it is now possible to apply these operations to the ratios of sprays. Moreover, there are two new operators in this class,(+>)
and(<+)
, which allow to add a constant to an object of this class. For example,x +> spray
gives the same result asconstantSpray x ^+^ spray
but is more efficient. -
There was an error in
gcdSpray
. -
There was a small mistake in
collinearSprays
. -
The functions
changeParameters
andchangeVariables
did not remove the possibly null terms of their result. -
The function
groebner
has been renamed togroebnerBasis
. -
Function
isHomogeneousSpray
, to check whether a spray defines a homogeneous polynomial.
-
An error in an internal function resulted in an error in
groebnerBasis
. It has been fixed. -
A limit on the number of elements of a Gröbner basis has been set in the algorithm performed by
groebnerBasis
. When this limit is attained, an error is thrown. The reason of this limit is that I encountered an example of a large Gröbner basis and the algorithm took a quite long time. -
There was an error in
esPolynomial
. -
The
FunctionLike
class provides two new functions:involvesVariable
, to check whether a variable is involved in a function-like object (a spray or a ratio of sprays), anddropVariables
, to drop a given number of leading variables in a function-like object. ThedropVariables
functions is very unsafe: if a variable is dropped while it is involved, the result can be an invalid function-like object.
-
Function
polynomialSubresultants
, to compute the polynomial subresultants of two sprays (while thesubresultants
function computes the principal subresultants). -
Function
sturmHabichtSequence
, to compute the Sturm-Habicht sequence of a spray. -
Function
principalSturmHabichtSequence
, to compute the principal Sturm-Habicht sequence of a spray. -
Functions
numberOfRealRoots
,numberOfRealRootsInOpenInterval
andnumberOfRealRootsInClosedInterval
, to compute the total number of real roots of a suitable univariate spray or its number of real roots in a given interval. This can be very slow if the degree of the spray is not small.
- Now the denominator of a
RatioOfSprays
is always monic, i.e. it is a polynomial whose leading coefficient is 1.
-
Now the greatest common divisor of two sprays (function
gcdSpray
) is always monic, i.e. it is a polynomial whose leading coefficient is 1. -
Function
evalRatioOfSprays'
, to substitute the variables of a ratio of sprays with some ratios of sprays.