Dev #280

Merged
altavir merged 99 commits from dev into master 2021-04-16 19:45:55 +03:00
2 changed files with 9 additions and 1 deletions
Showing only changes of commit 55909aee0d - Show all commits

View File

@ -36,7 +36,7 @@ internal class ViktorBenchmark {
@Benchmark @Benchmark
fun rawViktor() { fun rawViktor() {
val one = F64Array.full(init = 1.0, shape = *intArrayOf(dim, dim)) val one = F64Array.full(init = 1.0, shape = intArrayOf(dim, dim))
var res = one var res = one
repeat(n) { res = res + one } repeat(n) { res = res + one }
} }

View File

@ -5,9 +5,17 @@ import kscience.kmath.prob.RandomGenerator
import kscience.kmath.prob.UnivariateDistribution import kscience.kmath.prob.UnivariateDistribution
import kscience.kmath.prob.internal.InternalErf import kscience.kmath.prob.internal.InternalErf
import kscience.kmath.prob.samplers.GaussianSampler import kscience.kmath.prob.samplers.GaussianSampler
import kscience.kmath.prob.samplers.NormalizedGaussianSampler
import kscience.kmath.prob.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> {
public constructor(
mean: Double,
standardDeviation: Double,
normalized: NormalizedGaussianSampler = ZigguratNormalizedGaussianSampler.of(),
) : this(GaussianSampler.of(mean, standardDeviation, normalized))
public override fun probability(arg: Double): Double { public override fun probability(arg: Double): Double {
val x1 = (arg - sampler.mean) / sampler.standardDeviation val x1 = (arg - sampler.mean) / sampler.standardDeviation
return exp(-0.5 * x1 * x1 - (ln(sampler.standardDeviation) + 0.5 * ln(2 * PI))) return exp(-0.5 * x1 * x1 - (ln(sampler.standardDeviation) + 0.5 * ln(2 * PI)))