Release History

Version Date Description
2.0 2021-08-07 This is a major release. The main changes are the addition of a sequential Gauss-Newton optimizer, improved relative scheduling of step handlers and events handlers in ODE, addition of a finish callback in step handlers, 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. The main changes are the addition of a field version of Vector2D, addition of an Optimum.of() factory method and a visibility change of the AbstractEvaluation constructor.
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, and the introduction of reset events in ODE.
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, accessors for state transition matrix, Jacobian matrix H, innovation covariance matrix and Kalman gain in Kalman filters, support for complex ordinary differential equations (both primary and secondary equations), and various fixes in partitioning.
1.3 2018-05-08 This is a maintenance release. The main changes since last version are the introduction of complex eigen decomposition, introduction of a solver for continuous time algebraic Riccati equation, a new Kalman module featuring both a filter for linear processes and a filter for non-linear processes, capability for secondary equations to update the derivatives of the primary equation in ODE, and introduction of a matrix decomposer to configure decomposition threshold independently of the matrix.
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 2.0 – 2021-08-07

Type Changes By
Added field versions of univariate integrators. Fixes issue/153. luc
Added numerical evaluation of complex elliptic integrals. luc
Added complex and field complex univariate integrals (including contour integrals). Fixes issue/149. luc
Allow retrieving event handler configuration from ODE integrators. Fixes issues/147. luc
Added a separate finish method in ODE step handlers to be called after last step. Fixes issues/146. luc
Fixed out-of-order scheduling of calls to step handlers and event handlers. Fixes issues/145. 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 sequential Gauss-Newton optimizer. Thanks to Julie Bayard. 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 event filtering for field ODE. Fixes issues/120. luc
Use primitive double for initial step and error factors in Field adaptive step size integrators. Fixes issues/118. luc
Added the Ryū algorithm to generate very fast the shortest decimal representation of a floating point number that maintains round-trip safety. luc
Fix interpolation of a pair of ODE states whose times are the same. Such a pair can appear when a RESET_STATE or RESET_DERIVATIVES event occurs at the integration stop time. Fixes issues/112. Thanks to andrewsgoetz. 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
Fix infinite loop in event handling when a RESET_STATE or RESET_DERIVATIVES event causes two other event detectors to trigger simultaneously and discontinuously at the same time. Fixes issues/94. Thanks to Mikael. evan
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
Add Line.fromDirection(...). Fixes issues/78. evan
Changed RotationOrder from final class to enum. Fixes issues/72. bryan
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
Add Optimum.of(...). ward
Make AbstractEvaluation constructor public, fix javadoc. ward
Fixed missing safety check in multi-step integrators. Github: fixes #62. Fixes issues/62. luc
Added field version of Vector2D. luc
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
Nullify corrected state after predict in abstract Kalman filter. Note that this affects only custom extensions of AbstractKalmanFilter because the implementations provided by Hipparchus (LinearKalmanFilter and ExtendedKalmanFilter) always call correction step after having called prediction step, so the nullified corrected state is reset properly at the end. This was initially reported as https://gitlab.orekit.org/orekit/orekit/issues/540. Thanks to Hao Peng. luc
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
Avoid too many multi-step integrator restarts after event resetting derivatives. Github: fixes #54. Fixes issues/54. luc
Add Action.RESET_EVENTS to ask the integrator to recheck all event detectors without recomputing the step. Use when the g function of one event detector depends on events occurring in another event detector. evan
Fixed documentation for interpolation algorithms. Github: fixes #53. Fixes issues/53. luc
Fixed lines/polyhedrons intersection occurring on facets boundaries. This was ported from Apache Commons Geometry issue 38. Thanks to Matt Juntunen. 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 2D outline extraction from 3D polyhedrons sets with holes. GitHub: fixes #45. Fixes issues/45. luc
Added support for complex ordinary differential equations (both primary and secondary equations). Github: fixes #39. Fixes issues/39. 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
Added accessors for state transition matrix, Jacobian matrix H, innovation covariance matrix and Kalman gain in Kalman filters. GitHub: fixes #43. Fixes issues/43. luc
Use topological information from BSP tree to connect more reliably edges and vertices when building the boundary loops of SphericalPolygonsSet. GitHub: fixes #42. Fixes issues/42. luc
Forbid use of unrealistic tolerances (below ulp(2π)) in spherical geometry. GitHub: fixes #42. Fixes issues/42. luc
Fixed a corner case in BSPTree split. GitHub: fixes #41. Fixes issues/41. 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 linear and extended Kalman filters, with support for outliers rejection. Fixes issues/32. 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
Allow secondary equations to update derivatives of primary equation in ODE. GitHub: fixes #31. Fixes issues/31. 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
Corrected MannWhitneyTest to report the U statistic used in the test and improved accuracy of the reported p-values by 1) adding an implementation of exact computation for small sample sizes 2) applying continuity correction to the normal approximation when this is used 3) adjusting variance for the presence of ties in the data. The problem with the U statistic was reported against Apache Commons Math as MATH-1453. Fixes issues/38. psteitz
Corrected WilcoxonSignedRankTest to discard tied pairs and to correctly perform continuity correction when estimating p-values using the normal approximation. This was reported against Apache Commons Math as MATH-1233. Fixes issues/37. psteitz

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 a method to compute the orientation of a triplet of points in 2D. luc
Fixed an error in EmpiricalDistribution causing cumulative probabilities to be returned as NaN when some data bins are empty. This was reported against Apache Commons Math as MATH-1431. Github: fixes #25. Fixes issues/25. psteitz
Added bracketing helper methods in UnivariateSolverUtils for RealFieldUnivariateFunction. Github: fixes #24. Fixes issues/24. luc
Added a getBRep method to PolyhedronsSet to extract a Boundary REPresentation in regular cases (unbounded PolyhedronsSet or PolyhedronsSet with holes in their boundary are not supported). luc
Fixed NullPointerException when computing size of unbounded polygons sets. Fixes issues/23. luc
Improved performance of getRow and setRow for Array2DRowRealMatrix and Array2DRowFieldMatrix. Github: fixes #22. Fixes issues/22. Thanks to Christoph Dibak. luc
Fixed polygons creation from lists of vertices (both in Euclidean and spherical geometry) when separate edges share the same hyperplane (line or circle) but with different orientations. Fixes issues/21. luc

