Package-level declarations

Types

Link copied to clipboard
fun interface AutoDiffProcessor<T, I, out A : Algebra<I>>

A factory that converts an expression in autodiff variables to a DifferentiableExpression

Link copied to clipboard
open class AutoDiffValue<out T>(val value: T)
Link copied to clipboard
class DerivationResult<T : Any>(val value: T, derivativeValues: Map<String, T>, val context: Field<T>)

Represents result of simpleAutoDiff call.

Link copied to clipboard
class DerivativeStructureRingExpression<T, A : Ring<T>, ScaleOperations<T>, NumericAlgebra<T>>(val algebra: A, val elementBufferFactory: MutableBufferFactory<T> = algebra.bufferFactory, val function: DSRing<T, A>.() -> DS<T, A>) : DifferentiableExpression<T>
Link copied to clipboard

Represents expression, which structure can be differentiated.

Link copied to clipboard

Specialization of Expression for Double allowing better performance because of using array.

Link copied to clipboard
interface DS<T, A : Ring<T>>

Class representing both the value and the differentials of a function.

Link copied to clipboard
abstract class DSAlgebra<T, A : Ring<T>>(val algebra: A, val order: Int, bindings: Map<Symbol, T>) : ExpressionAlgebra<T, DS<T, A>> , SymbolIndexer
Link copied to clipboard
class DSCompiler<T, out A : Algebra<T>>

Class holding "compiled" computation rules for derivative structures.

Link copied to clipboard
class DSField<T, A : ExtendedField<T>>(algebra: A, order: Int, bindings: Map<Symbol, T>) : DSRing<T, A> , ExtendedField<DS<T, A>>

A field over DS.

Link copied to clipboard
class DSFieldExpression<T, A : ExtendedField<T>>(val algebra: A, val function: DSField<T, A>.() -> DS<T, A>) : DifferentiableExpression<T>
Link copied to clipboard
Link copied to clipboard
open class DSRing<T, A : Ring<T>, NumericAlgebra<T>, ScaleOperations<T>>(algebra: A, order: Int, bindings: Map<Symbol, T>) : DSAlgebra<T, A> , Ring<DS<T, A>> , ScaleOperations<DS<T, A>> , NumericAlgebra<DS<T, A>> , NumbersAddOps<DS<T, A>>

A ring over DS.

Link copied to clipboard
fun interface Expression<T>

An elementary function that could be invoked on a map of arguments.

Link copied to clipboard
interface ExpressionAlgebra<in T, E> : Algebra<E>

A context for expression construction

Link copied to clipboard
class ExpressionWithDefault<T>(origin: Expression<T>, defaultArgs: Map<Symbol, T>) : Expression<T>
Link copied to clipboard

A DifferentiableExpression that defines only first derivatives

Link copied to clipboard
abstract class FunctionalExpressionAlgebra<T, out A : Algebra<T>>(val algebra: A) : ExpressionAlgebra<T, Expression<T>>

A context class for Expression construction.

Link copied to clipboard

A context class for Expression construction for Ring algebras.

Link copied to clipboard
open class FunctionalExpressionRing<T, out A : Ring<T>>(algebra: A) : FunctionalExpressionGroup<T, A> , Ring<Expression<T>>
Link copied to clipboard

Specialization of Expression for Int allowing better performance because of using array.

Link copied to clipboard

Specialization of Expression for Long allowing better performance because of using array.

Link copied to clipboard
interface MST

A Mathematical Syntax Tree (MST) node for mathematical expressions.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
class NamedMatrix<T>(val values: Matrix<T>, val indexer: SymbolIndexer) : Structure2D<T>
Link copied to clipboard
class SimpleAutoDiffExpression<T : Any, F : Field<T>>(val field: F, val function: SimpleAutoDiffField<T, F>.() -> AutoDiffValue<T>) : FirstDerivativeExpression<T>

A constructs that creates a derivative structure with required order on-demand

Link copied to clipboard

Represents field in context of which functions can be derived.

Link copied to clipboard
Link copied to clipboard

