| 124 |
124 |
| 125 impl<E, F, Domain> Conjugable<Domain, F> for NormMapping<F, E> |
125 impl<E, F, Domain> Conjugable<Domain, F> for NormMapping<F, E> |
| 126 where |
126 where |
| 127 E: HasDualExponent, |
127 E: HasDualExponent, |
| 128 F: Float, |
128 F: Float, |
| 129 Domain: HasDual<F> + Norm<F, E> + Normed<F>, |
129 Domain: HasDual<F> + Norm<E, F> + Normed<F>, |
| 130 <Domain as HasDual<F>>::DualSpace: Norm<F, E::DualExp>, |
130 <Domain as HasDual<F>>::DualSpace: Norm<E::DualExp, F>, |
| 131 { |
131 { |
| 132 type Conjugate<'a> |
132 type Conjugate<'a> |
| 133 = NormConstraint<F, E::DualExp> |
133 = NormConstraint<F, E::DualExp> |
| 134 where |
134 where |
| 135 Self: 'a; |
135 Self: 'a; |
| 145 impl<C, E, F, Domain> Conjugable<Domain, F> for Weighted<NormMapping<F, E>, C> |
145 impl<C, E, F, Domain> Conjugable<Domain, F> for Weighted<NormMapping<F, E>, C> |
| 146 where |
146 where |
| 147 C: Constant<Type = F>, |
147 C: Constant<Type = F>, |
| 148 E: HasDualExponent, |
148 E: HasDualExponent, |
| 149 F: Float, |
149 F: Float, |
| 150 Domain: HasDual<F> + Norm<F, E> + Space, |
150 Domain: HasDual<F> + Norm<E, F> + Space, |
| 151 <Domain as HasDual<F>>::DualSpace: Norm<F, E::DualExp>, |
151 <Domain as HasDual<F>>::DualSpace: Norm<E::DualExp, F>, |
| 152 { |
152 { |
| 153 type Conjugate<'a> |
153 type Conjugate<'a> |
| 154 = NormConstraint<F, E::DualExp> |
154 = NormConstraint<F, E::DualExp> |
| 155 where |
155 where |
| 156 Self: 'a; |
156 Self: 'a; |
| 163 } |
163 } |
| 164 } |
164 } |
| 165 |
165 |
| 166 impl<Domain, E, F> Prox<Domain> for NormConstraint<F, E> |
166 impl<Domain, E, F> Prox<Domain> for NormConstraint<F, E> |
| 167 where |
167 where |
| 168 Domain: Space + Norm<F, E>, |
168 Domain: Space + Norm<E, F>, |
| 169 E: NormExponent, |
169 E: NormExponent, |
| 170 F: Float, |
170 F: Float, |
| 171 NormProjection<F, E>: Mapping<Domain, Codomain = Domain>, |
171 NormProjection<F, E>: Mapping<Domain, Codomain = Domain>, |
| 172 { |
172 { |
| 173 type Prox<'a> |
173 type Prox<'a> |