akreon-convex
Typed convex modeling, conic canonicalization, and primal-dual optimization in C++26.
Loading...
Searching...
No Matches
canonical_trace.hpp File Reference
#include <cstddef>
#include <cstdint>
#include <limits>
#include <tuple>
#include <type_traits>
#include <utility>
#include "akreon/convex/cone_traits.hpp"
#include "akreon/convex/convex_traits.hpp"
Include dependency graph for canonical_trace.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  convex::CanonicalNodeRecord
 Structural atom emitted during canonicalization. More...
 
struct  convex::CanonicalConeRecord
 Cone slice emitted by one canonical trace node. More...
 
struct  convex::CanonicalEqualityRecord
 Equality-row slice emitted by one canonical trace node. More...
 
struct  convex::CanonicalTrace< NodeRecords, ConeRecords, EqualityRecords >
 Compile-time canonicalization trace. More...
 
struct  convex::canonical_trace_traits< CanonicalTrace< NodeTuple, ConeTuple, EqualityTuple > >
 
struct  convex::canonical_cone_kind< Cone >
 
struct  convex::canonical_cone_kind< conic::NonnegOrthantCone< Vec > >
 
struct  convex::canonical_cone_kind< conic::SecondOrderCone< Vec > >
 
struct  convex::canonical_cone_kind< conic::PositiveSemidefiniteCone< Vec, Dim > >
 
struct  convex::canonical_cone_kind< conic::ExpCone< Vec > >
 
struct  convex::canonical_cone_kind< conic::PowerCone< Vec > >
 

Namespaces

namespace  convex
 

Typedefs

using convex::EmptyCanonicalTrace = CanonicalTrace<>
 
template<typename Trace >
using convex::canonical_trace_nodes_t = typename canonical_trace_traits< linalg::remove_cvref_t< Trace > >::Nodes
 
template<typename Trace >
using convex::canonical_trace_cones_t = typename canonical_trace_traits< linalg::remove_cvref_t< Trace > >::Cones
 
template<typename Trace >
using convex::canonical_trace_equalities_t = typename canonical_trace_traits< linalg::remove_cvref_t< Trace > >::Equalities
 

Enumerations

enum struct  convex::CanonicalConeKind : uint8_t {
  convex::NONNEG_ORTHANT = 0 , convex::SECOND_ORDER = 1 , convex::POSITIVE_SEMIDEFINITE = 2 , convex::EXP = 3 ,
  convex::POWER = 4 , convex::UNKNOWN = 255
}
 Cone family emitted into the global cone block. More...
 

Functions

template<typename ConeTuple , std::size_t Index>
consteval std::size_t convex::cone_tuple_offset_before_v ()
 
template<typename Trace , typename NodeRecords , typename ConeRecords , typename EqualityRecords >
constexpr auto convex::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 convex::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.
 

Variables

constexpr std::size_t convex::canonical_no_parent
 Sentinel used when a canonical node does not have a parent node.
 
template<typename Trace >
constexpr std::size_t convex::canonical_trace_num_nodes_v
 
template<typename Trace >
constexpr std::size_t convex::canonical_trace_num_cones_v
 
template<typename Trace >
constexpr std::size_t convex::canonical_trace_num_equalities_v
 
template<typename Cone >
constexpr CanonicalConeKind convex::canonical_cone_kind_v