diff --git a/doc/contexts.md b/doc/contexts.md new file mode 100644 index 000000000..df0ea4e1d --- /dev/null +++ b/doc/contexts.md @@ -0,0 +1,3 @@ +# Context-oriented programming + +One of problems \ No newline at end of file diff --git a/kmath-core/src/commonMain/kotlin/scientifik/kmath/linear/LUDecomposition.kt b/kmath-core/src/commonMain/kotlin/scientifik/kmath/linear/LUDecomposition.kt index 223e63419..6a94042b7 100644 --- a/kmath-core/src/commonMain/kotlin/scientifik/kmath/linear/LUDecomposition.kt +++ b/kmath-core/src/commonMain/kotlin/scientifik/kmath/linear/LUDecomposition.kt @@ -198,7 +198,6 @@ class RealLUDecomposition(matrix: RealMatrix, private val singularityThreshold: /** Specialized solver. */ object RealLUSolver : LinearSolver { - fun decompose(mat: Matrix, threshold: Double = 1e-11): RealLUDecomposition = RealLUDecomposition(mat, threshold) override fun solve(a: RealMatrix, b: RealMatrix): RealMatrix { diff --git a/kmath-core/src/commonMain/kotlin/scientifik/kmath/operations/Complex.kt b/kmath-core/src/commonMain/kotlin/scientifik/kmath/operations/Complex.kt index 8d3c01d28..46388edaf 100644 --- a/kmath-core/src/commonMain/kotlin/scientifik/kmath/operations/Complex.kt +++ b/kmath-core/src/commonMain/kotlin/scientifik/kmath/operations/Complex.kt @@ -6,12 +6,14 @@ package scientifik.kmath.operations object ComplexField : Field { override val zero: Complex = Complex(0.0, 0.0) + override val one: Complex = Complex(1.0, 0.0) + + val i = Complex(0.0, 1.0) + override fun add(a: Complex, b: Complex): Complex = Complex(a.re + b.re, a.im + b.im) override fun multiply(a: Complex, k: Double): Complex = Complex(a.re * k, a.im * k) - override val one: Complex = Complex(1.0, 0.0) - override fun multiply(a: Complex, b: Complex): Complex = Complex(a.re * b.re - a.im * b.im, a.re * b.im + a.im * b.re) override fun divide(a: Complex, b: Complex): Complex = Complex(a.re * b.re + a.im * b.im, a.re * b.im - a.im * b.re) / b.square @@ -41,5 +43,16 @@ data class Complex(val re: Double, val im: Double) : FieldElement(private val array: Array) : MutableBuffer { } inline class DoubleBuffer(private val array: DoubleArray) : MutableBuffer { - override val size: Int - get() = array.size + override val size: Int get() = array.size override fun get(index: Int): Double = array[index] @@ -83,8 +82,7 @@ inline class DoubleBuffer(private val array: DoubleArray) : MutableBuffer { - override val size: Int - get() = array.size + override val size: Int get() = array.size override fun get(index: Int): Int = array[index] diff --git a/kmath-core/src/commonMain/kotlin/scientifik/kmath/structures/NDStructure.kt b/kmath-core/src/commonMain/kotlin/scientifik/kmath/structures/NDStructure.kt index f9521cf93..6e159c9dd 100644 --- a/kmath-core/src/commonMain/kotlin/scientifik/kmath/structures/NDStructure.kt +++ b/kmath-core/src/commonMain/kotlin/scientifik/kmath/structures/NDStructure.kt @@ -49,6 +49,9 @@ interface Strides { */ fun index(offset: Int): IntArray + /** + * The size of linear buffer to accommodate all elements of ND-structure corresponding to strides + */ val linearSize: Int /**