akreon-convex
Typed convex modeling, conic canonicalization, and primal-dual optimization in C++26.
Loading...
Searching...
No Matches
convex Namespace Reference

Namespaces

namespace  debug
 

Classes

struct  Abs
 forward declaration - abs fn More...
 
struct  AffineSubspace
 forward declaration of affine subspace More...
 
struct  Atom
 CRTP base for convex atoms. More...
 
struct  atom_traits
 Base atom traits. More...
 
struct  atom_traits< Abs< Meta, Child > >
 
struct  atom_traits< AffineSubspace< Meta, Child > >
 
struct  atom_traits< Atom< Meta, Child > >
 
struct  atom_traits< ConvexSet< Meta, Derived, Child > >
 
struct  atom_traits< Ellipsoid< Meta, Child > >
 
struct  atom_traits< Exp< Meta, Child > >
 
struct  atom_traits< GeoMean< Meta, Child > >
 
struct  atom_traits< Halfspace< Meta, Child, HType > >
 
struct  atom_traits< HarmonicMean< Meta, Child > >
 
struct  atom_traits< Huber< Meta, Child > >
 
struct  atom_traits< Hyperplane< Meta, Child > >
 
struct  atom_traits< Intersection< IntersectionMeta< Space >, Cs... > >
 type traits for intersection More...
 
struct  atom_traits< InvPos< Meta, Child > >
 
struct  atom_traits< KLDivergence< Meta, Child > >
 
struct  atom_traits< LMI< Meta, Child, Mat > >
 
struct  atom_traits< Log< Meta, Child > >
 
struct  atom_traits< LogSumExp< Meta, Child > >
 
struct  atom_traits< Max< Meta, Child > >
 
struct  atom_traits< Norm< Meta, Child, NormFunc > >
 
struct  atom_traits< NormBall< Meta, Child, BType > >
 
struct  atom_traits< Polyhedron< Meta, Child > >
 
struct  atom_traits< ScalarView< Meta, Child > >
 
struct  atom_traits< Softplus< Meta, Child > >
 
struct  atom_traits< Sqrt< Meta, Child > >
 
struct  atom_traits< Square< Meta, Child > >
 
struct  atom_traits< Sum< SumMeta< Dom, Codom >, Cs... > >
 type traits for sum More...
 
struct  atom_traits< Variable< Meta > >
 
struct  canonical_cone_kind
 
struct  canonical_cone_kind< conic::ExpCone< Vec > >
 
struct  canonical_cone_kind< conic::NonnegOrthantCone< Vec > >
 
struct  canonical_cone_kind< conic::PositiveSemidefiniteCone< Vec, Dim > >
 
struct  canonical_cone_kind< conic::PowerCone< Vec > >
 
struct  canonical_cone_kind< conic::SecondOrderCone< Vec > >
 
struct  canonical_trace_traits
 
struct  canonical_trace_traits< CanonicalTrace< NodeTuple, ConeTuple, EqualityTuple > >
 
struct  CanonicalConeRecord
 Cone slice emitted by one canonical trace node. More...
 
struct  CanonicalEqualityRecord
 Equality-row slice emitted by one canonical trace node. More...
 
struct  CanonicalNodeRecord
 Structural atom emitted during canonicalization. More...
 
struct  CanonicalTrace
 Compile-time canonicalization trace. More...
 
struct  ConeStepTrace
 Per-cone scalar diagnostics for one predictor or corrector pass. More...
 
struct  ConvexAtomMeta
 Atom metadata bundling domain, codomain, and curvature. More...
 
struct  ConvexDomain
 Domain wrapper with a static sign label. More...
 
struct  ConvexProblem
 ConvexProblem. More...
 
struct  ConvexSet
 forward declaration of convex set More...
 
struct  dom_traits
 Base domain traits. More...
 
struct  dom_traits< ConvexDomain< SpaceIn, Sign > >
 
struct  Ellipsoid
 forward declaration of ellipsoid set More...
 
struct  EmptyPdIpmSnapshot
 Empty object used when full snapshot tracing is disabled. More...
 
struct  EmptySolverTrace
 Empty solver trace for users/builds that only want the final result. More...
 
struct  Exp
 forward declaration - exp fn More...
 
struct  GeoMean
 forward declaration - geo mean fn More...
 
struct  Halfspace
 forward declaration of halfspace More...
 
struct  HarmonicMean
 forward declaration - harmonic mean fn More...
 
struct  Huber
 forward declaration - huber More...
 
struct  Hyperplane
 forward declaration of hyperplane More...
 
struct  Inequality
 forward declaration of inequality More...
 
struct  Intersection
 forward declaration of set intersection operator. More...
 
struct  InvPos
 forward declaration - inv pos fn More...
 
struct  KLDivergence
 forward declaration - kl divergence More...
 
struct  LMI
 forward declaration of LMI type More...
 
struct  Log
 forward declaration - log fn More...
 
struct  LogSumExp
 forward declaration - log sum exp fn More...
 
struct  Max
 forward declaration - max fn More...
 
struct  meta_traits
 Base metadata traits. More...
 
struct  meta_traits< ConvexAtomMeta< Dom, Codom, Curv > >
 
struct  NewtonStep
 Newton step bundle for the primal-dual interior-point iterate. More...
 
struct  NoEqualityCoupling
 No equality-coupling case for empty A. More...
 
struct  Norm
 forward declaration - norm fn More...
 
struct  NormBall
 forward declaration of norm ball set More...
 
struct  PdIpmConeSnapshot
 Cone snap shot at current iterate. More...
 
struct  PdIpmFullIterSnapshot
 Optional full debug snapshot for one PD-IPM iteration. More...
 
struct  PdIpmGlobalStepSnapshot
 Global snap shot at current iterate. More...
 
struct  PdIpmIterTrace
 Outer PD-IPM iteration diagnostics. More...
 
struct  PdIpmStepTrace
 Predictor or corrector cone diagnostics for one outer iteration. More...
 
struct  PdIpmTrace
 Fixed-capacity PD-IPM trace. More...
 
struct  Polyhedron
 forward declaration of polyhedron set More...
 
struct  PredictorCorrector
 Predictor Corrector. More...
 
struct  PrimalDualIPM
 Primal Dual Interior Point Method Solver. More...
 
struct  PrimalDualIterate
 PrimalDualIterate. More...
 
struct  PrimalDualResult
 Final primal-dual solve result plus optional structural and iteration traces. More...
 
struct  prob_traits
 problem type traits More...
 
struct  prob_traits< ConvexProblem< Builder, Stage > >
 problem type traits More...
 
struct  QuadForm
 QuadForm. More...
 
struct  ResidualState
 Residual state bundle for a PD-IPM iterate. More...
 
struct  ScalarEqualityCoupling
 Scalar Schur complement wrapper for 1x1 equality case. More...
 
struct  ScalarQuadForm
 ScalarQuadForm. More...
 
struct  ScalarView
 
struct  SchurEqualityCoupling
 Equality-coupling wrapper for Schur-complement based solve. More...
 
struct  Softplus
 forward declaration - softplus fn More...
 
struct  Sqrt
 forward declaration - log sum exp fn More...
 
struct  Square
 forward declaration - square fn More...
 
struct  Sum
 forward declaration - sum op More...
 
struct  Trace
 Trace objective. More...
 
struct  TraceWeights
 Forward decl of trace weights. More...
 
struct  TraceWeights< linalg::SymmetricMatrix< Mat > >
 TraceWeights for symmetric square matrix. More...
 
struct  TraceWeights< Mat >
 TraceWeights for non symmetric square matrix. More...
 
struct  Variable
 variable atom More...
 
struct  WeightedSum
 weighted sum (AKA Dot) More...
 

Concepts

concept  ProblemLike
 ProblemLike Concept.
 
concept  AtomLike
 Concept for any convex atom node in the expression tree.
 

Typedefs

using EmptyCanonicalTrace = CanonicalTrace<>
 
template<typename Trace >
using canonical_trace_nodes_t = typename canonical_trace_traits< linalg::remove_cvref_t< Trace > >::Nodes
 
template<typename Trace >
using canonical_trace_cones_t = typename canonical_trace_traits< linalg::remove_cvref_t< Trace > >::Cones
 
template<typename Trace >
using canonical_trace_equalities_t = typename canonical_trace_traits< linalg::remove_cvref_t< Trace > >::Equalities
 
template<typename T >
using LiftedVarMat = linalg::RowVector< T, 1 >
 alias for lifted var map
 
template<typename T >
using LiftedVarBias = linalg::Vector< T, 1 >
 alias for lifted var map
 
template<typename Dom >
using dom_space_t = typename dom_traits< linalg::remove_cvref_t< Dom > >::Space
 
template<typename Dom >
using dom_type_t = typename dom_traits< linalg::remove_cvref_t< Dom > >::T
 
template<typename Dom >
using dom_point_t = typename dom_traits< linalg::remove_cvref_t< Dom > >::Point
 
template<typename Meta >
using meta_dom_t = typename meta_traits< linalg::remove_cvref_t< Meta > >::Domain
 
template<typename Meta >
using meta_codom_t = typename meta_traits< linalg::remove_cvref_t< Meta > >::Codomain
 
template<typename Prob >
using prob_builder_t = typename prob_traits< linalg::remove_cvref_t< Prob > >::BuilderT
 builder type from prob
 
template<linalg::RnSpace Dom>
using SumDom = ConvexDomain< Dom, VarType::FREE >
 Domain alias for sum atom.
 
template<linalg::RnSpace Codom>
using SumCodom = ConvexDomain< Codom, VarType::FREE >
 Codomain alias for sum atom (scalar).
 
template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using SumMeta = ConvexAtomMeta< SumDom< Dom >, SumCodom< Codom >, CurvatureType::AFFINE >
 Meta alias for sum atom.
 
template<linalg::RnSpace Space>
using IntersectionDom = ConvexDomain< Space, VarType::FREE >
 Domain alias for intersection atom.
 
template<linalg::RnSpace Space>
using IntersectionCodom = IntersectionDom< Space >
 Codomain alias for intersection atom.
 
template<linalg::RnSpace Space>
using IntersectionMeta = ConvexAtomMeta< IntersectionDom< Space >, IntersectionCodom< Space >, CurvatureType::CONVEX >
 Meta alias for intersection atom.
 
template<typename T >
using atom_decay_t = linalg::remove_cvref_t< T >
 normalize atom-facing types to a stable internal form.
 
template<AtomLike Atom>
using atom_meta_t = typename atom_traits< atom_decay_t< Atom > >::ConvexMeta
 Extract metadata type from atom.
 
template<linalg::RnSpace Space>
using AbsDom = ConvexDomain< Space, VarType::FREE >
 alias for domain on abs function
 
template<linalg::RnSpace Space>
using AbsCodom = ConvexDomain< Space, VarType::NONNEG >
 alias for codomain on abs function
 
template<linalg::RnSpace Space>
using AbsConcaveCodom = ConvexDomain< Space, VarType::NONPOS >
 alias for concave codomain on abs function
 
template<linalg::RnSpace Space>
using AbsMeta = ConvexAtomMeta< AbsDom< Space >, AbsCodom< Space >, CurvatureType::CONVEX >
 alias for meta for abs function
 
template<linalg::RnSpace Space>
using AbsConcaveMeta = ConvexAtomMeta< AbsDom< Space >, AbsConcaveCodom< Space >, CurvatureType::CONCAVE >
 alias for meta for abs function
 
template<linalg::RnSpace Space>
using ExpDom = ConvexDomain< Space, VarType::FREE >
 alias for domain on exp function
 
template<linalg::RnSpace Space>
using ExpCodom = ConvexDomain< Space, VarType::NONNEG >
 alias for codomain on exp function
 
template<linalg::RnSpace Space>
using ExpConcaveCodom = ConvexDomain< Space, VarType::NONPOS >
 alias for concave codomain on exp function
 
template<linalg::RnSpace Space>
using ExpMeta = ConvexAtomMeta< ExpDom< Space >, ExpCodom< Space >, CurvatureType::CONVEX >
 alias for meta for exp function
 
