2020-08-10 22:39:01 +03:00
|
|
|
# KMath
|
|
|
|
|
2023-04-09 11:08:39 +03:00
|
|
|
## Unreleased
|
|
|
|
|
|
|
|
### Added
|
2024-08-04 15:01:47 +03:00
|
|
|
- Metropolis-Hastings sampler
|
2024-02-18 15:05:56 +03:00
|
|
|
|
|
|
|
### Changed
|
|
|
|
|
|
|
|
### Deprecated
|
|
|
|
|
|
|
|
### Removed
|
|
|
|
|
|
|
|
### Fixed
|
2024-12-24 12:58:00 +03:00
|
|
|
- Fix EJML to properly treat vectors as columns
|
2024-02-18 15:05:56 +03:00
|
|
|
|
|
|
|
### Security
|
|
|
|
|
2024-12-24 12:58:00 +03:00
|
|
|
## 0.4.0 - 2024-02-18
|
2024-02-18 15:05:56 +03:00
|
|
|
|
|
|
|
### Added
|
|
|
|
|
2024-02-22 21:03:58 +03:00
|
|
|
- Reification. Explicit `SafeType` for algebras.
|
2023-11-03 09:56:19 +03:00
|
|
|
- Integer division algebras.
|
|
|
|
- Float32 geometries.
|
|
|
|
- New Attributes-kt module that could be used as stand-alone. It declares. type-safe attributes containers.
|
|
|
|
- Explicit `mutableStructureND` builders for mutable structures.
|
2024-02-18 13:32:22 +03:00
|
|
|
- `Buffer.asList()` zero-copy transformation.
|
2024-02-18 14:22:20 +03:00
|
|
|
- Wasm support.
|
2024-02-18 13:32:22 +03:00
|
|
|
- Parallel implementation of `LinearSpace` for Float64
|
|
|
|
- Parallel buffer factories
|
2023-04-09 11:08:39 +03:00
|
|
|
|
|
|
|
### Changed
|
2024-02-18 15:05:56 +03:00
|
|
|
|
2024-02-22 21:03:58 +03:00
|
|
|
- Buffer copy removed from API (added as an extension).
|
2023-08-12 11:21:59 +03:00
|
|
|
- Default naming for algebra and buffers now uses IntXX/FloatXX notation instead of Java types.
|
|
|
|
- Remove unnecessary inlines in basic algebras.
|
2023-08-12 13:16:18 +03:00
|
|
|
- QuaternionField -> QuaternionAlgebra and does not implement `Field` anymore since it is non-commutative
|
|
|
|
- kmath-geometry is split into `euclidean2d` and `euclidean3d`
|
2023-07-09 15:51:50 +03:00
|
|
|
- Features replaced with Attributes.
|
2023-07-18 10:13:36 +03:00
|
|
|
- Transposed refactored.
|
2023-11-18 22:29:59 +03:00
|
|
|
- Kmath-memory is moved on top of core.
|
2023-04-09 11:08:39 +03:00
|
|
|
|
|
|
|
### Deprecated
|
2024-02-18 15:05:56 +03:00
|
|
|
|
2024-02-17 21:32:26 +03:00
|
|
|
- ND4J engine
|
2023-04-09 11:08:39 +03:00
|
|
|
|
|
|
|
### Removed
|
2024-02-18 15:05:56 +03:00
|
|
|
|
2023-10-25 10:28:39 +03:00
|
|
|
- `asPolynomial` function due to scope pollution
|
2024-02-17 21:32:26 +03:00
|
|
|
- Codegend for ejml (450 lines of codegen for 1000 lines of code is too much)
|
2023-04-09 11:08:39 +03:00
|
|
|
|
|
|
|
### Fixed
|
2024-02-18 15:05:56 +03:00
|
|
|
|
2023-08-12 11:21:59 +03:00
|
|
|
- Median statistics
|
2024-02-07 21:18:47 +03:00
|
|
|
- Complex power of negative real numbers
|
2024-02-18 13:32:22 +03:00
|
|
|
- Add proper mutability for MutableBufferND rows and columns
|
2024-02-20 19:35:00 +03:00
|
|
|
- Generic Float32 and Float64 vectors are used in geometry algebras.
|
2023-04-09 11:08:39 +03:00
|
|
|
|
2023-05-09 19:44:39 +03:00
|
|
|
## 0.3.1 - 2023-04-09
|
2023-04-09 11:08:39 +03:00
|
|
|
|
2020-09-14 22:48:02 +03:00
|
|
|
### Added
|
2024-02-18 15:05:56 +03:00
|
|
|
|
2023-04-09 10:55:58 +03:00
|
|
|
- Wasm support for `memory`, `core`, `complex` and `functions` modules.
|
2023-03-16 09:37:03 +03:00
|
|
|
- Generic builders for `BufferND` and `MutableBufferND`
|
2023-01-24 21:01:26 +03:00
|
|
|
- `NamedMatrix` - matrix with symbol-based indexing
|
|
|
|
- `Expression` with default arguments
|
2022-11-05 16:14:23 +03:00
|
|
|
- Type-aliases for numbers like `Float64`
|
2022-07-16 11:35:50 +03:00
|
|
|
- Autodiff for generic algebra elements in core!
|
2022-07-16 16:27:11 +03:00
|
|
|
- Algebra now has an obligatory `bufferFactory` (#477).
|
2022-04-11 20:07:40 +03:00
|
|
|
|
|
|
|
### Changed
|
2024-02-18 15:05:56 +03:00
|
|
|
|
2023-04-12 11:39:28 +03:00
|
|
|
- Removed marker `Vector` type for geometry
|
2023-04-09 11:12:04 +03:00
|
|
|
- Geometry uses type-safe angles
|
2022-11-05 16:14:23 +03:00
|
|
|
- Tensor operations switched to prefix notation
|
|
|
|
- Row-wise and column-wise ND shapes in the core
|
2022-10-14 12:47:57 +03:00
|
|
|
- Shape is read-only
|
2022-09-11 15:27:38 +03:00
|
|
|
- Major refactor of tensors (only minor API changes)
|
2023-04-09 11:08:39 +03:00
|
|
|
- Kotlin 1.8.20
|
2022-06-08 09:00:37 +03:00
|
|
|
- `LazyStructure` `deffered` -> `async` to comply with coroutines code style
|
2024-03-27 09:11:12 +03:00
|
|
|
- Default `dot` operation in tensor algebra no longer support broadcasting. Instead `matmul` operation is added
|
|
|
|
to `DoubleTensorAlgebra`.
|
2022-08-04 09:54:59 +03:00
|
|
|
- Multik went MPP
|
2022-04-11 20:07:40 +03:00
|
|
|
|
|
|
|
### Removed
|
2024-02-18 15:05:56 +03:00
|
|
|
|
2023-04-05 15:26:09 +03:00
|
|
|
- Trajectory moved to https://github.com/SciProgCentre/maps-kt
|
2022-11-05 21:44:41 +03:00
|
|
|
- Polynomials moved to https://github.com/SciProgCentre/kmath-polynomial
|
2022-04-11 20:07:40 +03:00
|
|
|
|
2023-04-09 11:08:39 +03:00
|
|
|
## 0.3.0
|
2022-04-11 20:07:40 +03:00
|
|
|
|
|
|
|
### Added
|
2024-02-18 15:05:56 +03:00
|
|
|
|
2021-05-21 11:47:35 +03:00
|
|
|
- `ScaleOperations` interface
|
|
|
|
- `Field` extends `ScaleOperations`
|
2021-03-16 20:56:20 +03:00
|
|
|
- Basic integration API
|
2021-04-01 20:15:49 +03:00
|
|
|
- Basic MPP distributions and samplers
|
2021-05-21 11:47:35 +03:00
|
|
|
- `bindSymbolOrNull`
|
2021-04-14 23:26:21 +03:00
|
|
|
- Blocking chains and Statistics
|
|
|
|
- Multiplatform integration
|
2021-04-16 15:50:33 +03:00
|
|
|
- Integration for any Field element
|
2021-04-28 14:03:28 +03:00
|
|
|
- Extended operations for ND4J fields
|
2021-03-31 15:39:34 +03:00
|
|
|
- Jupyter Notebook integration module (kmath-jupyter)
|
2021-05-13 11:02:20 +03:00
|
|
|
- `@PerformancePitfall` annotation to mark possibly slow API
|
2021-06-08 14:27:45 +03:00
|
|
|
- Unified architecture for Integration and Optimization using features.
|
2021-05-21 11:47:35 +03:00
|
|
|
- `BigInt` operation performance improvement and fixes by @zhelenskiy (#328)
|
|
|
|
- Integration between `MST` and Symja `IExpr`
|
2021-10-09 20:19:36 +03:00
|
|
|
- Complex power
|
2021-11-03 12:55:29 +03:00
|
|
|
- Separate methods for UInt, Int and Number powers. NaN safety.
|
2022-01-29 15:02:46 +03:00
|
|
|
- Tensorflow prototype
|
2022-04-10 23:00:55 +03:00
|
|
|
- `ValueAndErrorField`
|
2022-04-12 09:49:35 +03:00
|
|
|
- MST compilation to WASM: #286
|
|
|
|
- Jafama integration: #176
|
|
|
|
- `contentEquals` with tolerance: #364
|
|
|
|
- Compilation to TeX for MST: #254
|
2021-02-21 16:17:57 +03:00
|
|
|
|
|
|
|
### Changed
|
2024-02-18 15:05:56 +03:00
|
|
|
|
2023-04-09 11:08:39 +03:00
|
|
|
- Annotations moved to `space.kscience.kmath`
|
2021-03-08 21:03:48 +03:00
|
|
|
- Exponential operations merged with hyperbolic functions
|
2021-03-10 22:09:19 +03:00
|
|
|
- Space is replaced by Group. Space is reserved for vector spaces.
|
2021-03-11 11:28:10 +03:00
|
|
|
- VectorSpace is now a vector space
|
2021-03-15 14:26:17 +03:00
|
|
|
- Buffer factories for primitives moved to MutableBuffer.Companion
|
2021-05-20 15:43:29 +03:00
|
|
|
- Rename `NDStructure` and `NDAlgebra` to `StructureND` and `AlgebraND` respectively
|
|
|
|
- `Real` -> `Double`
|
2021-03-19 14:53:14 +03:00
|
|
|
- DataSets are moved from functions to core
|
2021-04-01 20:15:49 +03:00
|
|
|
- Redesign advanced Chain API
|
2021-05-20 15:43:29 +03:00
|
|
|
- Redesign `MST`. Remove `MstExpression`.
|
|
|
|
- Move `MST` to core
|
2021-04-16 22:43:10 +03:00
|
|
|
- Separated benchmarks and examples
|
2021-05-20 15:43:29 +03:00
|
|
|
- Rewrite `kmath-ejml` without `ejml-simple` artifact, support sparse matrices
|
|
|
|
- Promote stability of kmath-ast and kmath-kotlingrad to EXPERIMENTAL.
|
2021-05-14 12:42:27 +03:00
|
|
|
- ColumnarData returns nullable column
|
2021-05-20 15:43:29 +03:00
|
|
|
- `MST` is made sealed interface
|
|
|
|
- Replace `MST.Symbolic` by `Symbol`, `Symbol` now implements MST
|
|
|
|
- Remove Any restriction on polynomials
|
|
|
|
- Add `out` variance to type parameters of `StructureND` and its implementations where possible
|
2021-05-20 19:32:56 +03:00
|
|
|
- Rename `DifferentiableMstExpression` to `KotlingradExpression`
|
2021-06-08 14:27:45 +03:00
|
|
|
- `FeatureSet` now accepts only `Feature`. It is possible to override keys and use interfaces.
|
|
|
|
- Use `Symbol` factory function instead of `StringSymbol`
|
2021-09-19 21:13:07 +03:00
|
|
|
- New discoverability pattern: `<Type>.algebra.<nd/etc>`
|
2021-09-21 21:24:27 +03:00
|
|
|
- Adjusted commons-math API for linear solvers to match conventions.
|
2021-10-17 11:12:35 +03:00
|
|
|
- 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.
|
2021-10-27 14:48:36 +03:00
|
|
|
- Tensor algebra takes read-only structures as input and inherits AlgebraND
|
2022-04-05 23:23:29 +03:00
|
|
|
- `UnivariateDistribution` renamed to `Distribution1D`
|
2022-04-10 13:41:41 +03:00
|
|
|
- Rework of histograms.
|
2022-04-10 23:00:55 +03:00
|
|
|
- `UnivariateFunction` -> `Function1D`, `MultivariateFunction` -> `FunctionND`
|
2021-02-21 16:17:57 +03:00
|
|
|
|
|
|
|
### Deprecated
|
2024-02-18 15:05:56 +03:00
|
|
|
|
2021-07-09 14:11:26 +03:00
|
|
|
- Specialized `DoubleBufferAlgebra`
|
2021-02-21 16:17:57 +03:00
|
|
|
|
|
|
|
### Removed
|
2024-02-18 15:05:56 +03:00
|
|
|
|
2021-03-08 21:03:48 +03:00
|
|
|
- Nearest in Domain. To be implemented in geometry package.
|
|
|
|
- Number multiplication and division in main Algebra chain
|
2021-03-16 22:46:22 +03:00
|
|
|
- `contentEquals` from Buffer. It moved to the companion.
|
2021-04-01 20:15:49 +03:00
|
|
|
- MSTExpression
|
2021-04-21 12:48:11 +03:00
|
|
|
- Expression algebra builders
|
2021-05-09 12:40:10 +03:00
|
|
|
- Complex and Quaternion no longer are elements.
|
2021-05-25 16:53:53 +03:00
|
|
|
- Second generic from DifferentiableExpression
|
2021-10-02 16:14:38 +03:00
|
|
|
- Algebra elements are completely removed. Use algebra contexts instead.
|
2021-02-21 16:17:57 +03:00
|
|
|
|
|
|
|
### Fixed
|
2024-02-18 15:05:56 +03:00
|
|
|
|
2021-04-14 23:26:21 +03:00
|
|
|
- Ring inherits RingOperations, not GroupOperations
|
2021-06-15 13:45:08 +03:00
|
|
|
- Univariate histogram filling
|
2021-02-21 16:17:57 +03:00
|
|
|
|
2023-04-09 11:08:39 +03:00
|
|
|
## 0.2.0
|
2022-04-11 20:07:40 +03:00
|
|
|
|
2021-02-21 16:17:57 +03:00
|
|
|
### Added
|
2024-02-18 15:05:56 +03:00
|
|
|
|
2020-09-21 14:49:02 +03:00
|
|
|
- `fun` annotation for SAM interfaces in library
|
|
|
|
- Explicit `public` visibility for all public APIs
|
2021-01-19 16:25:26 +03:00
|
|
|
- Better trigonometric and hyperbolic functions for `AutoDiffField` (https://github.com/mipt-npm/kmath/pull/140)
|
2020-09-27 11:13:30 +03:00
|
|
|
- Automatic README generation for features (#139)
|
2020-09-27 20:09:46 +03:00
|
|
|
- Native support for `memory`, `core` and `dimensions`
|
2021-01-19 16:25:26 +03:00
|
|
|
- `kmath-ejml` to supply EJML SimpleMatrix wrapper (https://github.com/mipt-npm/kmath/pull/136)
|
2020-10-24 20:33:19 +03:00
|
|
|
- A separate `Symbol` entity, which is used for global unbound symbol.
|
|
|
|
- A `Symbol` indexing scope.
|
|
|
|
- Basic optimization API for Commons-math.
|
2020-10-26 10:01:30 +03:00
|
|
|
- Chi squared optimization for array-like data in CM
|
2020-10-28 09:16:21 +03:00
|
|
|
- `Fitting` utility object in prob/stat
|
2021-01-19 16:25:26 +03:00
|
|
|
- ND4J support module submitting `NDStructure` and `NDAlgebra` over `INDArray`
|
|
|
|
- Coroutine-deterministic Monte-Carlo scope with a random number generator
|
|
|
|
- Some minor utilities to `kmath-for-real`
|
2020-12-01 21:21:56 +03:00
|
|
|
- Generic operation result parameter to `MatrixContext`
|
2021-01-19 16:25:26 +03:00
|
|
|
- New `MatrixFeature` interfaces for matrix decompositions
|
2021-01-19 21:10:31 +03:00
|
|
|
- Basic Quaternion vector support in `kmath-complex`.
|
2020-09-21 14:49:02 +03:00
|
|
|
|
2020-09-14 22:48:02 +03:00
|
|
|
### Changed
|
2024-02-18 15:05:56 +03:00
|
|
|
|
2021-02-18 11:17:28 +03:00
|
|
|
- Package changed from `scientifik` to `space.kscience`
|
|
|
|
- Gradle version: 6.6 -> 6.8.2
|
2020-09-21 14:49:02 +03:00
|
|
|
- Minor exceptions refactor (throwing `IllegalArgumentException` by argument checks instead of `IllegalStateException`)
|
2021-01-19 16:25:26 +03:00
|
|
|
- `Polynomial` secondary constructor made function
|
2021-02-18 11:17:28 +03:00
|
|
|
- Kotlin version: 1.3.72 -> 1.4.30
|
2021-01-19 16:25:26 +03:00
|
|
|
- `kmath-ast` doesn't depend on heavy `kotlin-reflect` library
|
2020-10-24 20:33:19 +03:00
|
|
|
- Full autodiff refactoring based on `Symbol`
|
2020-10-28 09:16:21 +03:00
|
|
|
- `kmath-prob` renamed to `kmath-stat`
|
2020-11-28 18:43:35 +03:00
|
|
|
- Grid generators moved to `kmath-for-real`
|
2024-08-17 21:11:13 +03:00
|
|
|
- Use `Point<Float64>` instead of specialized type in `kmath-for-real`
|
2020-11-29 21:38:12 +03:00
|
|
|
- Optimized dot product for buffer matrices moved to `kmath-for-real`
|
|
|
|
- EjmlMatrix context is an object
|
2021-01-24 18:12:43 +03:00
|
|
|
- Matrix LUP `inverse` renamed to `inverseWithLup`
|
2021-01-19 17:16:43 +03:00
|
|
|
- `NumericAlgebra` moved outside of regular algebra chain (`Ring` no longer implements it).
|
2021-01-19 19:32:13 +03:00
|
|
|
- Features moved to NDStructure and became transparent.
|
2021-01-24 18:30:52 +03:00
|
|
|
- Capitalization of LUP in many names changed to Lup.
|
2021-01-22 23:22:24 +03:00
|
|
|
- Refactored `NDStructure` algebra to be more simple, preferring under-the-hood conversion to explicit NDStructure types
|
2021-01-30 11:24:34 +03:00
|
|
|
- Refactor histograms. They are marked as prototype
|
2021-01-19 16:17:53 +03:00
|
|
|
- `Complex` and related features moved to a separate module `kmath-complex`
|
2021-02-04 11:00:08 +03:00
|
|
|
- Refactor AlgebraElement
|
2021-02-18 11:17:28 +03:00
|
|
|
- `symbol` method in `Algebra` renamed to `bindSymbol` to avoid ambiguity
|
2021-02-12 22:43:35 +03:00
|
|
|
- Add `out` projection to `Buffer` generic
|
2020-09-14 22:48:02 +03:00
|
|
|
|
|
|
|
### Removed
|
2024-02-18 15:05:56 +03:00
|
|
|
|
2020-09-21 14:49:02 +03:00
|
|
|
- `kmath-koma` module because it doesn't support Kotlin 1.4.
|
2020-09-27 20:09:46 +03:00
|
|
|
- Support of `legacy` JS backend (we will support only IR)
|
2020-11-28 18:43:35 +03:00
|
|
|
- `toGrid` method.
|
2020-12-01 21:21:56 +03:00
|
|
|
- Public visibility of `BufferAccessor2D`
|
2021-02-04 11:00:08 +03:00
|
|
|
- `Real` class
|
2021-03-16 21:43:29 +03:00
|
|
|
- StructureND identity and equals
|
2020-09-14 22:48:02 +03:00
|
|
|
|
|
|
|
### Fixed
|
2024-02-18 15:05:56 +03:00
|
|
|
|
2020-09-20 16:59:21 +03:00
|
|
|
- `symbol` method in `MstExtendedField` (https://github.com/mipt-npm/kmath/pull/140)
|
2020-09-20 22:41:33 +03:00
|
|
|
|
2023-04-09 11:08:39 +03:00
|
|
|
## 0.1.4
|
|
|
|
|
2020-08-10 22:36:08 +03:00
|
|
|
### Added
|
2024-02-18 15:05:56 +03:00
|
|
|
|
2020-08-10 22:36:08 +03:00
|
|
|
- Functional Expressions API
|
|
|
|
- Mathematical Syntax Tree, its interpreter and API
|
|
|
|
- String to MST parser (https://github.com/mipt-npm/kmath/pull/120)
|
|
|
|
- MST to JVM bytecode translator (https://github.com/mipt-npm/kmath/pull/94)
|
|
|
|
- FloatBuffer (specialized MutableBuffer over FloatArray)
|
|
|
|
- FlaggedBuffer to associate primitive numbers buffer with flags (to mark values infinite or missing, etc.)
|
2024-03-27 09:11:12 +03:00
|
|
|
- Specialized builder functions for all primitive buffers
|
|
|
|
like `IntBuffer(25) { it + 1 }` (https://github.com/mipt-npm/kmath/pull/125)
|
2020-08-10 22:36:08 +03:00
|
|
|
- Interface `NumericAlgebra` where `number` operation is available to convert numbers to algebraic elements
|
2024-03-27 09:11:12 +03:00
|
|
|
- Inverse trigonometric functions support in
|
|
|
|
ExtendedField (`asin`, `acos`, `atan`) (https://github.com/mipt-npm/kmath/pull/114)
|
2020-08-10 22:36:08 +03:00
|
|
|
- New space extensions: `average` and `averageWith`
|
|
|
|
- Local coding conventions
|
|
|
|
- Geometric Domains API in `kmath-core`
|
|
|
|
- Blocking chains in `kmath-coroutines`
|
2020-08-15 13:00:17 +03:00
|
|
|
- Full hyperbolic functions support and default implementations within `ExtendedField`
|
|
|
|
- Norm support for `Complex`
|
2020-08-10 22:36:08 +03:00
|
|
|
|
|
|
|
### Changed
|
2024-02-18 15:05:56 +03:00
|
|
|
|
2020-08-21 22:42:59 +03:00
|
|
|
- `readAsMemory` now has `throws IOException` in JVM signature.
|
|
|
|
- Several functions taking functional types were made `inline`.
|
|
|
|
- Several functions taking functional types now have `callsInPlace` contracts.
|
2024-03-27 09:11:12 +03:00
|
|
|
- BigInteger and BigDecimal algebra: JBigDecimalField has companion object with default math context; minor
|
|
|
|
optimizations
|
2020-08-10 22:36:08 +03:00
|
|
|
- `power(T, Int)` extension function has preconditions and supports `Field<T>`
|
|
|
|
- Memory objects have more preconditions (overflow checking)
|
|
|
|
- `tg` function is renamed to `tan` (https://github.com/mipt-npm/kmath/pull/114)
|
2020-09-21 14:49:02 +03:00
|
|
|
- Gradle version: 6.3 -> 6.6
|
2020-08-15 13:00:17 +03:00
|
|
|
- Moved probability distributions to commons-rng and to `kmath-prob`
|
2020-08-10 22:36:08 +03:00
|
|
|
|
|
|
|
### Fixed
|
2024-02-18 15:05:56 +03:00
|
|
|
|
2020-08-10 22:36:08 +03:00
|
|
|
- Missing copy method in Memory implementation on JS (https://github.com/mipt-npm/kmath/pull/106)
|
|
|
|
- D3.dim value in `kmath-dimensions`
|
|
|
|
- Multiplication in integer rings in `kmath-core` (https://github.com/mipt-npm/kmath/pull/101)
|
|
|
|
- Commons RNG compatibility (https://github.com/mipt-npm/kmath/issues/93)
|
2023-04-09 11:08:39 +03:00
|
|
|
- Multiplication of BigInt by scalar
|