File sparse_uniform_billiard_walk.hpp

struct SparseBilliardWalk

Public Functions

inline SparseBilliardWalk(double L)
inline SparseBilliardWalk()

Public Members

parameters param
struct parameters

Public Functions

inline parameters(double L = 0, bool set = false)

Public Members

double m_L
bool set_L
template<typename Polytope, typename RandomNumberGenerator>
struct Walk

Public Types

typedef Polytope::PointType Point
typedef Point::FT NT
typedef Point::Coeff VT
typedef Eigen::SparseMatrix<NT, Eigen::ColMajor> SparseMT
typedef Eigen::SparseMatrix<NT, Eigen::RowMajor> SparseRowMT
typedef Eigen::Matrix<NT, Eigen::Dynamic, Eigen::Dynamic> MT

Public Functions

template<typename GenericPolytope>
inline Walk(GenericPolytope &P, const Point &p, RandomNumberGenerator &rng, parameters const &user_params, const SparseMT &Hessian)
template<typename GenericPolytope>
inline void apply(GenericPolytope &P, Point &p, unsigned int const &walk_length, RandomNumberGenerator &rng)

Public Members

SparseRowMT _A_original

Private Functions

inline void compute_cholesky_and_transformations(const SparseMT &H)
template<typename GenericPolytope>
inline void initialize(GenericPolytope &P, const Point &p_rounded, RandomNumberGenerator &rng)

Private Members

VT _b
SparseMT _L_inv
NT _Len
Point _p
Point _v
VT _Ar
VT _Av
NT _lambda_prev
std::optional<OracleParams> _oracle_params
struct OracleParams

Public Functions

inline OracleParams(const SparseMT &L, const SparseRowMT &A, const VT &b)
inline const VT &get_normalized_A_rounded_row(int facet) const
inline NT get_b_rounded(int facet) const

Public Members

const SparseMT &L_inv
const SparseRowMT &A_original
const VT &b_original
mutable std::vector<VT> A_rounded_rows
mutable std::vector<NT> row_norms
mutable std::vector<bool> computed
mutable std::vector<NT> b_rounded
NT inner_vi_ak = NT(0)
int facet_prev = -1