Hipparchus Core Release Notes
Release History
Version | Date | Description |
---|---|---|
3.1 | 2024-04-05 | This is a maintenance release. It includes several bugfixes and improvements. The main additions are Gauss-Markov order 1 autoregressive process generation and GCD/LCM to {Big}Fraction. |
3.0 | 2023-10-08 | This is a major release. |
2.3 | 2022-10-05 | This is a maintenance release. The main changes are HessenbergTransformer and SchurTransformer are now public. |
2.2 | 2022-08-10 | This is a maintenance release. The main change is: addition of Taylor map inversion. |
2.1 | 2022-04-24 | Thist is a maintenance release. The main changes are addition of inverse Jacobi elliptic functions, optional modified weights to Akima interpolation, modified Gram-Schmidt basis orthonormalization process, generation of convergents streams in continued fractions. Various bugs were fixed. |
2.0 | 2021-08-07 | This is a major release. The main changes are replacement of RealFieldElement by CalculusFieldElement interface, many improvements in Complex to fully implement CalculusFieldElement with correct branch cuts so complex numbers can be used in many Hipparchus algorithms, addition of FieldComplex, addition of complex and field complex univariate integrals, addition of field univariate integrators, and faster simultaneous computation of sinhcos. Experimental implementation of elliptic functions and integrals for real, complex and general fields have been added. Beware the elliptic integrals for complex and field complex numbers in the incomplete case are considered experimental for now, they have known issues. Methods deprecated during the 1.X series have been removed. Numerous bugs were also fixed. |
1.8 | 2020-12-05 | This is a maintenance release. It fixes a few bugs, mainly a serious one for complex eigendecomposition when several eigenvalues are equal. It also add sum and angle differences in SinCos and FieldSinCos. |
1.7 | 2020-06-23 | This is a maintenance release. It fixes several bugs, including a nasty one in ODE events handling, improves a lot the Complex class so it implements the new CalculusFieldElement interface, and adds several new differentiation classes to handle simpler cases (univariate derivatives at orders 1 and 2 and gradients) with less overhead than the existing DerivativeStructure. |
1.6 | 2019-11-01 | This is a maintenance release. It includes only bug fixes. |
1.5 | 2019-05-06 | This is a maintenance release. The main changes since last version are the introduction of field versions of bilinear interpolation, univariate interpolators, polynomials and polynomial spline functions. |
1.4 | 2018-11-17 | This is a maintenance release. The main changes since last version are the introduction of bilinear interpolation for 2D grids, field versions of sinCos and a way to build three-dimensional field arrays. |
1.3 | 2018-05-08 | This is a maintenance release. The main changes since last version are the introduction of complex eigen decomposition, and introduction of a solver for continuous time algebraic Riccati equation. |
1.2 | 2017-10-25 | This is a maintenance release. |
1.1 | 2017-03-16 | This is a maintenance release. |
1.0 | 2016-06-23 | This is the first release of the library |
Release 3.1 – 2024-04-05
Type | Changes | By |
---|---|---|
Added Gauss-Markov order 1 autoregressive process generation. Fixes issues/333. | luc | |
Added equals and hashCode to OpenIntTo{Double|Field}HashMap. Fixes issues/289. | luc | |
Allow variable arguments for building PolynomialFunction. Fixes issues/327. | luc | |
Extracted class JacobiKey from PolynomialsUtils. Fixes issues/322. | maxime | |
Improved performance of Gradient. Fixes issues/302. | serrof | |
Added GCD and LCM to {Big}Fraction. Fixes issues/294. Thanks to Axel Kramer. | luc | |
Fix broken newInstance method for FieldTuple. Fixes issues/291. | serrof | |
Rework interfaces for Derivative and FieldDerivative. Fixes issues/286. | serrof | |
Add default implementations in CalculusFieldElement and inheritors. Fixes issues/281. | serrof | |
Add square method to CalculusFieldElement. Fixes issues/280. | serrof |
Release 3.0 – 2023-10-08
Type | Changes | By |
---|---|---|
UnivariateDerivative now implements Comparable. Fixes issues/275. | serrof | |
Complex now implements Comparable, using real part as primary sort order and imaginary part as secondary sort order (similar to what ComplexComparator already did). Fixes issues/274. | luc | |
Fixed eigenvalues/eigenvectors sorting in EigenDecompositionSymmetric. Fixes issues/253. | luc | |
Replaced EigenDecomposition by EigenDecompositionSymmetric and EigenDecompositionNonSymmetric. | luc | |
Removed OrderedEigenDecomposition. | luc | |
Added a protection against out of range BigFraction. Fixes issues/273. | luc | |
Fixed compatibility with recent JDK. Fixes issues/272. | luc | |
Made FieldPolynomialSplineFunction operational with Field not inheriting from Comparable. Fixes issues/257. Thanks to Romain Serra. | luc | |
Fixed determinant computation in eigen decomposition with complex eigenvalues. Fixes issues/262. | luc | |
Only remove input coefficients of FieldPolynomialFunction that satisfy isZero(). Fixes issues/259. Thanks to Romain Serra. | luc | |
Improved performance for reciprocal, division and square root with DerivativeStructure and FieldDerivativeStructure. Fixes issues/256. Thanks to Romain Serra. | luc | |
Generate zero vectors in OrderedComplexEigenDecomposition when the number of eigenvectors is smaller than the dimension. Fixes issues/249. | luc | |
Allow customization of eigen value ordering in OrderedComplexEigenDecomposition. Fixes issues/248. | luc | |
Fixed FastMath.expm1(x) for huge values of x. Fixes issues/228. | luc | |
Renamed Decimal64{Field} into Binary64{Field}. Fixes issues/227. | luc | |
Separated {Field}ODEEventDetector and {Field}ODEEventHandler. Fixes issues/223. | luc | |
Fieldified Erf and Gamma classes and added FieldContinuedFraction. Fixes issues/218. | vcucchie |
Release 2.3 – 2022-10-05
Type | Changes | By |
---|---|---|
Changed HessenbergTransformer visibility to public. Fixes issues/204. | luc | |
Changed SchurTransformer visibility to public. Fixes issues/204. | luc |
Release 2.2 – 2022-08-10
Type | Changes | By |
---|---|---|
Added {Field}TaylorMap, supporting evaluation, composition and inversion. Fixes issues/190. | luc | |
Added FieldMatrixDecomposer. Fixes issues/200. | luc | |
Added rebase to {Field}DerivativeStructure, which enables changing the base variables a {Field}DerivativeStructure depends on. Fixes issues/191. | luc | |
Added CombinatoricsUtils.permutations. Fixes issues/198. | luc | |
Added computation of Bell numbers. | luc | |
Added RosenNumberPartitionIterator. Fixes issues/197. Thanks to Axel Kramer. | luc | |
Added CombinatoricsUtils.partitions. Fixes issues/197. | luc | |
Added FieldMultivariateFunction, CalculusFieldMultivariateFunction, FieldMultivariateVectorFunction, CalculusFieldMultivariateVectorFunction, FieldMultivariateMatrixFunction and CalculusFieldMultivariateMatrixFunction. Fixes issues/195. | luc | |
Added integration/differentiation of {Field}DerivativeStructure. Fixes issues/192. Thanks to Romain Serra. | luc |
Release 2.1 – 2022-04-24
Type | Changes | By |
---|---|---|
Fixed some wrong branch cuts in inverse Jacobi elliptic functions in the complex case. Fixes issues/189. | luc | |
Added optional modified weights to avoid overshoots in Akima interpolation near constant slopes sub-samples. Fixes issues/172. | luc | |
Avoid building an intermediate complex for computing double norm. Fixes issues/186. | luc | |
Fixed overflows for incrementors that are allowed to reach Integer.MAX_VALUE. Fixes issues/175. | luc | |
Added inverse Jacobi elliptic functions, for both double and field values. Fixes issues/188. | luc | |
Avoid too many calls to function in BracketingNthOrderBrentSolver when using AllowedSolution.ANY_SIDE. Fixes issues/183. | luc | |
Added Modified Gram-Schmidt basis orthonormalization process in MatrixUtils for double-based and CalculusFieldElement-based list of vectors. Fixes issues/178. | luc | |
Fixed issue in Laguerre solver related to different representations of signed zeros. Fixes issues/177. | luc | |
Allow generation of continued fractions convergents as streams of BigFraction/Fraction to allow user to apply their own convergence criterion to select one convergent. Fixes issues/176. | luc | |
Fixed inconsistency of eigenvalues and eigenvectors between OrderedComplexEigenDecomposition and base class ComplexEigenDecomposition. Fixes issues/173. | luc |
Release 2.0 – 2021-08-07
Type | Changes | By |
---|---|---|
Added field versions of univariate integrators. Fixes issues/153. | luc | |
Added numerical evaluation of complex elliptic integrals. | luc | |
Added complex and field complex univariate integrals (including contour integrals). Fixes issues/149. | luc | |
Added ArrayFieldVector.toString(). Fixes issues/143. | luc | |
Fixed array index error in field LU decomposition. Fixes issues/144. Thanks to Axel Kramer. | luc | |
Added getRowDimension and getColumnDimension to DecompositionSolver and FieldDecompositionSolver. Fixes issues/135. | luc | |
Fixed ulp() implementation for Dfp. Fixes issues/142. | luc | |
Added a way to have a more accurate value of π for fields implementations that require it. Fixes issues/141. | luc | |
Clarified arguments in the one-argument version of the two-arguments atan2 function in CalculusFieldElement. Fixes issues/140. | luc | |
Renamed signum into sign in field classes, and improved implementation for complex numbers. Fixes issues/138. | luc | |
Fixed consistent implementations between {Field}LUDecomposition classes. Fixes issues/131. | bryan | |
Added Carlson elliptic integrals (R_F, R_J, R_G, R_D, and R_C) both for real, CalculusFieldElement, Complex, and FieldComplex. | luc | |
Fixed branch cut on imaginary axis for complex atan. Fixes issues/129. | luc | |
Changed return types for field elements methods (including Complex): norm() → double, abs() → field element. Fixes issues/124. | luc | |
Added the four Jacobi theta functions θ₁(z|τ), θ₂(z|τ), θ₃(z|τ), and θ₄(z|τ), both for complex and field complex. | luc | |
Added field-based complex numbers. Fixes issues/126. | luc | |
Added Legendre elliptic integrals (K, K', E, D, F, Π), both complete and incomplete, both for real, CalculusFieldElement, Complex, and FieldComplex. | luc | |
Added the twelve Jacobi elliptic functions sn, cn, dn, cs, ds, ns, dc, nc, sc, nd, sd, and cd, both for primitive double and fields. Fixes issues/119. | luc | |
Added field implementations of ulp function. Fixes issues/123. | luc | |
Added a way to compute both sinh and cosh at once faster than performing two calls. This also speeds up all derivatives implementations as well as complex computations. Fixes issues/122. | luc | |
Removed methods and constants deprecated during the 1.x series. Fixes issues/121. | luc | |
Replaced RealFieldElement by CalculusFieldElement interface and have Complex implement it so it can be used in many Hipparchus algorithms (like ODE). Also replaced RealField{Univariate|Bivariate|Vector|Matrix}Function by CalculusField{Univariate|Bivariate|Vector|Matrix}Function. Fixes issues/67. | luc | |
Added isInteger predicate for Fraction and BigFraction. Fixes issues/115. | luc | |
Added the Ryū algorithm to generate very fast the shortest decimal representation of a floating point number that maintains round-trip safety. | luc | |
Added Møller's 2Sum algorithm to MathUtils. Fixes issues/116. | andrewsgoetz | |
Allow selecting customized threshold for tests in OrderedComplexEigenDecomposition. Fixes issues/111. | luc | |
Added zero checker predicate for some linear algebra algorithms. Fixes issues/110. | luc | |
Fixed exception in OrderedComplexEigenDecomposition when eigenvalues are equal. Fixes issues/109. | luc |
Release 1.8 – 2020-12-05
Type | Changes | By |
---|---|---|
Added sum and difference of angles in SinCos and FieldSinCos. Fixes issues/106. | luc | |
Removed spurious reduction of BigFraction in equality test. Fixes issues/105. | luc | |
Fixed LU-decomposition issue with signed zero complex numbers on diagonal. Fixes issues/104. | luc | |
Fixed complex eigendecomposition when several eigenvalues are equals. Fixes issues/99. | luc |
Release 1.7 – 2020-06-23
Type | Changes | By |
---|---|---|
Added ExtendedUnivariateDifferentiableVectorFunction interface for differentiable vectorial function. Fixes issues/97. | bryan | |
Added intermediate interface {Field}Derivative. The interface is implemented by both {Field}DerivativeStructure, {Field}Gradient, {Field}UnivariateDerivative1and {Field}UnivariateDerivative2 | luc | |
Added new mathematical methods for FieldGradient, FieldUnivariateDerivative1 and FieldUnivariateDerivative2. Fixes issues/95. | bryan | |
Added isMathematicalInteger to Complex. Fixes issues/92. | luc | |
Added isMathematicalInteger to Precision for double and float numbers. | luc | |
Added UnivariateDerivative1, UnivariateDerivative2 and Gradient for computing derivatives in simple cases with less overhead than DerivativeStructure. Fixes issues/93. | luc | |
Added map and mapToSelf to RealMatrix. Fixes issues/81. | luc | |
Don't ignore exceptions, use try with resources. Fixes issues/71. | luc | |
Fixed accuracy of linear combination for Dfp. Fixes issues/91. | luc | |
Added Dfp conversion to either larger or smaller number of digits. | luc | |
Fixed handling of special cases in Dfp.atan2(y, x). Fixes issues/88. | luc | |
Prevent overflow of Dfp.hypot. Fixes issues/87. | luc | |
Fixed Dfp.floor and Dfp.ceil for numbers close to zero. Fixes issues/86. | luc | |
Fixed Decimal64.rootN for negative arguments and even roots. Fixes issues/82. | luc | |
Provide both L_1 and L_infinity norms for matrices. Fixes issues/77. | luc | |
Fixed MathArrays.linearCombination when signed zeros are involved. Fixes issues/76. | luc | |
Fixed Complex.pow(Complex p) and Complex.pow(double p) for special cases (real arguments, integer power, 0). Fixes issues/74. | luc | |
Added Complex.pow(int n) with integer power computed more accurately by successive squarings rather than complex logarithm and exponential. | luc | |
Added signum to Fraction and BigFraction. Fixes issues/63. | luc | |
Prevent random failure of micro-sphere test case. | luc |
Release 1.6 – 2019-11-01
Type | Changes | By |
---|---|---|
Prevent stack overflow error when attempting integration with too large number of points. Fixes issues/61. | luc | |
Show full precision in exception message when root bracketing fails. Fixes issues/56. | ward | |
When exception message formatting fails still show a helpful message and stack trace. Fixes issues/56. | ward |
Release 1.5 – 2019-05-06
Type | Changes | By |
---|---|---|
Added FieldBivariateFunction and make both BilinearInterpolatingFunction and PiecewiseBicubicSplineInterpolatingFunction implement it. Github: fixes #55. Fixes issues/55. | luc | |
Added FieldUnivariateInterpolator and make both LinearInterpolator, AkimaSplineInterpolator and SplineInterpolator implement it. | luc | |
Added FieldPolynomialFunction and FieldPolynomialSplineFunction. | luc | |
Fixed documentation for interpolation algorithms. Github: fixes #53. Fixes issues/53. | luc |
Release 1.4 – 2018-11-17
Type | Changes | By |
---|---|---|
Added bilinear interpolation for 2D grids. Github: fixes #48. Fixes issues/48. | luc | |
Added field version of sinCos. Github: fixes #47. Fixes issues/47. | luc | |
Fixed wrong construction of an Illinois solver that really built a Pegasus solver. Github: fixes #44. Fixes issues/44. | luc | |
Renamed scale parameter to location parameter in the log-normal distribution, to avoid confusion. Github: fixes #4. Fixes issues/4. | luc | |
Bisection solvers failed to raise an exception when the search interval did not bracket a root. Github: fixes #40. Fixes issues/40. | luc | |
Added a way to build three-dimensional field arrays. | luc |
Release 1.3 – 2018-05-08
Type | Changes | By |
---|---|---|
Added in FastMath the methods Java 9 added in StrictMath. This ensures FastMath is always a drop-in replacement for Math/StrictMath. Github: fixes #36. Fixes issues/36. | luc | |
Added FieldUnivariateVectorFunction and FieldUnivariateMatrixFunction interfaces, as well as RealFieldUnivariateVectorFunction and RealFieldUnivariateMatrixFunction Github: fixes #35. Fixes issues/35. | luc | |
Added FieldUnivariateFunction interface and have polynomials implement it. Github: fixes #34. Fixes issues/34. | luc | |
Added new utility methods to create real and field vectors from dimension. | luc | |
Allow FastMath to operate on RealFieldElements. This simplifies a lot "fieldification" of algorithms previously implemented with primitive double numbers. | luc | |
Added a transposeMultiply method to compute A^T.B without creating the intermediate transposed matrix. | luc | |
Added a multiplyTransposed method to compute A.B^T without creating the intermediate transposed matrix. | luc | |
Added MatrixDecomposer interface that encapsulates algorithms tolerances. Thanks to Evan Ward. | luc | |
Added a way to compute both sin and cos at once faster than performing two calls. This also speeds up DerivativeStructure.sin and DerivativeStructure.cos. | luc | |
Fixed a problem with eigen decomposition of matrices with large coefficients. Github: fixes #30. Fixes issues/30. | luc | |
Added a solver for Continuous time Algebraic Riccati Equation. Fixes issues/29. Thanks to Alessandro Romero. | luc | |
Added complex eigen decomposition. Thanks to Alessandro Romero. | luc |
Release 1.2 – 2017-10-25
Type | Changes | By |
---|---|---|
Added new RealFieldElement implementations computing a tuple. This allow to perform the same computation on several values at once. The getReal() value correspond to the first component of the tuple. | luc | |
Added bracketing helper methods in UnivariateSolverUtils for RealFieldUnivariateFunction. Github: fixes #24. Fixes issues/24. | luc | |
Improved performance of getRow and setRow for Array2DRowRealMatrix and Array2DRowFieldMatrix. Github: fixes #22. Fixes issues/22. Thanks to Christoph Dibak. | luc |
Release 1.1 – 2017-03-16
Type | Changes | By |
---|---|---|
Added support for sampling from enumerated distributions in RandomDataGenerator. GitHub: fixes issue #19. Fixes issues/19. | psteitz | |
Added support for exact integration in PolynomialFunction. GitHub: fixes issue #18. Fixes issues/18. | psteitz | |
Added a factory to simplify building DerivativeStructure instances. | luc | |
Added proper implementations of equals and hashCode to Fields so they can be used as keys in maps. | luc | |
Added a derivatives method in Hermite interpolator, similar to the one from FieldHermiteInterpolator. | luc | |
Added field-based derivative structures. | luc | |
Added field-based QR decomposition. GitHub: fixes issue #17. Fixes issues/17. Thanks to Andrea Antolino. | luc | |
Performance improvement for Array2DRowRealMatrix.getSubMatrix() (and also Array2DRowFieldMatrix.getSubMatrix()). GitHub: fixes issue #12. Fixes issues/12. Thanks to Christoph Dibak. | ebourg | |
Improved parameter validation for probabilities provided to enumerated distribution constructors. | psteitz | |
Added methods to expose the probability mass function to EnumeratedRealDistribution and EnumeratedIntegerDistribution. | psteitz |
Release 1.0 – 2016-06-23
Type | Changes | By |
---|---|---|
Renamed TestUtils in core stat.inference to InferenceTestUtils and TestUtils in the core unit test package to UnitTestUtils. | psteitz | |
Moved EmpiricalDistribution and MultivariateNormalExpectationMaximization from the random package into stat.fitting and dropped ValueServer. | psteitz | |
Moved sampling (random deviate generation) from distribution implementations to RandomDataGenerator in the random package. | psteitz | |
Fixed "HypergeometricDistribution#logProbability(int)" which returned NaN in case the number of successes equals the population size. | tn | |
Removed interface "DoubleArray". | tn | |
Removed interface "NumberTransformer" and classes "TransformerMap" and "DefaultTransformer" related to transformation of arbitrary objects to double primitives. | tn | |
Fix DerivativeStructure.pow for 0 argument and power less than 1. Thanks to Andrea Antolino. | luc | |
Fix "FastMath#round(..)" to comply to changed contract of "Math#round()" in Java 8. | tn | |
Fixed DerivativeStructure.pow(0.0) which was NaN when the DS was 0, despite it should always be 1.0 in this case, regardless of the base (even if the base is NaN, in fact). | luc | |
Added Gauss-Laguerre quadrature for integration of improper integrals. | tn | |
Added "AggregatableStatistic" interface for statistics that can aggregate results. | tn | |
Added aggregation capabilities to "StreamingStatistics", replacing the removed class "AggregatingSummaryStatistics". | tn | |
Removed "SynchronizedSummaryStatistics", "SynchronizedDescriptiveStatistics" and "SynchronizedMultivariateSummaryStatistics". All implementations are considered to be not threadsafe. Aggregation of results is preferred over synchronization. | tn | |
Renamed "SummaryStatistics" to "StreamingStatistics". Additionally, removed support for setting custom statistics implementations. | tn | |
Replaced "VectorialMean" with a more generic class "VectorialStorelessStatistic" which supports to apply any "StorelessUnivariateStatistic" on vector data. | tn | |
Removed static "copy(A, B)" methods for storeless statistics. | tn | |
"Median" does not extend from "Percentile" anymore, but uses composition instead. | tn | |
Summary statistics based on external moments (e.g. Mean, Variance) are now immutable. | tn | |
Simplified "BinomialConfidenceInterval" and its implementations into class "BinomialProportion". | tn | |
Removed accuracy parameter in constructors of "RealDistribution" implementations that calculate the inverse cumulative probability analytically. | tn | |
Refactored distribution implementations into separate sub-packages: "discrete", "continuous" and "multivariate". | tn | |
Removed "copyOf" and "copyOfRange" methods in "MathArrays". "Object#clone()" and "Arrays#copyOfRange(...)" should be used instead. | tn | |
Simplified "PivotingStrategyInterface" and implementations into single enum class "PivotingStrategy". | tn | |
"RealVector#Entry" is now public. | tn | |
"RealLinearOperator" is now an interface. | tn | |
"Frequency" class now uses generics. For similar functionality as previous class wrt integer numbers, use "LongFrequency" which supports adding different integer number types (e.g. int, long, short) to the same "LongFrequency" instance. | tn | |
Simplified exception hierarchy. | luc | |
Modularized the library. | tn | |
Forked from the Apache Commons Math library. | psteitz |