proxsuite 0.6.7
The Advanced Proximal Optimization Toolbox
Loading...
Searching...
No Matches
views.hpp File Reference
#include <proxsuite/linalg/veg/type_traits/core.hpp>
#include <proxsuite/linalg/veg/util/dbg.hpp>
#include <cstring>
#include <type_traits>
#include <Eigen/Core>
Include dependency graph for views.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  proxsuite::proxqp::detail::Ret_< Ret_, Args >
 
struct  proxsuite::proxqp::detail::NoCopy
 
struct  proxsuite::proxqp::detail::Defer< Fn >
 
struct  proxsuite::proxqp::detail::nb::defer
 
struct  proxsuite::proxqp::detail::nb::max2
 
struct  proxsuite::proxqp::detail::nb::min2
 
struct  proxsuite::proxqp::detail::nb::max_list
 
struct  proxsuite::proxqp::detail::SetZeroImpl< T, bool >
 
struct  proxsuite::proxqp::detail::SetZeroImpl< T, true >
 
struct  proxsuite::proxqp::detail::ElementAccess< Layout::colmajor >
 
struct  proxsuite::proxqp::detail::ElementAccess< Layout::rowmajor >
 
struct  proxsuite::proxqp::detail::unlref< T >
 
struct  proxsuite::proxqp::detail::unlref< T & >
 
struct  proxsuite::proxqp::detail::DetectedImpl< Dummy, Fallback, F, Ts >
 
struct  proxsuite::proxqp::detail::DetectedImpl< Void< F< Ts... > >, Fallback, F, Ts... >
 
struct  proxsuite::proxqp::VectorView< T >
 
struct  proxsuite::proxqp::VectorViewMut< T >
 
struct  proxsuite::proxqp::StridedVectorView< T >
 
struct  proxsuite::proxqp::StridedVectorViewMut< T >
 
struct  proxsuite::proxqp::MatrixView< T, L >
 
struct  proxsuite::proxqp::MatrixViewMut< T, L >
 
struct  proxsuite::proxqp::LdltView< T >
 
struct  proxsuite::proxqp::LdltViewMut< T >
 
struct  proxsuite::proxqp::dense::EigenAllowAlloc
 
struct  proxsuite::proxqp::dense::QpView< T >
 
struct  proxsuite::proxqp::dense::QpViewBox< Scalar >
 
struct  proxsuite::proxqp::dense::QpViewMut< T >
 
struct  proxsuite::proxqp::dense::QpViewBoxMut< Scalar >
 
struct  proxsuite::proxqp::dense::nb::pow
 
struct  proxsuite::proxqp::dense::nb::infty_norm
 
struct  proxsuite::proxqp::dense::nb::sqrt
 
struct  proxsuite::proxqp::dense::nb::fabs
 

Namespaces

namespace  proxsuite
 
namespace  proxsuite::proxqp
 
namespace  proxsuite::proxqp::detail
 
namespace  proxsuite::proxqp::detail::nb
 
namespace  proxsuite::proxqp::eigen
 
namespace  proxsuite::proxqp::concepts
 
namespace  proxsuite::proxqp::concepts::aux
 
namespace  proxsuite::proxqp::tags
 
namespace  proxsuite::proxqp::dense
 
namespace  proxsuite::proxqp::dense::nb
 

Macros

#define LDLT_CONCEPT(...)    VEG_CONCEPT_MACRO(::proxsuite::proxqp::concepts, __VA_ARGS__)
 
#define LDLT_CHECK_CONCEPT(...)    VEG_CHECK_CONCEPT_MACRO(::proxqp::concepts, __VA_ARGS__)
 
#define LDLT_IMPL_GET_PARAM(Fn, Idx)
 
#define LDLT_IMPL_GET_PARAMS_0(NParams, ...)
 
#define LDLT_IMPL_GET_PARAMS_1(NParams, ...)
 
#define LDLT_IMPL_GET_PARAMS(NParams, ...)
 
#define LDLT_EXPLICIT_TPL_DEF(NParams, ...)
 
#define LDLT_EXPLICIT_TPL_DECL(NParams, ...)    extern LDLT_EXPLICIT_TPL_DEF(NParams, __VA_ARGS__)
 
#define LAZY_PRODUCT(a, b)   a.lazyProduct(b)
 

Typedefs

using proxsuite::proxqp::usize = decltype(sizeof(0))
 
using proxsuite::proxqp::f32 = float
 
using proxsuite::proxqp::f64 = double
 
template<typename... Ts>
using proxsuite::proxqp::detail::Void = void
 
template<typename Mat , typename T >
using proxsuite::proxqp::detail::DataExpr = decltype(static_cast<T*>(VEG_DECLVAL(Mat&).data()))
 
template<typename Fallback , template< typename... > class F, typename... Ts>
using proxsuite::proxqp::detail::Detected = typename DetectedImpl<void, Fallback, F, Ts...>::Type
 
template<typename T >
using proxsuite::proxqp::detail::CompTimeColsImpl
 
template<typename T >
using proxsuite::proxqp::detail::CompTimeRowsImpl
 
template<typename T >
using proxsuite::proxqp::detail::CompTimeInnerStrideImpl
 
template<typename T >
using proxsuite::proxqp::detail::LayoutImpl
 
template<typename T , Layout L>
using proxsuite::proxqp::detail::EigenMatMap
 
template<typename T , Layout L>
using proxsuite::proxqp::detail::EigenMatMapMut
 
template<typename T , typename Stride >
using proxsuite::proxqp::detail::EigenVecMap
 
template<typename T , typename Stride >
using proxsuite::proxqp::detail::EigenVecMapMut
 
template<typename T , Layout L>
using proxsuite::proxqp::detail::ColToVec = EigenVecMap<T, typename ElementAccess<L>::NextRowStride>
 
template<typename T , Layout L>
using proxsuite::proxqp::detail::RowToVec = EigenVecMap<T, typename ElementAccess<L>::NextColStride>
 
template<typename T , Layout L>
using proxsuite::proxqp::detail::ColToVecMut = EigenVecMapMut<T, typename ElementAccess<L>::NextRowStride>
 
template<typename T , Layout L>
using proxsuite::proxqp::detail::RowToVecMut = EigenVecMapMut<T, typename ElementAccess<L>::NextColStride>
 
template<typename T >
using proxsuite::proxqp::detail::VecMap = EigenVecMap<T, Eigen::Stride<0, 0>>
 
template<typename T >
using proxsuite::proxqp::detail::VecMapMut = EigenVecMapMut<T, Eigen::Stride<0, 0>>
 
template<typename T >
using proxsuite::proxqp::unref = typename detail::unlref<T&>::Type
 
template<typename T >
using proxsuite::proxqp::eigen::CompTimeCols
 
template<typename T >
using proxsuite::proxqp::eigen::CompTimeRows
 
template<typename T >
using proxsuite::proxqp::eigen::CompTimeInnerStride
 
template<typename T >
using proxsuite::proxqp::eigen::GetLayout
 

Enumerations

enum struct  proxsuite::proxqp::Layout : unsigned char { proxsuite::proxqp::colmajor = 0 , proxsuite::proxqp::rowmajor = 1 }
 

Functions

template<typename T >
constexpr auto proxsuite::proxqp::detail::min_list_impl (T init, T const *arr, usize n) noexcept -> T
 
template<typename T , usize N>
constexpr auto proxsuite::proxqp::detail::cx_min_list (T const (&arr)[N]) noexcept -> T
 
 proxsuite::proxqp::detail::VEG_NIEBLOID (defer)
 
 proxsuite::proxqp::detail::VEG_NIEBLOID (max2)
 
 proxsuite::proxqp::detail::VEG_NIEBLOID (min2)
 
 proxsuite::proxqp::detail::VEG_NIEBLOID (max_list)
 
template<typename T >
void proxsuite::proxqp::detail::set_zero (T *dest, usize n)
 
constexpr auto proxsuite::proxqp::detail::round_up (isize n, isize k) noexcept -> isize
 
constexpr auto proxsuite::proxqp::detail::uround_up (usize n, usize k) noexcept -> usize
 
auto proxsuite::proxqp::detail::bytes_to_prev_aligned (void *ptr, usize align) noexcept -> isize
 
auto proxsuite::proxqp::detail::bytes_to_next_aligned (void *ptr, usize align) noexcept -> isize
 
auto proxsuite::proxqp::detail::next_aligned (void *ptr, usize align) noexcept -> void *
 
auto proxsuite::proxqp::detail::prev_aligned (void *ptr, usize align) noexcept -> void *
 
constexpr auto proxsuite::proxqp::flip_layout (Layout l) noexcept -> Layout
 
constexpr auto proxsuite::proxqp::to_eigen_layout (Layout l) -> int
 
constexpr auto proxsuite::proxqp::from_eigen_layout (int l) -> Layout
 
template<typename T >
auto proxsuite::proxqp::detail::is_eigen_matrix_base_impl (Eigen::MatrixBase< T > const volatile *) -> proxsuite::linalg::veg::meta::true_type
 
auto proxsuite::proxqp::detail::is_eigen_matrix_base_impl (void const volatile *) -> proxsuite::linalg::veg::meta::false_type
 
template<typename T >
auto proxsuite::proxqp::detail::is_eigen_owning_matrix_base_impl (Eigen::PlainObjectBase< T > const volatile *) -> proxsuite::linalg::veg::meta::true_type
 
