Dev #280

Merged
altavir merged 99 commits from dev into master 2021-04-16 19:45:55 +03:00
20 changed files with 71 additions and 76 deletions
Showing only changes of commit f18cd9ad40 - Show all commits

View File

@ -3,10 +3,10 @@ package kscience.kmath.commons.prob
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.async import kotlinx.coroutines.async
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import kscience.kmath.prob.RandomGenerator import kscience.kmath.stat.RandomGenerator
import kscience.kmath.prob.blocking import kscience.kmath.stat.blocking
import kscience.kmath.prob.fromSource import kscience.kmath.stat.fromSource
import kscience.kmath.prob.samplers.GaussianSampler import kscience.kmath.stat.samplers.GaussianSampler
import org.apache.commons.rng.simple.RandomSource import org.apache.commons.rng.simple.RandomSource
import java.time.Duration import java.time.Duration
import java.time.Instant import java.time.Instant

View File

@ -3,8 +3,8 @@ package kscience.kmath.commons.prob
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import kscience.kmath.chains.Chain import kscience.kmath.chains.Chain
import kscience.kmath.chains.collectWithState import kscience.kmath.chains.collectWithState
import kscience.kmath.prob.RandomGenerator import kscience.kmath.stat.RandomGenerator
import kscience.kmath.prob.samplers.ZigguratNormalizedGaussianSampler import kscience.kmath.stat.samplers.ZigguratNormalizedGaussianSampler
private data class AveragingChainState(var num: Int = 0, var value: Double = 0.0) private data class AveragingChainState(var num: Int = 0, var value: Double = 0.0)

View File