template<linalg::RnSpace Space>
using ExpConcaveMeta = ConvexAtomMeta< ExpDom< Space >, ExpConcaveCodom< Space >, CurvatureType::CONCAVE >
 alias for meta for exp function
 
template<linalg::RnSpace Space>
using GeoMeanDom = ConvexDomain< Space, VarType::POS >
 alias for domain on geo mean function
 
template<linalg::RnSpace Space>
using GeoMeanCodom = ConvexDomain< Space, VarType::POS >
 alias for codomain on geo mean function
 
template<linalg::RnSpace Space>
using GeoMeanConvexCodom = ConvexDomain< Space, VarType::NEG >
 alias for convex codomain on geo mean function
 
template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using GeoMeanMeta = ConvexAtomMeta< GeoMeanDom< Dom >, GeoMeanCodom< Codom >, CurvatureType::CONCAVE >
 alias for meta for geo mean function
 
template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using GeoMeanConvexMeta = ConvexAtomMeta< GeoMeanDom< Dom >, GeoMeanConvexCodom< Codom >, CurvatureType::CONVEX >
 alias for meta for geo mean function
 
template<linalg::RnSpace Space>
using HarmonicMeanDom = ConvexDomain< Space, VarType::POS >
 alias for domain on harmonic mean function
 
template<linalg::RnSpace Space>
using HarmonicMeanCodom = ConvexDomain< Space, VarType::POS >
 alias for codomain on harmonic mean function
 
template<linalg::RnSpace Space>
using HarmonicMeanConvexCodom = ConvexDomain< Space, VarType::NEG >
 alias for convex codomain on harmonic mean function
 
template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using HarmonicMeanMeta = ConvexAtomMeta< HarmonicMeanDom< Dom >, HarmonicMeanCodom< Codom >, CurvatureType::CONCAVE >
 alias for meta for harmonic mean function
 
template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using HarmonicMeanConvexMeta = ConvexAtomMeta< HarmonicMeanDom< Dom >, HarmonicMeanConvexCodom< Codom >, CurvatureType::CONVEX >
 alias for meta for harmonic mean function
 
template<linalg::RnSpace Space>
using HuberDom = ConvexDomain< Space, VarType::FREE >
 alias for domain on huber function
 
template<linalg::RnSpace Space>
using HuberCodom = ConvexDomain< Space, VarType::NONNEG >
 alias for codomain on huber function
 
template<linalg::RnSpace Space>
using HuberConcaveCodom = ConvexDomain< Space, VarType::NONPOS >
 alias for concave codomain on huber function
 
template<linalg::RnSpace Space>
using HuberMeta = ConvexAtomMeta< HuberDom< Space >, HuberCodom< Space >, CurvatureType::CONVEX >
 alias for meta for huber function
 
template<linalg::RnSpace Space>
using HuberConcaveMeta = ConvexAtomMeta< HuberDom< Space >, HuberConcaveCodom< Space >, CurvatureType::CONCAVE >
 alias for meta for huber function
 
template<linalg::RnSpace Space>
using InvPosDom = ConvexDomain< Space, VarType::POS >
 alias for domain on inv pos function
 
template<linalg::RnSpace Space>
using InvPosCodom = ConvexDomain< Space, VarType::POS >
 alias for codomain on inv pos function
 
template<linalg::RnSpace Space>
using InvPosConcaveCodom = ConvexDomain< Space, VarType::NEG >
 alias for concave codomain on inv pos function
 
template<linalg::RnSpace Space>
using InvPosMeta = ConvexAtomMeta< InvPosDom< Space >, InvPosCodom< Space >, CurvatureType::CONVEX >
 alias for meta for inv pos function
 
template<linalg::RnSpace Space>
using InvPosConcaveMeta = ConvexAtomMeta< InvPosDom< Space >, InvPosConcaveCodom< Space >, CurvatureType::CONCAVE >
 alias for meta for inv pos function
 
template<linalg::RnSpace Space>
using KLDivDom = ConvexDomain< Space, VarType::POS >
 alias for domain on kl div function (q in R_++)
 
template<linalg::RnSpace Space>
using KLDivCodom = ConvexDomain< Space, VarType::NONNEG >
 alias for codomain on kl div function
 
template<linalg::RnSpace Space>
using KLDivConcaveCodom = ConvexDomain< Space, VarType::NEG >
 alias for concave codomain on kl div function
 
template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using KLDivMeta = ConvexAtomMeta< KLDivDom< Dom >, KLDivCodom< Codom >, CurvatureType::CONVEX >
 alias for meta for kl div function
 
template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using KLDivConcaveMeta = ConvexAtomMeta< KLDivDom< Dom >, KLDivConcaveCodom< Codom >, CurvatureType::CONCAVE >
 alias for meta for kl div function
 
template<linalg::RnSpace Space>
using LogDom = ConvexDomain< Space, VarType::POS >
 alias for domain on log function
 
template<linalg::RnSpace Space>
using LogCodom = ConvexDomain< Space, VarType::FREE >
 alias for codomain on abs function
 
template<linalg::RnSpace Space>
using LogConvexCodom = ConvexDomain< Space, VarType::FREE >
 alias for convex codomain on log function
 
template<linalg::RnSpace Space>
using LogMeta = ConvexAtomMeta< LogDom< Space >, LogCodom< Space >, CurvatureType::CONCAVE >
 alias for meta for abs function
 
template<linalg::RnSpace Space>
using LogConvexMeta = ConvexAtomMeta< LogDom< Space >, LogConvexCodom< Space >, CurvatureType::CONVEX >
 alias for meta for abs function
 
template<linalg::RnSpace Space>
using LogSumExpDom = ConvexDomain< Space, VarType::FREE >
 alias for domain on abs function
 
template<linalg::RnSpace Space>
using LogSumExpCodom = ConvexDomain< Space, VarType::FREE >
 alias for codomain on abs function
 
template<linalg::RnSpace Space>
using LogSumExpConcaveCodom = ConvexDomain< Space, VarType::FREE >
 alias for concave codomain on abs function
 
template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using LogSumExpMeta = ConvexAtomMeta< LogSumExpDom< Dom >, LogSumExpCodom< Codom >, CurvatureType::CONVEX >
 alias for meta for abs function
 
template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using LogSumExpConcaveMeta = ConvexAtomMeta< LogSumExpDom< Dom >, LogSumExpConcaveCodom< Codom >, CurvatureType::CONCAVE >
 alias for meta for abs function
 
template<linalg::RnSpace Space>
using MaxDom = ConvexDomain< Space, VarType::FREE >
 alias for domain on abs function
 
template<linalg::RnSpace Space>
using MaxCodom = ConvexDomain< Space, VarType::FREE >
 alias for codomain on abs function
 
template<linalg::RnSpace Space>
using MaxConcaveCodom = ConvexDomain< Space, VarType::FREE >
 alias for concave codomain on abs function
 
template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using MaxMeta = ConvexAtomMeta< MaxDom< Dom >, MaxCodom< Codom >, CurvatureType::CONVEX >
 alias for meta for abs function
 
template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using MaxConcaveMeta = ConvexAtomMeta< MaxDom< Dom >, MaxConcaveCodom< Codom >, CurvatureType::CONCAVE >
 alias for meta for abs function
 
template<linalg::RnSpace Space>
using NormDom = ConvexDomain< Space, VarType::FREE >
 alias for domain on abs function
 
template<linalg::RnSpace Space>
using NormCodom = ConvexDomain< Space, VarType::NONNEG >
 alias for codomain on abs function
 
template<linalg::RnSpace Space>
using NormConcaveCodom = ConvexDomain< Space, VarType::NONPOS >
 alias for concave codomain on abs function
 
template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using NormMeta = ConvexAtomMeta< NormDom< Dom >, NormCodom< Codom >, CurvatureType::CONVEX >
 alias for meta for abs function
 
template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using NormConcaveMeta = ConvexAtomMeta< NormDom< Dom >, NormConcaveCodom< Codom >, CurvatureType::CONCAVE >
 alias for meta for abs function
 
template<linalg::RnSpace Space>
using SoftplusDom = ConvexDomain< Space, VarType::FREE >
 alias for domain on softplus function
 
template<linalg::RnSpace Space>
using SoftplusCodom = ConvexDomain< Space, VarType::FREE >
 alias for codomain on softplus function
 
template<linalg::RnSpace Space>
using SoftplusConcaveCodom = ConvexDomain< Space, VarType::FREE >
 alias for concave codomain on softplus function
 
template<linalg::RnSpace Space>
using SoftplusMeta = ConvexAtomMeta< SoftplusDom< Space >, SoftplusCodom< Space >, CurvatureType::CONVEX >
 alias for meta for softplus function
 
template<linalg::RnSpace Space>
using SoftplusConcaveMeta = ConvexAtomMeta< SoftplusDom< Space >, SoftplusConcaveCodom< Space >, CurvatureType::CONCAVE >
 alias for meta for softplus function
 
template<linalg::RnSpace Space>
using SqrtDom = ConvexDomain< Space, VarType::NONNEG >
 alias for domain on sqrt function
 
template<linalg::RnSpace Space>
using SqrtConvexCodom = ConvexDomain< Space, VarType::NONPOS >
 alias for convex codomain on sqrt function
 
template<linalg::RnSpace Space>
using SqrtMeta = ConvexAtomMeta< SqrtDom< Space >, SqrtDom< Space >, CurvatureType::CONCAVE >
 alias for meta for sqrt function
 
template<linalg::RnSpace Space>
using SqrtConvexMeta = ConvexAtomMeta< SqrtDom< Space >, SqrtConvexCodom< Space >, CurvatureType::CONVEX >
 alias for meta for sqrt function
 
template<linalg::RnSpace Space>
using SquareDom = ConvexDomain< Space, VarType::FREE >
 alias for domain on square function
 
template<linalg::RnSpace Space>
using SquareCodom = ConvexDomain< Space, VarType::NONNEG >
 alias for codomain on square function
 
template<linalg::RnSpace Space>
using SquareConcaveCodom = ConvexDomain< Space, VarType::NONPOS >
 alias for concave codomain on square function
 
template<linalg::RnSpace Space>
using SquareMeta = ConvexAtomMeta< SquareDom< Space >, SquareCodom< Space >, CurvatureType::CONVEX >
 alias for meta for square function
 
template<linalg::RnSpace Space>
using SquareConcaveMeta = ConvexAtomMeta< SquareDom< Space >, SquareConcaveCodom< Space >, CurvatureType::CONCAVE >
 alias for meta for square function
 
template<linalg::RnSpace Space>
using AffineDom = ConvexDomain< Space, VarType::FREE >
 alias for domain on affine subspace
 
template<linalg::RnSpace Space>
using AffineCodom = ConvexDomain< Space, VarType::FREE >
 alias for codomain on affine subspace
 
template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using AffineMeta = ConvexAtomMeta< AffineDom< Dom >, AffineCodom< Codom >, CurvatureType::AFFINE >
 alias for meta on affine subspace
 
template<linalg::RnSpace Space>
using EllipsoidDom = ConvexDomain< Space, VarType::FREE >
 alias for domain on ellipsoid
 
template<linalg::RnSpace Space>
using EllipsoidCodom = EllipsoidDom< Space >
 alias for domain on ellipsoid
 
template<linalg::RnSpace Space>
using EllipsoidMeta = ConvexAtomMeta< EllipsoidDom< Space >, EllipsoidCodom< Space >, CurvatureType::CONVEX >
 alias for meta on ellipsoid
 
template<linalg::RnSpace Space>
using HalfspaceDom = ConvexDomain< Space, VarType::FREE >
 alias for domain on halfspace
 
template<linalg::RnSpace Space>
using HalfspaceCodom = HalfspaceDom< Space >
 alias for codomain on halfspace
 
template<linalg::RnSpace Space>
using HalfspaceMeta = ConvexAtomMeta< HalfspaceDom< Space >, HalfspaceCodom< Space >, CurvatureType::CONVEX >
 alias for meta on halfspace
 
template<linalg::RnSpace Space>
using HyperplaneDom = ConvexDomain< Space, VarType::FREE >
 alias for domain on hyperplane
 