auto proxsuite::proxqp::detail::is_eigen_owning_matrix_base_impl (void const volatile *) -> proxsuite::linalg::veg::meta::false_type
 
 proxsuite::proxqp::concepts::VEG_DEF_CONCEPT (typename T, rvalue_ref, std::is_rvalue_reference< T >::value)
 
 proxsuite::proxqp::concepts::VEG_DEF_CONCEPT (typename T, lvalue_ref, std::is_lvalue_reference< T >::value)
 
 proxsuite::proxqp::concepts::VEG_DEF_CONCEPT ((template< typename... > class F, typename... Ts), detected, detail::DetectedImpl< void, void, F, Ts... >::value)
 
 proxsuite::proxqp::concepts::aux::VEG_DEF_CONCEPT ((typename Mat, typename T), has_data_expr, LDLT_CONCEPT(detected< detail::DataExpr, Mat, T >))
 
 proxsuite::proxqp::concepts::aux::VEG_DEF_CONCEPT ((typename Mat), matrix_base, decltype(detail::is_eigen_matrix_base_impl(static_cast< Mat * >(nullptr)))::value)
 
 proxsuite::proxqp::concepts::aux::VEG_DEF_CONCEPT ((typename Mat), is_plain_object_base, decltype(detail::is_eigen_owning_matrix_base_impl(static_cast< Mat * >(nullptr)))::value)
 
 proxsuite::proxqp::concepts::aux::VEG_DEF_CONCEPT ((typename Mat), tmp_matrix,(LDLT_CONCEPT(aux::is_plain_object_base< unref< Mat > >) &&!LDLT_CONCEPT(lvalue_ref< Mat >)))
 
 proxsuite::proxqp::concepts::VEG_DEF_CONCEPT ((typename Mat, typename T), eigen_view,(LDLT_CONCEPT(aux::matrix_base< unref< Mat > >) &&LDLT_CONCEPT(aux::has_data_expr< Mat, T const >)))
 
 proxsuite::proxqp::concepts::VEG_DEF_CONCEPT ((typename Mat, typename T), eigen_view_mut,(LDLT_CONCEPT(aux::matrix_base< unref< Mat > >) &&LDLT_CONCEPT(aux::has_data_expr< Mat, T >) &&!LDLT_CONCEPT(aux::tmp_matrix< Mat >)))
 
 proxsuite::proxqp::concepts::VEG_DEF_CONCEPT ((typename Mat, typename T), eigen_strided_vector_view,(LDLT_CONCEPT(eigen_view< Mat, T >) &&(eigen::CompTimeCols< unref< Mat > >::value==1)))
 
 proxsuite::proxqp::concepts::VEG_DEF_CONCEPT ((typename Mat, typename T), eigen_strided_vector_view_mut,(LDLT_CONCEPT(eigen_view_mut< Mat, T >) &&(eigen::CompTimeCols< unref< Mat > >::value==1)))
 
 proxsuite::proxqp::concepts::VEG_DEF_CONCEPT ((typename Mat, typename T), eigen_vector_view,(LDLT_CONCEPT(eigen_strided_vector_view< Mat, T >) &&(eigen::CompTimeInnerStride< unref< Mat > >::value==1)))
 
 proxsuite::proxqp::concepts::VEG_DEF_CONCEPT ((typename Mat, typename T), eigen_vector_view_mut,(LDLT_CONCEPT(eigen_strided_vector_view_mut< Mat, T >) &&(eigen::CompTimeInnerStride< unref< Mat > >::value==1)))
 
 proxsuite::proxqp::tags::VEG_TAG (from_ptr_size, FromPtrSize)
 
 proxsuite::proxqp::tags::VEG_TAG (from_ptr_size_stride, FromPtrSizeStride)
 
 proxsuite::proxqp::tags::VEG_TAG (from_ptr_rows_cols_stride, FromPtrRowsColsStride)
 
 proxsuite::proxqp::tags::VEG_TAG (from_eigen, FromEigen)
 
template<typename T >
void proxsuite::proxqp::detail::noalias_mul_add (MatrixViewMut< T, colmajor > dst, MatrixView< T, colmajor > lhs, MatrixView< T, colmajor > rhs, T factor)
 
template<typename T >
void proxsuite::proxqp::detail::noalias_mul_add_vec (VectorViewMut< T > dst, MatrixView< T, colmajor > lhs, VectorView< T > rhs, T factor)
 
template<typename T >
auto proxsuite::proxqp::detail::dot (StridedVectorView< T > lhs, VectorView< T > rhs) -> T
 
template<typename T >
void proxsuite::proxqp::detail::assign_cwise_prod (VectorViewMut< T > out, StridedVectorView< T > lhs, StridedVectorView< T > rhs)
 
