| 54 stats: &mut IterInfo<F>, |
54 stats: &mut IterInfo<F>, |
| 55 ) -> DynResult<(Option<Self::ReturnMapping>, bool)> |
55 ) -> DynResult<(Option<Self::ReturnMapping>, bool)> |
| 56 where |
56 where |
| 57 I: AlgIterator, |
57 I: AlgIterator, |
| 58 { |
58 { |
| 59 let violation = reg.find_tolerance_violation(τv, τ, ε, true, config); |
59 // If no merging heuristic is used, let's be more conservative about spike insertion, |
| |
60 // and skip it after first round. If merging is done, being more greedy about spike |
| |
61 // insertion also seems to improve performance. |
| |
62 let skip_by_rough_check = !config.merging.enabled; |
| |
63 let violation = reg.find_tolerance_violation(τv, τ, ε, skip_by_rough_check, config); |
| 60 reg.solve_oc_radonsq(μ, τv, τ, ε, violation, config, stats); |
64 reg.solve_oc_radonsq(μ, τv, τ, ε, violation, config, stats); |
| 61 |
65 |
| 62 Ok((None, true)) |
66 Ok((None, true)) |
| 63 } |
67 } |
| 64 |
68 |