| 136 A: BasicCurvatureBoundEstimates<F>, |
136 A: BasicCurvatureBoundEstimates<F>, |
| 137 { |
137 { |
| 138 fn curvature_bound_components( |
138 fn curvature_bound_components( |
| 139 &self, |
139 &self, |
| 140 guess: BoundedCurvatureGuess, |
140 guess: BoundedCurvatureGuess, |
| 141 ) -> (DynResult<F>, DynResult<F>) { |
141 ) -> (DynResult<F>, DynResult<F>, DynResult<F>) { |
| 142 match guess { |
142 match guess { |
| 143 BetterThanZero => { |
143 BetterThanZero => { |
| 144 let opA = &self.operator().0; |
144 let opA = &self.operator().0; |
| 145 let b = self.data(); |
145 let b = self.data(); |
| 146 let (ℓ_F0, θ2) = opA.basic_curvature_bound_components(); |
146 let (ℓ_F, ℓ_gradv_0, θ2) = opA.basic_curvature_bound_components(); |
| 147 (ℓ_F0.map(|l| l * b.norm2()), θ2) |
147 (ℓ_F, ℓ_gradv_0.map(|l| l * b.norm2()), θ2) |
| 148 } |
148 } |
| 149 } |
149 } |
| 150 } |
150 } |
| 151 } |
151 } |