A special type of DifferentiableExpression which returns typed expressions as derivatives.

Link copied to clipboard
interface Symbol : MST

A marker interface for a symbol. A symbol must have an identity with equality relation based on it. Other properties are to store additional, transient data only.

Link copied to clipboard

An environment to easy transform indexed variables to symbols and back. TODO requires multi-receivers to be beautiful

Functions

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
inline fun <T : Any, F : Field<T>> SimpleAutoDiffField<T, F>.const(block: F.() -> T): AutoDiffValue<T>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
fun <T, A : Ring<T>> DS<T, A>.derivative(vararg symbols: Symbol): T
fun <T, A : Ring<T>> DS<T, A>.derivative(symbols: List<Symbol>): T

Provide a partial derivative with given symbols. On symbol could me mentioned multiple times

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
inline fun <T, A : Ring<T>> A.expressionInRing(block: FunctionalExpressionRing<T, A>.() -> Expression<T>): Expression<T>
Link copied to clipboard
operator fun <T> Map<String, T>.get(symbol: Symbol): T?

Ger a value from a String-keyed map by a Symbol

operator fun <T> Map<Symbol, T>.get(string: String): T?

Get a value from a Symbol-keyed map by a String

Link copied to clipboard
fun <T : Any> DerivationResult<T>.grad(vararg variables: Symbol): Point<T>

Computes the gradient for variables in given order.

Link copied to clipboard
fun <T> MST.interpret(algebra: Algebra<T>, vararg arguments: Pair<Symbol, T>): T
fun <T> MST.interpret(algebra: Algebra<T>, arguments: Map<Symbol, T>): T

Interprets the MST node with this Algebra and optional arguments

Link copied to clipboard
operator fun <T> Expression<T>.invoke(): T

Calls this expression without providing any arguments.

operator fun DoubleExpression.invoke(vararg arguments: Double): Double
@JvmName(name = "callByString")
operator fun <T> Expression<T>.invoke(vararg pairs: Pair<String, T>): T
@JvmName(name = "callBySymbol")
operator fun <T> Expression<T>.invoke(vararg pairs: Pair<Symbol, T>): T
operator fun IntExpression.invoke(vararg arguments: Int): Int
operator fun LongExpression.invoke(vararg arguments: Long): Long

Calls this expression from arguments.

Link copied to clipboard
Link copied to clipboard
fun <T> Matrix<T>.named(symbols: List<Symbol>): NamedMatrix<T>
Link copied to clipboard
operator fun <T> MutableMap<String, T>.set(symbol: Symbol, value: T)
operator fun <T> MutableMap<Symbol, T>.set(string: String, value: T)

Set a value of String-keyed map by a Symbol

Link copied to clipboard
fun <T : Any, F : Field<T>> F.simpleAutoDiff(vararg bindings: Pair<Symbol, T>, body: SimpleAutoDiffField<T, F>.() -> AutoDiffValue<T>): DerivationResult<T>

fun <T : Any, F : Field<T>> F.simpleAutoDiff(bindings: Map<Symbol, T>, body: SimpleAutoDiffField<T, F>.() -> AutoDiffValue<T>): DerivationResult<T>

Runs differentiation and establishes SimpleAutoDiffField context inside the block of code.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
fun Symbol(identity: String): Symbol

Create s Symbols with a string identity

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
fun <T : Any> MST.toExpression(algebra: Algebra<T>): Expression<T>

Interpret this MST as expression.

Link copied to clipboard
inline fun <R> withSymbols(vararg symbols: Symbol, block: SymbolIndexer.() -> R): R

Execute the block with symbol indexer based on given symbol order

inline fun <R> withSymbols(symbols: Collection<Symbol>, block: SymbolIndexer.() -> R): R

Properties

Link copied to clipboard

Bind a symbol by name inside the ExpressionAlgebra

Link copied to clipboard

A delegate to create a symbol with a string identity in this scope

Link copied to clipboard
val <T, A : Ring<T>> DS<T, A>.value: T

The value part of the derivative structure.