
commonMain.space.kscience.kmath.domains.UnivariateDomain.kt Maven / Gradle / Ivy
package space.kscience.kmath.domains
import space.kscience.kmath.linear.Point
import space.kscience.kmath.structures.asBuffer
public inline class UnivariateDomain(public val range: ClosedFloatingPointRange) : RealDomain {
public override val dimension: Int
get() = 1
public operator fun contains(d: Double): Boolean = range.contains(d)
public override operator fun contains(point: Point): Boolean {
require(point.size == 0)
return contains(point[0])
}
public override fun nearestInDomain(point: Point): Point {
require(point.size == 1)
val value = point[0]
return when {
value in range -> point
value >= range.endInclusive -> doubleArrayOf(range.endInclusive).asBuffer()
else -> doubleArrayOf(range.start).asBuffer()
}
}
public override fun getLowerBound(num: Int, point: Point): Double? {
require(num == 0)
return range.start
}
public override fun getUpperBound(num: Int, point: Point): Double? {
require(num == 0)
return range.endInclusive
}
public override fun getLowerBound(num: Int): Double? {
require(num == 0)
return range.start
}
public override fun getUpperBound(num: Int): Double? {
require(num == 0)
return range.endInclusive
}
public override fun volume(): Double = range.endInclusive - range.start
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy