src/convex.rs

branch
dev
changeset 132
89371dc4d637
parent 129
d2994e34a5f5
child 146
3f9a03f95457
equal deleted inserted replaced
130:0a689881b0f1 132:89371dc4d637
399 } 399 }
400 400
401 impl<X, F> Prox<X> for Norm222<F> 401 impl<X, F> Prox<X> for Norm222<F>
402 where 402 where
403 F: Float, 403 F: Float,
404 X: Euclidean<F, Output = X>, 404 X: Euclidean<F, Owned = X>,
405 { 405 {
406 type Prox<'a> 406 type Prox<'a>
407 = Scaled<F> 407 = Scaled<F>
408 where 408 where
409 Self: 'a; 409 Self: 'a;
414 } 414 }
415 415
416 impl<X, F> DifferentiableImpl<X> for Norm222<F> 416 impl<X, F> DifferentiableImpl<X> for Norm222<F>
417 where 417 where
418 F: Float, 418 F: Float,
419 X: Euclidean<F, Output = X>, 419 X: Euclidean<F, Owned = X>,
420 { 420 {
421 type Derivative = X; 421 type Derivative = X;
422 422
423 fn differential_impl<I: Instance<X>>(&self, x: I) -> X { 423 fn differential_impl<I: Instance<X>>(&self, x: I) -> X {
424 x.own() 424 x.own()
426 } 426 }
427 427
428 impl<X, F> LipschitzDifferentiableImpl<X, L2> for Norm222<F> 428 impl<X, F> LipschitzDifferentiableImpl<X, L2> for Norm222<F>
429 where 429 where
430 F: Float, 430 F: Float,
431 X: Euclidean<F, Output = X>, 431 X: Euclidean<F, Owned = X>,
432 { 432 {
433 type FloatType = F; 433 type FloatType = F;
434 434
435 fn diff_lipschitz_factor(&self, _: L2) -> DynResult<Self::FloatType> { 435 fn diff_lipschitz_factor(&self, _: L2) -> DynResult<Self::FloatType> {
436 Ok(F::ONE) 436 Ok(F::ONE)

mercurial