| 836 // the queue. If the queue empties as a result of that, the thread goes to wait for other threads |
836 // the queue. If the queue empties as a result of that, the thread goes to wait for other threads |
| 837 // to produce results. Since some node had a node whose lower bound was above the `glb`, eventually |
837 // to produce results. Since some node had a node whose lower bound was above the `glb`, eventually |
| 838 // there should be a result, or new nodes above the `glb` inserted into the queue. Then the waiting |
838 // there should be a result, or new nodes above the `glb` inserted into the queue. Then the waiting |
| 839 // threads can also continue processing. If, however, numerical inaccuracy destroyes the `glb`, |
839 // threads can also continue processing. If, however, numerical inaccuracy destroyes the `glb`, |
| 840 // the queue may run out, and we get “Refiner failure”. |
840 // the queue may run out, and we get “Refiner failure”. |
| 841 impl<F: Float, G, BT, const N: usize> MinMaxMapping<N, F> for BTFN<F, G, BT, N> |
841 impl<F: Float, G, BT, const N: usize> MinMaxMapping<Loc<N, F>, F> for BTFN<F, G, BT, N> |
| 842 where |
842 where |
| 843 BT: BTSearch<N, F, Agg = Bounds<F>>, |
843 BT: BTSearch<N, F, Agg = Bounds<F>>, |
| 844 G: SupportGenerator<N, F, Id = BT::Data>, |
844 G: SupportGenerator<N, F, Id = BT::Data>, |
| 845 G::SupportType: Mapping<Loc<N, F>, Codomain = F> + LocalAnalysis<F, Bounds<F>, N>, |
845 G::SupportType: Mapping<Loc<N, F>, Codomain = F> + LocalAnalysis<F, Bounds<F>, N>, |
| 846 Cube<N, F>: P2Minimise<Loc<N, F>, F>, |
846 Cube<N, F>: P2Minimise<Loc<N, F>, F>, |