cache exp(-U/kT) instead of U

This commit is contained in:
Daniel Bauer
2018-10-17 09:51:11 +02:00
parent 7fd78fc2a5
commit 40bb99a612
2 changed files with 22 additions and 12 deletions

View File

@@ -53,7 +53,7 @@ fn calc_bin_probability(bin: usize, ds: &Dataset, F: &[f64]) -> f64 {
let mut bin_count: f64 = 0.0;
for (window, h) in ds.histograms.iter().enumerate() {
bin_count += h.bins[bin];
let bias = ds.calc_bias(bin, window);
let bias = -ds.kT*ds.calc_bias(bin, window).ln();
let bias_offset = ((F[window] - bias) / ds.kT).exp();
denom_sum += (h.num_points as f64) * bias_offset;
}
@@ -69,7 +69,7 @@ fn calc_window_F(window: usize, ds: &Dataset, P: &[f64]) -> f64 {
if count_and_prob.1 == &0.0 { // skip zeros for speed
None
} else {
Some(count_and_prob.1 * (-ds.calc_bias(count_and_prob.0, window) / ds.kT).exp())
Some(count_and_prob.1 * (-(-ds.kT*ds.calc_bias(count_and_prob.0, window).ln()) / ds.kT).exp())
}
}).sum();
-ds.kT * bf_sum.ln()
@@ -262,6 +262,7 @@ mod tests {
}
#[test]
#[ignore]
fn calc_bias_offset() {
let ds = create_test_ds();
let probability = vec!(0.959, 0.331, 0.656, 46.750);