Skip to content

Release Notes

Mark Rogoyski edited this page Dec 31, 2022 · 83 revisions

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-13

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

  • Quaternion numbers

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)

v1.8.0 - 2020-12-12

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-12

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
  • Serach 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)

1.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

  • Arithmetic modulo

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

  • Internal 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

  • Factorial optimization

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

  • Minor code improvements

v0.41.0 - 2018-04-23

New Features

  • Arithmetic almostEqual

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

  • Add .gitignore file

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
    • isOdd
    • isEven

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
    • Integer coprime
  • Arithmetic
    • digitSum
    • digitalRoot
  • Basic sequences
    • digitSum
    • digitalRoot

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
  • Perfect powers
  • Advanced Sequences
  • Perfect powers
  • Not perfect powers
  • Primes up to n
  • Algebra
  • Quadratic equation

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

  • Look-and-say sequence

v0.13.0 - 2016-10-17

New Features

  • Custom exception classes

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
    • Map
    • Special Functions
  • Linear Algebra
    • Matrix
    • Vector
  • Numerical Analysis
    • Numerical Integration
    • Root Finding
  • Probability
    • Combinatorics
    • Distributions
      • Continuous
      • Discrete
    • Standard Normal Table (Z Table)
    • t Distribution Table
  • Sequences
    • Basic
    • Advanced
  • Statistics
    • Averages
    • Correlation
    • Descriptive
    • Distributions
    • Experiments
    • Random Variables
    • Regressions
    • Significance Testing
Clone this wiki locally