1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/// generalized bisection method in analysis.
pub fn bisect<T, B, F>(
calc_middle: &B,
is_ok: &F,
trivial_ng: T,
trivial_ok: T,
max_epohcs: usize,
) -> T
where
B: Fn(T, T) -> T,
F: Fn(&T) -> bool,
T: Clone + PartialEq,
{
let mut ng = trivial_ng;
let mut ok = trivial_ok;
for _ in 0..max_epohcs {
let middle = calc_middle(ng.clone(), ok.clone());
if middle == ng || middle == ok {
break;
}
if is_ok(&middle) {
ok = middle;
} else {
ng = middle;
}
}
ok
}
// TODO
#[cfg(test)]
mod tests {
#[test]
fn test() {}
}