File ProductBarrier.h

template<typename IPMDouble>
class ProductBarrier : public LHSCB<IPMDouble>

Public Functions

inline ProductBarrier(unsigned num_threads = 1)
inline ProductBarrier(std::vector<LHSCB<IPMDouble>*> barriers_, std::vector<unsigned> num_variables_, unsigned num_threads = 1)
template<typename T>
inline ProductBarrier<T> *cast()
inline void add_barrier(LHSCB<IPMDouble> *lhscb)
virtual Vector gradient(Vector x) override
virtual Matrix hessian(Vector x) override
virtual bool in_interior(Vector x) override
virtual IPMDouble concordance_parameter(Vector x) override
virtual Vector initialize_x() override
virtual Vector initialize_s() override
virtual Eigen::LLT<Matrix> llt(Vector x, bool symmetrize = 0) override
virtual Matrix llt_solve(Vector x, const Matrix &rhs) override
virtual Vector llt_L_solve(Vector x, Vector rhs) override
virtual Matrix inverse_hessian(Vector x) override
void update_segments()
inline std::vector<std::pair<int, int>> &get_segments()
Vector evaluate(Vector x, VectorFunc func)
Matrix evaluate(Vector x, MatrixFunc func)
Vector evaluate(VoidFunc func)
inline std::vector<LHSCB<IPMDouble>*> &get_barriers()

Public Members

std::vector<LHSCB<IPMDouble>*> _barriers
std::vector<std::pair<int, int>> _segments
std::vector<unsigned> _num_vars_per_barrier
unsigned _num_threads

Private Types

typedef Vector<IPMDouble> Vector
typedef Matrix<IPMDouble> Matrix
typedef Vector (LHSCB<IPMDouble>::* VectorFunc)(Vector)
typedef Matrix (LHSCB<IPMDouble>::* MatrixFunc)(Vector)
typedef Vector (LHSCB<IPMDouble>::* VoidFunc)()