Release 1.1 – 2017-03-16

Type Changes By
Core: Added support for sampling from enumerated distributions in RandomDataGenerator. GitHub: fixes issue #19. Fixes issues/19. psteitz
Core: Added support for exact integration in PolynomialFunction. GitHub: fixes issue #18. Fixes issues/18. psteitz
Added a factory to simplify building DerivativeStructure instances. luc
Core: Added proper implementations of equals and hashCode to Fields so they can be used as keys in maps. luc
Core: Added a derivatives method in Hermite interpolator, similar to the one from FieldHermiteInterpolator. luc
Core: Added field-based derivative structures. luc
Core: Added field-based QR decomposition. GitHub: fixes issue #17. Fixes issues/17. Thanks to Andrea Antolino. luc
Core: Performance improvement for Array2DRowRealMatrix.getSubMatrix() (and also Array2DRowFieldMatrix.getSubMatrix()). GitHub: fixes issue #12. Fixes issues/12. Thanks to Christoph Dibak. ebourg
Core: Improved parameter validation for probabilities provided to enumerated distribution constructors. psteitz
Core: Added methods to expose the probability mass function to EnumeratedRealDistribution and EnumeratedIntegerDistribution. psteitz
Stat: Fixed overly-aggressive sufficient data check in OLS/GLS regression classes. When there is no intercept in the model, the number of observations can equal the number of regressors. GitHub: fixes #13. Fixes issues/13. psteitz
Stat: Fixed bug in 2-sided binomial test leading to inflated p-values in some cases. This was reported against Commons Math as MATH-1381. psteitz
Stat: Add implementation of RANDOM algorithm for streaming percentile computation. psteitz
Stat: Add default "toString()" implementation to "AbstractStorelessUnivariateStatistic". tn
Stat: "StorelessUnivariateStatistic", "DescriptiveStatistics" and "StreamingStatistics" now extend from "DoubleConsumer", allowing to easily use them within streams. tn
Ode: Fixed Field ODE integrators handling of secondary equations. GitHub: fixes #7. Fixes issues/7. luc
Geometry: Fixed numerical noise issues in Welzl smallest enclosing ball computation. Thanks to jerdmanGH for reporting the issue. GitHub: fixes #20. Fixes issues/20. luc
Geometry: Added field based 3D lines. luc
Geometry: Added utility methods for field-based rotations and 3D vectors. luc

Release 1.0 – 2016-06-23

Type Changes By
Creation of a migration module and an associated script to help switching from Apache Commons Math to Hipparchus. luc
Simplified exception hierarchy. luc
Modularized the library into several components (hipparchus-core, hipparchus-clustering, hipparchus-fft, hipparchus-fitting, hipparchus-genetics, hipparchus-geometry, hipparchus-geometry, hipparchus-ode, hipparchus-optim, hipparchus-samples, hipparchus-stat). tn
Forked from the Apache Commons Math library. psteitz

Back to top

Reflow Maven skin by Andrius Velykis.