File gaussian_accelerated_billiard_walk.hpp

struct GaussianAcceleratedBilliardWalk

Public Functions

inline GaussianAcceleratedBilliardWalk(double L)
inline GaussianAcceleratedBilliardWalk()

Public Members

parameters param
struct parameters

Public Functions

inline parameters(double L, bool set)

Public Members

double m_L
bool set_L
struct update_parameters

Public Functions

inline update_parameters()

Public Members

int facet_prev
bool hit_ball
double inner_vi_ak
double ball_inner_norm
double moved_dist
template<typename Polytope, typename RandomNumberGenerator, typename E_type = typename Polytope::DenseMT>
struct Walk

Public Types

typedef Polytope::PointType Point
typedef Polytope::MT MT
typedef Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> DenseMT
typedef Polytope::VT VT
typedef Point::FT NT
using AA_type = std::conditional_t<SPARSE, typename Eigen::SparseMatrix<NT>, DenseMT>
using AE_type = std::conditional_t<SPARSE && std::is_base_of<Eigen::SparseMatrixBase<E_type>, E_type>::value, typename Eigen::SparseMatrix<NT, Eigen::RowMajor>, DenseMT>

Public Functions

inline void computeLcov(const E_type E)
template<typename GenericPolytope>
inline Walk(GenericPolytope &P, Point const &p, E_type const &E, RandomNumberGenerator &rng)
template<typename GenericPolytope>
inline Walk(GenericPolytope &P, Point const &p, E_type const &E, RandomNumberGenerator &rng, parameters const &params)
template<typename GenericPolytope>
inline void apply(GenericPolytope &P, Point &p, unsigned int const &walk_length, RandomNumberGenerator &rng)

Public Static Attributes

static constexpr bool SPARSE = std::is_same_v<MT, Eigen::SparseMatrix<NT, Eigen::RowMajor>>

Private Functions

template<typename GenericPolytope>
inline void initialize(GenericPolytope &P, Point const &p, RandomNumberGenerator &rng)

Private Members

NT _L
Point _p
Point _v
NT _lambda_prev
AA_type _AA
E_type _L_cov
AE_type _AE
E_type _E
VT _AEA
unsigned int _rho
update_parameters _update_parameters
Point::Coeff _lambdas
Point::Coeff _Av
BoundaryOracleHeap<NT> _distances_set