proxsuite 0.7.2
The Advanced Proximal Optimization Toolbox
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Loading...
Searching...
No Matches
solve.hpp
Go to the documentation of this file.
1
2//
3// Copyright (c) 2022 INRIA
4//
5#ifndef PROXSUITE_LINALG_DENSE_LDLT_SOLVE_HPP
6#define PROXSUITE_LINALG_DENSE_LDLT_SOLVE_HPP
7
9#include <Eigen/Core>
10
11namespace proxsuite {
12namespace linalg {
13namespace dense {
14namespace _detail {
15template<typename Mat, typename Rhs>
16void
17solve_impl(Mat ld, Rhs rhs)
18{
19 auto l = ld.template triangularView<Eigen::UnitLower>();
20 auto lt = util::trans(ld).template triangularView<Eigen::UnitUpper>();
21 auto d = util::diagonal(ld);
22
23 l.solveInPlace(rhs);
24 rhs = rhs.cwiseQuotient(d);
25 lt.solveInPlace(rhs);
26}
27} // namespace _detail
28template<typename Mat, typename Rhs>
29void
30solve(Mat const& mat, Rhs&& rhs)
31{
33}
34} // namespace dense
35} // namespace linalg
36} // namespace proxsuite
37
38#endif /* end of include guard PROXSUITE_LINALG_DENSE_LDLT_SOLVE_HPP */
void solve_impl(Mat ld, Rhs rhs)
Definition solve.hpp:17
auto trans(Mat &&mat) noexcept -> Eigen::Map< _detail::const_if< _detail::ptr_is_const< decltype(mat.data())>::value, Eigen::Matrix< typename proxsuite::linalg::veg::uncvref_t< Mat >::Scalar, proxsuite::linalg::veg::uncvref_t< Mat >::ColsAtCompileTime, proxsuite::linalg::veg::uncvref_t< Mat >::RowsAtCompileTime, bool(proxsuite::linalg::veg::uncvref_t< Mat >::IsRowMajor) ? Eigen::ColMajor :Eigen::RowMajor > >, Eigen::Unaligned, _detail::StrideOf< proxsuite::linalg::veg::uncvref_t< Mat > > >
Definition core.hpp:594
auto to_view_dyn_rows(Mat &&mat) noexcept -> Eigen::Map< _detail::const_if< _detail::ptr_is_const< decltype(mat.data())>::value, _detail::OwnedRows< proxsuite::linalg::veg::uncvref_t< Mat > > >, Eigen::Unaligned, _detail::StrideOf< proxsuite::linalg::veg::uncvref_t< Mat > > >
Definition core.hpp:683
auto diagonal(Mat &&mat) noexcept -> Eigen::Map< _detail::const_if< _detail::ptr_is_const< decltype(mat.data())>::value, Eigen::Matrix< typename proxsuite::linalg::veg::uncvref_t< Mat >::Scalar, Eigen::Dynamic, 1, Eigen::ColMajor > >, Eigen::Unaligned, Eigen::InnerStride< Eigen::Dynamic > >
Definition core.hpp:619
auto to_view(Mat &&mat) noexcept -> Eigen::Map< _detail::const_if< _detail::ptr_is_const< decltype(mat.data())>::value, _detail::OwnedAll< proxsuite::linalg::veg::uncvref_t< Mat > > >, Eigen::Unaligned, _detail::StrideOf< proxsuite::linalg::veg::uncvref_t< Mat > > >
Definition core.hpp:664
void solve(Mat const &mat, Rhs &&rhs)
Definition solve.hpp:30