template<linalg::RnSpace Space>
using HyperplaneCodom = HyperplaneDom< Space >
 alias for codomain on halfspace
 
template<linalg::RnSpace Space>
using HyperplaneMeta = ConvexAtomMeta< HyperplaneDom< Space >, HyperplaneCodom< Space >, CurvatureType::CONVEX >
 alias for meta on hyperplane
 
template<linalg::RnSpace Space>
using LMIDom = ConvexDomain< Space, VarType::FREE >
 alias for domain on affine subspace
 
template<linalg::RnSpace Space>
using LMICodom = ConvexDomain< Space, VarType::FREE >
 alias for codomain on affine subspace
 
template<linalg::RnSpace Space>
using LMIMeta = ConvexAtomMeta< LMIDom< Space >, LMICodom< Space >, CurvatureType::CONVEX >
 alias for meta on affine subspace
 
template<linalg::RnSpace Space>
using NormBallDom = ConvexDomain< Space, VarType::FREE >
 alias for domain on ellipsoid
 
template<linalg::RnSpace Space>
using NormBallCodom = NormBallDom< Space >
 alias for domain on ellipsoid
 
template<linalg::RnSpace Space>
using NormBallMeta = ConvexAtomMeta< NormBallDom< Space >, NormBallCodom< Space >, CurvatureType::CONVEX >
 alias for meta on ellipsoid
 
template<linalg::RnSpace Space>
using PolyhedronDom = ConvexDomain< Space, VarType::FREE >
 alias for domain on poly
 
template<linalg::RnSpace Space>
using PolyhedronCodom = ConvexDomain< Space, VarType::FREE >
 alias for codomain on poly
 
template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using PolyhedronMeta = ConvexAtomMeta< PolyhedronDom< Dom >, PolyhedronCodom< Codom >, CurvatureType::CONVEX >
 alias for meta on poly
 
template<bool Enable, linalg::Field T, std::size_t NumCones, std::size_t MaxConeDim, std::size_t VarDim, std::size_t EqDim>
using PdIpmSnapshotStorage = std::conditional_t< Enable, PdIpmFullIterSnapshot< T, NumCones, MaxConeDim, VarDim, EqDim >, EmptyPdIpmSnapshot >
 Alias for snap shot storage (full or empty)
 
template<linalg::Field T, typename CanonicalTraceT >
using PdIpmTraceForCanonicalTrace = PdIpmTrace< T, canonical_trace_num_cones_v< CanonicalTraceT > >
 Convenience alias for a solver trace matched to a CanonicalTrace.
 
template<linalg::RnSpace Dom>
using VarDom = ConvexDomain< Dom, VarType::FREE >
 alias for nominal vector/matrix variable domain
 
template<linalg::RnSpace Dom>
using VarMeta = ConvexAtomMeta< VarDom< Dom >, VarDom< Dom >, CurvatureType::AFFINE >
 alias for nominal vector/matrix variable meta
 
template<linalg::RnSpace Dom>
using NonnegVarDom = ConvexDomain< Dom, VarType::NONNEG >
 alias for nominal nonnegative vector/matrix variable domain
 
template<linalg::RnSpace Dom>
using NonnegVarMeta = ConvexAtomMeta< NonnegVarDom< Dom >, NonnegVarDom< Dom >, CurvatureType::AFFINE >
 alias for nominal nonnegative vector/matrix variable meta
 
template<linalg::RnSpace Dom>
using PosVarDom = ConvexDomain< Dom, VarType::POS >
 alias for nominal positive vector/matrix variable domain
 
template<linalg::RnSpace Dom>
using PosVarMeta = ConvexAtomMeta< PosVarDom< Dom >, PosVarDom< Dom >, CurvatureType::AFFINE >
 alias for nominal positive vector/matrix variable meta
 
template<linalg::RnSpace Dom>
using NonposVarDom = ConvexDomain< Dom, VarType::NONPOS >
 alias for nominal nonpositive vector/matrix variable domain
 
template<linalg::RnSpace Dom>
using NonposVarMeta = ConvexAtomMeta< NonposVarDom< Dom >, NonposVarDom< Dom >, CurvatureType::AFFINE >
 alias for nominal nonpositive vector/matrix variable meta
 
template<linalg::RnSpace Dom>
using NegVarDom = ConvexDomain< Dom, VarType::NEG >
 alias for nominal negative vector/matrix variable domain
 
template<linalg::RnSpace Dom>
using NegVarMeta = ConvexAtomMeta< NegVarDom< Dom >, NegVarDom< Dom >, CurvatureType::AFFINE >
 alias for nominal negative vector/matrix variable meta
 
template<linalg::SquareMatrix Mat>
using SymMatVarDom = ConvexDomain< linalg::SymmetricMatrix< Mat >, VarType::PSD >
 alias for nominal psd matrix variable domain
 
template<linalg::SquareMatrix Mat>
using SymMatVarMeta = ConvexAtomMeta< SymMatVarDom< Mat >, SymMatVarDom< Mat >, CurvatureType::AFFINE >
 alias for nominal psd matrix
 

Enumerations

enum struct  CanonicalConeKind : uint8_t {
  NONNEG_ORTHANT = 0 , SECOND_ORDER = 1 , POSITIVE_SEMIDEFINITE = 2 , EXP = 3 ,
  POWER = 4 , UNKNOWN = 255
}
 Cone family emitted into the global cone block. More...
 
enum struct  AtomType : uint8_t {
  VAR = 0 , INDEX , FN , SET ,
  ADD , CAP
}
 Atom category used by canonicalization and DCP checks. More...
 
enum struct  VarType : uint8_t {
  FREE = 0 , NONNEG , NONPOS , POS ,
  NEG , PSD
}
 Domain/variable annotation attached to domains/codomains. More...
 
enum struct  CurvatureType : uint8_t { AFFINE = 0 , CONVEX , CONCAVE }
 Curvature annotation for atom codomain. More...
 
enum struct  MonotonicityType : uint8_t { UNKNOWN = 0 , NONDEC , NONINC }
 Monotonicity annotation for function atoms. More...
 
enum struct  InequalityType : uint8_t { EQ = 0 , LEQ , GEQ }
 InequalityType for inequality atom. More...
 
enum struct  StageType : uint8_t { INIT = 0 , IN_PROGRESS , PROBLEM_SET }
 Problem construction lifecycle stage. More...
 
enum struct  HalfspaceType : uint8_t { LH = 0 , UH }
 simple enum to describe type of halfspace More...
 
enum struct  NormBallType : uint8_t { L2 = 0 , L1 , Linf }
 simple enum to describe ball type More...
 

Functions

template<typename ConeTuple , std::size_t Index>
consteval std::size_t cone_tuple_offset_before_v ()
 
template<typename Trace , typename NodeRecords , typename ConeRecords , typename EqualityRecords >
constexpr auto extend_canonical_trace (const Trace &trace, const NodeRecords &nodes, const ConeRecords &cones, const EqualityRecords &equalities)
 Extends canonical trace by tuple concatenation.
 
template<typename ConeTuple >
constexpr auto make_canonical_cone_records (std::size_t node_id, std::size_t global_cone_start, std::size_t cone_offset_start)
 Make canonical cone records for a node-emitted tuple of cones.
 
template<AtomLike Var>
constexpr auto make_scalar_quad_form (const dom_type_t< meta_codom_t< atom_meta_t< Var > > > &p, const dom_type_t< meta_codom_t< atom_meta_t< Var > > > &q, const dom_type_t< meta_codom_t< atom_meta_t< Var > > > &r, const Var &x)
 make scalar quad form with domain deduced from the scalar affine atom
 
template<AtomLike Var>
constexpr auto make_scalar_quad_form (const dom_type_t< meta_codom_t< atom_meta_t< Var > > > &p, const dom_type_t< meta_codom_t< atom_meta_t< Var > > > &q, const Var &x)
 make scalar quad form without constant offset
 
template<AtomLike Var>
constexpr auto make_quad_form (const linalg::Matrix< dom_type_t< meta_codom_t< atom_meta_t< Var > > >, dom_size_v< meta_codom_t< atom_meta_t< Var > > >, dom_size_v< meta_codom_t< atom_meta_t< Var > > > > &P, const linalg::Vector< dom_type_t< meta_codom_t< atom_meta_t< Var > > >, dom_size_v< meta_codom_t< atom_meta_t< Var > > > > &q, const dom_type_t< meta_codom_t< atom_meta_t< Var > > > &r, const Var &x)
 make quadratic form with domain deduced from the variable atom
 
template<AtomLike Var>
constexpr auto make_quad_form (const linalg::Matrix< dom_type_t< meta_codom_t< atom_meta_t< Var > > >, dom_size_v< meta_codom_t< atom_meta_t< Var > > >, dom_size_v< meta_codom_t< atom_meta_t< Var > > > > &P, const linalg::Vector< dom_type_t< meta_codom_t< atom_meta_t< Var > > >, dom_size_v< meta_codom_t< atom_meta_t< Var > > > > &q, const Var &x)
 make quadratic form without constant offset
 
template<AtomLike Var>
constexpr auto make_trace (const Var &X)
 make trace objective with domain deduced from variable atom.
 
template<std::size_t Offset, linalg::RnSpace TraceSpace, AtomLike Var>
constexpr auto make_trace_block (const Var &X)
 make trace objective over a matrix block inside a merged variable.
 
template<AtomLike Var>
constexpr auto make_weighted_sum (const linalg::Vector< dom_type_t< meta_codom_t< atom_meta_t< Var > > >, dom_size_v< meta_codom_t< atom_meta_t< Var > > > > &q, const Var &x)
 make weighted sum with domain deduced from the variable atom
 
template<AtomLike Var>
constexpr auto make_problem (const Var &x)
 make problem
 
template<typename Child >
 Abs (const Child &) -> Abs< AbsMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > > >, atom_decay_t< Child > >
 
template<typename Child >
 Exp (const Child &) -> Exp< ExpMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > > >, atom_decay_t< Child > >
 
template<typename Child >
 GeoMean (const Child &) -> GeoMean< GeoMeanMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > >, linalg::Matrix< dom_type_t< meta_codom_t< atom_meta_t< Child > > >, 1, 1 > >, atom_decay_t< Child > >
 
template<typename Child >
 HarmonicMean (const Child &) -> HarmonicMean< HarmonicMeanMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > >, linalg::Matrix< dom_type_t< meta_codom_t< atom_meta_t< Child > > >, 1, 1 > >, atom_decay_t< Child > >
 
template<typename T , typename Child >
 Huber (const T &, const Child &) -> Huber< HuberMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > > >, atom_decay_t< Child > >
 
template<typename Child >
 InvPos (const Child &) -> InvPos< InvPosMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > > >, atom_decay_t< Child > >
 
template<typename Point , typename Child >
 KLDivergence (const Point &, const Child &) -> KLDivergence< KLDivMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > >, linalg::Matrix< dom_type_t< meta_codom_t< atom_meta_t< Child > > >, 1, 1 > >, atom_decay_t< Child > >
 
template<typename Child >
 Log (const Child &) -> Log< LogMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > > >, atom_decay_t< Child > >
 
template<typename Child >
 LogSumExp (const Child &) -> LogSumExp< LogSumExpMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > >, linalg::Matrix< dom_type_t< meta_codom_t< atom_meta_t< Child > > >, 1, 1 > >, atom_decay_t< Child > >
 
template<typename Child >
 Max (const Child &) -> Max< MaxMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > >, linalg::Matrix< dom_type_t< meta_codom_t< atom_meta_t< Child > > >, 1, 1 > >, atom_decay_t< Child > >
 
template<typename Child >
 Softplus (const Child &) -> Softplus< SoftplusMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > > >, atom_decay_t< Child > >
 
template<typename Child >
 Sqrt (const Child &) -> Sqrt< SqrtMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > > >, atom_decay_t< Child > >
 
template<typename Child >
 Square (const Child &) -> Square< SquareMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > > >, atom_decay_t< Child > >
 
template<std::size_t idx = 0, typename Children , typename Builder , typename Fn >
constexpr auto tuple_fold_cap (Children &&children, Builder &&builder, Fn &&fn)
 intersect over tuple
 
