Dev #72

Merged
altavir merged 16 commits from dev into master 2019-06-26 18:54:12 +03:00
2 changed files with 6 additions and 6 deletions
Showing only changes of commit bf171a2371 - Show all commits

View File

@ -13,7 +13,7 @@ Actual feature list is [here](doc/features.md)
* Complex numbers backed by the `Field` API (meaning that they will be usable in any structure like vectors and N-dimensional arrays). * Complex numbers backed by the `Field` API (meaning that they will be usable in any structure like vectors and N-dimensional arrays).
* Advanced linear algebra operations like matrix inversion and LU decomposition. * Advanced linear algebra operations like matrix inversion and LU decomposition.
* **Array-like structures** Full support of many-dimenstional array-like structures * **Array-like structures** Full support of many-dimensional array-like structures
including mixed arithmetic operations and function operations over arrays and numbers (with the added benefit of static type checking). including mixed arithmetic operations and function operations over arrays and numbers (with the added benefit of static type checking).
* **Expressions** By writing a single mathematical expression * **Expressions** By writing a single mathematical expression
@ -22,13 +22,13 @@ can be used for a wide variety of purposes from high performance calculations to
* **Histograms** Fast multi-dimensional histograms. * **Histograms** Fast multi-dimensional histograms.
* **Streaming** Streaming operations on mathematica objects and objects buffers. * **Streaming** Streaming operations on mathematical objects and objects buffers.
* **Commons-math wrapper** It is planned to gradually wrap most parts of [Apache commons-math](http://commons.apache.org/proper/commons-math/) * **Commons-math wrapper** It is planned to gradually wrap most parts of [Apache commons-math](http://commons.apache.org/proper/commons-math/)
library in Kotlin code and maybe rewrite some parts to better suit the Kotlin programming paradigm, however there is no fixed roadmap for that. Feel free library in Kotlin code and maybe rewrite some parts to better suit the Kotlin programming paradigm, however there is no fixed roadmap for that. Feel free
to submit a feature request if you want something to be done first. to submit a feature request if you want something to be done first.
* **Koma wrapper** [Koma](https://github.com/kyonifer/koma) is a well established numerics library in kotlin, specifically linear algebra. * **Koma wrapper** [Koma](https://github.com/kyonifer/koma) is a well established numerics library in Kotlin, specifically linear algebra.
The plan is to have wrappers for koma implementations for compatibility with kmath API. The plan is to have wrappers for koma implementations for compatibility with kmath API.
## Planned features ## Planned features
@ -110,4 +110,4 @@ dependencies{
## Contributing ## Contributing
The project requires a lot of additional work. Please fill free to contribute in any way and propose new features. The project requires a lot of additional work. Please feel free to contribute in any way and propose new features.

View File

@ -32,12 +32,12 @@ Typical case of `Field` is the `RealField` which works on doubles. And typical c
In some cases algebra context could hold additional operation like `exp` or `sin`, in this case it inherits appropriate In some cases algebra context could hold additional operation like `exp` or `sin`, in this case it inherits appropriate
interface. Also a context could have an operation which produces an element outside of its context. For example interface. Also a context could have an operation which produces an element outside of its context. For example
`Matrix` `dot` operation produces a matrix with new dimensions which could not be compatible with initial matrix in `Matrix` `dot` operation produces a matrix with new dimensions which can be incompatible with initial matrix in
terms of linear operations. terms of linear operations.
## Algebra element ## Algebra element
In order to achieve more familiar behavior (where you apply operations directly to mathematica objects), without involving contexts In order to achieve more familiar behavior (where you apply operations directly to mathematical objects), without involving contexts
`kmath` introduces special type objects called `MathElement`. A `MathElement` is basically some object coupled to `kmath` introduces special type objects called `MathElement`. A `MathElement` is basically some object coupled to
a mathematical context. For example `Complex` is the pair of real numbers representing real and imaginary parts, a mathematical context. For example `Complex` is the pair of real numbers representing real and imaginary parts,
but it also holds reference to the `ComplexField` singleton which allows to perform direct operations on `Complex` but it also holds reference to the `ComplexField` singleton which allows to perform direct operations on `Complex`