template<typename T >
void proxsuite::proxqp::detail::assign_scalar_prod (VectorViewMut< T > out, T factor, VectorView< T > in)
 
template<typename T >
void proxsuite::proxqp::detail::trans_tr_unit_up_solve_in_place_on_right (MatrixView< T, colmajor > tr, MatrixViewMut< T, colmajor > rhs)
 
template<typename T >
void proxsuite::proxqp::detail::apply_diag_inv_on_right (MatrixViewMut< T, colmajor > out, StridedVectorView< T > d, MatrixView< T, colmajor > in)
 
template<typename T >
void proxsuite::proxqp::detail::apply_diag_on_right (MatrixViewMut< T, colmajor > out, StridedVectorView< T > d, MatrixView< T, colmajor > in)
 
template<typename T >
void proxsuite::proxqp::detail::noalias_mul_sub_tr_lo (MatrixViewMut< T, colmajor > out, MatrixView< T, colmajor > lhs, MatrixView< T, rowmajor > rhs)
 
 proxsuite::proxqp::dense::VEG_NIEBLOID (fabs)
 
 proxsuite::proxqp::dense::VEG_NIEBLOID (sqrt)
 
 proxsuite::proxqp::dense::VEG_NIEBLOID (pow)
 
 proxsuite::proxqp::dense::VEG_NIEBLOID (infty_norm)
 

Variables

constexpr Layout proxsuite::proxqp::colmajor = Layout::colmajor
 
constexpr Layout proxsuite::proxqp::rowmajor = Layout::rowmajor
 

Macro Definition Documentation

◆ LDLT_CONCEPT

#define LDLT_CONCEPT ( ...)     VEG_CONCEPT_MACRO(::proxsuite::proxqp::concepts, __VA_ARGS__)

Definition at line 16 of file views.hpp.

◆ LDLT_CHECK_CONCEPT

#define LDLT_CHECK_CONCEPT ( ...)     VEG_CHECK_CONCEPT_MACRO(::proxqp::concepts, __VA_ARGS__)

Definition at line 18 of file views.hpp.

◆ LDLT_IMPL_GET_PARAM

#define LDLT_IMPL_GET_PARAM ( Fn,
Idx )
Value:
typename ::proxsuite::proxqp::detail::FnInfo< \
decltype Fn /* NOLINT */>::template Arg<(Idx)>,

Definition at line 37 of file views.hpp.

◆ LDLT_IMPL_GET_PARAMS_0

#define LDLT_IMPL_GET_PARAMS_0 ( NParams,
... )
Value:
(__VA_ARGS__), \
#define LDLT_IMPL_GET_PARAM(Fn, Idx)
Definition views.hpp:37
#define __VEG_PP_MAKE_TUPLE(N)
#define __VEG_IMPL_PP_DEC(X)
#define __VEG_PP_TUPLE_FOR_EACH(Macro, Data, Tuple)

Definition at line 41 of file views.hpp.

◆ LDLT_IMPL_GET_PARAMS_1

#define LDLT_IMPL_GET_PARAMS_1 ( NParams,
... )

Definition at line 46 of file views.hpp.

◆ LDLT_IMPL_GET_PARAMS

#define LDLT_IMPL_GET_PARAMS ( NParams,
... )
Value:
__VEG_PP_CAT2(LDLT_IMPL_GET_PARAMS_, __VEG_IMPL_PP_IS_1(NParams)) \
(NParams, __VA_ARGS__)
#define __VEG_IMPL_PP_IS_1(X)
#define __VEG_PP_CAT2(A,...)

Definition at line 48 of file views.hpp.

◆ LDLT_EXPLICIT_TPL_DEF

#define LDLT_EXPLICIT_TPL_DEF ( NParams,
... )
Value:
template auto __VA_ARGS__( \
LDLT_IMPL_GET_PARAMS(NParams, __VA_ARGS__) \
typename ::proxsuite::proxqp::detail::FnInfo< \
decltype(__VA_ARGS__)>::template Arg<(NParams) - 1>) -> \
typename ::proxsuite::proxqp::detail::FnInfo<decltype(__VA_ARGS__)>::Ret
#define LDLT_IMPL_GET_PARAMS(NParams,...)
Definition views.hpp:48

Definition at line 52 of file views.hpp.

◆ LDLT_EXPLICIT_TPL_DECL

#define LDLT_EXPLICIT_TPL_DECL ( NParams,
... )    extern LDLT_EXPLICIT_TPL_DEF(NParams, __VA_ARGS__)

Definition at line 58 of file views.hpp.

◆ LAZY_PRODUCT

#define LAZY_PRODUCT ( a,
b )   a.lazyProduct(b)