Releases: SciProgCentre/kmath
Releases · SciProgCentre/kmath
0.5.0
0.5.0 - 2026-01-09
Added
- More statistics functions by @qwazer
- Fit accessors with Attribute
Changed
- Flag attributes are replaced with boolean attributes to properly support missing values
- Upgrade tensorflow version to 1.0.0
Removed
- Support for ND4J
0.4.2 - 2025-01-27
Added
- Convenient matrix builders for rows, columns, vstacks and hstacks
- Sparse matrix builder
Fixed
- Ojalgo conversion bug which made all converted matrices be zero.
0.4.1 - 2025-01-12
Added
- Metropolis-Hastings sampler
- Ojalgo
LinearSpaceimplementation.
Changed
- attributes-kt moved to a separate project, and the version used is 0.3.0
- Kotlin 2.1. Now use cross-compilation to deploy macOS targets.
- Changed
origintocmMatrixin kmath-commons to avoid property name clash. Expose bidirectional conversion inCMLinearSpace - (BREAKING CHANGE) Changed implementations in
kmath-ejmlto match CM and ojalgo style. Specifically, provide bidirectional conversion for library types.
Fixed
- (BREAKING CHANGE) Fix EJML to properly treat vectors as columns
0.4.0 - 2024-02-18
Added
- Reification. Explicit
SafeTypefor algebras. - Integer division algebras.
- Float32 geometries.
- New Attributes-kt module that could be used as stand-alone. It declares. type-safe attributes containers.
- Explicit
mutableStructureNDbuilders for mutable structures. Buffer.asList()zero-copy transformation.- Wasm support.
- Parallel implementation of
LinearSpacefor Float64 - Parallel buffer factories
Changed
- Buffer copy removed from API (added as an extension).
- Default naming for algebra and buffers now uses IntXX/FloatXX notation instead of Java types.
- Remove unnecessary inlines in basic algebras.
- QuaternionField -> QuaternionAlgebra and does not implement
Fieldanymore since it is non-commutative - kmath-geometry is split into
euclidean2dandeuclidean3d - Features replaced with Attributes.
- Transposed refactored.
- Kmath-memory is moved on top of core.
Deprecated
- ND4J engine
Removed
asPolynomialfunction due to scope pollution- Codegend for ejml (450 lines of codegen for 1000 lines of code is too much)
Fixed
- Median statistics
- Complex power of negative real numbers
- Add proper mutability for MutableBufferND rows and columns
- Generic Float32 and Float64 vectors are used in geometry algebras.
What's Changed
- Added Levenberg-Marquardt algorithm and svd Golub-Kahan by @margarita0303 in #513
- Update/Add copyright comments. Regenerate code for kmath-ejml. by @SPC-code in #522
- 0.4.0 by @SPC-code in #529
- Draft: STUD-7: Metropolis-Hastings sampler implementation by @Vasilev-Ilya in #533
- Move ND4J dependencies to libs.versions.toml, API dump in kmath-nd4j by @CommanderTvis in #535
- Add "min" and "max" statistics implemented as ExtremeValueStatistic by @qwazer in #541
- Fix transposed in mutlik algebra. by @SPC-code in #543
New Contributors
- @Vasilev-Ilya made their first contribution in #533
Full Changelog: v0.3.1...v0.5.0
0.3.1
Added
- Wasm support for
memory,core,complexandfunctionsmodules. - Generic builders for
BufferNDandMutableBufferND NamedMatrix- matrix with symbol-based indexingExpressionwith default arguments- Type-aliases for numbers like
Float64 - Autodiff for generic algebra elements in core!
- Algebra now has an obligatory
bufferFactory(#477).
Changed
- Geometry uses type-safe angles
- Tensor operations switched to prefix notation
- Row-wise and column-wise ND shapes in the core
- Shape is read-only
- Major refactor of tensors (only minor API changes)
- Kotlin 1.8.20
LazyStructuredeffered->asyncto comply with coroutines code style- Default
dotoperation in tensor algebra no longer support broadcasting. Insteadmatmuloperation is added toDoubleTensorAlgebra. - Multik went MPP
Removed
- Trajectory moved to https://github.com/SciProgCentre/maps-kt
- Polynomials moved to https://github.com/SciProgCentre/kmath-polynomial
0.3.1-dev-RC
Added
- Wasm support for
memory,core,complexandfunctionsmodules. - Generic builders for
BufferNDandMutableBufferND NamedMatrix- matrix with symbol-based indexingExpressionwith default arguments- Type-aliases for numbers like
Float64 - Autodiff for generic algebra elements in core!
- Algebra now has an obligatory
bufferFactory(#477).
Changed
- Geometry uses type-safe angles
- Tensor operations switched to prefix notation
- Row-wise and column-wise ND shapes in the core
- Shape is read-only
- Major refactor of tensors (only minor API changes)
- Kotlin 1.8.20
LazyStructuredeffered->asyncto comply with coroutines code style- Default
dotoperation in tensor algebra no longer support broadcasting. Insteadmatmuloperation is added toDoubleTensorAlgebra. - Multik went MPP
Removed
- Trajectory moved to https://github.com/SciProgCentre/maps-kt
- Polynomials moved to https://github.com/SciProgCentre/kmath-polynomial
0.3.0
Added
ScaleOperationsinterfaceFieldextendsScaleOperations- Basic integration API
- Basic MPP distributions and samplers
bindSymbolOrNull- Blocking chains and Statistics
- Multiplatform integration
- Integration for any Field element
- Extended operations for ND4J fields
- Jupyter Notebook integration module (kmath-jupyter)
@PerformancePitfallannotation to mark possibly slow API- Unified architecture for Integration and Optimization using features.
BigIntoperation performance improvement and fixes by @zhelenskiy (#328)- Integration between
MSTand SymjaIExpr - Complex power
- Separate methods for UInt, Int and Number powers. NaN safety.
- Tensorflow prototype
ValueAndErrorField- MST compilation to WASM: #286
- Jafama integration: #176
contentEqualswith tolerance: #364- Compilation to TeX for MST: #254
Changed
- Exponential operations merged with hyperbolic functions
- Space is replaced by Group. Space is reserved for vector spaces.
- VectorSpace is now a vector space
- Buffer factories for primitives moved to MutableBuffer.Companion
- Rename
NDStructureandNDAlgebratoStructureNDandAlgebraNDrespectively Real->Double- DataSets are moved from functions to core
- Redesign advanced Chain API
- Redesign
MST. RemoveMstExpression. - Move
MSTto core - Separated benchmarks and examples
- Rewrite
kmath-ejmlwithoutejml-simpleartifact, support sparse matrices - Promote stability of kmath-ast and kmath-kotlingrad to EXPERIMENTAL.
- ColumnarData returns nullable column
MSTis made sealed interface- Replace
MST.SymbolicbySymbol,Symbolnow implements MST - Remove Any restriction on polynomials
- Add
outvariance to type parameters ofStructureNDand its implementations where possible - Rename
DifferentiableMstExpressiontoKotlingradExpression FeatureSetnow accepts onlyFeature. It is possible to override keys and use interfaces.- Use
Symbolfactory function instead ofStringSymbol - New discoverability pattern:
<Type>.algebra.<nd/etc> - Adjusted commons-math API for linear solvers to match conventions.
- Buffer algebra does not require size anymore
- Operations -> Ops
- Default Buffer and ND algebras are now Ops and lack neutral elements (0, 1) as well as algebra-level shapes.
- Tensor algebra takes read-only structures as input and inherits AlgebraND
UnivariateDistributionrenamed toDistribution1D- Rework of histograms.
UnivariateFunction->Function1D,MultivariateFunction->FunctionND
Deprecated
- Specialized
DoubleBufferAlgebra
Removed
- Nearest in Domain. To be implemented in geometry package.
- Number multiplication and division in main Algebra chain
contentEqualsfrom Buffer. It moved to the companion.- MSTExpression
- Expression algebra builders
- Complex and Quaternion no longer are elements.
- Second generic from DifferentiableExpression
- Algebra elements are completely removed. Use algebra contexts instead.
Fixed
- Ring inherits RingOperations, not GroupOperations
- Univariate histogram filling
0.3.0-dev-18
Added
ScaleOperationsinterfaceFieldextendsScaleOperations- Basic integration API
- Basic MPP distributions and samplers
bindSymbolOrNull- Blocking chains and Statistics
- Multiplatform integration
- Integration for any Field element
- Extended operations for ND4J fields
- Jupyter Notebook integration module (kmath-jupyter)
@PerformancePitfallannotation to mark possibly slow API- Unified architecture for Integration and Optimization using features.
BigIntoperation performance improvement and fixes by @zhelenskiy (#328)- Integration between
MSTand SymjaIExpr - Complex power
- Separate methods for UInt, Int and Number powers. NaN safety.
- Tensorflow prototype
Changed
- Exponential operations merged with hyperbolic functions
- Space is replaced by Group. Space is reserved for vector spaces.
- VectorSpace is now a vector space
- Buffer factories for primitives moved to MutableBuffer.Companion
- Rename
NDStructureandNDAlgebratoStructureNDandAlgebraNDrespectively Real->Double- DataSets are moved from functions to core
- Redesign advanced Chain API
- Redesign
MST. RemoveMstExpression. - Move
MSTto core - Separated benchmarks and examples
- Rewrite
kmath-ejmlwithoutejml-simpleartifact, support sparse matrices - Promote stability of kmath-ast and kmath-kotlingrad to EXPERIMENTAL.
- ColumnarData returns nullable column
MSTis made sealed interface- Replace
MST.SymbolicbySymbol,Symbolnow implements MST - Remove Any restriction on polynomials
- Add
outvariance to type parameters ofStructureNDand its implementations where possible - Rename
DifferentiableMstExpressiontoKotlingradExpression FeatureSetnow accepts onlyFeature. It is possible to override keys and use interfaces.- Use
Symbolfactory function instead ofStringSymbol - New discoverability pattern:
<Type>.algebra.<nd/etc> - Adjusted commons-math API for linear solvers to match conventions.
- Buffer algebra does not require size anymore
- Operations -> Ops
- Default Buffer and ND algebras are now Ops and lack neutral elements (0, 1) as well as algebra-level shapes.
- Tensor algebra takes read-only structures as input and inherits AlgebraND
Deprecated
- Specialized
DoubleBufferAlgebra
Removed
- Nearest in Domain. To be implemented in geometry package.
- Number multiplication and division in main Algebra chain
contentEqualsfrom Buffer. It moved to the companion.- MSTExpression
- Expression algebra builders
- Complex and Quaternion no longer are elements.
- Second generic from DifferentiableExpression
- Algebra elements are completely removed. Use algebra contexts instead.
Fixed
- Ring inherits RingOperations, not GroupOperations
- Univariate histogram filling
0.3.0-dev-8
Added
- ScaleOperations interface
- Field extends ScaleOperations
- Basic integration API
- Basic MPP distributions and samplers
- bindSymbolOrNull
- Blocking chains and Statistics
- Multiplatform integration
- Integration for any Field element
- Extended operations for ND4J fields
- Jupyter Notebook integration module (kmath-jupyter)
Changed
- Exponential operations merged with hyperbolic functions
- Space is replaced by Group. Space is reserved for vector spaces.
- VectorSpace is now a vector space
- Buffer factories for primitives moved to MutableBuffer.Companion
- NDStructure and NDAlgebra to StructureND and AlgebraND respectively
- Real -> Double
- DataSets are moved from functions to core
- Redesign advanced Chain API
- Redesign MST. Remove MSTExpression.
- Move MST to core
- Separated benchmarks and examples
- Rewritten EJML module without ejml-simple
Deprecated
Removed
- Nearest in Domain. To be implemented in geometry package.
- Number multiplication and division in main Algebra chain
contentEqualsfrom Buffer. It moved to the companion.- MSTExpression
- Expression algebra builders
- Comples and Quaternion no longer are elements.
Fixed
- Ring inherits RingOperations, not GroupOperations
0.2.0
[0.2.0]
Added
funannotation for SAM interfaces in library- Explicit
publicvisibility for all public APIs - Better trigonometric and hyperbolic functions for
AutoDiffField(#140) - Automatic README generation for features (#139)
- Native support for
memory,coreanddimensions kmath-ejmlto supply EJML SimpleMatrix wrapper (#136)- A separate
Symbolentity, which is used for global unbound symbol. - A
Symbolindexing scope. - Basic optimization API for Commons-math.
- Chi squared optimization for array-like data in CM
Fittingutility object in prob/stat- ND4J support module submitting
NDStructureandNDAlgebraoverINDArray - Coroutine-deterministic Monte-Carlo scope with a random number generator
- Some minor utilities to
kmath-for-real - Generic operation result parameter to
MatrixContext - New
MatrixFeatureinterfaces for matrix decompositions - Basic Quaternion vector support in
kmath-complex.
Changed
- Package changed from
scientifiktospace.kscience - Gradle version: 6.6 -> 6.8.2
- Minor exceptions refactor (throwing
IllegalArgumentExceptionby argument checks instead ofIllegalStateException) Polynomialsecondary constructor made function- Kotlin version: 1.3.72 -> 1.4.30
kmath-astdoesn't depend on heavykotlin-reflectlibrary- Full autodiff refactoring based on
Symbol kmath-probrenamed tokmath-stat- Grid generators moved to
kmath-for-real - Use
Point<Double>instead of specialized type inkmath-for-real - Optimized dot product for buffer matrices moved to
kmath-for-real - EjmlMatrix context is an object
- Matrix LUP
inverserenamed toinverseWithLup NumericAlgebramoved outside of regular algebra chain (Ringno longer implements it).- Features moved to NDStructure and became transparent.
- Capitalization of LUP in many names changed to Lup.
- Refactored
NDStructurealgebra to be more simple, preferring under-the-hood conversion to explicit NDStructure types - Refactor histograms. They are marked as prototype
Complexand related features moved to a separate modulekmath-complex- Refactor AlgebraElement
symbolmethod inAlgebrarenamed tobindSymbolto avoid ambiguity- Add
outprojection toBuffergeneric
Deprecated
Removed
kmath-komamodule because it doesn't support Kotlin 1.4.- Support of
legacyJS backend (we will support only IR) toGridmethod.- Public visibility of
BufferAccessor2D Realclass
Fixed
symbolmethod inMstExtendedField(#140)
0.2.0-dev-5
Added
funannotation for SAM interfaces in library- Explicit
publicvisibility for all public APIs - Better trigonometric and hyperbolic functions for
AutoDiffField(#140) - Automatic README generation for features (#139)
- Native support for
memory,coreanddimensions kmath-ejmlto supply EJML SimpleMatrix wrapper (#136)- A separate
Symbolentity, which is used for global unbound symbol. - A
Symbolindexing scope. - Basic optimization API for Commons-math.
- Chi squared optimization for array-like data in CM
Fittingutility object in prob/stat- ND4J support module submitting
NDStructureandNDAlgebraoverINDArray - Coroutine-deterministic Monte-Carlo scope with a random number generator
- Some minor utilities to
kmath-for-real - Generic operation result parameter to
MatrixContext - New
MatrixFeatureinterfaces for matrix decompositions
Changed
- Package changed from
scientifiktokscience.kmath - Gradle version: 6.6 -> 6.8
- Minor exceptions refactor (throwing
IllegalArgumentExceptionby argument checks instead ofIllegalStateException) Polynomialsecondary constructor made function- Kotlin version: 1.3.72 -> 1.4.21
kmath-astdoesn't depend on heavykotlin-reflectlibrary- Full autodiff refactoring based on
Symbol kmath-probrenamed tokmath-stat- Grid generators moved to
kmath-for-real - Use
Point<Double>instead of specialized type inkmath-for-real - Optimized dot product for buffer matrices moved to
kmath-for-real - EjmlMatrix context is an object
- Matrix LUP
inverserenamed toinverseWithLUP NumericAlgebramoved outside of regular algebra chain (Ringno longer implements it).- Features moved to NDStructure and became transparent.
Deprecated
Removed
kmath-komamodule because it doesn't support Kotlin 1.4.- Support of
legacyJS backend (we will support only IR) toGridmethod.- Public visibility of
BufferAccessor2D
Fixed
symbolmethod inMstExtendedField(#140)
Security
0.2.0-dev-2
Added
funannotation for SAM interfaces in library- Explicit
publicvisibility for all public APIs - Better trigonometric and hyperbolic functions for
AutoDiffField(#140). - Automatic README generation for features (#139)
Changed
- Package changed from
scientifiktokscience.kmath. - Gradle version: 6.6 -> 6.6.1
- Minor exceptions refactor (throwing
IllegalArgumentExceptionby argument checks instead ofIllegalStateException) Polynomialsecondary constructor made function.- Kotlin version: 1.3.72 -> 1.4.20-M1
Deprecated
Removed
kmath-komamodule because it doesn't support Kotlin 1.4.
Fixed
symbolmethod inMstExtendedField(#140)
0.1.4
Added
- Functional Expressions API
- Mathematical Syntax Tree, its interpreter and API
- String to MST parser (#120)
- MST to JVM bytecode translator (#94)
- FloatBuffer (specialized MutableBuffer over FloatArray)
- FlaggedBuffer to associate primitive numbers buffer with flags (to mark values infinite or missing, etc.)
- Specialized builder functions for all primitive buffers like
IntBuffer(25) { it + 1 }(#125) - Interface
NumericAlgebrawherenumberoperation is available to convert numbers to algebraic elements - Inverse trigonometric functions support in ExtendedField (
asin,acos,atan) (#114) - New space extensions:
averageandaverageWith - Local coding conventions
- Geometric Domains API in
kmath-core - Blocking chains in
kmath-coroutines - Full hyperbolic functions support and default implementations within
ExtendedField - Norm support for
Complex
Changed
readAsMemorynow hasthrows IOExceptionin JVM signature.- Several functions taking functional types were made
inline. - Several functions taking functional types now have
callsInPlacecontracts. - BigInteger and BigDecimal algebra: JBigDecimalField has companion object with default math context; minor optimizations
power(T, Int)extension function has preconditions and supportsField<T>- Memory objects have more preconditions (overflow checking)
tgfunction is renamed totan(#114)- Gradle version: 6.3 -> 6.6
- Moved probability distributions to commons-rng and to
kmath-prob