@ -1,11 +1,11 @@
package kscience.kmath.commons.optimization package kscience.kmath.commons.optimization
import kotlinx.coroutines.runBlocking
import kscience.kmath.commons.expressions.DerivativeStructureExpression import kscience.kmath.commons.expressions.DerivativeStructureExpression
import kscience.kmath.expressions.symbol import kscience.kmath.expressions.symbol
import kscience.kmath.stat.Distribution
import kscience.kmath.stat.Fitting import kscience.kmath.stat.Fitting
import kscience.kmath.stat.RandomGenerator import kscience.kmath.stat.RandomGenerator
import kscience.kmath.stat.normal import kscience.kmath.stat.distributions.NormalDistribution
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
import kotlin.math.pow import kotlin.math.pow
@ -39,20 +39,15 @@ internal class OptimizeTest {
} }
@Test @Test
fun testCmFit() { fun testCmFit() = runBlocking {
val a by symbol val a by symbol
val b by symbol val b by symbol
val c by symbol val c by symbol
val sigma = 1.0 val sigma = 1.0
val generator = Distribution.normal(0.0, sigma) val generator = NormalDistribution(0.0, sigma)
val chain = generator.sample(RandomGenerator.default(112667)) val chain = generator.sample(RandomGenerator.default(112667))
val x = (1..100).map(Int::toDouble) val x = (1..100).map(Int::toDouble)
val y = x.map { it.pow(2) + it + 1.0 + chain.next() }
val y = x.map {
it.pow(2) + it + 1 + chain.nextDouble()
}
val yErr = List(x.size) { sigma } val yErr = List(x.size) { sigma }
val chi2 = Fitting.chiSquared(x, y, yErr) { x1 -> val chi2 = Fitting.chiSquared(x, y, yErr) { x1 ->

View File

@ -1,12 +1,12 @@
package kscience.kmath.prob.distributions package kscience.kmath.stat.distributions
import kscience.kmath.chains.Chain import kscience.kmath.chains.Chain
import kscience.kmath.prob.RandomGenerator import kscience.kmath.stat.RandomGenerator
import kscience.kmath.prob.UnivariateDistribution import kscience.kmath.stat.UnivariateDistribution
import kscience.kmath.prob.internal.InternalErf import kscience.kmath.stat.internal.InternalErf
import kscience.kmath.prob.samplers.GaussianSampler import kscience.kmath.stat.samplers.GaussianSampler
import kscience.kmath.prob.samplers.NormalizedGaussianSampler import kscience.kmath.stat.samplers.NormalizedGaussianSampler
import kscience.kmath.prob.samplers.ZigguratNormalizedGaussianSampler import kscience.kmath.stat.samplers.ZigguratNormalizedGaussianSampler
import kotlin.math.* import kotlin.math.*
public inline class NormalDistribution(public val sampler: GaussianSampler) : UnivariateDistribution<Double> { public inline class NormalDistribution(public val sampler: GaussianSampler) : UnivariateDistribution<Double> {

View File

@ -1,4 +1,4 @@
package kscience.kmath.prob.internal package kscience.kmath.stat.internal
import kotlin.math.abs import kotlin.math.abs

View File

@ -1,4 +1,4 @@
package kscience.kmath.prob.internal package kscience.kmath.stat.internal
import kotlin.math.* import kotlin.math.*

View File

@ -1,4 +1,4 @@
package kscience.kmath.prob.internal package kscience.kmath.stat.internal
import kotlin.math.ln import kotlin.math.ln
import kotlin.math.min import kotlin.math.min

View File

@ -1,10 +1,10 @@
package kscience.kmath.prob.samplers package kscience.kmath.stat.samplers
import kscience.kmath.chains.Chain import kscience.kmath.chains.Chain
import kscience.kmath.prob.RandomGenerator import kscience.kmath.stat.RandomGenerator
import kscience.kmath.prob.Sampler import kscience.kmath.stat.Sampler
import kscience.kmath.prob.chain import kscience.kmath.stat.chain
import kscience.kmath.prob.internal.InternalUtils import kscience.kmath.stat.internal.InternalUtils
import kotlin.math.ln import kotlin.math.ln
import kotlin.math.pow import kotlin.math.pow

View File

@ -1,10 +1,10 @@
package kscience.kmath.prob.samplers package kscience.kmath.stat.samplers
import kscience.kmath.chains.Chain import kscience.kmath.chains.Chain
import kscience.kmath.prob.RandomGenerator import kscience.kmath.stat.RandomGenerator
import kscience.kmath.prob.Sampler import kscience.kmath.stat.Sampler
import kscience.kmath.prob.chain import kscience.kmath.stat.chain
import kscience.kmath.prob.next import kscience.kmath.stat.next
import kotlin.math.* import kotlin.math.*
/** /**

View File

@ -1,10 +1,10 @@
package kscience.kmath.prob.samplers package kscience.kmath.stat.samplers
import kscience.kmath.chains.Chain import kscience.kmath.chains.Chain
import kscience.kmath.prob.RandomGenerator import kscience.kmath.stat.RandomGenerator
import kscience.kmath.prob.Sampler import kscience.kmath.stat.Sampler
import kscience.kmath.prob.chain import kscience.kmath.stat.chain
import kscience.kmath.prob.internal.InternalUtils import kscience.kmath.stat.internal.InternalUtils
import kotlin.math.ceil import kotlin.math.ceil
import kotlin.math.max import kotlin.math.max
import kotlin.math.min import kotlin.math.min

View File

@ -1,9 +1,9 @@
package kscience.kmath.prob.samplers package kscience.kmath.stat.samplers
import kscience.kmath.chains.Chain import kscience.kmath.chains.Chain
import kscience.kmath.prob.RandomGenerator import kscience.kmath.stat.RandomGenerator
import kscience.kmath.prob.Sampler import kscience.kmath.stat.Sampler
import kscience.kmath.prob.chain import kscience.kmath.stat.chain
import kotlin.math.* import kotlin.math.*
/** /**

View File

@ -1,9 +1,9 @@
package kscience.kmath.prob.samplers package kscience.kmath.stat.samplers
import kscience.kmath.chains.Chain import kscience.kmath.chains.Chain
import kscience.kmath.chains.map import kscience.kmath.chains.map
import kscience.kmath.prob.RandomGenerator import kscience.kmath.stat.RandomGenerator
import kscience.kmath.prob.Sampler import kscience.kmath.stat.Sampler
/** /**
* Sampling from a Gaussian distribution with given mean and standard deviation. * Sampling from a Gaussian distribution with given mean and standard deviation.

View File

@ -1,9 +1,9 @@
package kscience.kmath.prob.samplers package kscience.kmath.stat.samplers
import kscience.kmath.chains.Chain import kscience.kmath.chains.Chain
import kscience.kmath.prob.RandomGenerator import kscience.kmath.stat.RandomGenerator
import kscience.kmath.prob.Sampler import kscience.kmath.stat.Sampler
import kscience.kmath.prob.chain import kscience.kmath.stat.chain
import kotlin.math.exp import kotlin.math.exp
/** /**

View File

@ -1,12 +1,12 @@
package kscience.kmath.prob.samplers package kscience.kmath.stat.samplers
import kscience.kmath.chains.Chain import kscience.kmath.chains.Chain
import kscience.kmath.chains.ConstantChain import kscience.kmath.chains.ConstantChain
import kscience.kmath.prob.RandomGenerator import kscience.kmath.stat.RandomGenerator
import kscience.kmath.prob.Sampler import kscience.kmath.stat.Sampler
import kscience.kmath.prob.chain import kscience.kmath.stat.chain
import kscience.kmath.prob.internal.InternalUtils import kscience.kmath.stat.internal.InternalUtils
import kscience.kmath.prob.next import kscience.kmath.stat.next
import kotlin.math.* import kotlin.math.*
/** /**

View File

@ -1,9 +1,9 @@
package kscience.kmath.prob.samplers package kscience.kmath.stat.samplers
import kscience.kmath.chains.Chain import kscience.kmath.chains.Chain
import kscience.kmath.prob.RandomGenerator import kscience.kmath.stat.RandomGenerator
import kscience.kmath.prob.Sampler import kscience.kmath.stat.Sampler
import kscience.kmath.prob.chain import kscience.kmath.stat.chain
import kotlin.math.ln import kotlin.math.ln
import kotlin.math.sqrt import kotlin.math.sqrt

View File

@ -1,6 +1,6 @@
package kscience.kmath.prob.samplers package kscience.kmath.stat.samplers
import kscience.kmath.prob.Sampler import kscience.kmath.stat.Sampler
/** /**
* Marker interface for a sampler that generates values from an N(0,1) * Marker interface for a sampler that generates values from an N(0,1)

View File

@ -1,8 +1,8 @@
package kscience.kmath.prob.samplers package kscience.kmath.stat.samplers
import kscience.kmath.chains.Chain import kscience.kmath.chains.Chain
import kscience.kmath.prob.RandomGenerator import kscience.kmath.stat.RandomGenerator
import kscience.kmath.prob.Sampler import kscience.kmath.stat.Sampler
/** /**
* Sampler for the Poisson distribution. * Sampler for the Poisson distribution.

View File

@ -1,9 +1,9 @@
package kscience.kmath.prob.samplers package kscience.kmath.stat.samplers
import kscience.kmath.chains.Chain import kscience.kmath.chains.Chain
import kscience.kmath.prob.RandomGenerator import kscience.kmath.stat.RandomGenerator
import kscience.kmath.prob.Sampler import kscience.kmath.stat.Sampler
import kscience.kmath.prob.chain import kscience.kmath.stat.chain
import kotlin.math.ceil import kotlin.math.ceil
import kotlin.math.exp import kotlin.math.exp

View File

@ -1,9 +1,9 @@
package kscience.kmath.prob.samplers package kscience.kmath.stat.samplers
import kscience.kmath.chains.Chain import kscience.kmath.chains.Chain
import kscience.kmath.prob.RandomGenerator import kscience.kmath.stat.RandomGenerator
import kscience.kmath.prob.Sampler import kscience.kmath.stat.Sampler
import kscience.kmath.prob.chain import kscience.kmath.stat.chain
import kotlin.math.* import kotlin.math.*
/** /**

View File

@ -3,7 +3,7 @@ package kscience.kmath.stat
import kotlinx.coroutines.flow.take import kotlinx.coroutines.flow.take
import kotlinx.coroutines.flow.toList import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import kscience.kmath.prob.samplers.GaussianSampler import kscience.kmath.stat.samplers.GaussianSampler
import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test