13template <linalg::RnSpace Space>
17template <linalg::RnSpace Space>
21template <linalg::RnSpace Space>
31template <
typename Meta,
typename Child>
59 return linalg::constexpr_abs(linalg::inner_product(
a, x) -
b) <
tol;
68 if (linalg::all_zero(
a))
return false;
84 template <linalg::SquareMatrix Mat>
85 requires(linalg::mat_cols_v<Mat> ==
N &&
86 std::same_as<linalg::matrix_scalar_t<Mat>,
T>)
88 const auto [
U_inv, event] = linalg::MatrixInverse<Mat>()(map.linear_part());
89 static_cast<void>(event);
92 b + (
aT_U * map.translation())(0),
93 std::get<0>(
this->children));
101 template <
typename Other>
115 template <AtomType Type, conic::BuilderLike Builder>
117 static_cast<void>(Type);
124 linalg::mat_cols_v<
decltype(
child_coord.linear_part())>;
126 "Convex set domain does not equal the child coordinate "
127 "linear map's codomain in size");
129 const auto eq_map = affine::AffineMap<linalg::RowVector<T, N>>(
130 linalg::as_row_vector(
a), linalg::Vector<T, 1>{
b})
141template <
typename Po
int,
typename T,
typename Child>
constexpr std::size_t dom_size_v
linalg::remove_cvref_t< T > atom_decay_t
normalize atom-facing types to a stable internal form.
Atom-local equality emission bundle.
ChildrenT children
Tuple of normalized child atoms.
dom_point_t< Domain > PointT
Point type accepted by the atom domain.
dom_type_t< Domain > T
Scalar field for the atom domain.
static constexpr std::size_t N
Domain dimension.
Domain wrapper with a static sign label.
forward declaration of convex set
forward declaration of hyperplane
constexpr bool contains_impl(const PointT &x, T tol) const
contains function to see if x lies in the hyerplane defined by a^T x = b
constexpr bool is_well_formed() const
is well formed checks to see if the hyperplane is valid
constexpr auto transform_impl(const affine::AffineMap< Mat > &map) const
transform implementation
constexpr auto canonicalize_set(const Builder &builder) const
canonicalize impl
PointT a
member var in hyperplane
constexpr Hyperplane(const PointT &a_in, T b_in, const Child &child_in)
CTOR for hyperplane.
constexpr bool is_equal_impl(const Other &other) const
is_equal implementation