#include <enumerate_base.h>

Data Structures

struct  opts
 

Public Member Functions

uint64_t get_nodes (const int level=-1) const
 
virtual ~EnumerationBase ()
 
template<bool dualenum, bool findsubsols, bool enable_reset>
FPLLL_BEGIN_NAMESPACE void enumerate_loop ()
 

Static Public Attributes

static const int maxdim = FPLLL_MAX_ENUM_DIM
 

Protected Member Functions

template<int kk, int kk_start, bool dualenum, bool findsubsols, bool enable_reset>
void enumerate_recursive (opts< kk, kk_start, dualenum, findsubsols, enable_reset >) ENUM_ALWAYS_INLINE
 
template<int kk_start, bool dualenum, bool findsubsols, bool enable_reset>
void enumerate_recursive (opts<-1, kk_start, dualenum, findsubsols, enable_reset >)
 
template<int kk, bool dualenum, bool findsubsols, bool enable_reset>
void enumerate_recursive_wrapper ()
 
template<bool dualenum, bool findsubsols, bool enable_reset>
void enumerate_recursive_dispatch (int kk)
 
template<bool dualenum, bool findsubsols, bool enable_reset>
void enumerate_loop ()
 
virtual void reset (enumf, int)=0
 
virtual void process_solution (enumf newmaxdist)=0
 
virtual void process_subsolution (int offset, enumf newdist)=0
 
void save_rounding ()
 
void restore_rounding ()
 
bool next_pos_up ()
 

Protected Attributes

bool dual
 
bool is_svp
 
bool resetflag
 
enumf mut [maxdim][maxdim]
 
array< enumf, maxdimrdiag
 
array< enumf, maxdimpartdistbounds
 
int d
 
int k_end
 
enumf center_partsums [maxdim][maxdim]
 
array< enumf, maxdimcenter_partsum
 
array< int, maxdimcenter_partsum_begin
 
array< enumf, maxdimpartdist
 
array< enumf, maxdimcenter
 
array< enumf, maxdimalpha
 
array< enumxt, maxdimx
 
array< enumxt, maxdimdx
 
array< enumxt, maxdimddx
 
array< enumf, maxdimsubsoldists
 
vector< int > _max_indices
 
int reset_depth
 
int k
 
int k_max
 
bool finished
 
array< uint64_t, FPLLL_EXTENUM_MAX_EXTENUM_DIMnodes
 
int rounding_backup
 

Constructor & Destructor Documentation

◆ ~EnumerationBase()

virtual EnumerationBase::~EnumerationBase ( )
inlinevirtual

Member Function Documentation

◆ enumerate_loop() [1/2]

template<bool dualenum, bool findsubsols, bool enable_reset>
template void EnumerationBase::enumerate_loop< true, true, false > ( )

◆ enumerate_loop() [2/2]

template<bool dualenum, bool findsubsols, bool enable_reset>
void EnumerationBase::enumerate_loop ( )
protected

◆ enumerate_recursive() [1/2]

template<int kk, int kk_start, bool dualenum, bool findsubsols, bool enable_reset>
void EnumerationBase::enumerate_recursive ( opts< kk, kk_start, dualenum, findsubsols, enable_reset >  )
inlineprotected

◆ enumerate_recursive() [2/2]

template<int kk_start, bool dualenum, bool findsubsols, bool enable_reset>
void EnumerationBase::enumerate_recursive ( opts<-1, kk_start, dualenum, findsubsols, enable_reset >  )
inlineprotected

◆ enumerate_recursive_dispatch()

template<bool dualenum, bool findsubsols, bool enable_reset>
void EnumerationBase::enumerate_recursive_dispatch ( int  kk)
inlineprotected

◆ enumerate_recursive_wrapper()

template<int kk, bool dualenum, bool findsubsols, bool enable_reset>
void EnumerationBase::enumerate_recursive_wrapper ( )
inlineprotected

◆ get_nodes()

uint64_t EnumerationBase::get_nodes ( const int  level = -1) const
inline

◆ next_pos_up()

bool EnumerationBase::next_pos_up ( )
inlineprotected

◆ process_solution()

virtual void EnumerationBase::process_solution ( enumf  newmaxdist)
protectedpure virtual

◆ process_subsolution()

virtual void EnumerationBase::process_subsolution ( int  offset,
enumf  newdist 
)
protectedpure virtual

◆ reset()

virtual void EnumerationBase::reset ( enumf  ,
int   
)
protectedpure virtual

◆ restore_rounding()

void EnumerationBase::restore_rounding ( )
inlineprotected

◆ save_rounding()

void EnumerationBase::save_rounding ( )
inlineprotected

Field Documentation

◆ _max_indices

vector<int> EnumerationBase::_max_indices
protected

◆ alpha

array<enumf, maxdim> EnumerationBase::alpha
protected

◆ center

array<enumf, maxdim> EnumerationBase::center
protected

◆ center_partsum

array<enumf, maxdim> EnumerationBase::center_partsum
protected

◆ center_partsum_begin

array<int, maxdim> EnumerationBase::center_partsum_begin
protected

◆ center_partsums

enumf EnumerationBase::center_partsums[maxdim][maxdim]
protected

◆ d

int EnumerationBase::d
protected

◆ ddx

array<enumxt, maxdim> EnumerationBase::ddx
protected

◆ dual

bool EnumerationBase::dual
protected

◆ dx

array<enumxt, maxdim> EnumerationBase::dx
protected

◆ finished

bool EnumerationBase::finished
protected

◆ is_svp

bool EnumerationBase::is_svp
protected

◆ k

int EnumerationBase::k
protected

◆ k_end

int EnumerationBase::k_end
protected

◆ k_max

int EnumerationBase::k_max
protected

◆ maxdim

const int EnumerationBase::maxdim = FPLLL_MAX_ENUM_DIM
static

◆ mut

enumf EnumerationBase::mut[maxdim][maxdim]
protected

◆ nodes

array<uint64_t, FPLLL_EXTENUM_MAX_EXTENUM_DIM> EnumerationBase::nodes
protected

◆ partdist

array<enumf, maxdim> EnumerationBase::partdist
protected

◆ partdistbounds

array<enumf, maxdim> EnumerationBase::partdistbounds
protected

◆ rdiag

array<enumf, maxdim> EnumerationBase::rdiag
protected

◆ reset_depth

int EnumerationBase::reset_depth
protected

◆ resetflag

bool EnumerationBase::resetflag
protected

◆ rounding_backup

int EnumerationBase::rounding_backup
protected

◆ subsoldists

array<enumf, maxdim> EnumerationBase::subsoldists
protected

◆ x

array<enumxt, maxdim> EnumerationBase::x
protected

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