SOPT
Sparse OPTimisation
Public Types | Public Member Functions | Static Public Member Functions | List of all members
sopt::proximal::L1< SCALAR >::FistaMixing Class Reference

#include <l1_proximal.h>

Public Types

using Real = typename real_type< SCALAR >::type
 

Public Member Functions

 FistaMixing ()
 
template<typename T1 >
void operator() (Vector< SCALAR > &previous, Eigen::MatrixBase< T1 > const &unmixed, t_uint iter)
 

Static Public Member Functions

static Real next (Real t)
 

Detailed Description

template<typename SCALAR>
class sopt::proximal::L1< SCALAR >::FistaMixing

Definition at line 392 of file l1_proximal.h.

Member Typedef Documentation

◆ Real

template<typename SCALAR >
using sopt::proximal::L1< SCALAR >::FistaMixing::Real = typename real_type<SCALAR>::type

Definition at line 394 of file l1_proximal.h.

Constructor & Destructor Documentation

◆ FistaMixing()

template<typename SCALAR >
sopt::proximal::L1< SCALAR >::FistaMixing::FistaMixing ( )
inline

Definition at line 395 of file l1_proximal.h.

395 : t(1){};

Member Function Documentation

◆ next()

template<typename SCALAR >
static Real sopt::proximal::L1< SCALAR >::FistaMixing::next ( Real  t)
inlinestatic

Definition at line 409 of file l1_proximal.h.

409 { return 0.5 + 0.5 * std::sqrt(1e0 + 4e0 * t * t); }

Referenced by TEST_CASE().

◆ operator()()

template<typename SCALAR >
template<typename T1 >
void sopt::proximal::L1< SCALAR >::FistaMixing::operator() ( Vector< SCALAR > &  previous,
Eigen::MatrixBase< T1 > const &  unmixed,
t_uint  iter 
)
inline

Definition at line 397 of file l1_proximal.h.

397  {
398  // reset
399  if (iter == 0) {
400  previous = unmixed;
401  return;
402  }
403  if (iter <= 1) t = next(1);
404  auto const prior_t = t;
405  t = next(t);
406  auto const alpha = (prior_t - 1) / t;
407  previous = (1e0 + alpha) * unmixed.derived() - alpha * previous;
408  }
static Real next(Real t)
Definition: l1_proximal.h:409

The documentation for this class was generated from the following file: