package com.spbsu.bernulli.MCMCBernoulliMixture; public class UniformPrior implements BernoulliPrior { private final double[] logFactorialSums; //logFactorialSums[i] = log(i!) public UniformPrior(int maxSize) { this.logFactorialSums = new double[maxSize]; this.logFactorialSums[0] = 0; for (int i = 1; i < logFactorialSums.length; ++i) { this.logFactorialSums[i] = this.logFactorialSums[i-1]+Math.log(i); } } @Override public final double likelihood(int m, int n) { return logFactorialSums[m] + logFactorialSums[n - m] - logFactorialSums[n]; } }