Make MIS routines handle infinite importance better.
Handle it like the limit case: as A approaches infinity, the limit approaches 1.0. Before this, we were getting NaN values. This fixes that.
This commit is contained in:
parent
6ff226f4fa
commit
3de276cbaa
20
src/mis.rs
20
src/mis.rs
|
@ -1,13 +1,21 @@
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
|
|
||||||
pub fn balance_heuristic(a: f32, b: f32) -> f32 {
|
pub fn balance_heuristic(a: f32, b: f32) -> f32 {
|
||||||
let mis_fac = a / (a + b);
|
if a.is_infinite() {
|
||||||
a / mis_fac
|
a
|
||||||
|
} else {
|
||||||
|
let mis_fac = a / (a + b);
|
||||||
|
a / mis_fac
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn power_heuristic(a: f32, b: f32) -> f32 {
|
pub fn power_heuristic(a: f32, b: f32) -> f32 {
|
||||||
let a2 = a * a;
|
if a.is_infinite() {
|
||||||
let b2 = b * b;
|
a
|
||||||
let mis_fac = a2 / (a2 + b2);
|
} else {
|
||||||
a / mis_fac
|
let a2 = a * a;
|
||||||
|
let b2 = b * b;
|
||||||
|
let mis_fac = a2 / (a2 + b2);
|
||||||
|
a / mis_fac
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user