0.1.4-dev-4 #86
@ -1,37 +0,0 @@
|
||||
package scientifik.kmath.coroutines
|
||||
|
||||
import scientifik.kmath.operations.RealField
|
||||
import scientifik.kmath.operations.SpaceOperations
|
||||
import kotlin.jvm.JvmName
|
||||
|
||||
/**
|
||||
* A suspendable univariate function defined in algebraic context
|
||||
*/
|
||||
interface UFunction<T, C : SpaceOperations<T>> {
|
||||
suspend operator fun C.invoke(arg: T): T
|
||||
}
|
||||
|
||||
suspend fun UFunction<Double, RealField>.invoke(arg: Double) = RealField.invoke(arg)
|
||||
|
||||
/**
|
||||
* A suspendable multivariate (N->1) function defined on algebraic context
|
||||
*/
|
||||
interface MFunction<T, C : SpaceOperations<T>> {
|
||||
/**
|
||||
* The input dimension of the function
|
||||
*/
|
||||
val dimension: UInt
|
||||
|
||||
suspend operator fun C.invoke(vararg args: T): T
|
||||
}
|
||||
|
||||
suspend fun MFunction<Double, RealField>.invoke(args: DoubleArray) = RealField.invoke(*args.toTypedArray())
|
||||
@JvmName("varargInvoke")
|
||||
suspend fun MFunction<Double, RealField>.invoke(vararg args: Double) = RealField.invoke(*args.toTypedArray())
|
||||
|
||||
/**
|
||||
* A suspendable univariate function with parameter
|
||||
*/
|
||||
interface ParametricUFunction<T, P, C : SpaceOperations<T>> {
|
||||
suspend operator fun C.invoke(arg: T, parameter: P): T
|
||||
}
|
23
kmath-functions/build.gradle.kts
Normal file
23
kmath-functions/build.gradle.kts
Normal file
@ -0,0 +1,23 @@
|
||||
plugins {
|
||||
id("scientifik.mpp")
|
||||
//id("scientifik.atomic")
|
||||
}
|
||||
|
||||
kotlin.sourceSets {
|
||||
commonMain {
|
||||
dependencies {
|
||||
api(project(":kmath-core"))
|
||||
api("org.jetbrains.kotlinx:kotlinx-coroutines-core-common:${Scientifik.coroutinesVersion}")
|
||||
}
|
||||
}
|
||||
jvmMain {
|
||||
dependencies {
|
||||
api("org.jetbrains.kotlinx:kotlinx-coroutines-core:${Scientifik.coroutinesVersion}")
|
||||
}
|
||||
}
|
||||
jsMain {
|
||||
dependencies {
|
||||
api("org.jetbrains.kotlinx:kotlinx-coroutines-core-js:${Scientifik.coroutinesVersion}")
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
package scientifik.kmath.functions
|
||||
|
@ -0,0 +1,4 @@
|
||||
package scientifik.kmath.functions
|
||||
|
||||
interface Polynomial {
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
package scientifik.kmath.misc
|
||||
|
||||
import scientifik.kmath.operations.RealField
|
||||
import scientifik.kmath.operations.SpaceOperations
|
||||
import kotlin.jvm.JvmName
|
||||
|
||||
/**
|
||||
* A regular function that could be called only inside specific algebra context
|
||||
*/
|
||||
interface UFunction<T, C : SpaceOperations<T>> {
|
||||
operator fun C.invoke(arg: T): T
|
||||
}
|
||||
|
||||
/**
|
||||
* A suspendable univariate function defined in algebraic context
|
||||
*/
|
||||
interface USFunction<T, C : SpaceOperations<T>> {
|
||||
suspend operator fun C.invoke(arg: T): T
|
||||
}
|
||||
|
||||
suspend fun USFunction<Double, RealField>.invoke(arg: Double) = RealField.invoke(arg)
|
||||
|
||||
|
||||
interface MFunction<T, C : SpaceOperations<T>> {
|
||||
/**
|
||||
* The input dimension of the function
|
||||
*/
|
||||
val dimension: UInt
|
||||
|
||||
operator fun C.invoke(vararg args: T): T
|
||||
}
|
||||
|
||||
/**
|
||||
* A suspendable multivariate (N->1) function defined on algebraic context
|
||||
*/
|
||||
interface MSFunction<T, C : SpaceOperations<T>> {
|
||||
/**
|
||||
* The input dimension of the function
|
||||
*/
|
||||
val dimension: UInt
|
||||
|
||||
suspend operator fun C.invoke(vararg args: T): T
|
||||
}
|
||||
|
||||
suspend fun MSFunction<Double, RealField>.invoke(args: DoubleArray) = RealField.invoke(*args.toTypedArray())
|
||||
@JvmName("varargInvoke")
|
||||
suspend fun MSFunction<Double, RealField>.invoke(vararg args: Double) = RealField.invoke(*args.toTypedArray())
|
||||
|
||||
/**
|
||||
* A suspendable parametric function with parameter
|
||||
*/
|
||||
interface PSFunction<T, P, C : SpaceOperations<T>> {
|
||||
suspend operator fun C.invoke(arg: T, parameter: P): T
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package scientifik.kmath.interpolation
|
||||
|
||||
import scientifik.kmath.functions.MathFunction
|
||||
|
||||
interface Interpolator<X, Y> {
|
||||
fun interpolate(points: Collection<Pair<X, Y>>): MathFunction<X, *, Y>
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
package scientifik.kmath.interpolation
|
||||
|
||||
class LinearInterpolator {
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
package scientifik.kmath.interpolation
|
||||
|
||||
import org.junit.Assert.*
|
||||
|
||||
class LinearInterpolatorTest
|
Loading…
Reference in New Issue
Block a user