template<typename C0 , typename... Cs>
 Intersection (const C0 &, const Cs &...) -> Intersection< IntersectionMeta< dom_space_t< meta_codom_t< atom_meta_t< C0 > > > >, atom_decay_t< C0 >, atom_decay_t< Cs >... >
 
template<typename Mat , typename Vec , typename Child >
 AffineSubspace (const Mat &, const Vec &, const Child &) -> AffineSubspace< AffineMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > >, dom_space_t< meta_codom_t< atom_meta_t< Child > > > >, atom_decay_t< Child > >
 
template<typename Point , typename Mat , typename Child >
 Ellipsoid (const Point &, const Mat &, const Child &) -> Ellipsoid< EllipsoidMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > > >, atom_decay_t< Child > >
 
template<typename Point , typename T , typename Child >
 Hyperplane (const Point &, const T &, const Child &) -> Hyperplane< HyperplaneMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > > >, atom_decay_t< Child > >
 
template<typename Mat , typename Bias , typename Child >
 Polyhedron (const Mat &, const Bias &, const Child &) -> Polyhedron< PolyhedronMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > >, linalg::Matrix< dom_type_t< meta_codom_t< atom_meta_t< Child > > >, 1, linalg::mat_rows_v< Mat > > >, atom_decay_t< Child > >
 
template<linalg::VectorContainer ConeVar>
constexpr auto mu (const ConeVar &x, const ConeVar &y, const linalg::vector_element_t< ConeVar > &nu)
 mu - normalized duality gap
 
template<linalg::SquareMatrix Mat, linalg::MatrixContainer EqMat>
constexpr auto regularize (Mat M, const EqMat &A, const config::RegularizationConfig< linalg::matrix_scalar_t< EqMat > > &reg)
 regularize
 
template<typename SumCodomain , typename Child >
constexpr void validate_sum_child_codomain ()
 Validate that a sum child has the same codomain as the parent sum.
 
template<affine::AffineMapLike PrevMap, affine::AffineMapLike NextMap>
constexpr auto update_selector (const PrevMap &prev, const NextMap &next)
 Accumulate the affine selector for a sum atom.
 
template<std::size_t idx = 0, typename Children , typename Builder , typename Fn , affine::AffineMapLike Map>
constexpr auto tuple_fold_sum (Children &&children, Builder &&builder, Fn &&fn, Map &&selector)
 Canonicalize and fold all sum children.
 
template<typename C0 , typename... Cs>
 Sum (const C0 &, const Cs &...) -> Sum< SumMeta< linalg::Matrix< dom_type_t< meta_dom_t< atom_meta_t< C0 > > >, 1, 1+sizeof...(Cs)>, dom_space_t< meta_codom_t< atom_meta_t< C0 > > > >, atom_decay_t< C0 >, atom_decay_t< Cs >... >
 Deduction guide for sum atoms.
 

Variables

constexpr std::size_t canonical_no_parent
 Sentinel used when a canonical node does not have a parent node.
 
template<typename Trace >
constexpr std::size_t canonical_trace_num_nodes_v
 
template<typename Trace >
constexpr std::size_t canonical_trace_num_cones_v
 
template<typename Trace >
constexpr std::size_t canonical_trace_num_equalities_v
 
template<typename Cone >
constexpr CanonicalConeKind canonical_cone_kind_v
 
template<typename Dom >
constexpr std::size_t dom_size_v
 
template<typename Dom >
constexpr VarType dom_vartype_v
 
template<typename Meta >
constexpr CurvatureType meta_curv_v
 
template<typename Prob >
constexpr bool is_problem_set_v
 stage type from prob
 
template<AtomLike Atom>
constexpr AtomType atom_type_v = atom_traits<atom_decay_t<Atom>>::Type
 Compile-time atom category.
 
template<AtomLike Atom>
constexpr bool is_fn_type_v = atom_type_v<Atom> == AtomType::FN
 Helper predicates on atom category.
 
template<AtomLike Atom>
constexpr bool is_var_type_v = atom_type_v<Atom> == AtomType::VAR
 
template<AtomLike Atom>
constexpr bool is_set_type_v = atom_type_v<Atom> == AtomType::SET
 
template<AtomLike Atom>
constexpr bool is_add_type_v = atom_type_v<Atom> == AtomType::ADD
 
template<AtomLike Atom>
constexpr bool is_cap_type_v = atom_type_v<Atom> == AtomType::CAP
 
template<AtomLike Atom>
constexpr bool is_index_type_v = atom_type_v<Atom> == AtomType::INDEX
 
template<typename Mat , std::size_t N, typename Child >
 LMI< LMIMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > > >, atom_decay_t< Child >, Mat >
 (dakre) CTAD - class template argument deduction for egononic use of LMI instead of full template path
 

Typedef Documentation

◆ AbsCodom

template<linalg::RnSpace Space>
using convex::AbsCodom = typedef ConvexDomain<Space, VarType::NONNEG>

alias for codomain on abs function

Definition at line 21 of file abs.hpp.

◆ AbsConcaveCodom

template<linalg::RnSpace Space>
using convex::AbsConcaveCodom = typedef ConvexDomain<Space, VarType::NONPOS>

alias for concave codomain on abs function

Definition at line 26 of file abs.hpp.

◆ AbsConcaveMeta

alias for meta for abs function

Definition at line 35 of file abs.hpp.

◆ AbsDom

template<linalg::RnSpace Space>
using convex::AbsDom = typedef ConvexDomain<Space, VarType::FREE>

alias for domain on abs function

Definition at line 16 of file abs.hpp.

◆ AbsMeta

template<linalg::RnSpace Space>
using convex::AbsMeta = typedef ConvexAtomMeta<AbsDom<Space>, AbsCodom<Space>, CurvatureType::CONVEX>

alias for meta for abs function

Definition at line 30 of file abs.hpp.

◆ AffineCodom

template<linalg::RnSpace Space>
using convex::AffineCodom = typedef ConvexDomain<Space, VarType::FREE>

alias for codomain on affine subspace

Definition at line 18 of file affine_subspace.hpp.

◆ AffineDom

template<linalg::RnSpace Space>
using convex::AffineDom = typedef ConvexDomain<Space, VarType::FREE>

alias for domain on affine subspace

Definition at line 14 of file affine_subspace.hpp.

◆ AffineMeta

template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using convex::AffineMeta = typedef ConvexAtomMeta<AffineDom<Dom>, AffineCodom<Codom>, CurvatureType::AFFINE>

alias for meta on affine subspace

Definition at line 22 of file affine_subspace.hpp.

◆ atom_decay_t

template<typename T >
using convex::atom_decay_t = typedef linalg::remove_cvref_t<T>

normalize atom-facing types to a stable internal form.

Definition at line 464 of file convex_traits.hpp.

◆ atom_meta_t

template<AtomLike Atom>
using convex::atom_meta_t = typedef typename atom_traits<atom_decay_t<Atom> >::ConvexMeta

Extract metadata type from atom.

Definition at line 468 of file convex_traits.hpp.

◆ canonical_trace_cones_t

Definition at line 123 of file canonical_trace.hpp.

◆ canonical_trace_equalities_t

Definition at line 127 of file canonical_trace.hpp.

◆ canonical_trace_nodes_t

Definition at line 119 of file canonical_trace.hpp.

◆ dom_point_t

template<typename Dom >
using convex::dom_point_t = typedef typename dom_traits<linalg::remove_cvref_t<Dom> >::Point

Definition at line 64 of file convex_traits.hpp.

◆ dom_space_t

template<typename Dom >
using convex::dom_space_t = typedef typename dom_traits<linalg::remove_cvref_t<Dom> >::Space

Definition at line 58 of file convex_traits.hpp.

◆ dom_type_t

template<typename Dom >
using convex::dom_type_t = typedef typename dom_traits<linalg::remove_cvref_t<Dom> >::T

Definition at line 61 of file convex_traits.hpp.

◆ EllipsoidCodom

template<linalg::RnSpace Space>
using convex::EllipsoidCodom = typedef EllipsoidDom<Space>

alias for domain on ellipsoid

Definition at line 19 of file ellipsoid.hpp.

◆ EllipsoidDom

template<linalg::RnSpace Space>
using convex::EllipsoidDom = typedef ConvexDomain<Space, VarType::FREE>

alias for domain on ellipsoid

Definition at line 15 of file ellipsoid.hpp.

◆ EllipsoidMeta

alias for meta on ellipsoid

Definition at line 23 of file ellipsoid.hpp.

◆ EmptyCanonicalTrace

◆ ExpCodom

template<linalg::RnSpace Space>
using convex::ExpCodom = typedef ConvexDomain<Space, VarType::NONNEG>

alias for codomain on exp function

Definition at line 21 of file exp.hpp.

◆ ExpConcaveCodom

template<linalg::RnSpace Space>
using convex::ExpConcaveCodom = typedef ConvexDomain<Space, VarType::NONPOS>

alias for concave codomain on exp function

Definition at line 26 of file exp.hpp.

◆ ExpConcaveMeta

alias for meta for exp function

Definition at line 35 of file exp.hpp.

◆ ExpDom

template<linalg::RnSpace Space>
using convex::ExpDom = typedef ConvexDomain<Space, VarType::FREE>

alias for domain on exp function

Definition at line 16 of file exp.hpp.

◆ ExpMeta

template<linalg::RnSpace Space>
using convex::ExpMeta = typedef ConvexAtomMeta<ExpDom<Space>, ExpCodom<Space>, CurvatureType::CONVEX>

alias for meta for exp function

Definition at line 30 of file exp.hpp.

◆ GeoMeanCodom

template<linalg::RnSpace Space>
using convex::GeoMeanCodom = typedef ConvexDomain<Space, VarType::POS>

alias for codomain on geo mean function

Definition at line 22 of file geo_mean.hpp.

◆ GeoMeanConvexCodom

template<linalg::RnSpace Space>
using convex::GeoMeanConvexCodom = typedef ConvexDomain<Space, VarType::NEG>

alias for convex codomain on geo mean function

Definition at line 27 of file geo_mean.hpp.

◆ GeoMeanConvexMeta

template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using convex::GeoMeanConvexMeta = typedef ConvexAtomMeta<GeoMeanDom<Dom>, GeoMeanConvexCodom<Codom>, CurvatureType::CONVEX>

alias for meta for geo mean function

Definition at line 36 of file geo_mean.hpp.

◆ GeoMeanDom

template<linalg::RnSpace Space>
using convex::GeoMeanDom = typedef ConvexDomain<Space, VarType::POS>

alias for domain on geo mean function

Definition at line 17 of file geo_mean.hpp.

◆ GeoMeanMeta

template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using convex::GeoMeanMeta = typedef ConvexAtomMeta<GeoMeanDom<Dom>, GeoMeanCodom<Codom>, CurvatureType::CONCAVE>

alias for meta for geo mean function

Definition at line 31 of file geo_mean.hpp.

◆ HalfspaceCodom

template<linalg::RnSpace Space>
using convex::HalfspaceCodom = typedef HalfspaceDom<Space>

alias for codomain on halfspace

Definition at line 18 of file halfspace.hpp.

◆ HalfspaceDom

template<linalg::RnSpace Space>
using convex::HalfspaceDom = typedef ConvexDomain<Space, VarType::FREE>

alias for domain on halfspace

Definition at line 14 of file halfspace.hpp.

◆ HalfspaceMeta

alias for meta on halfspace

Definition at line 22 of file halfspace.hpp.

◆ HarmonicMeanCodom

template<linalg::RnSpace Space>
using convex::HarmonicMeanCodom = typedef ConvexDomain<Space, VarType::POS>

alias for codomain on harmonic mean function

Definition at line 22 of file harmonic_mean.hpp.

◆ HarmonicMeanConvexCodom

template<linalg::RnSpace Space>
using convex::HarmonicMeanConvexCodom = typedef ConvexDomain<Space, VarType::NEG>

alias for convex codomain on harmonic mean function

Definition at line 27 of file harmonic_mean.hpp.

◆ HarmonicMeanConvexMeta

template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using convex::HarmonicMeanConvexMeta = typedef ConvexAtomMeta<HarmonicMeanDom<Dom>, HarmonicMeanConvexCodom<Codom>, CurvatureType::CONVEX>

alias for meta for harmonic mean function

Definition at line 37 of file harmonic_mean.hpp.

◆ HarmonicMeanDom

template<linalg::RnSpace Space>
using convex::HarmonicMeanDom = typedef ConvexDomain<Space, VarType::POS>

alias for domain on harmonic mean function

Definition at line 17 of file harmonic_mean.hpp.

◆ HarmonicMeanMeta

template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using convex::HarmonicMeanMeta = typedef ConvexAtomMeta<HarmonicMeanDom<Dom>, HarmonicMeanCodom<Codom>, CurvatureType::CONCAVE>

alias for meta for harmonic mean function

Definition at line 31 of file harmonic_mean.hpp.

◆ HuberCodom

template<linalg::RnSpace Space>
using convex::HuberCodom = typedef ConvexDomain<Space, VarType::NONNEG>

alias for codomain on huber function

Definition at line 23 of file huber.hpp.

◆ HuberConcaveCodom

template<linalg::RnSpace Space>
using convex::HuberConcaveCodom = typedef ConvexDomain<Space, VarType::NONPOS>

alias for concave codomain on huber function

Definition at line 28 of file huber.hpp.

◆ HuberConcaveMeta

alias for meta for huber function

Definition at line 37 of file huber.hpp.

◆ HuberDom

template<linalg::RnSpace Space>
using convex::HuberDom = typedef ConvexDomain<Space, VarType::FREE>

alias for domain on huber function

Definition at line 18 of file huber.hpp.

◆ HuberMeta

template<linalg::RnSpace Space>
using convex::HuberMeta = typedef ConvexAtomMeta<HuberDom<Space>, HuberCodom<Space>, CurvatureType::CONVEX>

alias for meta for huber function

Definition at line 32 of file huber.hpp.

◆ HyperplaneCodom

template<linalg::RnSpace Space>
using convex::HyperplaneCodom = typedef HyperplaneDom<Space>

alias for codomain on halfspace

Definition at line 18 of file hyperplane.hpp.

◆ HyperplaneDom

template<linalg::RnSpace Space>
using convex::HyperplaneDom = typedef ConvexDomain<Space, VarType::FREE>

alias for domain on hyperplane

Definition at line 14 of file hyperplane.hpp.

◆ HyperplaneMeta

alias for meta on hyperplane

Definition at line 22 of file hyperplane.hpp.

◆ IntersectionCodom

template<linalg::RnSpace Space>
using convex::IntersectionCodom = typedef IntersectionDom<Space>

Codomain alias for intersection atom.

Definition at line 436 of file convex_traits.hpp.

◆ IntersectionDom

template<linalg::RnSpace Space>
using convex::IntersectionDom = typedef ConvexDomain<Space, VarType::FREE>

Domain alias for intersection atom.

Definition at line 432 of file convex_traits.hpp.

◆ IntersectionMeta

Meta alias for intersection atom.

Definition at line 440 of file convex_traits.hpp.

◆ InvPosCodom

template<linalg::RnSpace Space>
using convex::InvPosCodom = typedef ConvexDomain<Space, VarType::POS>

alias for codomain on inv pos function

Definition at line 22 of file inv_pos.hpp.

◆ InvPosConcaveCodom

template<linalg::RnSpace Space>
using convex::InvPosConcaveCodom = typedef ConvexDomain<Space, VarType::NEG>

alias for concave codomain on inv pos function

Definition at line 27 of file inv_pos.hpp.

◆ InvPosConcaveMeta

alias for meta for inv pos function

Definition at line 36 of file inv_pos.hpp.

◆ InvPosDom

template<linalg::RnSpace Space>
using convex::InvPosDom = typedef ConvexDomain<Space, VarType::POS>

alias for domain on inv pos function

Definition at line 17 of file inv_pos.hpp.

◆ InvPosMeta

template<linalg::RnSpace Space>
using convex::InvPosMeta = typedef ConvexAtomMeta<InvPosDom<Space>, InvPosCodom<Space>, CurvatureType::CONVEX>

alias for meta for inv pos function

Definition at line 31 of file inv_pos.hpp.

◆ KLDivCodom

template<linalg::RnSpace Space>
using convex::KLDivCodom = typedef ConvexDomain<Space, VarType::NONNEG>

alias for codomain on kl div function

Definition at line 21 of file kl_div.hpp.

◆ KLDivConcaveCodom

template<linalg::RnSpace Space>
using convex::KLDivConcaveCodom = typedef ConvexDomain<Space, VarType::NEG>

alias for concave codomain on kl div function

Definition at line 26 of file kl_div.hpp.

◆ KLDivConcaveMeta

template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using convex::KLDivConcaveMeta = typedef ConvexAtomMeta<KLDivDom<Dom>, KLDivConcaveCodom<Codom>, CurvatureType::CONCAVE>

alias for meta for kl div function

Definition at line 35 of file kl_div.hpp.

◆ KLDivDom

template<linalg::RnSpace Space>
using convex::KLDivDom = typedef ConvexDomain<Space, VarType::POS>

alias for domain on kl div function (q in R_++)

Definition at line 16 of file kl_div.hpp.

◆ KLDivMeta

template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using convex::KLDivMeta = typedef ConvexAtomMeta<KLDivDom<Dom>, KLDivCodom<Codom>, CurvatureType::CONVEX>

alias for meta for kl div function

Definition at line 30 of file kl_div.hpp.

◆ LiftedVarBias

template<typename T >
using convex::LiftedVarBias = typedef linalg::Vector<T, 1>

alias for lifted var map

Definition at line 20 of file convex_traits.hpp.

◆ LiftedVarMat

template<typename T >
using convex::LiftedVarMat = typedef linalg::RowVector<T, 1>

alias for lifted var map

Definition at line 16 of file convex_traits.hpp.

◆ LMICodom

template<linalg::RnSpace Space>
using convex::LMICodom = typedef ConvexDomain<Space, VarType::FREE>

alias for codomain on affine subspace

Definition at line 19 of file lmi.hpp.

◆ LMIDom

template<linalg::RnSpace Space>
using convex::LMIDom = typedef ConvexDomain<Space, VarType::FREE>

alias for domain on affine subspace

Definition at line 15 of file lmi.hpp.

◆ LMIMeta

template<linalg::RnSpace Space>
using convex::LMIMeta = typedef ConvexAtomMeta<LMIDom<Space>, LMICodom<Space>, CurvatureType::CONVEX>

alias for meta on affine subspace

Definition at line 23 of file lmi.hpp.

◆ LogCodom

template<linalg::RnSpace Space>
using convex::LogCodom = typedef ConvexDomain<Space, VarType::FREE>

alias for codomain on abs function

Definition at line 21 of file log.hpp.

◆ LogConvexCodom

template<linalg::RnSpace Space>
using convex::LogConvexCodom = typedef ConvexDomain<Space, VarType::FREE>

alias for convex codomain on log function

Definition at line 26 of file log.hpp.

◆ LogConvexMeta

template<linalg::RnSpace Space>
using convex::LogConvexMeta = typedef ConvexAtomMeta<LogDom<Space>, LogConvexCodom<Space>, CurvatureType::CONVEX>

alias for meta for abs function

Definition at line 35 of file log.hpp.

◆ LogDom

template<linalg::RnSpace Space>
using convex::LogDom = typedef ConvexDomain<Space, VarType::POS>

alias for domain on log function

Definition at line 16 of file log.hpp.

◆ LogMeta

template<linalg::RnSpace Space>
using convex::LogMeta = typedef ConvexAtomMeta<LogDom<Space>, LogCodom<Space>, CurvatureType::CONCAVE>

alias for meta for abs function

Definition at line 30 of file log.hpp.

◆ LogSumExpCodom

template<linalg::RnSpace Space>
using convex::LogSumExpCodom = typedef ConvexDomain<Space, VarType::FREE>

alias for codomain on abs function

Definition at line 22 of file log_sum_exp.hpp.

◆ LogSumExpConcaveCodom

template<linalg::RnSpace Space>
using convex::LogSumExpConcaveCodom = typedef ConvexDomain<Space, VarType::FREE>

alias for concave codomain on abs function

Definition at line 27 of file log_sum_exp.hpp.

◆ LogSumExpConcaveMeta

template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using convex::LogSumExpConcaveMeta = typedef ConvexAtomMeta<LogSumExpDom<Dom>, LogSumExpConcaveCodom<Codom>, CurvatureType::CONCAVE>

alias for meta for abs function

Definition at line 36 of file log_sum_exp.hpp.

◆ LogSumExpDom

template<linalg::RnSpace Space>
using convex::LogSumExpDom = typedef ConvexDomain<Space, VarType::FREE>

alias for domain on abs function

Definition at line 17 of file log_sum_exp.hpp.

◆ LogSumExpMeta

template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using convex::LogSumExpMeta = typedef ConvexAtomMeta<LogSumExpDom<Dom>, LogSumExpCodom<Codom>, CurvatureType::CONVEX>

alias for meta for abs function

Definition at line 31 of file log_sum_exp.hpp.

◆ MaxCodom

template<linalg::RnSpace Space>
using convex::MaxCodom = typedef ConvexDomain<Space, VarType::FREE>

alias for codomain on abs function

Definition at line 22 of file max.hpp.

◆ MaxConcaveCodom

template<linalg::RnSpace Space>
using convex::MaxConcaveCodom = typedef ConvexDomain<Space, VarType::FREE>

alias for concave codomain on abs function

Definition at line 27 of file max.hpp.

◆ MaxConcaveMeta

template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using convex::MaxConcaveMeta = typedef ConvexAtomMeta<MaxDom<Dom>, MaxConcaveCodom<Codom>, CurvatureType::CONCAVE>

alias for meta for abs function

Definition at line 36 of file max.hpp.

◆ MaxDom

template<linalg::RnSpace Space>
using convex::MaxDom = typedef ConvexDomain<Space, VarType::FREE>

alias for domain on abs function

Definition at line 17 of file max.hpp.

◆ MaxMeta

template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using convex::MaxMeta = typedef ConvexAtomMeta<MaxDom<Dom>, MaxCodom<Codom>, CurvatureType::CONVEX>

alias for meta for abs function

Definition at line 31 of file max.hpp.

◆ meta_codom_t

template<typename Meta >
using convex::meta_codom_t = typedef typename meta_traits<linalg::remove_cvref_t<Meta> >::Codomain

Definition at line 94 of file convex_traits.hpp.

◆ meta_dom_t

template<typename Meta >
using convex::meta_dom_t = typedef typename meta_traits<linalg::remove_cvref_t<Meta> >::Domain

Definition at line 91 of file convex_traits.hpp.

◆ NegVarDom

template<linalg::RnSpace Dom>
using convex::NegVarDom = typedef ConvexDomain<Dom, VarType::NEG>

alias for nominal negative vector/matrix variable domain

Definition at line 56 of file variable.hpp.

◆ NegVarMeta

alias for nominal negative vector/matrix variable meta

Definition at line 60 of file variable.hpp.

◆ NonnegVarDom

template<linalg::RnSpace Dom>
using convex::NonnegVarDom = typedef ConvexDomain<Dom, VarType::NONNEG>

alias for nominal nonnegative vector/matrix variable domain

Definition at line 29 of file variable.hpp.

◆ NonnegVarMeta

alias for nominal nonnegative vector/matrix variable meta

Definition at line 33 of file variable.hpp.

◆ NonposVarDom

template<linalg::RnSpace Dom>
using convex::NonposVarDom = typedef ConvexDomain<Dom, VarType::NONPOS>

alias for nominal nonpositive vector/matrix variable domain

Definition at line 47 of file variable.hpp.

◆ NonposVarMeta

alias for nominal nonpositive vector/matrix variable meta

Definition at line 51 of file variable.hpp.

◆ NormBallCodom

template<linalg::RnSpace Space>
using convex::NormBallCodom = typedef NormBallDom<Space>

