forked from kscience/kmath
replace Space by Group
This commit is contained in:
parent
fe95c4e48e
commit
522f39cef3
@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- Exponential operations merged with hyperbolic functions
|
- Exponential operations merged with hyperbolic functions
|
||||||
|
- Space is replaced by Group. Space is reserved for vector spaces.
|
||||||
|
|
||||||
### Deprecated
|
### Deprecated
|
||||||
|
|
||||||
|
@ -18,22 +18,22 @@ public object MstAlgebra : NumericAlgebra<MST> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [Space] over [MST] nodes.
|
* [Group] over [MST] nodes.
|
||||||
*/
|
*/
|
||||||
public object MstSpace : Space<MST>, NumericAlgebra<MST>, ScaleOperations<MST> {
|
public object MstGroup : Group<MST>, NumericAlgebra<MST>, ScaleOperations<MST> {
|
||||||
public override val zero: MST.Numeric = number(0.0)
|
public override val zero: MST.Numeric = number(0.0)
|
||||||
|
|
||||||
public override fun number(value: Number): MST.Numeric = MstAlgebra.number(value)
|
public override fun number(value: Number): MST.Numeric = MstAlgebra.number(value)
|
||||||
public override fun bindSymbol(value: String): MST.Symbolic = MstAlgebra.bindSymbol(value)
|
public override fun bindSymbol(value: String): MST.Symbolic = MstAlgebra.bindSymbol(value)
|
||||||
public override fun add(a: MST, b: MST): MST.Binary = binaryOperationFunction(SpaceOperations.PLUS_OPERATION)(a, b)
|
public override fun add(a: MST, b: MST): MST.Binary = binaryOperationFunction(GroupOperations.PLUS_OPERATION)(a, b)
|
||||||
public override operator fun MST.unaryPlus(): MST.Unary =
|
public override operator fun MST.unaryPlus(): MST.Unary =
|
||||||
unaryOperationFunction(SpaceOperations.PLUS_OPERATION)(this)
|
unaryOperationFunction(GroupOperations.PLUS_OPERATION)(this)
|
||||||
|
|
||||||
public override operator fun MST.unaryMinus(): MST.Unary =
|
public override operator fun MST.unaryMinus(): MST.Unary =
|
||||||
unaryOperationFunction(SpaceOperations.MINUS_OPERATION)(this)
|
unaryOperationFunction(GroupOperations.MINUS_OPERATION)(this)
|
||||||
|
|
||||||
public override operator fun MST.minus(b: MST): MST.Binary =
|
public override operator fun MST.minus(b: MST): MST.Binary =
|
||||||
binaryOperationFunction(SpaceOperations.MINUS_OPERATION)(this, b)
|
binaryOperationFunction(GroupOperations.MINUS_OPERATION)(this, b)
|
||||||
|
|
||||||
public override fun scale(a: MST, value: Double): MST.Binary =
|
public override fun scale(a: MST, value: Double): MST.Binary =
|
||||||
binaryOperationFunction(RingOperations.TIMES_OPERATION)(a, number(value))
|
binaryOperationFunction(RingOperations.TIMES_OPERATION)(a, number(value))
|
||||||
@ -50,25 +50,25 @@ public object MstSpace : Space<MST>, NumericAlgebra<MST>, ScaleOperations<MST> {
|
|||||||
*/
|
*/
|
||||||
@OptIn(UnstableKMathAPI::class)
|
@OptIn(UnstableKMathAPI::class)
|
||||||
public object MstRing : Ring<MST>, NumbersAddOperations<MST>, ScaleOperations<MST> {
|
public object MstRing : Ring<MST>, NumbersAddOperations<MST>, ScaleOperations<MST> {
|
||||||
public override val zero: MST.Numeric = MstSpace.zero
|
public override val zero: MST.Numeric = MstGroup.zero
|
||||||
public override val one: MST.Numeric = number(1.0)
|
public override val one: MST.Numeric = number(1.0)
|
||||||
|
|
||||||
public override fun number(value: Number): MST.Numeric = MstSpace.number(value)
|
public override fun number(value: Number): MST.Numeric = MstGroup.number(value)
|
||||||
public override fun bindSymbol(value: String): MST.Symbolic = MstSpace.bindSymbol(value)
|
public override fun bindSymbol(value: String): MST.Symbolic = MstGroup.bindSymbol(value)
|
||||||
public override fun add(a: MST, b: MST): MST.Binary = MstSpace.add(a, b)
|
public override fun add(a: MST, b: MST): MST.Binary = MstGroup.add(a, b)
|
||||||
|
|
||||||
public override fun scale(a: MST, value: Double): MST.Binary =
|
public override fun scale(a: MST, value: Double): MST.Binary =
|
||||||
MstSpace.binaryOperationFunction(RingOperations.TIMES_OPERATION)(a, MstSpace.number(value))
|
MstGroup.binaryOperationFunction(RingOperations.TIMES_OPERATION)(a, MstGroup.number(value))
|
||||||
|
|
||||||
public override fun multiply(a: MST, b: MST): MST.Binary =
|
public override fun multiply(a: MST, b: MST): MST.Binary =
|
||||||
binaryOperationFunction(RingOperations.TIMES_OPERATION)(a, b)
|
binaryOperationFunction(RingOperations.TIMES_OPERATION)(a, b)
|
||||||
|
|
||||||
public override operator fun MST.unaryPlus(): MST.Unary = MstSpace { +this@unaryPlus }
|
public override operator fun MST.unaryPlus(): MST.Unary = MstGroup { +this@unaryPlus }
|
||||||
public override operator fun MST.unaryMinus(): MST.Unary = MstSpace { -this@unaryMinus }
|
public override operator fun MST.unaryMinus(): MST.Unary = MstGroup { -this@unaryMinus }
|
||||||
public override operator fun MST.minus(b: MST): MST.Binary = MstSpace { this@minus - b }
|
public override operator fun MST.minus(b: MST): MST.Binary = MstGroup { this@minus - b }
|
||||||
|
|
||||||
public override fun binaryOperationFunction(operation: String): (left: MST, right: MST) -> MST.Binary =
|
public override fun binaryOperationFunction(operation: String): (left: MST, right: MST) -> MST.Binary =
|
||||||
MstSpace.binaryOperationFunction(operation)
|
MstGroup.binaryOperationFunction(operation)
|
||||||
|
|
||||||
public override fun unaryOperationFunction(operation: String): (arg: MST) -> MST.Unary =
|
public override fun unaryOperationFunction(operation: String): (arg: MST) -> MST.Unary =
|
||||||
MstAlgebra.unaryOperationFunction(operation)
|
MstAlgebra.unaryOperationFunction(operation)
|
||||||
@ -88,7 +88,7 @@ public object MstField : Field<MST>, NumbersAddOperations<MST>, ScaleOperations<
|
|||||||
public override fun add(a: MST, b: MST): MST.Binary = MstRing.add(a, b)
|
public override fun add(a: MST, b: MST): MST.Binary = MstRing.add(a, b)
|
||||||
|
|
||||||
public override fun scale(a: MST, value: Double): MST.Binary =
|
public override fun scale(a: MST, value: Double): MST.Binary =
|
||||||
MstSpace.binaryOperationFunction(RingOperations.TIMES_OPERATION)(a, MstSpace.number(value))
|
MstGroup.binaryOperationFunction(RingOperations.TIMES_OPERATION)(a, MstGroup.number(value))
|
||||||
|
|
||||||
public override fun multiply(a: MST, b: MST): MST.Binary = MstRing.multiply(a, b)
|
public override fun multiply(a: MST, b: MST): MST.Binary = MstRing.multiply(a, b)
|
||||||
public override fun divide(a: MST, b: MST): MST.Binary =
|
public override fun divide(a: MST, b: MST): MST.Binary =
|
||||||
@ -129,7 +129,7 @@ public object MstExtendedField : ExtendedField<MST>, NumericAlgebra<MST> {
|
|||||||
public override fun add(a: MST, b: MST): MST.Binary = MstField.add(a, b)
|
public override fun add(a: MST, b: MST): MST.Binary = MstField.add(a, b)
|
||||||
|
|
||||||
public override fun scale(a: MST, value: Double): MST =
|
public override fun scale(a: MST, value: Double): MST =
|
||||||
binaryOperation(SpaceOperations.PLUS_OPERATION, a, number(value))
|
binaryOperation(GroupOperations.PLUS_OPERATION, a, number(value))
|
||||||
|
|
||||||
public override fun multiply(a: MST, b: MST): MST.Binary = MstField.multiply(a, b)
|
public override fun multiply(a: MST, b: MST): MST.Binary = MstField.multiply(a, b)
|
||||||
public override fun divide(a: MST, b: MST): MST.Binary = MstField.divide(a, b)
|
public override fun divide(a: MST, b: MST): MST.Binary = MstField.divide(a, b)
|
||||||
|
@ -54,13 +54,13 @@ public inline fun <reified T : Any, A : Algebra<T>, E : Algebra<MST>> A.mst(
|
|||||||
): MstExpression<T, A> = MstExpression(this, mstAlgebra.block())
|
): MstExpression<T, A> = MstExpression(this, mstAlgebra.block())
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds [MstExpression] over [Space].
|
* Builds [MstExpression] over [Group].
|
||||||
*
|
*
|
||||||
* @author Alexander Nozik
|
* @author Alexander Nozik
|
||||||
*/
|
*/
|
||||||
public inline fun <reified T : Any, A : Space<T>> A.mstInSpace(block: MstSpace.() -> MST): MstExpression<T, A> {
|
public inline fun <reified T : Any, A : Group<T>> A.mstInSpace(block: MstGroup.() -> MST): MstExpression<T, A> {
|
||||||
contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }
|
contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }
|
||||||
return MstExpression(this, MstSpace.block())
|
return MstExpression(this, MstGroup.block())
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -94,11 +94,11 @@ public inline fun <reified T : Any, A : ExtendedField<T>> A.mstInExtendedField(b
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds [MstExpression] over [FunctionalExpressionSpace].
|
* Builds [MstExpression] over [FunctionalExpressionGroup].
|
||||||
*
|
*
|
||||||
* @author Alexander Nozik
|
* @author Alexander Nozik
|
||||||
*/
|
*/
|
||||||
public inline fun <reified T : Any, A : Space<T>> FunctionalExpressionSpace<T, A>.mstInSpace(block: MstSpace.() -> MST): MstExpression<T, A> {
|
public inline fun <reified T : Any, A : Group<T>> FunctionalExpressionGroup<T, A>.mstInSpace(block: MstGroup.() -> MST): MstExpression<T, A> {
|
||||||
contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }
|
contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }
|
||||||
return algebra.mstInSpace(block)
|
return algebra.mstInSpace(block)
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@ import kotlin.test.assertEquals
|
|||||||
internal class TestESTreeConsistencyWithInterpreter {
|
internal class TestESTreeConsistencyWithInterpreter {
|
||||||
@Test
|
@Test
|
||||||
fun mstSpace() {
|
fun mstSpace() {
|
||||||
val res1 = MstSpace.mstInSpace {
|
val res1 = MstGroup.mstInSpace {
|
||||||
binaryOperationFunction("+")(
|
binaryOperationFunction("+")(
|
||||||
unaryOperationFunction("+")(
|
unaryOperationFunction("+")(
|
||||||
number(3.toByte()) - (number(2.toByte()) + (scale(
|
number(3.toByte()) - (number(2.toByte()) + (scale(
|
||||||
@ -25,7 +25,7 @@ internal class TestESTreeConsistencyWithInterpreter {
|
|||||||
) + bindSymbol("x") + zero
|
) + bindSymbol("x") + zero
|
||||||
}("x" to MST.Numeric(2))
|
}("x" to MST.Numeric(2))
|
||||||
|
|
||||||
val res2 = MstSpace.mstInSpace {
|
val res2 = MstGroup.mstInSpace {
|
||||||
binaryOperationFunction("+")(
|
binaryOperationFunction("+")(
|
||||||
unaryOperationFunction("+")(
|
unaryOperationFunction("+")(
|
||||||
number(3.toByte()) - (number(2.toByte()) + (scale(
|
number(3.toByte()) - (number(2.toByte()) + (scale(
|
||||||
|
@ -14,9 +14,9 @@ import com.github.h0tk3y.betterParse.lexer.regexToken
|
|||||||
import com.github.h0tk3y.betterParse.parser.ParseResult
|
import com.github.h0tk3y.betterParse.parser.ParseResult
|
||||||
import com.github.h0tk3y.betterParse.parser.Parser
|
import com.github.h0tk3y.betterParse.parser.Parser
|
||||||
import space.kscience.kmath.operations.FieldOperations
|
import space.kscience.kmath.operations.FieldOperations
|
||||||
|
import space.kscience.kmath.operations.GroupOperations
|
||||||
import space.kscience.kmath.operations.PowerOperations
|
import space.kscience.kmath.operations.PowerOperations
|
||||||
import space.kscience.kmath.operations.RingOperations
|
import space.kscience.kmath.operations.RingOperations
|
||||||
import space.kscience.kmath.operations.SpaceOperations
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* better-parse implementation of grammar defined in the ArithmeticsEvaluator.g4.
|
* better-parse implementation of grammar defined in the ArithmeticsEvaluator.g4.
|
||||||
@ -55,7 +55,7 @@ public object ArithmeticsEvaluator : Grammar<MST>() {
|
|||||||
.or(binaryFunction)
|
.or(binaryFunction)
|
||||||
.or(unaryFunction)
|
.or(unaryFunction)
|
||||||
.or(singular)
|
.or(singular)
|
||||||
.or(-minus and parser(ArithmeticsEvaluator::term) map { MST.Unary(SpaceOperations.MINUS_OPERATION, it) })
|
.or(-minus and parser(ArithmeticsEvaluator::term) map { MST.Unary(GroupOperations.MINUS_OPERATION, it) })
|
||||||
.or(-lpar and parser(ArithmeticsEvaluator::subSumChain) and -rpar)
|
.or(-lpar and parser(ArithmeticsEvaluator::subSumChain) and -rpar)
|
||||||
|
|
||||||
private val powChain: Parser<MST> by leftAssociative(term = term, operator = pow) { a, _, b ->
|
private val powChain: Parser<MST> by leftAssociative(term = term, operator = pow) { a, _, b ->
|
||||||
@ -77,9 +77,9 @@ public object ArithmeticsEvaluator : Grammar<MST>() {
|
|||||||
operator = plus or minus use TokenMatch::type
|
operator = plus or minus use TokenMatch::type
|
||||||
) { a, op, b ->
|
) { a, op, b ->
|
||||||
if (op == plus)
|
if (op == plus)
|
||||||
MST.Binary(SpaceOperations.PLUS_OPERATION, a, b)
|
MST.Binary(GroupOperations.PLUS_OPERATION, a, b)
|
||||||
else
|
else
|
||||||
MST.Binary(SpaceOperations.MINUS_OPERATION, a, b)
|
MST.Binary(GroupOperations.MINUS_OPERATION, a, b)
|
||||||
}
|
}
|
||||||
|
|
||||||
override val rootParser: Parser<MST> by subSumChain
|
override val rootParser: Parser<MST> by subSumChain
|
||||||
|
@ -12,7 +12,7 @@ import kotlin.test.assertEquals
|
|||||||
internal class TestAsmConsistencyWithInterpreter {
|
internal class TestAsmConsistencyWithInterpreter {
|
||||||
@Test
|
@Test
|
||||||
fun mstSpace() {
|
fun mstSpace() {
|
||||||
val res1 = MstSpace.mstInSpace {
|
val res1 = MstGroup.mstInSpace {
|
||||||
binaryOperationFunction("+")(
|
binaryOperationFunction("+")(
|
||||||
unaryOperationFunction("+")(
|
unaryOperationFunction("+")(
|
||||||
number(3.toByte()) - (number(2.toByte()) + (scale(
|
number(3.toByte()) - (number(2.toByte()) + (scale(
|
||||||
@ -25,7 +25,7 @@ internal class TestAsmConsistencyWithInterpreter {
|
|||||||
) + bindSymbol("x") + zero
|
) + bindSymbol("x") + zero
|
||||||
}("x" to MST.Numeric(2))
|
}("x" to MST.Numeric(2))
|
||||||
|
|
||||||
val res2 = MstSpace.mstInSpace {
|
val res2 = MstGroup.mstInSpace {
|
||||||
binaryOperationFunction("+")(
|
binaryOperationFunction("+")(
|
||||||
unaryOperationFunction("+")(
|
unaryOperationFunction("+")(
|
||||||
number(3.toByte()) - (number(2.toByte()) + (scale(
|
number(3.toByte()) - (number(2.toByte()) + (scale(
|
||||||
|
@ -52,7 +52,7 @@ public final class space/kscience/kmath/expressions/ExpressionBuildersKt {
|
|||||||
public static final fun extendedFieldExpression (Lspace/kscience/kmath/operations/ExtendedField;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/expressions/Expression;
|
public static final fun extendedFieldExpression (Lspace/kscience/kmath/operations/ExtendedField;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/expressions/Expression;
|
||||||
public static final fun fieldExpression (Lspace/kscience/kmath/operations/Field;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/expressions/Expression;
|
public static final fun fieldExpression (Lspace/kscience/kmath/operations/Field;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/expressions/Expression;
|
||||||
public static final fun ringExpression (Lspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/expressions/Expression;
|
public static final fun ringExpression (Lspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/expressions/Expression;
|
||||||
public static final fun spaceExpression (Lspace/kscience/kmath/operations/Space;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/expressions/Expression;
|
public static final fun spaceExpression (Lspace/kscience/kmath/operations/Group;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/expressions/Expression;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/expressions/ExpressionKt {
|
public final class space/kscience/kmath/expressions/ExpressionKt {
|
||||||
@ -91,7 +91,7 @@ public final class space/kscience/kmath/expressions/FunctionalExpressionAlgebraK
|
|||||||
public static final fun expressionInExtendedField (Lspace/kscience/kmath/operations/ExtendedField;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/expressions/Expression;
|
public static final fun expressionInExtendedField (Lspace/kscience/kmath/operations/ExtendedField;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/expressions/Expression;
|
||||||
public static final fun expressionInField (Lspace/kscience/kmath/operations/Field;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/expressions/Expression;
|
public static final fun expressionInField (Lspace/kscience/kmath/operations/Field;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/expressions/Expression;
|
||||||
public static final fun expressionInRing (Lspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/expressions/Expression;
|
public static final fun expressionInRing (Lspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/expressions/Expression;
|
||||||
public static final fun expressionInSpace (Lspace/kscience/kmath/operations/Space;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/expressions/Expression;
|
public static final fun expressionInSpace (Lspace/kscience/kmath/operations/Group;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/expressions/Expression;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class space/kscience/kmath/expressions/FunctionalExpressionExtendedField : space/kscience/kmath/expressions/FunctionalExpressionField, space/kscience/kmath/operations/ExtendedField {
|
public class space/kscience/kmath/expressions/FunctionalExpressionExtendedField : space/kscience/kmath/expressions/FunctionalExpressionField, space/kscience/kmath/operations/ExtendedField {
|
||||||
@ -165,22 +165,8 @@ public class space/kscience/kmath/expressions/FunctionalExpressionField : space/
|
|||||||
public fun unaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
public fun unaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class space/kscience/kmath/expressions/FunctionalExpressionRing : space/kscience/kmath/expressions/FunctionalExpressionSpace, space/kscience/kmath/operations/Ring {
|
public class space/kscience/kmath/expressions/FunctionalExpressionGroup : space/kscience/kmath/expressions/FunctionalExpressionAlgebra, space/kscience/kmath/operations/Group {
|
||||||
public fun <init> (Lspace/kscience/kmath/operations/Ring;)V
|
public fun <init> (Lspace/kscience/kmath/operations/Group;)V
|
||||||
public fun binaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
|
||||||
public synthetic fun getOne ()Ljava/lang/Object;
|
|
||||||
public fun getOne ()Lspace/kscience/kmath/expressions/Expression;
|
|
||||||
public synthetic fun multiply (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
|
||||||
public fun multiply (Lspace/kscience/kmath/expressions/Expression;Lspace/kscience/kmath/expressions/Expression;)Lspace/kscience/kmath/expressions/Expression;
|
|
||||||
public synthetic fun times (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
|
||||||
public final fun times (Ljava/lang/Object;Lspace/kscience/kmath/expressions/Expression;)Lspace/kscience/kmath/expressions/Expression;
|
|
||||||
public final fun times (Lspace/kscience/kmath/expressions/Expression;Ljava/lang/Object;)Lspace/kscience/kmath/expressions/Expression;
|
|
||||||
public fun times (Lspace/kscience/kmath/expressions/Expression;Lspace/kscience/kmath/expressions/Expression;)Lspace/kscience/kmath/expressions/Expression;
|
|
||||||
public fun unaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public class space/kscience/kmath/expressions/FunctionalExpressionSpace : space/kscience/kmath/expressions/FunctionalExpressionAlgebra, space/kscience/kmath/operations/Space {
|
|
||||||
public fun <init> (Lspace/kscience/kmath/operations/Space;)V
|
|
||||||
public synthetic fun add (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun add (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun add (Lspace/kscience/kmath/expressions/Expression;Lspace/kscience/kmath/expressions/Expression;)Lspace/kscience/kmath/expressions/Expression;
|
public fun add (Lspace/kscience/kmath/expressions/Expression;Lspace/kscience/kmath/expressions/Expression;)Lspace/kscience/kmath/expressions/Expression;
|
||||||
public fun binaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
public fun binaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
@ -201,6 +187,20 @@ public class space/kscience/kmath/expressions/FunctionalExpressionSpace : space/
|
|||||||
public fun unaryPlus (Lspace/kscience/kmath/expressions/Expression;)Lspace/kscience/kmath/expressions/Expression;
|
public fun unaryPlus (Lspace/kscience/kmath/expressions/Expression;)Lspace/kscience/kmath/expressions/Expression;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class space/kscience/kmath/expressions/FunctionalExpressionRing : space/kscience/kmath/expressions/FunctionalExpressionGroup, space/kscience/kmath/operations/Ring {
|
||||||
|
public fun <init> (Lspace/kscience/kmath/operations/Ring;)V
|
||||||
|
public fun binaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
|
public synthetic fun getOne ()Ljava/lang/Object;
|
||||||
|
public fun getOne ()Lspace/kscience/kmath/expressions/Expression;
|
||||||
|
public synthetic fun multiply (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
|
public fun multiply (Lspace/kscience/kmath/expressions/Expression;Lspace/kscience/kmath/expressions/Expression;)Lspace/kscience/kmath/expressions/Expression;
|
||||||
|
public synthetic fun times (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
|
public final fun times (Ljava/lang/Object;Lspace/kscience/kmath/expressions/Expression;)Lspace/kscience/kmath/expressions/Expression;
|
||||||
|
public final fun times (Lspace/kscience/kmath/expressions/Expression;Ljava/lang/Object;)Lspace/kscience/kmath/expressions/Expression;
|
||||||
|
public fun times (Lspace/kscience/kmath/expressions/Expression;Lspace/kscience/kmath/expressions/Expression;)Lspace/kscience/kmath/expressions/Expression;
|
||||||
|
public fun unaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
||||||
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/expressions/SimpleAutoDiffExpression : space/kscience/kmath/expressions/FirstDerivativeExpression {
|
public final class space/kscience/kmath/expressions/SimpleAutoDiffExpression : space/kscience/kmath/expressions/FirstDerivativeExpression {
|
||||||
public fun <init> (Lspace/kscience/kmath/operations/Field;Lkotlin/jvm/functions/Function1;)V
|
public fun <init> (Lspace/kscience/kmath/operations/Field;Lkotlin/jvm/functions/Function1;)V
|
||||||
public fun derivativeOrNull (Lspace/kscience/kmath/expressions/Symbol;)Lspace/kscience/kmath/expressions/Expression;
|
public fun derivativeOrNull (Lspace/kscience/kmath/expressions/Symbol;)Lspace/kscience/kmath/expressions/Expression;
|
||||||
@ -490,7 +490,7 @@ public final class space/kscience/kmath/linear/BufferMatrixContext : space/kscie
|
|||||||
public final class space/kscience/kmath/linear/BufferMatrixContext$Companion {
|
public final class space/kscience/kmath/linear/BufferMatrixContext$Companion {
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/linear/BufferVectorSpace : space/kscience/kmath/linear/VectorSpace {
|
public final class space/kscience/kmath/linear/BufferVectorGroup : space/kscience/kmath/linear/VectorSpace {
|
||||||
public fun <init> (ILspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function2;)V
|
public fun <init> (ILspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function2;)V
|
||||||
public synthetic fun add (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun add (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun add (Lspace/kscience/kmath/structures/Buffer;Lspace/kscience/kmath/structures/Buffer;)Lspace/kscience/kmath/structures/Buffer;
|
public fun add (Lspace/kscience/kmath/structures/Buffer;Lspace/kscience/kmath/structures/Buffer;)Lspace/kscience/kmath/structures/Buffer;
|
||||||
@ -625,7 +625,7 @@ public final class space/kscience/kmath/linear/MatrixBuilderKt {
|
|||||||
public static final fun row (Lspace/kscience/kmath/nd/Structure2D$Companion;[Ljava/lang/Object;)Lspace/kscience/kmath/nd/Structure2D;
|
public static final fun row (Lspace/kscience/kmath/nd/Structure2D$Companion;[Ljava/lang/Object;)Lspace/kscience/kmath/nd/Structure2D;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class space/kscience/kmath/linear/MatrixContext : space/kscience/kmath/operations/SpaceOperations {
|
public abstract interface class space/kscience/kmath/linear/MatrixContext : space/kscience/kmath/operations/GroupOperations {
|
||||||
public static final field Companion Lspace/kscience/kmath/linear/MatrixContext$Companion;
|
public static final field Companion Lspace/kscience/kmath/linear/MatrixContext$Companion;
|
||||||
public abstract fun binaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
public abstract fun binaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
public abstract fun dot (Lspace/kscience/kmath/nd/Structure2D;Lspace/kscience/kmath/nd/Structure2D;)Lspace/kscience/kmath/nd/Structure2D;
|
public abstract fun dot (Lspace/kscience/kmath/nd/Structure2D;Lspace/kscience/kmath/nd/Structure2D;)Lspace/kscience/kmath/nd/Structure2D;
|
||||||
@ -763,7 +763,7 @@ public final class space/kscience/kmath/linear/UnitFeature : space/kscience/kmat
|
|||||||
public static final field INSTANCE Lspace/kscience/kmath/linear/UnitFeature;
|
public static final field INSTANCE Lspace/kscience/kmath/linear/UnitFeature;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class space/kscience/kmath/linear/VectorSpace : space/kscience/kmath/operations/Space {
|
public abstract interface class space/kscience/kmath/linear/VectorSpace : space/kscience/kmath/operations/Group {
|
||||||
public static final field Companion Lspace/kscience/kmath/linear/VectorSpace$Companion;
|
public static final field Companion Lspace/kscience/kmath/linear/VectorSpace$Companion;
|
||||||
public abstract fun add (Lspace/kscience/kmath/structures/Buffer;Lspace/kscience/kmath/structures/Buffer;)Lspace/kscience/kmath/structures/Buffer;
|
public abstract fun add (Lspace/kscience/kmath/structures/Buffer;Lspace/kscience/kmath/structures/Buffer;)Lspace/kscience/kmath/structures/Buffer;
|
||||||
public abstract fun getAlgebra ()Lspace/kscience/kmath/operations/Ring;
|
public abstract fun getAlgebra ()Lspace/kscience/kmath/operations/Ring;
|
||||||
@ -775,9 +775,9 @@ public abstract interface class space/kscience/kmath/linear/VectorSpace : space/
|
|||||||
}
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/linear/VectorSpace$Companion {
|
public final class space/kscience/kmath/linear/VectorSpace$Companion {
|
||||||
public final fun buffered (ILspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/linear/BufferVectorSpace;
|
public final fun buffered (ILspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/linear/BufferVectorGroup;
|
||||||
public static synthetic fun buffered$default (Lspace/kscience/kmath/linear/VectorSpace$Companion;ILspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lspace/kscience/kmath/linear/BufferVectorSpace;
|
public static synthetic fun buffered$default (Lspace/kscience/kmath/linear/VectorSpace$Companion;ILspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lspace/kscience/kmath/linear/BufferVectorGroup;
|
||||||
public final fun real (I)Lspace/kscience/kmath/linear/BufferVectorSpace;
|
public final fun real (I)Lspace/kscience/kmath/linear/BufferVectorGroup;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/linear/VectorSpace$DefaultImpls {
|
public final class space/kscience/kmath/linear/VectorSpace$DefaultImpls {
|
||||||
@ -820,9 +820,9 @@ public final class space/kscience/kmath/misc/CumulativeKt {
|
|||||||
public static final fun cumulative (Ljava/util/Iterator;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/util/Iterator;
|
public static final fun cumulative (Ljava/util/Iterator;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/util/Iterator;
|
||||||
public static final fun cumulative (Ljava/util/List;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/util/List;
|
public static final fun cumulative (Ljava/util/List;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/util/List;
|
||||||
public static final fun cumulative (Lkotlin/sequences/Sequence;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Lkotlin/sequences/Sequence;
|
public static final fun cumulative (Lkotlin/sequences/Sequence;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Lkotlin/sequences/Sequence;
|
||||||
public static final fun cumulativeSum (Ljava/lang/Iterable;Lspace/kscience/kmath/operations/Space;)Ljava/lang/Iterable;
|
public static final fun cumulativeSum (Ljava/lang/Iterable;Lspace/kscience/kmath/operations/Group;)Ljava/lang/Iterable;
|
||||||
public static final fun cumulativeSum (Ljava/util/List;Lspace/kscience/kmath/operations/Space;)Ljava/util/List;
|
public static final fun cumulativeSum (Ljava/util/List;Lspace/kscience/kmath/operations/Group;)Ljava/util/List;
|
||||||
public static final fun cumulativeSum (Lkotlin/sequences/Sequence;Lspace/kscience/kmath/operations/Space;)Lkotlin/sequences/Sequence;
|
public static final fun cumulativeSum (Lkotlin/sequences/Sequence;Lspace/kscience/kmath/operations/Group;)Lkotlin/sequences/Sequence;
|
||||||
public static final fun cumulativeSumOfDouble (Ljava/lang/Iterable;)Ljava/lang/Iterable;
|
public static final fun cumulativeSumOfDouble (Ljava/lang/Iterable;)Ljava/lang/Iterable;
|
||||||
public static final fun cumulativeSumOfDouble (Ljava/util/List;)Ljava/util/List;
|
public static final fun cumulativeSumOfDouble (Ljava/util/List;)Ljava/util/List;
|
||||||
public static final fun cumulativeSumOfDouble (Lkotlin/sequences/Sequence;)Lkotlin/sequences/Sequence;
|
public static final fun cumulativeSumOfDouble (Lkotlin/sequences/Sequence;)Lkotlin/sequences/Sequence;
|
||||||
@ -860,9 +860,9 @@ public final class space/kscience/kmath/nd/BufferNDAlgebraKt {
|
|||||||
public static final fun field (Lspace/kscience/kmath/nd/NDAlgebra$Companion;Lspace/kscience/kmath/operations/Field;Lkotlin/jvm/functions/Function2;[I)Lspace/kscience/kmath/nd/BufferedNDField;
|
public static final fun field (Lspace/kscience/kmath/nd/NDAlgebra$Companion;Lspace/kscience/kmath/operations/Field;Lkotlin/jvm/functions/Function2;[I)Lspace/kscience/kmath/nd/BufferedNDField;
|
||||||
public static final fun ndField (Lspace/kscience/kmath/operations/Field;Lkotlin/jvm/functions/Function2;[ILkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
public static final fun ndField (Lspace/kscience/kmath/operations/Field;Lkotlin/jvm/functions/Function2;[ILkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||||
public static final fun ndRing (Lspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function2;[ILkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
public static final fun ndRing (Lspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function2;[ILkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||||
public static final fun ndSpace (Lspace/kscience/kmath/operations/Space;Lkotlin/jvm/functions/Function2;[ILkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
public static final fun ndSpace (Lspace/kscience/kmath/operations/Group;Lkotlin/jvm/functions/Function2;[ILkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||||
public static final fun ring (Lspace/kscience/kmath/nd/NDAlgebra$Companion;Lspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function2;[I)Lspace/kscience/kmath/nd/BufferedNDRing;
|
public static final fun ring (Lspace/kscience/kmath/nd/NDAlgebra$Companion;Lspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function2;[I)Lspace/kscience/kmath/nd/BufferedNDRing;
|
||||||
public static final fun space (Lspace/kscience/kmath/nd/NDAlgebra$Companion;Lspace/kscience/kmath/operations/Space;Lkotlin/jvm/functions/Function2;[I)Lspace/kscience/kmath/nd/BufferedNDSpace;
|
public static final fun space (Lspace/kscience/kmath/nd/NDAlgebra$Companion;Lspace/kscience/kmath/operations/Group;Lkotlin/jvm/functions/Function2;[I)Lspace/kscience/kmath/nd/BufferedNDGroup;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class space/kscience/kmath/nd/BufferedNDField : space/kscience/kmath/nd/BufferedNDRing, space/kscience/kmath/nd/NDField {
|
public class space/kscience/kmath/nd/BufferedNDField : space/kscience/kmath/nd/BufferedNDRing, space/kscience/kmath/nd/NDField {
|
||||||
@ -892,21 +892,8 @@ public class space/kscience/kmath/nd/BufferedNDField : space/kscience/kmath/nd/B
|
|||||||
public fun times (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun times (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class space/kscience/kmath/nd/BufferedNDRing : space/kscience/kmath/nd/BufferedNDSpace, space/kscience/kmath/nd/NDRing {
|
public class space/kscience/kmath/nd/BufferedNDGroup : space/kscience/kmath/nd/BufferNDAlgebra, space/kscience/kmath/nd/NDGroup {
|
||||||
public fun <init> ([ILspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function2;)V
|
public fun <init> ([ILspace/kscience/kmath/operations/Group;Lkotlin/jvm/functions/Function2;)V
|
||||||
public fun binaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
|
||||||
public synthetic fun getOne ()Ljava/lang/Object;
|
|
||||||
public fun getOne ()Lspace/kscience/kmath/nd/NDBuffer;
|
|
||||||
public synthetic fun multiply (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
|
||||||
public fun multiply (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public synthetic fun times (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
|
||||||
public fun times (Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public fun times (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public fun times (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
}
|
|
||||||
|
|
||||||
public class space/kscience/kmath/nd/BufferedNDSpace : space/kscience/kmath/nd/BufferNDAlgebra, space/kscience/kmath/nd/NDSpace {
|
|
||||||
public fun <init> ([ILspace/kscience/kmath/operations/Space;Lkotlin/jvm/functions/Function2;)V
|
|
||||||
public synthetic fun add (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun add (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun add (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun add (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
public synthetic fun binaryOperation (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun binaryOperation (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
@ -919,7 +906,7 @@ public class space/kscience/kmath/nd/BufferedNDSpace : space/kscience/kmath/nd/B
|
|||||||
public fun getBuffer (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/structures/Buffer;
|
public fun getBuffer (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/structures/Buffer;
|
||||||
public final fun getBufferFactory ()Lkotlin/jvm/functions/Function2;
|
public final fun getBufferFactory ()Lkotlin/jvm/functions/Function2;
|
||||||
public synthetic fun getElementContext ()Lspace/kscience/kmath/operations/Algebra;
|
public synthetic fun getElementContext ()Lspace/kscience/kmath/operations/Algebra;
|
||||||
public final fun getElementContext ()Lspace/kscience/kmath/operations/Space;
|
public final fun getElementContext ()Lspace/kscience/kmath/operations/Group;
|
||||||
public final fun getShape ()[I
|
public final fun getShape ()[I
|
||||||
public fun getStrides ()Lspace/kscience/kmath/nd/Strides;
|
public fun getStrides ()Lspace/kscience/kmath/nd/Strides;
|
||||||
public synthetic fun getZero ()Ljava/lang/Object;
|
public synthetic fun getZero ()Ljava/lang/Object;
|
||||||
@ -948,6 +935,19 @@ public class space/kscience/kmath/nd/BufferedNDSpace : space/kscience/kmath/nd/B
|
|||||||
public fun unaryPlus (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun unaryPlus (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class space/kscience/kmath/nd/BufferedNDRing : space/kscience/kmath/nd/BufferedNDGroup, space/kscience/kmath/nd/NDRing {
|
||||||
|
public fun <init> ([ILspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function2;)V
|
||||||
|
public fun binaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
|
public synthetic fun getOne ()Ljava/lang/Object;
|
||||||
|
public fun getOne ()Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
|
public synthetic fun multiply (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
|
public fun multiply (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
|
public synthetic fun times (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
|
public fun times (Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
|
public fun times (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
|
public fun times (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/DefaultStrides : space/kscience/kmath/nd/Strides {
|
public final class space/kscience/kmath/nd/DefaultStrides : space/kscience/kmath/nd/Strides {
|
||||||
public static final field Companion Lspace/kscience/kmath/nd/DefaultStrides$Companion;
|
public static final field Companion Lspace/kscience/kmath/nd/DefaultStrides$Companion;
|
||||||
public synthetic fun <init> ([ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
public synthetic fun <init> ([ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||||
@ -1050,7 +1050,36 @@ public final class space/kscience/kmath/nd/NDField$DefaultImpls {
|
|||||||
public static fun unaryPlus (Lspace/kscience/kmath/nd/NDField;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public static fun unaryPlus (Lspace/kscience/kmath/nd/NDField;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class space/kscience/kmath/nd/NDRing : space/kscience/kmath/nd/NDSpace, space/kscience/kmath/operations/Ring {
|
public abstract interface class space/kscience/kmath/nd/NDGroup : space/kscience/kmath/nd/NDAlgebra, space/kscience/kmath/operations/Group {
|
||||||
|
public static final field Companion Lspace/kscience/kmath/nd/NDGroup$Companion;
|
||||||
|
public abstract fun add (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
|
public abstract fun minus (Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
|
public abstract fun minus (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
|
public abstract fun plus (Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
|
public abstract fun plus (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class space/kscience/kmath/nd/NDGroup$Companion {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class space/kscience/kmath/nd/NDGroup$DefaultImpls {
|
||||||
|
public static fun add (Lspace/kscience/kmath/nd/NDGroup;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
|
public static fun binaryOperation (Lspace/kscience/kmath/nd/NDGroup;Ljava/lang/String;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
|
public static fun binaryOperationFunction (Lspace/kscience/kmath/nd/NDGroup;Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
|
public static fun bindSymbol (Lspace/kscience/kmath/nd/NDGroup;Ljava/lang/String;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
|
public static fun invoke (Lspace/kscience/kmath/nd/NDGroup;Lkotlin/jvm/functions/Function1;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
|
public static fun minus (Lspace/kscience/kmath/nd/NDGroup;Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
|
public static fun minus (Lspace/kscience/kmath/nd/NDGroup;Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
|
public static fun minus (Lspace/kscience/kmath/nd/NDGroup;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
|
public static fun plus (Lspace/kscience/kmath/nd/NDGroup;Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
|
public static fun plus (Lspace/kscience/kmath/nd/NDGroup;Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
|
public static fun plus (Lspace/kscience/kmath/nd/NDGroup;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
|
public static fun unaryOperation (Lspace/kscience/kmath/nd/NDGroup;Ljava/lang/String;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
|
public static fun unaryOperationFunction (Lspace/kscience/kmath/nd/NDGroup;Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
||||||
|
public static fun unaryPlus (Lspace/kscience/kmath/nd/NDGroup;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract interface class space/kscience/kmath/nd/NDRing : space/kscience/kmath/nd/NDGroup, space/kscience/kmath/operations/Ring {
|
||||||
public static final field Companion Lspace/kscience/kmath/nd/NDRing$Companion;
|
public static final field Companion Lspace/kscience/kmath/nd/NDRing$Companion;
|
||||||
public abstract fun multiply (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public abstract fun multiply (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
public abstract fun times (Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public abstract fun times (Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
@ -1081,35 +1110,6 @@ public final class space/kscience/kmath/nd/NDRing$DefaultImpls {
|
|||||||
public static fun unaryPlus (Lspace/kscience/kmath/nd/NDRing;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public static fun unaryPlus (Lspace/kscience/kmath/nd/NDRing;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class space/kscience/kmath/nd/NDSpace : space/kscience/kmath/nd/NDAlgebra, space/kscience/kmath/operations/Space {
|
|
||||||
public static final field Companion Lspace/kscience/kmath/nd/NDSpace$Companion;
|
|
||||||
public abstract fun add (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public abstract fun minus (Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public abstract fun minus (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public abstract fun plus (Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public abstract fun plus (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/NDSpace$Companion {
|
|
||||||
}
|
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/NDSpace$DefaultImpls {
|
|
||||||
public static fun add (Lspace/kscience/kmath/nd/NDSpace;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun binaryOperation (Lspace/kscience/kmath/nd/NDSpace;Ljava/lang/String;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun binaryOperationFunction (Lspace/kscience/kmath/nd/NDSpace;Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
|
||||||
public static fun bindSymbol (Lspace/kscience/kmath/nd/NDSpace;Ljava/lang/String;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun invoke (Lspace/kscience/kmath/nd/NDSpace;Lkotlin/jvm/functions/Function1;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun minus (Lspace/kscience/kmath/nd/NDSpace;Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun minus (Lspace/kscience/kmath/nd/NDSpace;Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun minus (Lspace/kscience/kmath/nd/NDSpace;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun plus (Lspace/kscience/kmath/nd/NDSpace;Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun plus (Lspace/kscience/kmath/nd/NDSpace;Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun plus (Lspace/kscience/kmath/nd/NDSpace;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun unaryOperation (Lspace/kscience/kmath/nd/NDSpace;Ljava/lang/String;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun unaryOperationFunction (Lspace/kscience/kmath/nd/NDSpace;Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
|
||||||
public static fun unaryPlus (Lspace/kscience/kmath/nd/NDSpace;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract interface class space/kscience/kmath/nd/NDStructure {
|
public abstract interface class space/kscience/kmath/nd/NDStructure {
|
||||||
public static final field Companion Lspace/kscience/kmath/nd/NDStructure$Companion;
|
public static final field Companion Lspace/kscience/kmath/nd/NDStructure$Companion;
|
||||||
public abstract fun elements ()Lkotlin/sequences/Sequence;
|
public abstract fun elements ()Lkotlin/sequences/Sequence;
|
||||||
@ -1333,17 +1333,17 @@ public final class space/kscience/kmath/operations/AlgebraElementsKt {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/operations/AlgebraExtensionsKt {
|
public final class space/kscience/kmath/operations/AlgebraExtensionsKt {
|
||||||
public static final fun abs (Lspace/kscience/kmath/operations/Space;Ljava/lang/Comparable;)Ljava/lang/Comparable;
|
public static final fun abs (Lspace/kscience/kmath/operations/Group;Ljava/lang/Comparable;)Ljava/lang/Comparable;
|
||||||
public static final fun average (Lspace/kscience/kmath/operations/Space;Ljava/lang/Iterable;)Ljava/lang/Object;
|
public static final fun average (Lspace/kscience/kmath/operations/Group;Ljava/lang/Iterable;)Ljava/lang/Object;
|
||||||
public static final fun average (Lspace/kscience/kmath/operations/Space;Lkotlin/sequences/Sequence;)Ljava/lang/Object;
|
public static final fun average (Lspace/kscience/kmath/operations/Group;Lkotlin/sequences/Sequence;)Ljava/lang/Object;
|
||||||
public static final fun averageWith (Ljava/lang/Iterable;Lspace/kscience/kmath/operations/Space;)Ljava/lang/Object;
|
public static final fun averageWith (Ljava/lang/Iterable;Lspace/kscience/kmath/operations/Group;)Ljava/lang/Object;
|
||||||
public static final fun averageWith (Lkotlin/sequences/Sequence;Lspace/kscience/kmath/operations/Space;)Ljava/lang/Object;
|
public static final fun averageWith (Lkotlin/sequences/Sequence;Lspace/kscience/kmath/operations/Group;)Ljava/lang/Object;
|
||||||
public static final fun power (Lspace/kscience/kmath/operations/Field;Ljava/lang/Object;I)Ljava/lang/Object;
|
public static final fun power (Lspace/kscience/kmath/operations/Field;Ljava/lang/Object;I)Ljava/lang/Object;
|
||||||
public static final fun power (Lspace/kscience/kmath/operations/Ring;Ljava/lang/Object;I)Ljava/lang/Object;
|
public static final fun power (Lspace/kscience/kmath/operations/Ring;Ljava/lang/Object;I)Ljava/lang/Object;
|
||||||
public static final fun sum (Lspace/kscience/kmath/operations/Space;Ljava/lang/Iterable;)Ljava/lang/Object;
|
public static final fun sum (Lspace/kscience/kmath/operations/Group;Ljava/lang/Iterable;)Ljava/lang/Object;
|
||||||
public static final fun sum (Lspace/kscience/kmath/operations/Space;Lkotlin/sequences/Sequence;)Ljava/lang/Object;
|
public static final fun sum (Lspace/kscience/kmath/operations/Group;Lkotlin/sequences/Sequence;)Ljava/lang/Object;
|
||||||
public static final fun sumWith (Ljava/lang/Iterable;Lspace/kscience/kmath/operations/Space;)Ljava/lang/Object;
|
public static final fun sumWith (Ljava/lang/Iterable;Lspace/kscience/kmath/operations/Group;)Ljava/lang/Object;
|
||||||
public static final fun sumWith (Lkotlin/sequences/Sequence;Lspace/kscience/kmath/operations/Space;)Ljava/lang/Object;
|
public static final fun sumWith (Lkotlin/sequences/Sequence;Lspace/kscience/kmath/operations/Group;)Ljava/lang/Object;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/operations/AlgebraKt {
|
public final class space/kscience/kmath/operations/AlgebraKt {
|
||||||
@ -1735,6 +1735,50 @@ public final class space/kscience/kmath/operations/FloatField : space/kscience/k
|
|||||||
public synthetic fun unaryPlus (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun unaryPlus (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public abstract interface class space/kscience/kmath/operations/Group : space/kscience/kmath/operations/GroupOperations {
|
||||||
|
public abstract fun getZero ()Ljava/lang/Object;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class space/kscience/kmath/operations/Group$DefaultImpls {
|
||||||
|
public static fun binaryOperation (Lspace/kscience/kmath/operations/Group;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
|
public static fun binaryOperationFunction (Lspace/kscience/kmath/operations/Group;Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
|
public static fun bindSymbol (Lspace/kscience/kmath/operations/Group;Ljava/lang/String;)Ljava/lang/Object;
|
||||||
|
public static fun minus (Lspace/kscience/kmath/operations/Group;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
|
public static fun plus (Lspace/kscience/kmath/operations/Group;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
|
public static fun unaryOperation (Lspace/kscience/kmath/operations/Group;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
|
public static fun unaryOperationFunction (Lspace/kscience/kmath/operations/Group;Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
||||||
|
public static fun unaryPlus (Lspace/kscience/kmath/operations/Group;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract interface class space/kscience/kmath/operations/GroupOperations : space/kscience/kmath/operations/Algebra {
|
||||||
|
public static final field Companion Lspace/kscience/kmath/operations/GroupOperations$Companion;
|
||||||
|
public static final field MINUS_OPERATION Ljava/lang/String;
|
||||||
|
public static final field PLUS_OPERATION Ljava/lang/String;
|
||||||
|
public abstract fun add (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
|
public abstract fun binaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
|
public abstract fun minus (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
|
public abstract fun plus (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
|
public abstract fun unaryMinus (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
|
public abstract fun unaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
||||||
|
public abstract fun unaryPlus (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class space/kscience/kmath/operations/GroupOperations$Companion {
|
||||||
|
public static final field MINUS_OPERATION Ljava/lang/String;
|
||||||
|
public static final field PLUS_OPERATION Ljava/lang/String;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class space/kscience/kmath/operations/GroupOperations$DefaultImpls {
|
||||||
|
public static fun binaryOperation (Lspace/kscience/kmath/operations/GroupOperations;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
|
public static fun binaryOperationFunction (Lspace/kscience/kmath/operations/GroupOperations;Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
|
public static fun bindSymbol (Lspace/kscience/kmath/operations/GroupOperations;Ljava/lang/String;)Ljava/lang/Object;
|
||||||
|
public static fun minus (Lspace/kscience/kmath/operations/GroupOperations;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
|
public static fun plus (Lspace/kscience/kmath/operations/GroupOperations;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
|
public static fun unaryOperation (Lspace/kscience/kmath/operations/GroupOperations;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
|
public static fun unaryOperationFunction (Lspace/kscience/kmath/operations/GroupOperations;Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
||||||
|
public static fun unaryPlus (Lspace/kscience/kmath/operations/GroupOperations;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/operations/IntRing : space/kscience/kmath/operations/Norm, space/kscience/kmath/operations/NumericAlgebra, space/kscience/kmath/operations/Ring {
|
public final class space/kscience/kmath/operations/IntRing : space/kscience/kmath/operations/Norm, space/kscience/kmath/operations/NumericAlgebra, space/kscience/kmath/operations/Ring {
|
||||||
public static final field INSTANCE Lspace/kscience/kmath/operations/IntRing;
|
public static final field INSTANCE Lspace/kscience/kmath/operations/IntRing;
|
||||||
public fun add (II)Ljava/lang/Integer;
|
public fun add (II)Ljava/lang/Integer;
|
||||||
@ -2078,7 +2122,7 @@ public final class space/kscience/kmath/operations/RealField : space/kscience/km
|
|||||||
public synthetic fun unaryPlus (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun unaryPlus (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class space/kscience/kmath/operations/Ring : space/kscience/kmath/operations/RingOperations, space/kscience/kmath/operations/Space {
|
public abstract interface class space/kscience/kmath/operations/Ring : space/kscience/kmath/operations/Group, space/kscience/kmath/operations/RingOperations {
|
||||||
public abstract fun getOne ()Ljava/lang/Object;
|
public abstract fun getOne ()Ljava/lang/Object;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2094,7 +2138,7 @@ public final class space/kscience/kmath/operations/Ring$DefaultImpls {
|
|||||||
public static fun unaryPlus (Lspace/kscience/kmath/operations/Ring;Ljava/lang/Object;)Ljava/lang/Object;
|
public static fun unaryPlus (Lspace/kscience/kmath/operations/Ring;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class space/kscience/kmath/operations/RingOperations : space/kscience/kmath/operations/SpaceOperations {
|
public abstract interface class space/kscience/kmath/operations/RingOperations : space/kscience/kmath/operations/GroupOperations {
|
||||||
public static final field Companion Lspace/kscience/kmath/operations/RingOperations$Companion;
|
public static final field Companion Lspace/kscience/kmath/operations/RingOperations$Companion;
|
||||||
public static final field TIMES_OPERATION Ljava/lang/String;
|
public static final field TIMES_OPERATION Ljava/lang/String;
|
||||||
public abstract fun binaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
public abstract fun binaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
@ -2176,50 +2220,6 @@ public final class space/kscience/kmath/operations/ShortRing : space/kscience/km
|
|||||||
public fun unaryPlus (S)Ljava/lang/Short;
|
public fun unaryPlus (S)Ljava/lang/Short;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class space/kscience/kmath/operations/Space : space/kscience/kmath/operations/SpaceOperations {
|
|
||||||
public abstract fun getZero ()Ljava/lang/Object;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final class space/kscience/kmath/operations/Space$DefaultImpls {
|
|
||||||
public static fun binaryOperation (Lspace/kscience/kmath/operations/Space;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
|
||||||
public static fun binaryOperationFunction (Lspace/kscience/kmath/operations/Space;Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
|
||||||
public static fun bindSymbol (Lspace/kscience/kmath/operations/Space;Ljava/lang/String;)Ljava/lang/Object;
|
|
||||||
public static fun minus (Lspace/kscience/kmath/operations/Space;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
|
||||||
public static fun plus (Lspace/kscience/kmath/operations/Space;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
|
||||||
public static fun unaryOperation (Lspace/kscience/kmath/operations/Space;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
|
|
||||||
public static fun unaryOperationFunction (Lspace/kscience/kmath/operations/Space;Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
|
||||||
public static fun unaryPlus (Lspace/kscience/kmath/operations/Space;Ljava/lang/Object;)Ljava/lang/Object;
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract interface class space/kscience/kmath/operations/SpaceOperations : space/kscience/kmath/operations/Algebra {
|
|
||||||
public static final field Companion Lspace/kscience/kmath/operations/SpaceOperations$Companion;
|
|
||||||
public static final field MINUS_OPERATION Ljava/lang/String;
|
|
||||||
public static final field PLUS_OPERATION Ljava/lang/String;
|
|
||||||
public abstract fun add (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
|
||||||
public abstract fun binaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
|
||||||
public abstract fun minus (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
|
||||||
public abstract fun plus (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
|
||||||
public abstract fun unaryMinus (Ljava/lang/Object;)Ljava/lang/Object;
|
|
||||||
public abstract fun unaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
|
||||||
public abstract fun unaryPlus (Ljava/lang/Object;)Ljava/lang/Object;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final class space/kscience/kmath/operations/SpaceOperations$Companion {
|
|
||||||
public static final field MINUS_OPERATION Ljava/lang/String;
|
|
||||||
public static final field PLUS_OPERATION Ljava/lang/String;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final class space/kscience/kmath/operations/SpaceOperations$DefaultImpls {
|
|
||||||
public static fun binaryOperation (Lspace/kscience/kmath/operations/SpaceOperations;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
|
||||||
public static fun binaryOperationFunction (Lspace/kscience/kmath/operations/SpaceOperations;Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
|
||||||
public static fun bindSymbol (Lspace/kscience/kmath/operations/SpaceOperations;Ljava/lang/String;)Ljava/lang/Object;
|
|
||||||
public static fun minus (Lspace/kscience/kmath/operations/SpaceOperations;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
|
||||||
public static fun plus (Lspace/kscience/kmath/operations/SpaceOperations;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
|
||||||
public static fun unaryOperation (Lspace/kscience/kmath/operations/SpaceOperations;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
|
|
||||||
public static fun unaryOperationFunction (Lspace/kscience/kmath/operations/SpaceOperations;Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
|
||||||
public static fun unaryPlus (Lspace/kscience/kmath/operations/SpaceOperations;Ljava/lang/Object;)Ljava/lang/Object;
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract interface class space/kscience/kmath/operations/TrigonometricOperations : space/kscience/kmath/operations/Algebra {
|
public abstract interface class space/kscience/kmath/operations/TrigonometricOperations : space/kscience/kmath/operations/Algebra {
|
||||||
public static final field ACOS_OPERATION Ljava/lang/String;
|
public static final field ACOS_OPERATION Ljava/lang/String;
|
||||||
public static final field ASIN_OPERATION Ljava/lang/String;
|
public static final field ASIN_OPERATION Ljava/lang/String;
|
||||||
|
@ -41,21 +41,21 @@ public abstract class FunctionalExpressionAlgebra<T, A : Algebra<T>>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A context class for [Expression] construction for [Space] algebras.
|
* A context class for [Expression] construction for [Group] algebras.
|
||||||
*/
|
*/
|
||||||
public open class FunctionalExpressionSpace<T, A : Space<T>>(
|
public open class FunctionalExpressionGroup<T, A : Group<T>>(
|
||||||
algebra: A,
|
algebra: A,
|
||||||
) : FunctionalExpressionAlgebra<T, A>(algebra), Space<Expression<T>> {
|
) : FunctionalExpressionAlgebra<T, A>(algebra), Group<Expression<T>> {
|
||||||
public override val zero: Expression<T> get() = const(algebra.zero)
|
public override val zero: Expression<T> get() = const(algebra.zero)
|
||||||
|
|
||||||
override fun Expression<T>.unaryMinus(): Expression<T> =
|
override fun Expression<T>.unaryMinus(): Expression<T> =
|
||||||
unaryOperation(SpaceOperations.MINUS_OPERATION, this)
|
unaryOperation(GroupOperations.MINUS_OPERATION, this)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds an Expression of addition of two another expressions.
|
* Builds an Expression of addition of two another expressions.
|
||||||
*/
|
*/
|
||||||
public override fun add(a: Expression<T>, b: Expression<T>): Expression<T> =
|
public override fun add(a: Expression<T>, b: Expression<T>): Expression<T> =
|
||||||
binaryOperation(SpaceOperations.PLUS_OPERATION, a, b)
|
binaryOperation(GroupOperations.PLUS_OPERATION, a, b)
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * Builds an Expression of multiplication of expression by number.
|
// * Builds an Expression of multiplication of expression by number.
|
||||||
@ -79,7 +79,7 @@ public open class FunctionalExpressionSpace<T, A : Space<T>>(
|
|||||||
|
|
||||||
public open class FunctionalExpressionRing<T, A : Ring<T>>(
|
public open class FunctionalExpressionRing<T, A : Ring<T>>(
|
||||||
algebra: A,
|
algebra: A,
|
||||||
) : FunctionalExpressionSpace<T, A>(algebra), Ring<Expression<T>> {
|
) : FunctionalExpressionGroup<T, A>(algebra), Ring<Expression<T>> {
|
||||||
public override val one: Expression<T> get() = const(algebra.one)
|
public override val one: Expression<T> get() = const(algebra.one)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -92,10 +92,10 @@ public open class FunctionalExpressionRing<T, A : Ring<T>>(
|
|||||||
public operator fun T.times(arg: Expression<T>): Expression<T> = arg * this
|
public operator fun T.times(arg: Expression<T>): Expression<T> = arg * this
|
||||||
|
|
||||||
public override fun unaryOperationFunction(operation: String): (arg: Expression<T>) -> Expression<T> =
|
public override fun unaryOperationFunction(operation: String): (arg: Expression<T>) -> Expression<T> =
|
||||||
super<FunctionalExpressionSpace>.unaryOperationFunction(operation)
|
super<FunctionalExpressionGroup>.unaryOperationFunction(operation)
|
||||||
|
|
||||||
public override fun binaryOperationFunction(operation: String): (left: Expression<T>, right: Expression<T>) -> Expression<T> =
|
public override fun binaryOperationFunction(operation: String): (left: Expression<T>, right: Expression<T>) -> Expression<T> =
|
||||||
super<FunctionalExpressionSpace>.binaryOperationFunction(operation)
|
super<FunctionalExpressionGroup>.binaryOperationFunction(operation)
|
||||||
}
|
}
|
||||||
|
|
||||||
public open class FunctionalExpressionField<T, A: Field<T>>(
|
public open class FunctionalExpressionField<T, A: Field<T>>(
|
||||||
@ -159,8 +159,8 @@ public open class FunctionalExpressionExtendedField<T, A : ExtendedField<T>>(
|
|||||||
super<FunctionalExpressionField>.binaryOperationFunction(operation)
|
super<FunctionalExpressionField>.binaryOperationFunction(operation)
|
||||||
}
|
}
|
||||||
|
|
||||||
public inline fun <T, A : Space<T>> A.expressionInSpace(block: FunctionalExpressionSpace<T, A>.() -> Expression<T>): Expression<T> =
|
public inline fun <T, A : Group<T>> A.expressionInSpace(block: FunctionalExpressionGroup<T, A>.() -> Expression<T>): Expression<T> =
|
||||||
FunctionalExpressionSpace(this).block()
|
FunctionalExpressionGroup(this).block()
|
||||||
|
|
||||||
public inline fun <T, A : Ring<T>> A.expressionInRing(block: FunctionalExpressionRing<T, A>.() -> Expression<T>): Expression<T> =
|
public inline fun <T, A : Ring<T>> A.expressionInRing(block: FunctionalExpressionRing<T, A>.() -> Expression<T>): Expression<T> =
|
||||||
FunctionalExpressionRing(this).block()
|
FunctionalExpressionRing(this).block()
|
||||||
|
@ -2,18 +2,18 @@ package space.kscience.kmath.expressions
|
|||||||
|
|
||||||
import space.kscience.kmath.operations.ExtendedField
|
import space.kscience.kmath.operations.ExtendedField
|
||||||
import space.kscience.kmath.operations.Field
|
import space.kscience.kmath.operations.Field
|
||||||
|
import space.kscience.kmath.operations.Group
|
||||||
import space.kscience.kmath.operations.Ring
|
import space.kscience.kmath.operations.Ring
|
||||||
import space.kscience.kmath.operations.Space
|
|
||||||
import kotlin.contracts.InvocationKind
|
import kotlin.contracts.InvocationKind
|
||||||
import kotlin.contracts.contract
|
import kotlin.contracts.contract
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a functional expression with this [Space].
|
* Creates a functional expression with this [Group].
|
||||||
*/
|
*/
|
||||||
public inline fun <T> Space<T>.spaceExpression(block: FunctionalExpressionSpace<T, Space<T>>.() -> Expression<T>): Expression<T> {
|
public inline fun <T> Group<T>.spaceExpression(block: FunctionalExpressionGroup<T, Group<T>>.() -> Expression<T>): Expression<T> {
|
||||||
contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }
|
contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }
|
||||||
return FunctionalExpressionSpace(this).block()
|
return FunctionalExpressionGroup(this).block()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -13,7 +13,7 @@ import kotlin.reflect.KClass
|
|||||||
* @param T the type of items in the matrices.
|
* @param T the type of items in the matrices.
|
||||||
* @param M the type of operated matrices.
|
* @param M the type of operated matrices.
|
||||||
*/
|
*/
|
||||||
public interface MatrixContext<T : Any, out M : Matrix<T>> : SpaceOperations<Matrix<T>> {
|
public interface MatrixContext<T : Any, out M : Matrix<T>> : GroupOperations<Matrix<T>> {
|
||||||
/**
|
/**
|
||||||
* Produces a matrix with this context and given dimensions.
|
* Produces a matrix with this context and given dimensions.
|
||||||
*/
|
*/
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package space.kscience.kmath.linear
|
package space.kscience.kmath.linear
|
||||||
|
|
||||||
|
import space.kscience.kmath.operations.Group
|
||||||
import space.kscience.kmath.operations.RealField
|
import space.kscience.kmath.operations.RealField
|
||||||
import space.kscience.kmath.operations.Ring
|
import space.kscience.kmath.operations.Ring
|
||||||
import space.kscience.kmath.operations.Space
|
|
||||||
import space.kscience.kmath.operations.invoke
|
import space.kscience.kmath.operations.invoke
|
||||||
import space.kscience.kmath.structures.Buffer
|
import space.kscience.kmath.structures.Buffer
|
||||||
import space.kscience.kmath.structures.BufferFactory
|
import space.kscience.kmath.structures.BufferFactory
|
||||||
@ -11,7 +11,7 @@ import space.kscience.kmath.structures.BufferFactory
|
|||||||
* A linear space for vectors.
|
* A linear space for vectors.
|
||||||
* Could be used on any point-like structure
|
* Could be used on any point-like structure
|
||||||
*/
|
*/
|
||||||
public interface VectorSpace<T : Any, A : Ring<T>> : Space<Point<T>> {
|
public interface VectorSpace<T : Any, A : Ring<T>> : Group<Point<T>> {
|
||||||
public val size: Int
|
public val size: Int
|
||||||
public val algebra: A
|
public val algebra: A
|
||||||
override val zero: Point<T> get() = produce { algebra.zero }
|
override val zero: Point<T> get() = produce { algebra.zero }
|
||||||
@ -27,13 +27,13 @@ public interface VectorSpace<T : Any, A : Ring<T>> : Space<Point<T>> {
|
|||||||
//TODO add basis
|
//TODO add basis
|
||||||
|
|
||||||
public companion object {
|
public companion object {
|
||||||
private val realSpaceCache: MutableMap<Int, BufferVectorSpace<Double, RealField>> = hashMapOf()
|
private val realSpaceCache: MutableMap<Int, BufferVectorGroup<Double, RealField>> = hashMapOf()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Non-boxing double vector space
|
* Non-boxing double vector space
|
||||||
*/
|
*/
|
||||||
public fun real(size: Int): BufferVectorSpace<Double, RealField> = realSpaceCache.getOrPut(size) {
|
public fun real(size: Int): BufferVectorGroup<Double, RealField> = realSpaceCache.getOrPut(size) {
|
||||||
BufferVectorSpace(
|
BufferVectorGroup(
|
||||||
size,
|
size,
|
||||||
RealField,
|
RealField,
|
||||||
Buffer.Companion::auto
|
Buffer.Companion::auto
|
||||||
@ -47,7 +47,7 @@ public interface VectorSpace<T : Any, A : Ring<T>> : Space<Point<T>> {
|
|||||||
size: Int,
|
size: Int,
|
||||||
space: A,
|
space: A,
|
||||||
bufferFactory: BufferFactory<T> = Buffer.Companion::boxing,
|
bufferFactory: BufferFactory<T> = Buffer.Companion::boxing,
|
||||||
): BufferVectorSpace<T, A> = BufferVectorSpace(size, space, bufferFactory)
|
): BufferVectorGroup<T, A> = BufferVectorGroup(size, space, bufferFactory)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Automatic buffered vector, unboxed if it is possible
|
* Automatic buffered vector, unboxed if it is possible
|
||||||
@ -58,7 +58,7 @@ public interface VectorSpace<T : Any, A : Ring<T>> : Space<Point<T>> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public class BufferVectorSpace<T : Any, A : Ring<T>>(
|
public class BufferVectorGroup<T : Any, A : Ring<T>>(
|
||||||
override val size: Int,
|
override val size: Int,
|
||||||
override val algebra: A,
|
override val algebra: A,
|
||||||
public val bufferFactory: BufferFactory<T>,
|
public val bufferFactory: BufferFactory<T>,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package space.kscience.kmath.misc
|
package space.kscience.kmath.misc
|
||||||
|
|
||||||
import space.kscience.kmath.operations.Space
|
import space.kscience.kmath.operations.Group
|
||||||
import space.kscience.kmath.operations.invoke
|
import space.kscience.kmath.operations.invoke
|
||||||
import kotlin.jvm.JvmName
|
import kotlin.jvm.JvmName
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ public fun <T, R> List<T>.cumulative(initial: R, operation: (R, T) -> R): List<R
|
|||||||
/**
|
/**
|
||||||
* Cumulative sum with custom space
|
* Cumulative sum with custom space
|
||||||
*/
|
*/
|
||||||
public fun <T> Iterable<T>.cumulativeSum(space: Space<T>): Iterable<T> =
|
public fun <T> Iterable<T>.cumulativeSum(space: Group<T>): Iterable<T> =
|
||||||
space { cumulative(zero) { element: T, sum: T -> sum + element } }
|
space { cumulative(zero) { element: T, sum: T -> sum + element } }
|
||||||
|
|
||||||
@JvmName("cumulativeSumOfDouble")
|
@JvmName("cumulativeSumOfDouble")
|
||||||
@ -49,7 +49,7 @@ public fun Iterable<Int>.cumulativeSum(): Iterable<Int> = cumulative(0) { elemen
|
|||||||
@JvmName("cumulativeSumOfLong")
|
@JvmName("cumulativeSumOfLong")
|
||||||
public fun Iterable<Long>.cumulativeSum(): Iterable<Long> = cumulative(0L) { element, sum -> sum + element }
|
public fun Iterable<Long>.cumulativeSum(): Iterable<Long> = cumulative(0L) { element, sum -> sum + element }
|
||||||
|
|
||||||
public fun <T> Sequence<T>.cumulativeSum(space: Space<T>): Sequence<T> =
|
public fun <T> Sequence<T>.cumulativeSum(space: Group<T>): Sequence<T> =
|
||||||
space { cumulative(zero) { element: T, sum: T -> sum + element } }
|
space { cumulative(zero) { element: T, sum: T -> sum + element } }
|
||||||
|
|
||||||
@JvmName("cumulativeSumOfDouble")
|
@JvmName("cumulativeSumOfDouble")
|
||||||
@ -61,7 +61,7 @@ public fun Sequence<Int>.cumulativeSum(): Sequence<Int> = cumulative(0) { elemen
|
|||||||
@JvmName("cumulativeSumOfLong")
|
@JvmName("cumulativeSumOfLong")
|
||||||
public fun Sequence<Long>.cumulativeSum(): Sequence<Long> = cumulative(0L) { element, sum -> sum + element }
|
public fun Sequence<Long>.cumulativeSum(): Sequence<Long> = cumulative(0L) { element, sum -> sum + element }
|
||||||
|
|
||||||
public fun <T> List<T>.cumulativeSum(space: Space<T>): List<T> =
|
public fun <T> List<T>.cumulativeSum(space: Group<T>): List<T> =
|
||||||
space { cumulative(zero) { element: T, sum: T -> sum + element } }
|
space { cumulative(zero) { element: T, sum: T -> sum + element } }
|
||||||
|
|
||||||
@JvmName("cumulativeSumOfDouble")
|
@JvmName("cumulativeSumOfDouble")
|
||||||
|
@ -52,11 +52,11 @@ public interface BufferNDAlgebra<T, A : Algebra<T>> : NDAlgebra<T, A> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public open class BufferedNDSpace<T, A : Space<T>>(
|
public open class BufferedNDGroup<T, A : Group<T>>(
|
||||||
final override val shape: IntArray,
|
final override val shape: IntArray,
|
||||||
final override val elementContext: A,
|
final override val elementContext: A,
|
||||||
final override val bufferFactory: BufferFactory<T>,
|
final override val bufferFactory: BufferFactory<T>,
|
||||||
) : NDSpace<T, A>, BufferNDAlgebra<T, A> {
|
) : NDGroup<T, A>, BufferNDAlgebra<T, A> {
|
||||||
override val strides: Strides = DefaultStrides(shape)
|
override val strides: Strides = DefaultStrides(shape)
|
||||||
override val zero: NDBuffer<T> by lazy { produce { zero } }
|
override val zero: NDBuffer<T> by lazy { produce { zero } }
|
||||||
override fun NDStructure<T>.unaryMinus(): NDStructure<T> = produce { -get(it) }
|
override fun NDStructure<T>.unaryMinus(): NDStructure<T> = produce { -get(it) }
|
||||||
@ -66,7 +66,7 @@ public open class BufferedNDRing<T, R : Ring<T>>(
|
|||||||
shape: IntArray,
|
shape: IntArray,
|
||||||
elementContext: R,
|
elementContext: R,
|
||||||
bufferFactory: BufferFactory<T>,
|
bufferFactory: BufferFactory<T>,
|
||||||
) : BufferedNDSpace<T, R>(shape, elementContext, bufferFactory), NDRing<T, R> {
|
) : BufferedNDGroup<T, R>(shape, elementContext, bufferFactory), NDRing<T, R> {
|
||||||
override val one: NDBuffer<T> by lazy { produce { one } }
|
override val one: NDBuffer<T> by lazy { produce { one } }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,16 +80,16 @@ public open class BufferedNDField<T, R : Field<T>>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// space factories
|
// space factories
|
||||||
public fun <T, A : Space<T>> NDAlgebra.Companion.space(
|
public fun <T, A : Group<T>> NDAlgebra.Companion.space(
|
||||||
space: A,
|
space: A,
|
||||||
bufferFactory: BufferFactory<T>,
|
bufferFactory: BufferFactory<T>,
|
||||||
vararg shape: Int,
|
vararg shape: Int,
|
||||||
): BufferedNDSpace<T, A> = BufferedNDSpace(shape, space, bufferFactory)
|
): BufferedNDGroup<T, A> = BufferedNDGroup(shape, space, bufferFactory)
|
||||||
|
|
||||||
public inline fun <T, A : Space<T>, R> A.ndSpace(
|
public inline fun <T, A : Group<T>, R> A.ndSpace(
|
||||||
noinline bufferFactory: BufferFactory<T>,
|
noinline bufferFactory: BufferFactory<T>,
|
||||||
vararg shape: Int,
|
vararg shape: Int,
|
||||||
action: BufferedNDSpace<T, A>.() -> R,
|
action: BufferedNDGroup<T, A>.() -> R,
|
||||||
): R {
|
): R {
|
||||||
contract { callsInPlace(action, InvocationKind.EXACTLY_ONCE) }
|
contract { callsInPlace(action, InvocationKind.EXACTLY_ONCE) }
|
||||||
return NDAlgebra.space(this, bufferFactory, *shape).run(action)
|
return NDAlgebra.space(this, bufferFactory, *shape).run(action)
|
||||||
|
@ -54,7 +54,7 @@ public interface NDAlgebra<T, C: Algebra<T>> {
|
|||||||
* Element-wise invocation of function working on [T] on a [NDStructure].
|
* Element-wise invocation of function working on [T] on a [NDStructure].
|
||||||
*/
|
*/
|
||||||
public operator fun Function1<T, T>.invoke(structure: NDStructure<T>): NDStructure<T> =
|
public operator fun Function1<T, T>.invoke(structure: NDStructure<T>): NDStructure<T> =
|
||||||
structure.map() { value -> this@invoke(value) }
|
structure.map { value -> this@invoke(value) }
|
||||||
|
|
||||||
public companion object
|
public companion object
|
||||||
}
|
}
|
||||||
@ -89,7 +89,7 @@ internal fun <T, C: Algebra<T>> NDAlgebra<T, C>.checkShape(element: NDStructure<
|
|||||||
* @param N the type of ND structure.
|
* @param N the type of ND structure.
|
||||||
* @param S the type of space of structure elements.
|
* @param S the type of space of structure elements.
|
||||||
*/
|
*/
|
||||||
public interface NDSpace<T, S : Space<T>> : Space<NDStructure<T>>, NDAlgebra<T, S> {
|
public interface NDGroup<T, S : Group<T>> : Group<NDStructure<T>>, NDAlgebra<T, S> {
|
||||||
/**
|
/**
|
||||||
* Element-wise addition.
|
* Element-wise addition.
|
||||||
*
|
*
|
||||||
@ -127,7 +127,7 @@ public interface NDSpace<T, S : Space<T>> : Space<NDStructure<T>>, NDAlgebra<T,
|
|||||||
* @param arg the divisor.
|
* @param arg the divisor.
|
||||||
* @return the quotient.
|
* @return the quotient.
|
||||||
*/
|
*/
|
||||||
public operator fun NDStructure<T>.minus(arg: T): NDStructure<T> = this.map() { value -> add(arg, -value) }
|
public operator fun NDStructure<T>.minus(arg: T): NDStructure<T> = this.map { value -> add(arg, -value) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds an element to ND structure of it.
|
* Adds an element to ND structure of it.
|
||||||
@ -136,7 +136,7 @@ public interface NDSpace<T, S : Space<T>> : Space<NDStructure<T>>, NDAlgebra<T,
|
|||||||
* @param arg the augend.
|
* @param arg the augend.
|
||||||
* @return the sum.
|
* @return the sum.
|
||||||
*/
|
*/
|
||||||
public operator fun T.plus(arg: NDStructure<T>): NDStructure<T> = arg.map() { value -> add(this@plus, value) }
|
public operator fun T.plus(arg: NDStructure<T>): NDStructure<T> = arg.map { value -> add(this@plus, value) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Subtracts an ND structure from an element of it.
|
* Subtracts an ND structure from an element of it.
|
||||||
@ -145,7 +145,7 @@ public interface NDSpace<T, S : Space<T>> : Space<NDStructure<T>>, NDAlgebra<T,
|
|||||||
* @param arg the divisor.
|
* @param arg the divisor.
|
||||||
* @return the quotient.
|
* @return the quotient.
|
||||||
*/
|
*/
|
||||||
public operator fun T.minus(arg: NDStructure<T>): NDStructure<T> = arg.map() { value -> add(-this@minus, value) }
|
public operator fun T.minus(arg: NDStructure<T>): NDStructure<T> = arg.map { value -> add(-this@minus, value) }
|
||||||
|
|
||||||
public companion object
|
public companion object
|
||||||
}
|
}
|
||||||
@ -157,7 +157,7 @@ public interface NDSpace<T, S : Space<T>> : Space<NDStructure<T>>, NDAlgebra<T,
|
|||||||
* @param N the type of ND structure.
|
* @param N the type of ND structure.
|
||||||
* @param R the type of ring of structure elements.
|
* @param R the type of ring of structure elements.
|
||||||
*/
|
*/
|
||||||
public interface NDRing<T, R : Ring<T>> : Ring<NDStructure<T>>, NDSpace<T, R> {
|
public interface NDRing<T, R : Ring<T>> : Ring<NDStructure<T>>, NDGroup<T, R> {
|
||||||
/**
|
/**
|
||||||
* Element-wise multiplication.
|
* Element-wise multiplication.
|
||||||
*
|
*
|
||||||
@ -177,7 +177,7 @@ public interface NDRing<T, R : Ring<T>> : Ring<NDStructure<T>>, NDSpace<T, R> {
|
|||||||
* @param arg the multiplier.
|
* @param arg the multiplier.
|
||||||
* @return the product.
|
* @return the product.
|
||||||
*/
|
*/
|
||||||
public operator fun NDStructure<T>.times(arg: T): NDStructure<T> = this.map() { value -> multiply(arg, value) }
|
public operator fun NDStructure<T>.times(arg: T): NDStructure<T> = this.map { value -> multiply(arg, value) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Multiplies an element by a ND structure of it.
|
* Multiplies an element by a ND structure of it.
|
||||||
@ -186,7 +186,7 @@ public interface NDRing<T, R : Ring<T>> : Ring<NDStructure<T>>, NDSpace<T, R> {
|
|||||||
* @param arg the multiplier.
|
* @param arg the multiplier.
|
||||||
* @return the product.
|
* @return the product.
|
||||||
*/
|
*/
|
||||||
public operator fun T.times(arg: NDStructure<T>): NDStructure<T> = arg.map() { value -> multiply(this@times, value) }
|
public operator fun T.times(arg: NDStructure<T>): NDStructure<T> = arg.map { value -> multiply(this@times, value) }
|
||||||
|
|
||||||
public companion object
|
public companion object
|
||||||
}
|
}
|
||||||
@ -217,7 +217,7 @@ public interface NDField<T, F : Field<T>> : Field<NDStructure<T>>, NDRing<T, F>,
|
|||||||
* @param arg the divisor.
|
* @param arg the divisor.
|
||||||
* @return the quotient.
|
* @return the quotient.
|
||||||
*/
|
*/
|
||||||
public operator fun NDStructure<T>.div(arg: T): NDStructure<T> = this.map() { value -> divide(arg, value) }
|
public operator fun NDStructure<T>.div(arg: T): NDStructure<T> = this.map { value -> divide(arg, value) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Divides an element by an ND structure of it.
|
* Divides an element by an ND structure of it.
|
||||||
@ -226,7 +226,7 @@ public interface NDField<T, F : Field<T>> : Field<NDStructure<T>>, NDRing<T, F>,
|
|||||||
* @param arg the divisor.
|
* @param arg the divisor.
|
||||||
* @return the quotient.
|
* @return the quotient.
|
||||||
*/
|
*/
|
||||||
public operator fun T.div(arg: NDStructure<T>): NDStructure<T> = arg.map() { divide(it, this@div) }
|
public operator fun T.div(arg: NDStructure<T>): NDStructure<T> = arg.map { divide(it, this@div) }
|
||||||
|
|
||||||
// @ThreadLocal
|
// @ThreadLocal
|
||||||
// public companion object {
|
// public companion object {
|
||||||
|
@ -105,7 +105,7 @@ public inline operator fun <A : Algebra<*>, R> A.invoke(block: A.() -> R): R = r
|
|||||||
*
|
*
|
||||||
* @param T the type of element of this semispace.
|
* @param T the type of element of this semispace.
|
||||||
*/
|
*/
|
||||||
public interface SpaceOperations<T> : Algebra<T> {
|
public interface GroupOperations<T> : Algebra<T> {
|
||||||
/**
|
/**
|
||||||
* Addition of two elements.
|
* Addition of two elements.
|
||||||
*
|
*
|
||||||
@ -177,12 +177,11 @@ public interface SpaceOperations<T> : Algebra<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents linear space with neutral element, i.e. algebraic structure with associative, binary operation [add] and
|
* Represents linear space with neutral element, i.e. algebraic structure with associative, binary operation [add].
|
||||||
* scalar multiplication [multiply].
|
|
||||||
*
|
*
|
||||||
* @param T the type of element of this semispace.
|
* @param T the type of element of this semispace.
|
||||||
*/
|
*/
|
||||||
public interface Space<T> : SpaceOperations<T> {
|
public interface Group<T> : GroupOperations<T> {
|
||||||
/**
|
/**
|
||||||
* The neutral element of addition.
|
* The neutral element of addition.
|
||||||
*/
|
*/
|
||||||
@ -195,7 +194,7 @@ public interface Space<T> : SpaceOperations<T> {
|
|||||||
*
|
*
|
||||||
* @param T the type of element of this semiring.
|
* @param T the type of element of this semiring.
|
||||||
*/
|
*/
|
||||||
public interface RingOperations<T> : SpaceOperations<T> {
|
public interface RingOperations<T> : GroupOperations<T> {
|
||||||
/**
|
/**
|
||||||
* Multiplies two elements.
|
* Multiplies two elements.
|
||||||
*
|
*
|
||||||
@ -231,7 +230,7 @@ public interface RingOperations<T> : SpaceOperations<T> {
|
|||||||
*
|
*
|
||||||
* @param T the type of element of this ring.
|
* @param T the type of element of this ring.
|
||||||
*/
|
*/
|
||||||
public interface Ring<T> : Space<T>, RingOperations<T> {
|
public interface Ring<T> : Group<T>, RingOperations<T> {
|
||||||
/**
|
/**
|
||||||
* neutral operation for multiplication
|
* neutral operation for multiplication
|
||||||
*/
|
*/
|
||||||
|
@ -49,7 +49,7 @@ public operator fun <T : AlgebraElement<T, S>, S : NumbersAddOperations<T>> T.mi
|
|||||||
* @param b the augend.
|
* @param b the augend.
|
||||||
* @return the sum.
|
* @return the sum.
|
||||||
*/
|
*/
|
||||||
public operator fun <T : AlgebraElement<T, S>, S : Space<T>> T.plus(b: T): T =
|
public operator fun <T : AlgebraElement<T, S>, S : Group<T>> T.plus(b: T): T =
|
||||||
context.add(this, b)
|
context.add(this, b)
|
||||||
|
|
||||||
///**
|
///**
|
||||||
@ -80,14 +80,14 @@ public operator fun <T : AlgebraElement<T, F>, F : Field<T>> T.div(b: T): T =
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The element of [Space].
|
* The element of [Group].
|
||||||
*
|
*
|
||||||
* @param T the type of space operation results.
|
* @param T the type of space operation results.
|
||||||
* @param I self type of the element. Needed for static type checking.
|
* @param I self type of the element. Needed for static type checking.
|
||||||
* @param S the type of space.
|
* @param S the type of space.
|
||||||
*/
|
*/
|
||||||
@UnstableKMathAPI
|
@UnstableKMathAPI
|
||||||
public interface SpaceElement<T : SpaceElement<T, S>, S : Space<T>> : AlgebraElement<T, S>
|
public interface SpaceElement<T : SpaceElement<T, S>, S : Group<T>> : AlgebraElement<T, S>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The element of [Ring].
|
* The element of [Ring].
|
||||||
|
@ -127,7 +127,7 @@ public interface ScaleOperations<T> : Algebra<T> {
|
|||||||
* TODO to be removed and replaced by extensions after multiple receivers are there
|
* TODO to be removed and replaced by extensions after multiple receivers are there
|
||||||
*/
|
*/
|
||||||
@UnstableKMathAPI
|
@UnstableKMathAPI
|
||||||
public interface NumbersAddOperations<T> : Space<T>, NumericAlgebra<T> {
|
public interface NumbersAddOperations<T> : Group<T>, NumericAlgebra<T> {
|
||||||
/**
|
/**
|
||||||
* Addition of element and scalar.
|
* Addition of element and scalar.
|
||||||
*
|
*
|
||||||
|
@ -1,49 +1,49 @@
|
|||||||
package space.kscience.kmath.operations
|
package space.kscience.kmath.operations
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the sum of all elements in the iterable in this [Space].
|
* Returns the sum of all elements in the iterable in this [Group].
|
||||||
*
|
*
|
||||||
* @receiver the algebra that provides addition.
|
* @receiver the algebra that provides addition.
|
||||||
* @param data the iterable to sum up.
|
* @param data the iterable to sum up.
|
||||||
* @return the sum.
|
* @return the sum.
|
||||||
*/
|
*/
|
||||||
public fun <T> Space<T>.sum(data: Iterable<T>): T = data.fold(zero) { left, right -> add(left, right) }
|
public fun <T> Group<T>.sum(data: Iterable<T>): T = data.fold(zero) { left, right -> add(left, right) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the sum of all elements in the sequence in this [Space].
|
* Returns the sum of all elements in the sequence in this [Group].
|
||||||
*
|
*
|
||||||
* @receiver the algebra that provides addition.
|
* @receiver the algebra that provides addition.
|
||||||
* @param data the sequence to sum up.
|
* @param data the sequence to sum up.
|
||||||
* @return the sum.
|
* @return the sum.
|
||||||
*/
|
*/
|
||||||
public fun <T> Space<T>.sum(data: Sequence<T>): T = data.fold(zero) { left, right -> add(left, right) }
|
public fun <T> Group<T>.sum(data: Sequence<T>): T = data.fold(zero) { left, right -> add(left, right) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an average value of elements in the iterable in this [Space].
|
* Returns an average value of elements in the iterable in this [Group].
|
||||||
*
|
*
|
||||||
* @receiver the algebra that provides addition and division.
|
* @receiver the algebra that provides addition and division.
|
||||||
* @param data the iterable to find average.
|
* @param data the iterable to find average.
|
||||||
* @return the average value.
|
* @return the average value.
|
||||||
* @author Iaroslav Postovalov
|
* @author Iaroslav Postovalov
|
||||||
*/
|
*/
|
||||||
public fun <T, S> S.average(data: Iterable<T>): T where S : Space<T>, S : ScaleOperations<T> =
|
public fun <T, S> S.average(data: Iterable<T>): T where S : Group<T>, S : ScaleOperations<T> =
|
||||||
sum(data) / data.count()
|
sum(data) / data.count()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an average value of elements in the sequence in this [Space].
|
* Returns an average value of elements in the sequence in this [Group].
|
||||||
*
|
*
|
||||||
* @receiver the algebra that provides addition and division.
|
* @receiver the algebra that provides addition and division.
|
||||||
* @param data the sequence to find average.
|
* @param data the sequence to find average.
|
||||||
* @return the average value.
|
* @return the average value.
|
||||||
* @author Iaroslav Postovalov
|
* @author Iaroslav Postovalov
|
||||||
*/
|
*/
|
||||||
public fun <T, S> S.average(data: Sequence<T>): T where S : Space<T>, S : ScaleOperations<T> =
|
public fun <T, S> S.average(data: Sequence<T>): T where S : Group<T>, S : ScaleOperations<T> =
|
||||||
sum(data) / data.count()
|
sum(data) / data.count()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Absolute of the comparable [value]
|
* Absolute of the comparable [value]
|
||||||
*/
|
*/
|
||||||
public fun <T : Comparable<T>> Space<T>.abs(value: T): T = if (value > zero) value else -value
|
public fun <T : Comparable<T>> Group<T>.abs(value: T): T = if (value > zero) value else -value
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the sum of all elements in the iterable in provided space.
|
* Returns the sum of all elements in the iterable in provided space.
|
||||||
@ -52,7 +52,7 @@ public fun <T : Comparable<T>> Space<T>.abs(value: T): T = if (value > zero) val
|
|||||||
* @param space the algebra that provides addition.
|
* @param space the algebra that provides addition.
|
||||||
* @return the sum.
|
* @return the sum.
|
||||||
*/
|
*/
|
||||||
public fun <T> Iterable<T>.sumWith(space: Space<T>): T = space.sum(this)
|
public fun <T> Iterable<T>.sumWith(space: Group<T>): T = space.sum(this)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the sum of all elements in the sequence in provided space.
|
* Returns the sum of all elements in the sequence in provided space.
|
||||||
@ -61,28 +61,28 @@ public fun <T> Iterable<T>.sumWith(space: Space<T>): T = space.sum(this)
|
|||||||
* @param space the algebra that provides addition.
|
* @param space the algebra that provides addition.
|
||||||
* @return the sum.
|
* @return the sum.
|
||||||
*/
|
*/
|
||||||
public fun <T> Sequence<T>.sumWith(space: Space<T>): T = space.sum(this)
|
public fun <T> Sequence<T>.sumWith(space: Group<T>): T = space.sum(this)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an average value of elements in the iterable in this [Space].
|
* Returns an average value of elements in the iterable in this [Group].
|
||||||
*
|
*
|
||||||
* @receiver the iterable to find average.
|
* @receiver the iterable to find average.
|
||||||
* @param space the algebra that provides addition and division.
|
* @param space the algebra that provides addition and division.
|
||||||
* @return the average value.
|
* @return the average value.
|
||||||
* @author Iaroslav Postovalov
|
* @author Iaroslav Postovalov
|
||||||
*/
|
*/
|
||||||
public fun <T, S> Iterable<T>.averageWith(space: S): T where S : Space<T>, S : ScaleOperations<T> =
|
public fun <T, S> Iterable<T>.averageWith(space: S): T where S : Group<T>, S : ScaleOperations<T> =
|
||||||
space.average(this)
|
space.average(this)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an average value of elements in the sequence in this [Space].
|
* Returns an average value of elements in the sequence in this [Group].
|
||||||
*
|
*
|
||||||
* @receiver the sequence to find average.
|
* @receiver the sequence to find average.
|
||||||
* @param space the algebra that provides addition and division.
|
* @param space the algebra that provides addition and division.
|
||||||
* @return the average value.
|
* @return the average value.
|
||||||
* @author Iaroslav Postovalov
|
* @author Iaroslav Postovalov
|
||||||
*/
|
*/
|
||||||
public fun <T, S> Sequence<T>.averageWith(space: S): T where S : Space<T>, S : ScaleOperations<T> =
|
public fun <T, S> Sequence<T>.averageWith(space: S): T where S : Group<T>, S : ScaleOperations<T> =
|
||||||
space.average(this)
|
space.average(this)
|
||||||
|
|
||||||
//TODO optimized power operation
|
//TODO optimized power operation
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package space.kscience.kmath.testutils
|
package space.kscience.kmath.testutils
|
||||||
|
|
||||||
|
import space.kscience.kmath.operations.Group
|
||||||
import space.kscience.kmath.operations.ScaleOperations
|
import space.kscience.kmath.operations.ScaleOperations
|
||||||
import space.kscience.kmath.operations.Space
|
|
||||||
import space.kscience.kmath.operations.invoke
|
import space.kscience.kmath.operations.invoke
|
||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
import kotlin.test.assertNotEquals
|
import kotlin.test.assertNotEquals
|
||||||
@ -12,7 +12,7 @@ internal open class SpaceVerifier<T, out S>(
|
|||||||
val b: T,
|
val b: T,
|
||||||
val c: T,
|
val c: T,
|
||||||
val x: Number,
|
val x: Number,
|
||||||
) : AlgebraicVerifier<T, Space<T>> where S : Space<T>, S : ScaleOperations<T> {
|
) : AlgebraicVerifier<T, Group<T>> where S : Group<T>, S : ScaleOperations<T> {
|
||||||
override fun verify() {
|
override fun verify() {
|
||||||
algebra {
|
algebra {
|
||||||
assertEquals(a + b + c, a + (b + c), "Addition in $algebra is not associative.")
|
assertEquals(a + b + c, a + (b + c), "Addition in $algebra is not associative.")
|
||||||
|
@ -5,16 +5,16 @@ import kotlinx.coroutines.flow.Flow
|
|||||||
import kotlinx.coroutines.flow.map
|
import kotlinx.coroutines.flow.map
|
||||||
import kotlinx.coroutines.flow.runningReduce
|
import kotlinx.coroutines.flow.runningReduce
|
||||||
import kotlinx.coroutines.flow.scan
|
import kotlinx.coroutines.flow.scan
|
||||||
|
import space.kscience.kmath.operations.Group
|
||||||
|
import space.kscience.kmath.operations.GroupOperations
|
||||||
import space.kscience.kmath.operations.ScaleOperations
|
import space.kscience.kmath.operations.ScaleOperations
|
||||||
import space.kscience.kmath.operations.Space
|
|
||||||
import space.kscience.kmath.operations.SpaceOperations
|
|
||||||
import space.kscience.kmath.operations.invoke
|
import space.kscience.kmath.operations.invoke
|
||||||
|
|
||||||
public fun <T> Flow<T>.cumulativeSum(space: SpaceOperations<T>): Flow<T> =
|
public fun <T> Flow<T>.cumulativeSum(group: GroupOperations<T>): Flow<T> =
|
||||||
space { runningReduce { sum, element -> sum + element } }
|
group { runningReduce { sum, element -> sum + element } }
|
||||||
|
|
||||||
@ExperimentalCoroutinesApi
|
@ExperimentalCoroutinesApi
|
||||||
public fun <T, S> Flow<T>.mean(algebra: S): Flow<T> where S : Space<T>, S : ScaleOperations<T> = algebra {
|
public fun <T, S> Flow<T>.mean(algebra: S): Flow<T> where S : Group<T>, S : ScaleOperations<T> = algebra {
|
||||||
data class Accumulator(var sum: T, var num: Int)
|
data class Accumulator(var sum: T, var num: Int)
|
||||||
|
|
||||||
scan(Accumulator(zero, 0)) { sum, element ->
|
scan(Accumulator(zero, 0)) { sum, element ->
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package space.kscience.kmath.functions
|
package space.kscience.kmath.functions
|
||||||
|
|
||||||
|
import space.kscience.kmath.operations.Group
|
||||||
import space.kscience.kmath.operations.Ring
|
import space.kscience.kmath.operations.Ring
|
||||||
import space.kscience.kmath.operations.ScaleOperations
|
import space.kscience.kmath.operations.ScaleOperations
|
||||||
import space.kscience.kmath.operations.Space
|
|
||||||
import space.kscience.kmath.operations.invoke
|
import space.kscience.kmath.operations.invoke
|
||||||
import kotlin.contracts.InvocationKind
|
import kotlin.contracts.InvocationKind
|
||||||
import kotlin.contracts.contract
|
import kotlin.contracts.contract
|
||||||
@ -44,7 +44,7 @@ public fun <T : Any, C : Ring<T>> Polynomial<T>.asFunction(ring: C): (T) -> T =
|
|||||||
*/
|
*/
|
||||||
public class PolynomialSpace<T : Any, C>(
|
public class PolynomialSpace<T : Any, C>(
|
||||||
private val ring: C,
|
private val ring: C,
|
||||||
) : Space<Polynomial<T>>, ScaleOperations<Polynomial<T>> where C : Ring<T>, C : ScaleOperations<T> {
|
) : Group<Polynomial<T>>, ScaleOperations<Polynomial<T>> where C : Ring<T>, C : ScaleOperations<T> {
|
||||||
public override val zero: Polynomial<T> = Polynomial(emptyList())
|
public override val zero: Polynomial<T> = Polynomial(emptyList())
|
||||||
|
|
||||||
override fun Polynomial<T>.unaryMinus(): Polynomial<T> = with(ring) {
|
override fun Polynomial<T>.unaryMinus(): Polynomial<T> = with(ring) {
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
package space.kscience.kmath.geometry
|
package space.kscience.kmath.geometry
|
||||||
|
|
||||||
import space.kscience.kmath.operations.Space
|
import space.kscience.kmath.operations.Group
|
||||||
|
|
||||||
public interface Vector
|
public interface Vector
|
||||||
|
|
||||||
public interface GeometrySpace<V : Vector> : Space<V> {
|
public interface GeometrySpace<V : Vector> : Group<V> {
|
||||||
/**
|
/**
|
||||||
* L2 distance
|
* L2 distance
|
||||||
*/
|
*/
|
||||||
|
@ -2,8 +2,8 @@ package space.kscience.kmath.histogram
|
|||||||
|
|
||||||
import kotlinx.atomicfu.atomic
|
import kotlinx.atomicfu.atomic
|
||||||
import kotlinx.atomicfu.getAndUpdate
|
import kotlinx.atomicfu.getAndUpdate
|
||||||
|
import space.kscience.kmath.operations.Group
|
||||||
import space.kscience.kmath.operations.RealField
|
import space.kscience.kmath.operations.RealField
|
||||||
import space.kscience.kmath.operations.Space
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Common representation for atomic counters
|
* Common representation for atomic counters
|
||||||
@ -36,7 +36,7 @@ public class LongCounter : Counter<Long> {
|
|||||||
override val value: Long get() = innerValue.value
|
override val value: Long get() = innerValue.value
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ObjectCounter<T : Any>(public val space: Space<T>) : Counter<T> {
|
public class ObjectCounter<T : Any>(public val space: Group<T>) : Counter<T> {
|
||||||
private val innerValue = atomic(space.zero)
|
private val innerValue = atomic(space.zero)
|
||||||
|
|
||||||
override fun add(delta: T) {
|
override fun add(delta: T) {
|
||||||
|
@ -6,8 +6,8 @@ import space.kscience.kmath.misc.UnstableKMathAPI
|
|||||||
import space.kscience.kmath.nd.NDField
|
import space.kscience.kmath.nd.NDField
|
||||||
import space.kscience.kmath.nd.NDStructure
|
import space.kscience.kmath.nd.NDStructure
|
||||||
import space.kscience.kmath.nd.Strides
|
import space.kscience.kmath.nd.Strides
|
||||||
|
import space.kscience.kmath.operations.Group
|
||||||
import space.kscience.kmath.operations.ScaleOperations
|
import space.kscience.kmath.operations.ScaleOperations
|
||||||
import space.kscience.kmath.operations.Space
|
|
||||||
import space.kscience.kmath.operations.SpaceElement
|
import space.kscience.kmath.operations.SpaceElement
|
||||||
import space.kscience.kmath.operations.invoke
|
import space.kscience.kmath.operations.invoke
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ public class IndexedHistogram<T : Comparable<T>, V : Any>(
|
|||||||
* A space for producing histograms with values in a NDStructure
|
* A space for producing histograms with values in a NDStructure
|
||||||
*/
|
*/
|
||||||
public interface IndexedHistogramSpace<T : Comparable<T>, V : Any>
|
public interface IndexedHistogramSpace<T : Comparable<T>, V : Any>
|
||||||
: Space<IndexedHistogram<T, V>>, ScaleOperations<IndexedHistogram<T, V>> {
|
: Group<IndexedHistogram<T, V>>, ScaleOperations<IndexedHistogram<T, V>> {
|
||||||
//public val valueSpace: Space<V>
|
//public val valueSpace: Space<V>
|
||||||
public val strides: Strides
|
public val strides: Strides
|
||||||
public val histogramValueSpace: NDField<V, *> //= NDAlgebra.space(valueSpace, Buffer.Companion::boxing, *shape),
|
public val histogramValueSpace: NDField<V, *> //= NDAlgebra.space(valueSpace, Buffer.Companion::boxing, *shape),
|
||||||
|
@ -2,8 +2,8 @@ package space.kscience.kmath.histogram
|
|||||||
|
|
||||||
import space.kscience.kmath.domains.UnivariateDomain
|
import space.kscience.kmath.domains.UnivariateDomain
|
||||||
import space.kscience.kmath.misc.UnstableKMathAPI
|
import space.kscience.kmath.misc.UnstableKMathAPI
|
||||||
|
import space.kscience.kmath.operations.Group
|
||||||
import space.kscience.kmath.operations.ScaleOperations
|
import space.kscience.kmath.operations.ScaleOperations
|
||||||
import space.kscience.kmath.operations.Space
|
|
||||||
import space.kscience.kmath.structures.Buffer
|
import space.kscience.kmath.structures.Buffer
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
@ -37,7 +37,7 @@ public class TreeHistogram(
|
|||||||
@UnstableKMathAPI
|
@UnstableKMathAPI
|
||||||
public class TreeHistogramSpace(
|
public class TreeHistogramSpace(
|
||||||
public val binFactory: (Double) -> UnivariateDomain,
|
public val binFactory: (Double) -> UnivariateDomain,
|
||||||
) : Space<UnivariateHistogram>, ScaleOperations<UnivariateHistogram> {
|
) : Group<UnivariateHistogram>, ScaleOperations<UnivariateHistogram> {
|
||||||
|
|
||||||
private class BinCounter(val domain: UnivariateDomain, val counter: Counter<Double> = Counter.real()) :
|
private class BinCounter(val domain: UnivariateDomain, val counter: Counter<Double> = Counter.real()) :
|
||||||
ClosedFloatingPointRange<Double> by domain.range
|
ClosedFloatingPointRange<Double> by domain.range
|
||||||
|
@ -2,7 +2,7 @@ package space.kscience.kmath.histogram
|
|||||||
|
|
||||||
import space.kscience.kmath.domains.UnivariateDomain
|
import space.kscience.kmath.domains.UnivariateDomain
|
||||||
import space.kscience.kmath.misc.UnstableKMathAPI
|
import space.kscience.kmath.misc.UnstableKMathAPI
|
||||||
import space.kscience.kmath.operations.Space
|
import space.kscience.kmath.operations.Group
|
||||||
import space.kscience.kmath.operations.SpaceElement
|
import space.kscience.kmath.operations.SpaceElement
|
||||||
import space.kscience.kmath.structures.Buffer
|
import space.kscience.kmath.structures.Buffer
|
||||||
import space.kscience.kmath.structures.asSequence
|
import space.kscience.kmath.structures.asSequence
|
||||||
@ -30,7 +30,7 @@ public class UnivariateBin(
|
|||||||
|
|
||||||
@OptIn(UnstableKMathAPI::class)
|
@OptIn(UnstableKMathAPI::class)
|
||||||
public interface UnivariateHistogram : Histogram<Double, UnivariateBin>,
|
public interface UnivariateHistogram : Histogram<Double, UnivariateBin>,
|
||||||
SpaceElement<UnivariateHistogram, Space<UnivariateHistogram>> {
|
SpaceElement<UnivariateHistogram, Group<UnivariateHistogram>> {
|
||||||
public operator fun get(value: Double): UnivariateBin?
|
public operator fun get(value: Double): UnivariateBin?
|
||||||
public override operator fun get(point: Buffer<Double>): UnivariateBin? = get(point[0])
|
public override operator fun get(point: Buffer<Double>): UnivariateBin? = get(point[0])
|
||||||
|
|
||||||
|
@ -102,8 +102,8 @@ public fun <X : SFun<X>> MST.toSFun(): SFun<X> = when (this) {
|
|||||||
is MST.Symbolic -> toSVar()
|
is MST.Symbolic -> toSVar()
|
||||||
|
|
||||||
is MST.Unary -> when (operation) {
|
is MST.Unary -> when (operation) {
|
||||||
SpaceOperations.PLUS_OPERATION -> +value.toSFun<X>()
|
GroupOperations.PLUS_OPERATION -> +value.toSFun<X>()
|
||||||
SpaceOperations.MINUS_OPERATION -> -value.toSFun<X>()
|
GroupOperations.MINUS_OPERATION -> -value.toSFun<X>()
|
||||||
TrigonometricOperations.SIN_OPERATION -> sin(value.toSFun())
|
TrigonometricOperations.SIN_OPERATION -> sin(value.toSFun())
|
||||||
TrigonometricOperations.COS_OPERATION -> cos(value.toSFun())
|
TrigonometricOperations.COS_OPERATION -> cos(value.toSFun())
|
||||||
TrigonometricOperations.TAN_OPERATION -> tan(value.toSFun())
|
TrigonometricOperations.TAN_OPERATION -> tan(value.toSFun())
|
||||||
@ -114,8 +114,8 @@ public fun <X : SFun<X>> MST.toSFun(): SFun<X> = when (this) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
is MST.Binary -> when (operation) {
|
is MST.Binary -> when (operation) {
|
||||||
SpaceOperations.PLUS_OPERATION -> left.toSFun<X>() + right.toSFun()
|
GroupOperations.PLUS_OPERATION -> left.toSFun<X>() + right.toSFun()
|
||||||
SpaceOperations.MINUS_OPERATION -> left.toSFun<X>() - right.toSFun()
|
GroupOperations.MINUS_OPERATION -> left.toSFun<X>() - right.toSFun()
|
||||||
RingOperations.TIMES_OPERATION -> left.toSFun<X>() * right.toSFun()
|
RingOperations.TIMES_OPERATION -> left.toSFun<X>() * right.toSFun()
|
||||||
FieldOperations.DIV_OPERATION -> left.toSFun<X>() / right.toSFun()
|
FieldOperations.DIV_OPERATION -> left.toSFun<X>() / right.toSFun()
|
||||||
PowerOperations.POW_OPERATION -> left.toSFun<X>() pow (right as MST.Numeric).toSConst()
|
PowerOperations.POW_OPERATION -> left.toSFun<X>() pow (right as MST.Numeric).toSConst()
|
||||||
|
@ -70,12 +70,12 @@ public interface Nd4jArrayAlgebra<T, C : Algebra<T>> : NDAlgebra<T, C> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents [NDSpace] over [Nd4jArrayStructure].
|
* Represents [NDGroup] over [Nd4jArrayStructure].
|
||||||
*
|
*
|
||||||
* @param T the type of the element contained in ND structure.
|
* @param T the type of the element contained in ND structure.
|
||||||
* @param S the type of space of structure elements.
|
* @param S the type of space of structure elements.
|
||||||
*/
|
*/
|
||||||
public interface Nd4jArraySpace<T, S : Space<T>> : NDSpace<T, S>, Nd4jArrayAlgebra<T, S> {
|
public interface Nd4JArrayGroup<T, S : Group<T>> : NDGroup<T, S>, Nd4jArrayAlgebra<T, S> {
|
||||||
|
|
||||||
public override val zero: Nd4jArrayStructure<T>
|
public override val zero: Nd4jArrayStructure<T>
|
||||||
get() = Nd4j.zeros(*shape).wrap()
|
get() = Nd4j.zeros(*shape).wrap()
|
||||||
@ -100,7 +100,7 @@ public interface Nd4jArraySpace<T, S : Space<T>> : NDSpace<T, S>, Nd4jArrayAlgeb
|
|||||||
* @param R the type of ring of structure elements.
|
* @param R the type of ring of structure elements.
|
||||||
*/
|
*/
|
||||||
@OptIn(UnstableKMathAPI::class)
|
@OptIn(UnstableKMathAPI::class)
|
||||||
public interface Nd4jArrayRing<T, R : Ring<T>> : NDRing<T, R>, Nd4jArraySpace<T, R> {
|
public interface Nd4jArrayRing<T, R : Ring<T>> : NDRing<T, R>, Nd4JArrayGroup<T, R> {
|
||||||
|
|
||||||
public override val one: Nd4jArrayStructure<T>
|
public override val one: Nd4jArrayStructure<T>
|
||||||
get() = Nd4j.ones(*shape).wrap()
|
get() = Nd4j.ones(*shape).wrap()
|
||||||
|
@ -4,8 +4,8 @@ import space.kscience.kmath.chains.Chain
|
|||||||
import space.kscience.kmath.chains.ConstantChain
|
import space.kscience.kmath.chains.ConstantChain
|
||||||
import space.kscience.kmath.chains.map
|
import space.kscience.kmath.chains.map
|
||||||
import space.kscience.kmath.chains.zip
|
import space.kscience.kmath.chains.zip
|
||||||
|
import space.kscience.kmath.operations.Group
|
||||||
import space.kscience.kmath.operations.ScaleOperations
|
import space.kscience.kmath.operations.ScaleOperations
|
||||||
import space.kscience.kmath.operations.Space
|
|
||||||
import space.kscience.kmath.operations.invoke
|
import space.kscience.kmath.operations.invoke
|
||||||
|
|
||||||
public class BasicSampler<T : Any>(public val chainBuilder: (RandomGenerator) -> Chain<T>) : Sampler<T> {
|
public class BasicSampler<T : Any>(public val chainBuilder: (RandomGenerator) -> Chain<T>) : Sampler<T> {
|
||||||
@ -19,8 +19,8 @@ public class ConstantSampler<T : Any>(public val value: T) : Sampler<T> {
|
|||||||
/**
|
/**
|
||||||
* A space for samplers. Allows to perform simple operations on distributions
|
* A space for samplers. Allows to perform simple operations on distributions
|
||||||
*/
|
*/
|
||||||
public class SamplerSpace<T : Any, S>(public val algebra: S) : Space<Sampler<T>>,
|
public class SamplerSpace<T : Any, S>(public val algebra: S) : Group<Sampler<T>>,
|
||||||
ScaleOperations<Sampler<T>> where S : Space<T>, S : ScaleOperations<T> {
|
ScaleOperations<Sampler<T>> where S : Group<T>, S : ScaleOperations<T> {
|
||||||
|
|
||||||
public override val zero: Sampler<T> = ConstantSampler(algebra.zero)
|
public override val zero: Sampler<T> = ConstantSampler(algebra.zero)
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ public fun <T, I, R> ComposableStatistic<T, I, R>.flow(
|
|||||||
* Arithmetic mean
|
* Arithmetic mean
|
||||||
*/
|
*/
|
||||||
public class Mean<T>(
|
public class Mean<T>(
|
||||||
private val space: Space<T>,
|
private val space: Group<T>,
|
||||||
private val division: (sum: T, count: Int) -> T,
|
private val division: (sum: T, count: Int) -> T,
|
||||||
) : ComposableStatistic<T, Pair<T, Int>, T> {
|
) : ComposableStatistic<T, Pair<T, Int>, T> {
|
||||||
public override suspend fun computeIntermediate(data: Buffer<T>): Pair<T, Int> =
|
public override suspend fun computeIntermediate(data: Buffer<T>): Pair<T, Int> =
|
||||||
|
Loading…
Reference in New Issue
Block a user