- NumberTheory\Integer
isPrime
- Distance
chebyshev
- Internal build CI/CD improvements
- Internal improvements to improve conformance with static analysis tools
- Matrix
rowAddVector
- Matrix
columnAddVector
- Better error handling and exception message in
Sequence\NonIntenger::hyperharmonic
- Internal code improvements to conform to static analysis checks
- Helper method names changed (public abstract methods but not part of published interface)
NumericalDifferentiation::isTargetInPoints
changed toassertTargetInPoints
NumericalDifferentiation::isSpacingConstant
changed toassertSpacingConstant
- 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
Average::truncatedMean
behavior at 50% trim made consistent- PHP 8.1 compatibility improvements
Average::truncatedMean
throws exception if trim percent greater than 50% rather than error or unpredictable results.
- Special function
logbeta
- Special function
logGamma
- Special function
logGammaCorr
- Special function
stirlingError
- Improvements in StudentT continuous distribution
- Improvements in special function
gamma
- Improvements in special function
beta
- Issue 393 (regularizedIncompleteBeta NAN)
- Issue 429 (Linear regression CI division by zero)
- Complex Exponential (
exp
) - Complex Exponentiation (
pow
) - Zipf's Law Discrete Distribution
- Generalized harmonic non-integer sequence
- Fixed Complex
polarForm
to compute the right values - Fixed
hyperharnomic
non-integer sequence. Previously was computing the wrong thing - Fixed how
ArbitraryInterger
handlespow
of negative exponents
- 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
- Matrix SVD (Singular Value Decomposition)
- Polynomial companion matrix
- PLS (Partial Least Squares Regression)
- Add custom
__debugInfo
toNumericMatrix
- Quaternion numbers
- Matrix Improvements
walk
method to map a function to all values without mutation or returning a valueMatrixFactory
creates more matrix typesMatrixFactory::createNumeric
to createNumericMatrix
typesMatrixFactory::createFromRowVector
MatrixFactory::createFromColumnVector
- Internal
ObjectMatrix
improvements- Add
trace
- Add
scalarMultiply
- Add
- Add initial
ComplexMatrix
- Sample data People
- Bug fixes
- Issue 414 fixed - PCA/Eigenvalue convergence
- Issue 413 fixed - matrix solve with singular matrix using RREF
- PHP minimum version now 7.2 (was 7.0)
- Deprecated code removed (backwards-incompatible change)
MathPHP\Statistics\Distance::kullbackLeiblerDivergence
removed (UseMathPHP\Statistics\Divergence::kullbackLeibler
instead)MathPHP\Statistics\Distance::jensenShannonDivergence
removed (UseMathPHP\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 toMathPHP\Statistics\Distance::bhattacharyya
MathPHP\Statistics\Distance::hellingerDistance
renamed toMathPHP\Statistics\Distance::hellinger
- Moved Functionality (backwards-incompatible change)
MathPHP\Functions\Polynomial
moved toMathPHP\Expression\Polynomial
MathPHP\Functions\Piecewise
moved toMathPHP\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 extendMatrix
renamedNumericMatrix
Matrix
base methodcreateZeroValue
- Use case is various
ObjectMatrix
classes that implementObjectArithmetic
- Use case is various
RowVector
removed. UseMatrixFactory::createFromRowVector
insteadColumnVector
removed. UseMatrixFactory::createFromColumnVector
instead
- Note: These changes will not affect any client code as long as matrices were created using
- Bugfix (Issue 413): Matrix solve with singular matrix using RREF
- Bugfix (Issue 414): PCA/Eigenvalue convergence
- Bugfix (Issue 356): Fix Finance IRR NANs
- Vector min and max
- Arithmetic isqrt (integer square root)
- Remove Travis CI (Moved CI to Github Actions in v1.8.0 release)
- Rearrange non-code files
- Improve permutations algorithm to be more efficient and more numerically stable
- Qualify PHP function names with root namespace
- Move CI to Github Actions
- Algebra linear equation of one variable
- Rational number inverse
- Rational number pow
- Improve combinations algorithm to be more efficient and more numerically stable
- Internal Matrix class reorganization
- Special function regularized lower incomplete gamma
- Cereal sample data set
- Define boundary condition for lower incomplete gamma function
- Matrix LU solve
- Matrix QR solve
- 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
- Multivariate Regular Grid Interpolation
- Jensen-Shannon Distance
- Canberra Distance
- Search Sorted
- Search ArgMax
- Search NanArgMax
- Search ArgMin
- Search NanArgMin
- Search NonZero
- Divergence factored out of Distance into new Divergence class
- Legacy Distance divergences marked as deprecated (To be removed in v2.0.0)
- 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
- Ranking
- Ordinal ranking
- Standard competition ranking
- Modified competition ranking
- Fractional ranking
- (Issue 380) Fixed Spearman's Rho calculation when there are rank ties
- Arithmetic modulo
- Improved matrix multiplication performance using cache-oblivious algorithm optimization
Initial version 1.0.0 release!
- Internal improvements
- Multivariate Hypergeometric distribution
- Sample Data
- MtCars
- Iris
- ToothGrowth
- PlantGrowth
- UsArrests
- 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
- 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
- Number\Rational basic getters
- getWholePart
- getNumerator
- getDenominator
- Set Theory n-ary Cartesian product
- Data direction control for Matrix meanDeviation and covarianceMatrix
- Algebra factors performance improvement
- Number Theory
- isDeficientNumber
- isAbundantNumber
- aliquotSum
- radical
- totient
- cototient
- reducedTotient
- mobius
- isSquarefree
- isRefactorableNumber
- isSphenicNumber
- numberOfDivisors
- sumOfDivisors
- Optimization of prime factorization algorithm
- Arbitrary length integers
- Factorial optimization
- Matrix isNilpotent
- Matrix isRectangularDiagonal
- Matrix mapRows
- MathPHP logo
- MatrixFactory random matrix custom lower and upper bounds for random number
- PSR-12 style compliance
- Bugfix: powerIteration random failure - Issue 346
- 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
- Internal improvements to Matrix
- Matrix decompositions returned as objects
- Matrix Cholesky decomposition provides L transpose
- Grubb's test for statistical outliers
- Matrix rowSums
- Matrix columnSums
- Matrix rowMeans
- Matrix columnMeans
- Matrix isNormal
- MatrixFactory diagonal matrix creation method
- MatrixFactory vandermonde matrix creation method
- Set custom Matrix tolerances
- Various internal improvements
- 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
- Matrix isOrthogonal
- Matrix isEqual
- Harmonic sequence
- Hyperharmonic sequence
- Map\Single reciprocal
- 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
- Statistics methods throw exceptions instead of returning null on bad input
- Matrix augmentAbove
- Matrix augmentLeft
- Object matrix multiplication
- 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
- Binomial distribution PMF uses more numerically stable multiplication method
- Fix potential divide by zero in TheilSen regression
- Multinomial distribution moved from Discrete to Multivariate namespace
- 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
- Normal distribution rand algorithm changed to Box–Muller transform
- NumberTheory isPerfectNumber
- Sequence perfectNumber
- Improve README documentation for continuous distributions
- Updates to build tools
- General 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
- [Issue 271] Improvements to documentation
- [Issue 269] Add closed-form inverse function for Exponential distribution
- Arithmetic copySign
- Matrix negate
- Matrix isSkewSymmetric
- Weighted mean
- Weighted sample variance
- Weighted covariance
- Weighted correlation coefficient
- Minor code improvements
- Arithmetic almostEqual
- Statistics\Average::mode improved to work with non-integer values
- Various minor code improvements
- Simpler interface for Significance
tTest
for one and two samples
- T test for two samples uses more robust Welch test
- Improvements to Normal and Standard Normal continuous distributions
- General improvements to continuous distributions
- Upgrade unit testing framework to PHPUnit 6
- Update unit tests for PHPUnit 6 compatibility
- Add PHP 7.2 to continuous integration tests
- Percentile reimplemented to use linear interpolation between closest ranks method - Second variant, C = 1
- General code improvements
- Better error and exception handling
- Change probability distributions to be objects instead of static methods
- Change probability distributions to be objects instead of static methods
- Rational number
- Gamma distribution mean
- Add .gitignore file
- Matrix isTridiagonal
- Matrix isUpperHessenberg
- Matrix isLowerHessenberg
- Matrix getSuperdiagonalElements
- Matrix getSubdiagonalElements
- Multivariate normal distribution
- Kernel density estimation
- Matrix Crout decomposition
- Categorical discrete distribution
- Hypergeometric distribution
- Discrete uniform distribution
- Dirichlet multivariate distribution
- Gamma distribution
- Initial eigenvalue matrix method
- Initial eigenvector matrix method
- Confidence ellipse
- Internal Bitwise addition
- Matrix rank
- ObjectArithmetic interface
- Polynomial implements ObjectArithmetic
- ObjectSquareMatrix
- Polynomial negate
- 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
- Matrix adjugate
- Polynomial subtract
- Internal refactoring/improvements
- Tests namespace for unit tests
- Standardize method naming convention
- Update PHPUnit exception assertion
- Replace class strings in tests with class constants
- Matrix
- Cholesky decomposition
- isRref
- Exchange matrix
- isInvolutory
- isSignature
- Hilbert matrix
- isUpperBidiagonal
- isLowerBidiagonal
- isBidiagonal
- Quartic function roots
- Trigonometry unit circle
- Integer
- isOdd
- isEven
- 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
- Add BadDataException to LeastSquares regression method trait if degrees of freedom is 0
- Complex Root of Quadratic Function
- Matrix
- isSingular
- isNonsingular
- isInvertible
- leadingPrincipalMinor
- isPositiveDefinite
- isPositiveSemidefinite
- isNegativeDefinite
- isNegativeSemidefinite
- Number Theory
- Integer coprime
- Arithmetic
- digitSum
- digitalRoot
- Basic sequences
- digitSum
- digitalRoot
- Arithmetic cube root
- Algebra cubic equation
- Matrix Kronecker sum
- Vector Kronecker product
- Number theory prime factorization
- Improved quadratic equation edge case handling
- Number Theory - Integers
- Perfect powers
- Advanced Sequences
- Perfect powers
- Not perfect powers
- Primes up to n
- Algebra
- Quadratic equation
- Circular statistics (directional statistics)
- Circular mean
- Resultant length
- Mean resultant length
- Circular variance
- Circular standard deviation
- Describe
- Finance profitability index
- Update Finance payback to be both simple and discounted payback
- Finance interest payment
- Finance principle payment on an annuity
- Finance payback
- Make files for unit tests, linting, and code coverage
- Finance net present value
- Finance rate function
- Finance internal rate of return
- Finance modified internal rate of return
- Finance payment periods of an annuity
- Update Newton's Method to handle non-convergence and infinite slopes.
- Matrix sample mean
- Matrix mean deviation form
- Covariance matrix
- Matrix representation as array of column vectors
- Finance future value
- Finance present value
- Joint entropy
- Rényi entropy
- Perplexity
- Matrix scalar division
- Finance: Annual Equivalent Rate (AER)
- Fix vector pnorm to take absolute value of each element
- Refactor distances and divergences from InformationTheory\Entropy to Statistics\Distance
- Two-sample z significance test
- 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
- Lazy caterer's sequence
- Magic squares sequence
- Look-and-say sequence
- Custom exception classes
- Refactor exceptions to use custom exception classes
- 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)
- Replace mt_rand with random_int
- Change root namespace from Math to MathPHP
- (Run composer update to update autoloader)
- Clamped Cubic Spline Interpolation
- Custom variable in Polynomial class
- Natural cubic spline interpolation
- Vector direct product
- Set Theory
- Matrix kronecker product
- Matrix augment below
- Some null return values changed to NAN when computation is invalid
- 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
- Add getters to Polynomial for degree and coefficients
- Improvements to gamma function
- Fix matrix determinant calculation
- Polynomial class
- Vector cross product
- 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)
- Nevilles Method (\Math\NumericalAnalysis\Interpolation)
- Newton Polynomial (\Math\NumericalAnalysis\Interpolation)
- Lagrange polynomials (\Math\NumericalAnalysis\Interpolation)
- Function arithmetic (\Math\Functions\Arithmetic)
- One-way ANOVA (
Math\Statistics\ANOVA
) - χ² Table (
Math\Probability\Distribution\Table
) - Five number summary (
Math\Statistics\Descriptive
) - Simple sum of squares (
Math\Statistics\RandomVariable
)
- Refactor probability distribution tables (
Math\Probability\Distribution\Table
) - Minor refactors
- Move probability distribution tables to new namespace
- From
Math\Probability
toMath\Probability\Distribution\Table
- From
- 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