alias for domain on ellipsoid

Definition at line 20 of file norm_ball.hpp.

◆ NormBallDom

template<linalg::RnSpace Space>
using convex::NormBallDom = typedef ConvexDomain<Space, VarType::FREE>

alias for domain on ellipsoid

Definition at line 16 of file norm_ball.hpp.

◆ NormBallMeta

alias for meta on ellipsoid

Definition at line 24 of file norm_ball.hpp.

◆ NormCodom

template<linalg::RnSpace Space>
using convex::NormCodom = typedef ConvexDomain<Space, VarType::NONNEG>

alias for codomain on abs function

Definition at line 20 of file norm.hpp.

◆ NormConcaveCodom

template<linalg::RnSpace Space>
using convex::NormConcaveCodom = typedef ConvexDomain<Space, VarType::NONPOS>

alias for concave codomain on abs function

Definition at line 25 of file norm.hpp.

◆ NormConcaveMeta

template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using convex::NormConcaveMeta = typedef ConvexAtomMeta<NormDom<Dom>, NormConcaveCodom<Codom>, CurvatureType::CONCAVE>

alias for meta for abs function

Definition at line 34 of file norm.hpp.

◆ NormDom

template<linalg::RnSpace Space>
using convex::NormDom = typedef ConvexDomain<Space, VarType::FREE>

alias for domain on abs function

Definition at line 15 of file norm.hpp.

◆ NormMeta

template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using convex::NormMeta = typedef ConvexAtomMeta<NormDom<Dom>, NormCodom<Codom>, CurvatureType::CONVEX>

alias for meta for abs function

Definition at line 29 of file norm.hpp.

◆ PdIpmSnapshotStorage

template<bool Enable, linalg::Field T, std::size_t NumCones, std::size_t MaxConeDim, std::size_t VarDim, std::size_t EqDim>
using convex::PdIpmSnapshotStorage = typedef std::conditional_t< Enable, PdIpmFullIterSnapshot<T, NumCones, MaxConeDim, VarDim, EqDim>, EmptyPdIpmSnapshot>

Alias for snap shot storage (full or empty)

Definition at line 219 of file pd_ipm_trace.hpp.

◆ PdIpmTraceForCanonicalTrace

template<linalg::Field T, typename CanonicalTraceT >
using convex::PdIpmTraceForCanonicalTrace = typedef PdIpmTrace<T, canonical_trace_num_cones_v<CanonicalTraceT> >

Convenience alias for a solver trace matched to a CanonicalTrace.

Definition at line 225 of file pd_ipm_trace.hpp.

◆ PolyhedronCodom

template<linalg::RnSpace Space>
using convex::PolyhedronCodom = typedef ConvexDomain<Space, VarType::FREE>

alias for codomain on poly

Definition at line 19 of file polyhedron.hpp.

◆ PolyhedronDom

template<linalg::RnSpace Space>
using convex::PolyhedronDom = typedef ConvexDomain<Space, VarType::FREE>

alias for domain on poly

Definition at line 15 of file polyhedron.hpp.

◆ PolyhedronMeta

template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using convex::PolyhedronMeta = typedef ConvexAtomMeta<PolyhedronDom<Dom>, PolyhedronCodom<Codom>, CurvatureType::CONVEX>

alias for meta on poly

Definition at line 23 of file polyhedron.hpp.

◆ PosVarDom

template<linalg::RnSpace Dom>
using convex::PosVarDom = typedef ConvexDomain<Dom, VarType::POS>

alias for nominal positive vector/matrix variable domain

Definition at line 38 of file variable.hpp.

◆ PosVarMeta

alias for nominal positive vector/matrix variable meta

Definition at line 42 of file variable.hpp.

◆ prob_builder_t

template<typename Prob >
using convex::prob_builder_t = typedef typename prob_traits<linalg::remove_cvref_t<Prob> >::BuilderT

builder type from prob

Definition at line 239 of file convex_traits.hpp.

◆ SoftplusCodom

template<linalg::RnSpace Space>
using convex::SoftplusCodom = typedef ConvexDomain<Space, VarType::FREE>

alias for codomain on softplus function

Definition at line 21 of file softplus.hpp.

◆ SoftplusConcaveCodom

template<linalg::RnSpace Space>
using convex::SoftplusConcaveCodom = typedef ConvexDomain<Space, VarType::FREE>

alias for concave codomain on softplus function

Definition at line 26 of file softplus.hpp.

◆ SoftplusConcaveMeta

alias for meta for softplus function

Definition at line 35 of file softplus.hpp.

◆ SoftplusDom

template<linalg::RnSpace Space>
using convex::SoftplusDom = typedef ConvexDomain<Space, VarType::FREE>

alias for domain on softplus function

Definition at line 16 of file softplus.hpp.

◆ SoftplusMeta

alias for meta for softplus function

Definition at line 30 of file softplus.hpp.

◆ SqrtConvexCodom

template<linalg::RnSpace Space>
using convex::SqrtConvexCodom = typedef ConvexDomain<Space, VarType::NONPOS>

alias for convex codomain on sqrt function

Definition at line 22 of file sqrt.hpp.

◆ SqrtConvexMeta

alias for meta for sqrt function

Definition at line 33 of file sqrt.hpp.

◆ SqrtDom

template<linalg::RnSpace Space>
using convex::SqrtDom = typedef ConvexDomain<Space, VarType::NONNEG>

alias for domain on sqrt function

Definition at line 17 of file sqrt.hpp.

◆ SqrtMeta

template<linalg::RnSpace Space>
using convex::SqrtMeta = typedef ConvexAtomMeta<SqrtDom<Space>, SqrtDom<Space>, CurvatureType::CONCAVE>

alias for meta for sqrt function

Definition at line 27 of file sqrt.hpp.

◆ SquareCodom

template<linalg::RnSpace Space>
using convex::SquareCodom = typedef ConvexDomain<Space, VarType::NONNEG>

alias for codomain on square function

Definition at line 22 of file square.hpp.

◆ SquareConcaveCodom

template<linalg::RnSpace Space>
using convex::SquareConcaveCodom = typedef ConvexDomain<Space, VarType::NONPOS>

alias for concave codomain on square function

Definition at line 27 of file square.hpp.

◆ SquareConcaveMeta

alias for meta for square function

Definition at line 36 of file square.hpp.

◆ SquareDom

template<linalg::RnSpace Space>
using convex::SquareDom = typedef ConvexDomain<Space, VarType::FREE>

alias for domain on square function

Definition at line 17 of file square.hpp.

◆ SquareMeta

template<linalg::RnSpace Space>
using convex::SquareMeta = typedef ConvexAtomMeta<SquareDom<Space>, SquareCodom<Space>, CurvatureType::CONVEX>

alias for meta for square function

Definition at line 31 of file square.hpp.

◆ SumCodom

template<linalg::RnSpace Codom>
using convex::SumCodom = typedef ConvexDomain<Codom, VarType::FREE>

Codomain alias for sum atom (scalar).

Definition at line 416 of file convex_traits.hpp.

◆ SumDom

template<linalg::RnSpace Dom>
using convex::SumDom = typedef ConvexDomain<Dom, VarType::FREE>

Domain alias for sum atom.

Definition at line 411 of file convex_traits.hpp.

◆ SumMeta

template<linalg::RnSpace Dom, linalg::RnSpace Codom>
using convex::SumMeta = typedef ConvexAtomMeta<SumDom<Dom>, SumCodom<Codom>, CurvatureType::AFFINE>

Meta alias for sum atom.

Definition at line 420 of file convex_traits.hpp.

◆ SymMatVarDom

template<linalg::SquareMatrix Mat>
using convex::SymMatVarDom = typedef ConvexDomain<linalg::SymmetricMatrix<Mat>, VarType::PSD>

alias for nominal psd matrix variable domain

Definition at line 65 of file variable.hpp.

◆ SymMatVarMeta

alias for nominal psd matrix

Definition at line 69 of file variable.hpp.

◆ VarDom

template<linalg::RnSpace Dom>
using convex::VarDom = typedef ConvexDomain<Dom, VarType::FREE>

alias for nominal vector/matrix variable domain

Definition at line 21 of file variable.hpp.

◆ VarMeta

template<linalg::RnSpace Dom>
using convex::VarMeta = typedef ConvexAtomMeta<VarDom<Dom>, VarDom<Dom>, CurvatureType::AFFINE>

alias for nominal vector/matrix variable meta

Definition at line 25 of file variable.hpp.

Enumeration Type Documentation

◆ AtomType

Atom category used by canonicalization and DCP checks.

Enumerator
VAR 
INDEX 
FN 
SET 
ADD 
CAP 

Definition at line 23 of file convex_traits.hpp.

◆ CanonicalConeKind

Cone family emitted into the global cone block.

Enumerator
NONNEG_ORTHANT 
SECOND_ORDER 
POSITIVE_SEMIDEFINITE 
EXP 
POWER 
UNKNOWN 

Definition at line 21 of file canonical_trace.hpp.

◆ CurvatureType

Curvature annotation for atom codomain.

Enumerator
AFFINE 
CONVEX 
CONCAVE 

Definition at line 29 of file convex_traits.hpp.

◆ HalfspaceType

simple enum to describe type of halfspace

Enumerator
LH 
UH 

Definition at line 193 of file convex_traits.hpp.

◆ InequalityType

InequalityType for inequality atom.

Enumerator
EQ 
LEQ 
GEQ 

Definition at line 35 of file convex_traits.hpp.

◆ MonotonicityType

Monotonicity annotation for function atoms.

Enumerator
UNKNOWN 
NONDEC 
NONINC 

Definition at line 32 of file convex_traits.hpp.

◆ NormBallType

simple enum to describe ball type

Enumerator
L2 
L1 
Linf 

Definition at line 208 of file convex_traits.hpp.

◆ StageType

Problem construction lifecycle stage.

Enumerator
INIT 
IN_PROGRESS 
PROBLEM_SET 

Definition at line 38 of file convex_traits.hpp.

◆ VarType

Domain/variable annotation attached to domains/codomains.

Enumerator
FREE 
NONNEG 
NONPOS 
POS 
NEG 
PSD 

Definition at line 26 of file convex_traits.hpp.

Function Documentation

◆ Abs()

◆ AffineSubspace()

◆ cone_tuple_offset_before_v()

template<typename ConeTuple , std::size_t Index>
consteval std::size_t convex::cone_tuple_offset_before_v ( )

Definition at line 178 of file canonical_trace.hpp.

References cone_tuple_offset_before_v(), and dom_size_v.

Referenced by cone_tuple_offset_before_v().

◆ Ellipsoid()

template<typename Point , typename Mat , typename Child >
convex::Ellipsoid ( const Point &  ,
const Mat &  ,
const Child &   
) -> Ellipsoid< EllipsoidMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > > >, atom_decay_t< Child > >

◆ Exp()

◆ extend_canonical_trace()

constexpr auto convex::extend_canonical_trace ( const Trace &  trace,
const NodeRecords &  nodes,
const ConeRecords &  cones,
const EqualityRecords &  equalities 
)
constexpr

Extends canonical trace by tuple concatenation.

Parameters
trace(Trace)
nodes(NodeRecords)
cones(ConeRecords)
equalities(EqualityRecords)
Returns
canonical trace object

Definition at line 201 of file canonical_trace.hpp.

◆ GeoMean()

◆ HarmonicMean()

◆ Huber()

◆ Hyperplane()

◆ Intersection()

template<typename C0 , typename... Cs>
convex::Intersection ( const C0 &  ,
const Cs &  ... 
) -> Intersection< IntersectionMeta< dom_space_t< meta_codom_t< atom_meta_t< C0 > > > >, atom_decay_t< C0 >, atom_decay_t< Cs >... >

◆ InvPos()

◆ KLDivergence()

template<typename Point , typename Child >
convex::KLDivergence ( const Point &  ,
const Child &   
) -> KLDivergence< KLDivMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > >, linalg::Matrix< dom_type_t< meta_codom_t< atom_meta_t< Child > > >, 1, 1 > >, atom_decay_t< Child > >

◆ Log()

◆ LogSumExp()

