MathPHP Change Log
v2.10.0 - 2024-04-16
New Features
- NumberTheory\Integer
isPrime
v2.9.0 - 2024-03-02
New Features
Improvements
- Internal build CI/CD improvements
v2.8.1 - 2023-05-18
Improvements
- Internal improvements to improve conformance with static analysis tools
v2.8.0 - 2023-05-07
New Features
- Matrix
rowAddVector
- Matrix
columnAddVector
Improvements
- Better error handling and exception message in
Sequence\NonIntenger::hyperharmonic
- Internal code improvements to conform to static analysis checks
Backwards Incompatible Changes
- Helper method names changed (public abstract methods but not part of published interface)
NumericalDifferentiation::isTargetInPoints
changed to assertTargetInPoints
NumericalDifferentiation::isSpacingConstant
changed to assertSpacingConstant
v2.7.0 - 2022-12-31
Improvements
- Improved algorithm for
regularizedIncompleteBeta
: Addresses issue 458
- Issue 456: Improved PHPDoc blocks: Changed "number" to "int|float"
- Added PHP 8.2 for CI test target
v2.6.0 - 2022-04-10
Improvements
Average::truncatedMean
behavior at 50% trim made consistent
- PHP 8.1 compatibility improvements
Backwards Incompatible Changes
Average::truncatedMean
throws exception if trim percent greater than 50% rather than error or unpredictable results.
v2.5.0 - 2021-11-21
New Features
- Special function
logbeta
- Special function
logGamma
- Special function
logGammaCorr
- Special function
stirlingError
Improvements
- Improvements in StudentT continuous distribution
- Improvements in special function
gamma
- Improvements in special function
beta
Bug Fixes
- Issue 393 (regularizedIncompleteBeta NAN)
- Issue 429 (Linear regression CI division by zero)
v2.4.0 - 2021-07-27
New Features
- Complex Exponential (
exp
)
- Complex Exponentiation (
pow
)
- Zipf's Law Discrete Distribution
- Generalized harmonic non-integer sequence
Improvements
- Fixed Complex
polarForm
to compute the right values
- Fixed
hyperharnomic
non-integer sequence. Previously was computing the wrong thing
- Fixed how
ArbitraryInterger
handles pow
of negative exponents
Backwards Incompatible Changes
- Complex
polarForm
now returns an array rather than a Complex number, as the Complex return was incorrect
- Interface to
hyperharmonic
non-integer sequence changed due to previous implementation being incorrect
v2.3.0 - 2021-07-14
New Features
- Matrix SVD (Singular Value Decomposition)
- Polynomial companion matrix
v2.2.0 - 2021-07-11
New Features
- PLS (Partial Least Squares Regression)
Improvements
- Add custom
__debugInfo
to NumericMatrix
v2.1.0 - 2021-07-07
New Features
v2.0.0 - 2021-05-09
New Features
- Matrix Improvements
walk
method to map a function to all values without mutation or returning a value
MatrixFactory
creates more matrix types
MatrixFactory::createNumeric
to create NumericMatrix
types
MatrixFactory::createFromRowVector
MatrixFactory::createFromColumnVector
- Internal
ObjectMatrix
improvements
- Add
trace
- Add
scalarMultiply
- Add initial
ComplexMatrix
- Sample data People
Improvements
- Bug fixes
- Issue 414 fixed - PCA/Eigenvalue convergence
- Issue 413 fixed - matrix solve with singular matrix using RREF
Migration - Upgrading to v2.0 from v1.0
- PHP minimum version now 7.2 (was 7.0)
- Deprecated code removed (backwards-incompatible change)
MathPHP\Statistics\Distance::kullbackLeiblerDivergence
removed (Use MathPHP\Statistics\Divergence::kullbackLeibler
instead)
MathPHP\Statistics\Distance::jensenShannonDivergence
removed (Use MathPHP\Statistics\Divergence::jensenShannon
instead)
- Matrix Decompositions no longer implement
\ArrayAccess
interface to access decomposition matrixes. Use properties instead.
MathPHP\LinearAlgebra\Decomposition\Cholesky
$cholesky['L']
, $cholesky['Lᵀ']
, $cholesky['LT']
removed, use $cholesky->L
, $cholesky->Lᵀ
, $cholesky->LT
instead.
MathPHP\LinearAlgebra\Decomposition\Crout
$crout['L']
, $crout['U']
removed, use $crout->L
, $crout->U
instead.
MathPHP\LinearAlgebra\Decomposition\LU
$LU['L']
, LU['U']
, LU['P']
removed, use $LU->L
, $LU->U
, $LU->P
instead.
MathPHP\LinearAlgebra\Decomposition\QR
$QR['Q']
, $QR['R']
removed, use $QR->Q
, $QR->R
instead.
- Methods renamed (backwards-incompatible change)
MathPHP\Statistics\Distance::bhattacharyyaDistance
renamed to MathPHP\Statistics\Distance::bhattacharyya
MathPHP\Statistics\Distance::hellingerDistance
renamed to MathPHP\Statistics\Distance::hellinger
- Moved Functionality (backwards-incompatible change)
MathPHP\Functions\Polynomial
moved to MathPHP\Expression\Polynomial
MathPHP\Functions\Piecewise
moved to MathPHP\Expression\Piecewise
- Matrix internal refactoring
- Note: These changes will not affect any client code as long as matrices were created using
MatrixFactory
.
Matrix
is not a base abstract class for all matrix classes to extend
Matrix
renamed NumericMatrix
Matrix
base method createZeroValue
- Use case is various
ObjectMatrix
classes that implement ObjectArithmetic
RowVector
removed. Use MatrixFactory::createFromRowVector
instead
ColumnVector
removed. Use MatrixFactory::createFromColumnVector
instead
v1.11.0 - 2021-05-09
Improvements
- Bugfix (Issue 413): Matrix solve with singular matrix using RREF
- Bugfix (Issue 414): PCA/Eigenvalue convergence
v1.10.0 - 2020-12-19
Improvements
- Bugfix (Issue 356): Fix Finance IRR NANs
v1.9.0 - 2020-12-13
New Features
- Vector min and max
- Arithmetic isqrt (integer square root)
Improvements
- Remove Travis CI (Moved CI to Github Actions in v1.8.0 release)
- Rearrange non-code files
v1.8.0 - 2020-12-11
Improvements
- Improve permutations algorithm to be more efficient and more numerically stable
- Qualify PHP function names with root namespace
- Move CI to Github Actions
v1.7.0 - 2020-11-15
New Features
- Algebra linear equation of one variable
- Rational number inverse
- Rational number pow
Improvements
- Improve combinations algorithm to be more efficient and more numerically stable
- Internal Matrix class reorganization
v1.6.0 - 2020-10-22
New Features
- Special function regularized lower incomplete gamma
- Cereal sample data set
Improvements
- Define boundary condition for lower incomplete gamma function
v1.5.0 - 2020-10-12
New Features
- Matrix LU solve
- Matrix QR solve
Improvements
- Bugfix (Issue 386) Matrix solve improvements
- Matrix solve has optional method parameter to force a solve method
- Bugfix ArbitraryInteger multiplication sign not taken into account
v1.4.0 - 2020-10-02
New Features
- Multivariate Regular Grid Interpolation
- Jensen-Shannon Distance
- Canberra Distance
- Search Sorted
- Search ArgMax
- Search NanArgMax
- Search ArgMin
- Search NanArgMin
- Search NonZero
Improvements
- Divergence factored out of Distance into new Divergence class
Backwards Incompatible Changes
- Legacy Distance divergences marked as deprecated (To be removed in v2.0.0)
v1.3.0 - 2020-08-24
New Features
- LinearAlgebra\Vector
- Angle between two vectors
- L¹ distance of two vectors
- L² distance of two vectors
- Minkowski distance of two vectors
- Statistics\Distance
- Minkowski distance
- Euclidean distance (L² distance)
- Manhattan distance (Taxicab geometry, L¹ distance, etc.)
- Cosine distance
- Cosine similarity
v1.2.0 - 2020-07-24
New Features
- Ranking
- Ordinal ranking
- Standard competition ranking
- Modified competition ranking
- Fractional ranking
Improvements
- (Issue 380) Fixed Spearman's Rho calculation when there are rank ties
v1.1.0 - 2020-04-19
New Features
Improvements
- Improved matrix multiplication performance using cache-oblivious algorithm optimization
v1.0.0 - 2020-04-14
Initial version 1.0.0 release!
v0.62.0 - 2020-04-08
Improvements
v0.61.0 - 2020-03-22
New Features
- Multivariate Hypergeometric distribution
v0.60.0 - 2020-02-27
New Features
- Sample Data
- MtCars
- Iris
- ToothGrowth
- PlantGrowth
- UsArrests
v0.59.0 - 2020-02-19
New Features
- Add population and sample kurtosis
- Changed default kurtosis algorithm to the more common population kurtosis
- kurtosis now takes an optional parameter to set the kurtosis type algorithm
v0.58.0 - 2020-02-06
Improvements
- Changed default skewness algorithm to the more common sample skewness
- skewness now takes an optional parameter to set the skewness type algorithm
- Improvements to skewness algorithms
v0.57.0 - 2020-01-07
New Features
- Number\Rational basic getters
- getWholePart
- getNumerator
- getDenominator
- Set Theory n-ary Cartesian product
Improvements
- Data direction control for Matrix meanDeviation and covarianceMatrix
- Algebra factors performance improvement
v0.56.0 - 2019-12-03
New Features
- Number Theory
- isDeficientNumber
- isAbundantNumber
- aliquotSum
- radical
- totient
- cototient
- reducedTotient
- mobius
- isSquarefree
- isRefactorableNumber
- isSphenicNumber
- numberOfDivisors
- sumOfDivisors
Improvements
- Optimization of prime factorization algorithm
v0.55.0 - 2019-11-19
New Features
- Arbitrary length integers
Improvements
v0.54.0 - 2019-10-12
New Features
- Matrix isNilpotent
- Matrix isRectangularDiagonal
- Matrix mapRows
- MathPHP logo
Improvements
- MatrixFactory random matrix custom lower and upper bounds for random number
- PSR-12 style compliance
- Bugfix: powerIteration random failure - Issue 346
v0.53.0 - 2019-09-09
New Features
- Matrix QR decomposition using Householder reflections
- Matrix Householder transformation
- MatrixFactory random matrix
- MatrixFactory givens rotation matrix
- Matrix isIdempotent
- Matrix Eigenvalue power iteration
- Matrix Eigenvalue jacobi method
- Arithmetic root (nᵗʰ root)
- Vector arithmetic multiply and divide
- Vector Iterator interface
Improvements
- Internal improvements to Matrix
- Matrix decompositions returned as objects
- Matrix Cholesky decomposition provides L transpose
v0.52.0 - 2019-07-11
New Features
- Grubb's test for statistical outliers
v0.51.0 - 2019-06-05
New Features
- Matrix rowSums
- Matrix columnSums
- Matrix rowMeans
- Matrix columnMeans
- Matrix isNormal
- MatrixFactory diagonal matrix creation method
- MatrixFactory vandermonde matrix creation method
Improvements
- Set custom Matrix tolerances
- Various internal improvements
Backwards Incompatible Changes
- Remove Matrix sampleMeans (use rowMeans or columnMeans instead)
- MatrixFactory create method only works with 2d arrays. 1d arrays no longer work. (use diagonal and vandermonde factory methods instead)
- Statistics methods throw exceptions instead of returning null on bad input
- Change return type of LagrangePolynomial to Polynomial
v0.50.0 - 2019-04-22
New Features
- Matrix isOrthogonal
- Matrix isEqual
- Harmonic sequence
- Hyperharmonic sequence
- Map\Single reciprocal
Improvements
- Support methods for almost equal
- Matrix getDiagonalElements works for non-square matrices
- Use more efficient algorithm in Matrix isSymmetric
- Use more efficient algorithm in Matrix isSkewSymmetric
Backwards Incompatible Changes
- Statistics methods throw exceptions instead of returning null on bad input
v0.49.0 - 2019-02-23
New Features
- Matrix augmentAbove
- Matrix augmentLeft
Improvements
- Object matrix multiplication
v0.48.0 - 2018-12-15
New Features
- Matrix submatrix
- Mahalanobis distance
- Bernoulli distribution mean, median, mode and variance
- Binomial distribution mean and variance
- Geometric distribution mean, median, mode and variance
- Hypergeometric distribution mode and variance
- NegativeBinomial (Pascal) distribution CDF, mean, mode and variance
- Poisson distribution mean, median, mode and variance
- Discrete Uniform distribution variance
Improvements
- Binomial distribution PMF uses more numerically stable multiplication method
- Fix potential divide by zero in TheilSen regression
Backwards Incompatible Changes
- Multinomial distribution moved from Discrete to Multivariate namespace
v0.47.0 - 2018-11-21
New Features
- Beta distribution median, mode, variance
- Cauchy distribution variance
- ChiSquared distribution mode, variance
- Exponential distribution median, mode, variance
- F distribution mode, variance
- Gamma distribution median, mode, variance
- Laplace distribution mode, variance
- Logistic distribution mode, vaiance
- LogLogistic distribution median, mode, variance
- LogNormal distribution mode, variance
- Normal distribution mode, variance
- StandardNormal distribution mode, variance
- StudentT distribution mode, variance
- Uniform distribution median, mode, variance
- Weibull distribution median, mode
Improvements
- Normal distribution rand algorithm changed to Box–Muller transform
v0.46.0 - 2018-10-28
New Features
- NumberTheory isPerfectNumber
- Sequence perfectNumber
Improvements
- Improve README documentation for continuous distributions
- Updates to build tools
- General improvements
v0.45.0 - 2018-09-24
Improvements
- Add Beta distribution inverse quantile function
- Improvements to Weibull distribution
- Improvements to Cauchy distribution
- Improvements to Laplace distribution
- Improvements to Logistic distribution
- Improvements to LogNormal distribution
- Improvements to Normal distribution
- Improvements to Pareto distribution
- Improvements to Algebra cubic/quartic complex root handling
v0.44.0 - 2018-08-29
Improvements
- [Issue 271] Improvements to documentation
- [Issue 269] Add closed-form inverse function for Exponential distribution
v0.43.0 - 2018-05-21
New Features
- Arithmetic copySign
- Matrix negate
- Matrix isSkewSymmetric
v0.42.0 - 2018-05-09
New Features
- Weighted mean
- Weighted sample variance
- Weighted covariance
- Weighted correlation coefficient
Improvements
v0.41.0 - 2018-04-23
New Features
Improvements
- Statistics\Average::mode improved to work with non-integer values
- Various minor code improvements
v0.40.0 - 2018-03-22
New Features
- Simpler interface for Significance
tTest
for one and two samples
Improvements
- T test for two samples uses more robust Welch test
- Improvements to Normal and Standard Normal continuous distributions
- General improvements to continuous distributions
v0.39.0 - 2018-02-27
Improvements
- Upgrade unit testing framework to PHPUnit 6
- Update unit tests for PHPUnit 6 compatibility
- Add PHP 7.2 to continuous integration tests
v0.38.0 - 2017-12-10
Improvements
- Percentile reimplemented to use linear interpolation between closest ranks method - Second variant, C = 1
- General code improvements
- Better error and exception handling
v0.37.0 - 2017-10-23
Improvements
- Change probability distributions to be objects instead of static methods
Backwards Incompatible Changes
- Change probability distributions to be objects instead of static methods
v0.36.0 - 2017-09-26
New Features
- Rational number
- Gamma distribution mean
Improvements
v0.35.0 - 2017-08-20
New Features
- Matrix isTridiagonal
- Matrix isUpperHessenberg
- Matrix isLowerHessenberg
- Matrix getSuperdiagonalElements
- Matrix getSubdiagonalElements
Improvements
v0.34.0 - 2017-08-12
New Features
- Multivariate normal distribution
v0.33.0 - 2017-08-04
New Features
- Kernel density estimation
v0.32.0 - 2017-07-24
New Features
- Matrix Crout decomposition
- Categorical discrete distribution
v0.31.0 - 2017-07-02
New Features
- Hypergeometric distribution
- Discrete uniform distribution
v0.30.0 - 2017-06-11
New Features
- Dirichlet multivariate distribution
- Gamma distribution
- Initial eigenvalue matrix method
- Initial eigenvector matrix method
- Confidence ellipse
Improvements
- Internal Bitwise addition
v0.29.0 - 2017-05-21
New Features
- Matrix rank
- ObjectArithmetic interface
- Polynomial implements ObjectArithmetic
- ObjectSquareMatrix
- Polynomial negate
Improvements
- Refactor Matrix REF algorithm
- Refactor Matrix RREF algorithm
- Support functions for better handling of infinitesimal floating-point zero-like quantities
- Fix bug in Polynomial degree calculation
- Refactored Polynomial::add() to be simpler and faster
v0.28.0 - 2017-05-02
New Features
- Matrix adjugate
- Polynomial subtract
Improvements
- Internal refactoring/improvements
- Tests namespace for unit tests
- Standardize method naming convention
- Update PHPUnit exception assertion
- Replace class strings in tests with class constants
v0.27.0 - 2017-04-23
New Features
- Matrix
- Cholesky decomposition
- isRref
- Exchange matrix
- isInvolutory
- isSignature
- Hilbert matrix
- isUpperBidiagonal
- isLowerBidiagonal
- isBidiagonal
- Quartic function roots
- Trigonometry unit circle
- Integer
v0.26.0 - 2017-04-15
New Features
- Initial Complex number class
- Complex number support to quadratic and cubic equations
- Initial Eigenvalue strategy class (2x2 and 3x3 matrices using root equations)
- Matrix
- isLowerTriangular
- isUpperTriangular
- isTriangular
- isDiagonal
- Beta function convenience method
Improvements
- Add BadDataException to LeastSquares regression method trait if degrees of freedom is 0
- Complex Root of Quadratic Function
v0.25.0 - 2017-04-01
New Features
- Matrix
- isSingular
- isNonsingular
- isInvertible
- leadingPrincipalMinor
- isPositiveDefinite
- isPositiveSemidefinite
- isNegativeDefinite
- isNegativeSemidefinite
- Number Theory
- Arithmetic
- Basic sequences
v0.24.0 - 2017-03-26
New Features
- Arithmetic cube root
- Algebra cubic equation
- Matrix Kronecker sum
- Vector Kronecker product
- Number theory prime factorization
Improvements
- Improved quadratic equation edge case handling
v0.23.0 - 2017-03-12
New Features
- Number Theory - Integers
- Advanced Sequences
- Perfect powers
- Not perfect powers
- Primes up to n
- Algebra
v0.22.0 - 2017-01-31
New Features
- Circular statistics (directional statistics)
- Circular mean
- Resultant length
- Mean resultant length
- Circular variance
- Circular standard deviation
- Describe
- Finance profitability index
Improvements
- Update Finance payback to be both simple and discounted payback
v0.21.0 - 2017-01-23
New Features
- Finance interest payment
- Finance principle payment on an annuity
- Finance payback
- Make files for unit tests, linting, and code coverage
v0.20.0 - 2017-01-12
New Features
- Finance net present value
- Finance rate function
- Finance internal rate of return
- Finance modified internal rate of return
- Finance payment periods of an annuity
Improvements
- Update Newton's Method to handle non-convergence and infinite slopes.
v0.19.0 - 2016-12-31
New Features
- Matrix sample mean
- Matrix mean deviation form
- Covariance matrix
- Matrix representation as array of column vectors
- Finance future value
- Finance present value
v0.18.0 - 2016-12-28
New Features
- Joint entropy
- Rényi entropy
- Perplexity
- Matrix scalar division
- Finance: Annual Equivalent Rate (AER)
Improvements
- Fix vector pnorm to take absolute value of each element
Backwards Incompatible Changes
- Refactor distances and divergences from InformationTheory\Entropy to Statistics\Distance
v0.17.0 - 2016-12-21
New Features
- Two-sample z significance test
v.0.16.0 - 2016-12-18
New Features
- Information Theory
- Shannon entropy (bits, nats, hartleys)
- Cross entropy
- Bhattacharyya distance
- Kullback-Leibler divergence
- Hellinger distance
- Jensen-Shannon divergence
- Linear Algebra
- vectorMultiply method on Matrix to return Vector when multiply with a Vector
v0.15.0 - 2016-11-10
New Features
- Lazy caterer's sequence
- Magic squares sequence
v0.14.0 - 2016-10-28
New Features
v0.13.0 - 2016-10-17
New Features
Improvements
- Refactor exceptions to use custom exception classes
v0.12.0 - 2016-10-06
New Features
- Softmax function
- Effect size η² (Eta-squared)
- Effect size η²p (Partial eta-squared)
- Effect size ω² (omega-squared)
- Effect size Cohen's ƒ²
- Effect size Cohen's q
- Effect size Cohen's d
- Effect size Hedges' g
- Effect size Glass' Δ (glass' delta)
Improvements
- Replace mt_rand with random_int
v0.11.0 - 2016-10-01
Backwards Incompatible Changes
- Change root namespace from Math to MathPHP
- (Run composer update to update autoloader)
v0.10.0 - 2016-09-28
New Features
- Clamped Cubic Spline Interpolation
- Custom variable in Polynomial class
v0.9.0 - 2016-09-27
New Features
- Natural cubic spline interpolation
- Vector direct product
v0.8.0 - 2016-09-22
New Features
- Set Theory
- Matrix kronecker product
- Matrix augment below
Backwards Incompatible Changes
- Some null return values changed to NAN when computation is invalid
v0.7.0 - 2016-09-19
New Features
- Matrix solve linear system of equations
- Noncentral T distribution
- Piecewise function class
- Initial Finance class (pmt function)
- Vector scalar multiplication
- Vector normalization
- Vector scalar division
- Vector perpendicular operator
- Vector projections
- Vector perp and perp dot product
Improvements
- Add getters to Polynomial for degree and coefficients
- Improvements to gamma function
v0.6.1 - 2016-09-11
Improvements
- Fix matrix determinant calculation
v0.6.0 - 2016-09-10
New Features
- Polynomial class
- Vector cross product
v0.5.0 - 2016-09-07
New Features
- Numerical Differentiation (\Math\NumericalAnalysis\NumericalDifferentiation)
- Three Point Formula (\Math\NumericalAnalysis\NumericalDifferentiation\ThreePointFormula)
- Five Point Formula (\Math\NumericalAnalysis\NumericalDifferentiation\FivePointFormula)
- SecondDerivativeMidpointFormula (\Math\NumericalAnalysis\NumericalDifferentiation\SecondDerivativeMidpointFormula)
- Two-way ANOVA (\Math\Statistics\ANOVA)
v0.4.0 - 2016-09-07
New Features
- Nevilles Method (\Math\NumericalAnalysis\Interpolation)
- Newton Polynomial (\Math\NumericalAnalysis\Interpolation)
v0.3.0 - 2016-09-06
New Features
- Lagrange polynomials (\Math\NumericalAnalysis\Interpolation)
- Function arithmetic (\Math\Functions\Arithmetic)
v0.2.0 - 2016-09-05
New Features
- One-way ANOVA (
Math\Statistics\ANOVA
)
- χ² Table (
Math\Probability\Distribution\Table
)
- Five number summary (
Math\Statistics\Descriptive
)
- Simple sum of squares (
Math\Statistics\RandomVariable
)
Improvements
- Refactor probability distribution tables (
Math\Probability\Distribution\Table
)
- Minor refactors
Backwards Incompatible Changes
- Move probability distribution tables to new namespace
- From
Math\Probability
to Math\Probability\Distribution\Table
v0.1.0 - 2016-09-02
New Features
- Algebra
- Functions
- Linear Algebra
- Numerical Analysis
- Numerical Integration
- Root Finding
- Probability
- Combinatorics
- Distributions
- Standard Normal Table (Z Table)
- t Distribution Table
- Sequences
- Statistics
- Averages
- Correlation
- Descriptive
- Distributions
- Experiments
- Random Variables
- Regressions
- Significance Testing