◆ make_canonical_cone_records()

template<typename ConeTuple >
constexpr auto convex::make_canonical_cone_records ( std::size_t  node_id,
std::size_t  global_cone_start,
std::size_t  cone_offset_start 
)
constexpr

Make canonical cone records for a node-emitted tuple of cones.

Parameters
node_id(std::size_t)
global_cone_state(std::size_t)
cone_offset_start(std::size_t)
Returns
canonical trace object

Definition at line 222 of file canonical_trace.hpp.

References dom_size_v.

◆ make_problem()

template<AtomLike Var>
constexpr auto convex::make_problem ( const Var &  x)
constexpr

make problem

Parameters
decvar x
Returns
convex problem

Definition at line 20 of file convex_problem.hpp.

References dom_size_v.

◆ make_quad_form() [1/2]

template<AtomLike Var>
constexpr auto convex::make_quad_form ( const linalg::Matrix< dom_type_t< meta_codom_t< atom_meta_t< Var > > >, dom_size_v< meta_codom_t< atom_meta_t< Var > > >, dom_size_v< meta_codom_t< atom_meta_t< Var > > > > &  P,
const linalg::Vector< dom_type_t< meta_codom_t< atom_meta_t< Var > > >, dom_size_v< meta_codom_t< atom_meta_t< Var > > > > &  q,
const dom_type_t< meta_codom_t< atom_meta_t< Var > > > &  r,
const Var &  x 
)
constexpr

make quadratic form with domain deduced from the variable atom

Parameters
Pin S^n_+
qin R^n
rin R
xdecision variable atom
Returns
0.5 x^T P x + q^T x + r

Definition at line 189 of file quad_form.hpp.

References dom_size_v.

◆ make_quad_form() [2/2]

template<AtomLike Var>
constexpr auto convex::make_quad_form ( const linalg::Matrix< dom_type_t< meta_codom_t< atom_meta_t< Var > > >, dom_size_v< meta_codom_t< atom_meta_t< Var > > >, dom_size_v< meta_codom_t< atom_meta_t< Var > > > > &  P,
const linalg::Vector< dom_type_t< meta_codom_t< atom_meta_t< Var > > >, dom_size_v< meta_codom_t< atom_meta_t< Var > > > > &  q,
const Var &  x 
)
constexpr

make quadratic form without constant offset

Parameters
Pin S^n_+
qin R^n
xdecision variable atom
Returns
0.5 x^T P x + q^T x

Definition at line 210 of file quad_form.hpp.

References dom_size_v.

◆ make_scalar_quad_form() [1/2]

template<AtomLike Var>
constexpr auto convex::make_scalar_quad_form ( const dom_type_t< meta_codom_t< atom_meta_t< Var > > > &  p,
const dom_type_t< meta_codom_t< atom_meta_t< Var > > > &  q,
const dom_type_t< meta_codom_t< atom_meta_t< Var > > > &  r,
const Var &  x 
)
constexpr

make scalar quad form with domain deduced from the scalar affine atom

Parameters
pscalar quadratic coefficient
qscalar linear coefficient
rscalar constant offset
xscalar affine atom
Returns
0.5 p x^2 + q x + r

Definition at line 153 of file quad_form.hpp.

References dom_size_v.

◆ make_scalar_quad_form() [2/2]

template<AtomLike Var>
constexpr auto convex::make_scalar_quad_form ( const dom_type_t< meta_codom_t< atom_meta_t< Var > > > &  p,
const dom_type_t< meta_codom_t< atom_meta_t< Var > > > &  q,
const Var &  x 
)
constexpr

make scalar quad form without constant offset

Parameters
pscalar quadratic coefficient
qscalar linear coefficient
xscalar affine atom
Returns
0.5 p x^2 + q x

Definition at line 171 of file quad_form.hpp.

References dom_size_v.

◆ make_trace()

template<AtomLike Var>
constexpr auto convex::make_trace ( const Var &  X)
constexpr

make trace objective with domain deduced from variable atom.

Parameters
Xsquare matrix or symmetric-matrix decision variable
Returns
Tr(X)

Definition at line 94 of file trace.hpp.

References dom_size_v.

◆ make_trace_block()

template<std::size_t Offset, linalg::RnSpace TraceSpace, AtomLike Var>
constexpr auto convex::make_trace_block ( const Var &  X)
constexpr

make trace objective over a matrix block inside a merged variable.

Template Parameters
Offsetstarting scalar coordinate of the traced matrix block
TraceSpacefull square matrix space or symmetric-matrix space
Parameters
Xmerged decision variable containing the matrix block
Returns
linear objective equal to the trace of the selected block

Definition at line 110 of file trace.hpp.

References dom_size_v, and convex::Trace< Space >::weights().

◆ make_weighted_sum()

template<AtomLike Var>
constexpr auto convex::make_weighted_sum ( const linalg::Vector< dom_type_t< meta_codom_t< atom_meta_t< Var > > >, dom_size_v< meta_codom_t< atom_meta_t< Var > > > > &  q,
const Var &  x 
)
constexpr

make weighted sum with domain deduced from the variable atom

f(x) = q^T x

Parameters
qin R^n
xdecision variable atom
Returns
q^T x

Definition at line 61 of file weighted_sum.hpp.

References dom_size_v.

◆ Max()

template<typename Child >
convex::Max ( const Child &  ) -> Max< MaxMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > >, linalg::Matrix< dom_type_t< meta_codom_t< atom_meta_t< Child > > >, 1, 1 > >, atom_decay_t< Child > >

◆ mu()

template<linalg::VectorContainer ConeVar>
constexpr auto convex::mu ( const ConeVar &  x,
const ConeVar &  y,
const linalg::vector_element_t< ConeVar > &  nu 
)
constexpr

mu - normalized duality gap

<x, s> / nu

Parameters
xin K
sin K^*
nusum of barrier param across cones
Returns
mu

Definition at line 31 of file pd_ipm.hpp.

◆ Polyhedron()

template<typename Mat , typename Bias , typename Child >
convex::Polyhedron ( const Mat &  ,
const Bias &  ,
const Child &   
) -> Polyhedron< PolyhedronMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > >, linalg::Matrix< dom_type_t< meta_codom_t< atom_meta_t< Child > > >, 1, linalg::mat_rows_v< Mat > > >, atom_decay_t< Child > >

◆ regularize()

template<linalg::SquareMatrix Mat, linalg::MatrixContainer EqMat>
constexpr auto convex::regularize ( Mat  M,
const EqMat &  A,
const config::RegularizationConfig< linalg::matrix_scalar_t< EqMat > > &  reg 
)
constexpr

regularize

case 1: no eq bump diagonal of M block by delta globally case 2: eq in the loop but non-degenerate fall back to 1 case 3: eq in the loop but near-degenerate direction bump higher in this dir

Parameters
M(Mat)
A(EqMat)
reg(RegularizationConfig)
Returns
M

Definition at line 50 of file pd_ipm.hpp.

References dom_size_v.

◆ Softplus()

◆ Sqrt()

◆ Square()

◆ Sum()

template<typename C0 , typename... Cs>
convex::Sum ( const C0 &  ,
const Cs &  ... 
) -> Sum< SumMeta< linalg::Matrix< dom_type_t< meta_dom_t< atom_meta_t< C0 > > >, 1, 1+sizeof...(Cs)>, dom_space_t< meta_codom_t< atom_meta_t< C0 > > > >, atom_decay_t< C0 >, atom_decay_t< Cs >... >

Deduction guide for sum atoms.

◆ tuple_fold_cap()

template<std::size_t idx = 0, typename Children , typename Builder , typename Fn >
constexpr auto convex::tuple_fold_cap ( Children &&  children,
Builder &&  builder,
Fn &&  fn 
)
constexpr

intersect over tuple

Parameters
childsets
builder
canoncailzefn
Returns
new builder

Definition at line 23 of file intersection.hpp.

References dom_size_v.

Referenced by convex::Intersection< Meta, Cs >::canonicalize_impl().

◆ tuple_fold_sum()

template<std::size_t idx = 0, typename Children , typename Builder , typename Fn , affine::AffineMapLike Map>
constexpr auto convex::tuple_fold_sum ( Children &&  children,
Builder &&  builder,
Fn &&  fn,
Map &&  selector 
)
constexpr

Canonicalize and fold all sum children.

Template Parameters
idxchild index currently being folded
Childrentuple-like child container
Buildercanonical-form builder type
Fncallable that canonicalizes a child
Mapselector-map type
Parameters
childrenatoms
buildercurrent canonical-form builder
fncanonicalization callable
selectorcurrent accumulated selector map
Returns
tuple containing the accumulated selector and builder

Definition at line 92 of file sum.hpp.

References dom_size_v, and update_selector().

Referenced by convex::Sum< Meta, Cs >::canonicalize_impl().

◆ update_selector()

template<affine::AffineMapLike PrevMap, affine::AffineMapLike NextMap>
constexpr auto convex::update_selector ( const PrevMap &  prev,
const NextMap &  next 
)
constexpr

Accumulate the affine selector for a sum atom.

Parameters
prevcurrent accumulated selector map
nextselector map emitted by the next canonicalized child
Returns
selector map whose affine rows represent the child sum

(dakre) first step is seeding the selector map from first child then accumulate selector thereafter

Definition at line 39 of file sum.hpp.

References dom_size_v.

Referenced by tuple_fold_sum().

◆ validate_sum_child_codomain()

constexpr void convex::validate_sum_child_codomain ( )
constexpr

Validate that a sum child has the same codomain as the parent sum.

Template Parameters
SumCodomainexpected sum codomain
Childchild atom type to validate
Returns
void

Definition at line 23 of file sum.hpp.

References dom_size_v.

Variable Documentation

◆ atom_type_v

template<AtomLike Atom>
constexpr AtomType convex::atom_type_v = atom_traits<atom_decay_t<Atom>>::Type
inlineconstexpr

Compile-time atom category.

Definition at line 472 of file convex_traits.hpp.

◆ canonical_cone_kind_v

template<typename Cone >
constexpr CanonicalConeKind convex::canonical_cone_kind_v
inlineconstexpr
Initial value:
=
canonical_cone_kind<linalg::remove_cvref_t<Cone>>::value

Definition at line 174 of file canonical_trace.hpp.

◆ canonical_no_parent

constexpr std::size_t convex::canonical_no_parent
inlineconstexpr
Initial value:
=
std::numeric_limits<std::size_t>::max()

Sentinel used when a canonical node does not have a parent node.

Definition at line 31 of file canonical_trace.hpp.

◆ canonical_trace_num_cones_v

template<typename Trace >
constexpr std::size_t convex::canonical_trace_num_cones_v
inlineconstexpr
Initial value:
=
canonical_trace_traits<linalg::remove_cvref_t<Trace>>::NumCones

Definition at line 135 of file canonical_trace.hpp.

◆ canonical_trace_num_equalities_v

template<typename Trace >
constexpr std::size_t convex::canonical_trace_num_equalities_v
inlineconstexpr
Initial value:
=
canonical_trace_traits<linalg::remove_cvref_t<Trace>>::NumEqualities

Definition at line 139 of file canonical_trace.hpp.

◆ canonical_trace_num_nodes_v

template<typename Trace >
constexpr std::size_t convex::canonical_trace_num_nodes_v
inlineconstexpr
Initial value:
=
canonical_trace_traits<linalg::remove_cvref_t<Trace>>::NumNodes

Definition at line 131 of file canonical_trace.hpp.

◆ dom_size_v

template<typename Dom >
constexpr std::size_t convex::dom_size_v
inlineconstexpr
Initial value:
=
dom_traits<linalg::remove_cvref_t<Dom>>::N

Definition at line 67 of file convex_traits.hpp.

Referenced by convex::Variable< Meta >::add(), convex::Abs< Meta, Child >::add(), convex::Exp< Meta, Child >::add(), convex::GeoMean< Meta, Child >::add(), convex::HarmonicMean< Meta, Child >::add(), convex::Huber< Meta, Child >::add(), convex::InvPos< Meta, Child >::add(), convex::KLDivergence< Meta, Child >::add(), convex::Log< Meta, Child >::add(), convex::LogSumExp< Meta, Child >::add(), convex::Max< Meta, Child >::add(), convex::Norm< Meta, Child, NormFunc >::add(), convex::Softplus< Meta, Child >::add(), convex::Sqrt< Meta, Child >::add(), convex::Square< Meta, Child >::add(), convex::Sum< Meta, Cs >::add(), convex::ScalarView< Meta, Child >::add(), convex::ConvexProblem< Builder, Stage >::add_constraint(), convex::Variable< Meta >::add_var_block(), convex::debug::FixedBufferWriter::append(), convex::debug::append_array_slice(), convex::debug::append_canonical_trace(), convex::debug::append_cone_steps(), convex::debug::append_iter_trace(), convex::debug::append_matrix(), convex::debug::append_solver_trace(), convex::debug::append_vector(), convex::debug::canonical_cone_kind_to_cstr(), convex::Atom< Meta, Derived, Cs >::canonicalize(), convex::Inequality< IType, LHS, RHS >::canonicalize(), convex::LMI< Meta, Child, MatIn >::canonicalize(), convex::Abs< Meta, Child >::canonicalize_impl(), convex::Exp< Meta, Child >::canonicalize_impl(), convex::GeoMean< Meta, Child >::canonicalize_impl(), convex::HarmonicMean< Meta, Child >::canonicalize_impl(), convex::Huber< Meta, Child >::canonicalize_impl(), convex::InvPos< Meta, Child >::canonicalize_impl(), convex::KLDivergence< Meta, Child >::canonicalize_impl(), convex::Log< Meta, Child >::canonicalize_impl(), convex::LogSumExp< Meta, Child >::canonicalize_impl(), convex::Max< Meta, Child >::canonicalize_impl(), convex::Norm< Meta, Child, NormFunc >::canonicalize_impl(), convex::Softplus< Meta, Child >::canonicalize_impl(), convex::Sqrt< Meta, Child >::canonicalize_impl(), convex::Square< Meta, Child >::canonicalize_impl(), convex::Intersection< Meta, Cs >::canonicalize_impl(), convex::ConvexSet< Meta, Derived, Child >::canonicalize_impl(), convex::Sum< Meta, Cs >::canonicalize_impl(), convex::AffineSubspace< Meta, Child >::canonicalize_set(), convex::Ellipsoid< Meta, Child >::canonicalize_set(), convex::Halfspace< Meta, Child, Type >::canonicalize_set(), convex::Hyperplane< Meta, Child >::canonicalize_set(), convex::NormBall< Meta, Child, Type >::canonicalize_set(), convex::Polyhedron< Meta, Child >::canonicalize_set(), convex::PdIpmStepTrace< T, NumCones >::cone(), convex::PdIpmStepTrace< T, NumCones >::cone(), cone_tuple_offset_before_v(), convex::Intersection< Meta, Cs >::contains(), convex::ConvexSet< Meta, Derived, Child >::contains(), convex::AffineSubspace< Meta, Child >::contains_impl(), convex::Hyperplane< Meta, Child >::contains_impl(), convex::Polyhedron< Meta, Child >::contains_impl(), convex::Ellipsoid< Meta, Child >::contains_impl(), convex::LMI< Meta, Child, MatIn >::contains_impl(), convex::PredictorCorrector< NumCones, ConeMat, EqMat, Var, ConeVar >::corrector(), convex::KLDivergence< Meta, Child >::eval(), convex::Abs< Meta, Child >::eval(), convex::Exp< Meta, Child >::eval(), convex::GeoMean< Meta, Child >::eval(), convex::HarmonicMean< Meta, Child >::eval(), convex::Huber< Meta, Child >::eval(), convex::InvPos< Meta, Child >::eval(), convex::Log< Meta, Child >::eval(), convex::LogSumExp< Meta, Child >::eval(), convex::Max< Meta, Child >::eval(), convex::Norm< Meta, Child, NormFunc >::eval(), convex::Softplus< Meta, Child >::eval(), convex::Sqrt< Meta, Child >::eval(), convex::Square< Meta, Child >::eval(), convex::ConvexProblem< Builder, Stage >::feasibility(), convex::debug::FixedBufferWriter::format(), convex::Huber< Meta, Child >::Huber(), convex::Huber< Meta, Child >::Huber(), convex::ConvexProblem< Builder, Stage >::in_set(), convex::AffineSubspace< Meta, Child >::is_equal_impl(), convex::Ellipsoid< Meta, Child >::is_equal_impl(), convex::Halfspace< Meta, Child, Type >::is_equal_impl(), convex::Hyperplane< Meta, Child >::is_equal_impl(), convex::LMI< Meta, Child, MatIn >::is_equal_impl(), convex::NormBall< Meta, Child, Type >::is_equal_impl(), convex::Polyhedron< Meta, Child >::is_equal_impl(), convex::AffineSubspace< Meta, Child >::is_well_formed(), convex::Ellipsoid< Meta, Child >::is_well_formed(), convex::Polyhedron< Meta, Child >::is_well_formed(), convex::PdIpmTrace< T, NumCones >::iter(), convex::PdIpmTrace< T, NumCones >::iter(), convex::KLDivergence< Meta, Child >::KLDivergence(), convex::KLDivergence< Meta, Child >::KLDivergence(), convex::TraceWeights< Mat >::make(), convex::TraceWeights< linalg::SymmetricMatrix< Mat > >::make(), make_canonical_cone_records(), make_problem(), make_quad_form(), make_quad_form(), make_scalar_quad_form(), make_scalar_quad_form(), make_trace(), make_trace_block(), make_weighted_sum(), convex::debug::matrix_to_cstr(), convex::ConvexProblem< Builder, Stage >::maximize(), convex::ConvexProblem< Builder, Stage >::minimize(), convex::Abs< Meta, Child >::monotonicity(), convex::Huber< Meta, Child >::monotonicity(), convex::Norm< Meta, Child, NormFunc >::monotonicity(), convex::Square< Meta, Child >::monotonicity(), convex::Abs< Meta, Child >::mul(), convex::Exp< Meta, Child >::mul(), convex::GeoMean< Meta, Child >::mul(), convex::HarmonicMean< Meta, Child >::mul(), convex::Huber< Meta, Child >::mul(), convex::InvPos< Meta, Child >::mul(), convex::KLDivergence< Meta, Child >::mul(), convex::Log< Meta, Child >::mul(), convex::LogSumExp< Meta, Child >::mul(), convex::Max< Meta, Child >::mul(), convex::Norm< Meta, Child, NormFunc >::mul(), convex::Softplus< Meta, Child >::mul(), convex::Sqrt< Meta, Child >::mul(), convex::Square< Meta, Child >::mul(), convex::Sum< Meta, Cs >::mul(), convex::Variable< Meta >::mul(), convex::ScalarView< Meta, Child >::mul(), convex::Variable< Meta >::mul(), convex::ConvexSet< Meta, Derived, Child >::operator!=(), convex::QuadForm< Space >::operator()(), convex::QuadForm< Space >::operator()(), convex::KLDivergence< Meta, Child >::operator()(), convex::Trace< Space >::operator()(), convex::WeightedSum< Space >::operator()(), convex::Variable< Meta >::operator()(), convex::ScalarQuadForm< T >::operator()(), convex::ScalarQuadForm< T >::operator()(), convex::ConvexSet< Meta, Derived, Child >::operator==(), convex::PdIpmTrace< T, NumCones >::operator[](), convex::PdIpmTrace< T, NumCones >::operator[](), convex::PredictorCorrector< NumCones, ConeMat, EqMat, Var, ConeVar >::predictor(), convex::PrimalDualIPM< Problem >::PrimalDualIPM(), convex::PrimalDualIPM< Problem >::PrimalDualIPM(), convex::PrimalDualIPM< Problem >::PrimalDualIPM(), convex::PrimalDualIPM< Problem >::PrimalDualIPM(), regularize(), convex::debug::result_to_cstr(), convex::ScalarView< Meta, Child >::ScalarView(), convex::ScalarView< Meta, Child >::ScalarView(), convex::Atom< Meta, Derived, Cs >::self(), convex::ConvexSet< Meta, Derived, Child >::self(), convex::NoEqualityCoupling< Var, NuVar >::solve_step(), convex::SchurEqualityCoupling< EqMat, SchurFactor, Var, NuVar >::solve_step(), convex::ScalarEqualityCoupling< EqMat, Scalar, Var, NuVar >::solve_step(), convex::Variable< Meta >::split(), convex::Sum< Meta, Cs >::Sum(), convex::Sum< Meta, Cs >::Sum(), convex::LMI< Meta, Child, MatIn >::transform_impl(), convex::Ellipsoid< Meta, Child >::transform_impl(), convex::Halfspace< Meta, Child, Type >::transform_impl(), convex::Hyperplane< Meta, Child >::transform_impl(), convex::NormBall< Meta, Child, Type >::transform_impl(), convex::Polyhedron< Meta, Child >::transform_impl(), convex::AffineSubspace< Meta, Child >::transform_impl(), tuple_fold_cap(), tuple_fold_sum(), update_selector(), convex::Atom< Meta, Derived, Cs >::validate_domain(), convex::ConvexSet< Meta, Derived, Child >::validate_domain_impl(), convex::Atom< Meta, Derived, Cs >::validate_fn_domain(), validate_sum_child_codomain(), and convex::debug::vector_to_cstr().

◆ dom_vartype_v

template<typename Dom >
constexpr VarType convex::dom_vartype_v
inlineconstexpr
Initial value:
=
dom_traits<linalg::remove_cvref_t<Dom>>::sign

Definition at line 71 of file convex_traits.hpp.

Referenced by convex::Atom< Meta, Derived, Cs >::validate_domain().

◆ is_add_type_v

template<AtomLike Atom>
constexpr bool convex::is_add_type_v = atom_type_v<Atom> == AtomType::ADD
inlineconstexpr

◆ is_cap_type_v

template<AtomLike Atom>
constexpr bool convex::is_cap_type_v = atom_type_v<Atom> == AtomType::CAP
inlineconstexpr

◆ is_fn_type_v

template<AtomLike Atom>
constexpr bool convex::is_fn_type_v = atom_type_v<Atom> == AtomType::FN
inlineconstexpr

Helper predicates on atom category.

Definition at line 476 of file convex_traits.hpp.

Referenced by convex::Atom< Meta, Derived, Cs >::validate_domain().

◆ is_index_type_v

template<AtomLike Atom>
constexpr bool convex::is_index_type_v = atom_type_v<Atom> == AtomType::INDEX
inlineconstexpr

Definition at line 491 of file convex_traits.hpp.

◆ is_problem_set_v

template<typename Prob >
constexpr bool convex::is_problem_set_v
inlineconstexpr
Initial value:
=
prob_traits<linalg::remove_cvref_t<Prob>>::StageV == StageType::PROBLEM_SET

stage type from prob

Definition at line 244 of file convex_traits.hpp.

◆ is_set_type_v

template<AtomLike Atom>
constexpr bool convex::is_set_type_v = atom_type_v<Atom> == AtomType::SET
inlineconstexpr

◆ is_var_type_v

template<AtomLike Atom>
constexpr bool convex::is_var_type_v = atom_type_v<Atom> == AtomType::VAR
inlineconstexpr

◆ LMI< LMIMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > > >, atom_decay_t< Child >, Mat >

template<typename Mat , std::size_t N, typename Child >
convex::LMI< LMIMeta< dom_space_t< meta_codom_t< atom_meta_t< Child > > > >, atom_decay_t< Child >, Mat >

(dakre) CTAD - class template argument deduction for egononic use of LMI instead of full template path

Definition at line 1 of file lmi.hpp.

◆ meta_curv_v

template<typename Meta >
constexpr CurvatureType convex::meta_curv_v
inlineconstexpr
Initial value:
=
meta_traits<linalg::remove_cvref_t<Meta>>::curvature

Definition at line 98 of file convex_traits.hpp.

Referenced by convex::Atom< Meta, Derived, Cs >::validate_domain(), and convex::Atom< Meta, Derived, Cs >::validate_fn_domain().