31template<
typename U=Scalar>
32 requires IsIntervalDomain<U>
39 for(Index i = 0 ; i < this->rows() ; i++)
40 for(Index j = 0 ; j < this->cols() ; j++)
44 v += std::log((*
this)(i,j).
diam());
58 for(Index i = 0 ; i < rows() ; i++)
59 for(Index j = 0 ; j < cols() ; j++)
69#define degenerate_mat(op) \
70 Matrix<double,RowsAtCompileTime,ColsAtCompileTime> m(this->rows(),this->cols()); \
72 if(this->is_empty()) \
73 m.init(std::numeric_limits<double>::quiet_NaN()); \
77 for(Index i = 0 ; i < this->rows() ; i++) \
78 for(Index j = 0 ; j < this->cols() ; j++) \
79 m(i,j) = (*this)(i,j).op(); \
89template<
typename U=Scalar>
90 requires IsIntervalDomain<U>
101template<
typename U=Scalar>
102 requires IsIntervalDomain<U>
103inline auto ub()
const
115template<
typename U=Scalar>
116 requires IsIntervalDomain<U>
129template<
typename U=Scalar>
130 requires IsIntervalDomain<U>
141template<
typename U=Scalar>
142 requires IsIntervalDomain<U>
155template<
typename U=Scalar>
156 requires IsIntervalDomain<U>
169template<
typename U=Scalar>
170 requires IsIntervalDomain<U>
183template<
typename U=Scalar>
184 requires IsIntervalDomain<U>
209template<
typename OtherDerived>
210inline bool contains(
const MatrixBase<OtherDerived>& x)
const
221 assert_release(x.size() == this->size());
226 for(Index i = 0 ; i < this->rows() ; i++)
227 for(Index j = 0 ; j < this->cols() ; j++)
253template<
typename OtherDerived>
265 assert_release(x.size() == this->size());
270 for(Index i = 0 ; i < this->rows() ; i++)
271 for(Index j = 0 ; j < this->cols() ; j++)
286 for(Index i = 0 ; i < this->rows() ; i++)
287 for(Index j = 0 ; j < this->cols() ; j++)
302 for(Index i = 0 ; i < this->rows() ; i++)
303 for(Index j = 0 ; j < this->cols() ; j++)
320 for(Index i = 0 ; i < this->rows() ; i++)
321 for(Index j = 0 ; j < this->cols() ; j++)
346template<
typename OtherDerived>
347inline bool intersects(
const MatrixBase<OtherDerived>& x)
const
355template<
typename OtherDerived>
358 assert_release(this->size() == x.size());
363 for(Index i = 0 ; i < this->rows() ; i++)
364 for(Index j = 0 ; j < this->cols() ; j++)
390template<
typename OtherDerived>
399template<
typename OtherDerived>
402 assert_release(this->size() == x.size());
407 for(Index i = 0 ; i < this->rows() ; i++)
408 for(Index j = 0 ; j < this->cols() ; j++)
434template<
typename OtherDerived>
435inline bool overlaps(
const MatrixBase<OtherDerived>& x)
const
443template<
typename OtherDerived>
444inline bool _overlaps(
const MatrixBase<OtherDerived>& x)
const
446 assert_release(this->size() == x.size());
451 for(Index i = 0 ; i < this->rows() ; i++)
452 for(Index j = 0 ; j < this->cols() ; j++)
479template<
typename OtherDerived>
480inline bool is_subset(
const MatrixBase<OtherDerived>& x)
const
491 assert_release(this->size() == x.size());
496 for(Index i = 0 ; i < this->rows() ; i++)
497 for(Index j = 0 ; j < this->cols() ; j++)
523template<
typename OtherDerived>
535 assert_release(this->size() == x.size());
543 for(Index i = 0 ; i < this->rows() ; i++)
544 for(Index j = 0 ; j < this->cols() ; j++)
570template<
typename OtherDerived>
579template<
typename OtherDerived>
582 assert_release(this->size() == x.size());
587 for(Index i = 0 ; i < this->rows() ; i++)
588 for(Index j = 0 ; j < this->cols() ; j++)
615template<
typename OtherDerived>
624template<
typename OtherDerived>
627 assert_release(this->size() == x.size());
632 for(Index i = 0 ; i < this->rows() ; i++)
633 for(Index j = 0 ; j < this->cols() ; j++)
659template<
typename OtherDerived>
668template<
typename OtherDerived>
671 assert_release(this->size() == x.size());
676 for(Index i = 0 ; i < this->rows() ; i++)
677 for(Index j = 0 ; j < this->cols() ; j++)
704template<
typename OtherDerived>
713template<
typename OtherDerived>
716 assert_release(this->size() == x.size());
724 for(Index i = 0 ; i < this->rows() ; i++)
725 for(Index j = 0 ; j < this->cols() ; j++)
741 for(Index i = 0 ; i < this->rows() ; i++)
742 for(Index j = 0 ; j < this->cols() ; j++)
Matrix(const Matrix< double, R, C > &lb, const Matrix< double, R, C > &ub)
Constructs an interval matrix from lower and upper bound matrices.
Definition codac2_Matrix_addons_IntervalMatrixBase.h:50
bool overlaps(const Matrix< codac2::Interval, RowsAtCompileTime, ColsAtCompileTime > &x) const
Checks whether this matrix overlaps with another.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:423
auto lb() const
Returns a matrix containing the lower bounds of each interval element.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:91
bool is_strict_superset(const Matrix< codac2::Interval, RowsAtCompileTime, ColsAtCompileTime > &x) const
Checks whether this matrix is a strict superset of another matrix.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:693
auto mid() const
Returns a matrix containing the midpoints of each interval element.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:117
bool is_degenerated() const
Checks if the interval matrix is degenerated.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:300
bool is_superset(const Matrix< codac2::Interval, RowsAtCompileTime, ColsAtCompileTime > &x) const
Checks whether this matrix is a superset of another interval matrix.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:648
bool is_unbounded() const
Checks if the interval matrix contains any unbounded intervals.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:283
auto mag() const
Returns a matrix containing the magnitudes of each interval element.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:131
bool _is_subset(const T &x) const
Internal helper for subset check.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:489
bool is_interior_subset(const Matrix< codac2::Interval, RowsAtCompileTime, ColsAtCompileTime > &x) const
Checks whether this matrix is an interior subset of another.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:559
bool is_strict_subset(const Matrix< codac2::Interval, RowsAtCompileTime, ColsAtCompileTime > &x) const
Checks whether this matrix is a strict subset of another matrix.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:512
auto diam() const
Returns a matrix containing the diameters of each interval element.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:185
bool is_empty() const
Checks whether the interval matrix is empty.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:56
bool _is_strict_subset(const T &x) const
Internal helper for strict subset check.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:533
bool interior_contains(const Matrix< double, RowsAtCompileTime, ColsAtCompileTime > &x) const
Checks if the interior of this interval matrix contains the specified matrix x.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:242
bool is_subset(const Matrix< codac2::Interval, RowsAtCompileTime, ColsAtCompileTime > &x) const
Checks whether this matrix is a subset of another interval matrix.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:468
bool _overlaps(const MatrixBase< OtherDerived > &x) const
Internal helper to check overlap.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:444
bool is_disjoint(const Matrix< codac2::Interval, RowsAtCompileTime, ColsAtCompileTime > &x) const
Checks if this matrix is disjoint with another matrix of intervals.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:379
auto mig() const
Returns a matrix containing the mignitudes of each interval element.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:143
bool _is_interior_subset(const MatrixBase< OtherDerived > &x) const
Internal helper for interior subset checking.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:580
#define degenerate_mat(op)
Helper macro to create a matrix from a specific operation applied to each interval element.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:69
bool _interior_contains(const T &x) const
Internal helper function to check interior containment.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:263
bool is_strict_interior_subset(const Matrix< codac2::Interval, RowsAtCompileTime, ColsAtCompileTime > &x) const
Checks whether this matrix is a strict interior subset of another matrix.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:604
bool _is_strict_interior_subset(const MatrixBase< OtherDerived > &x) const
Internal helper for strict interior subset relation.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:625
bool is_flat() const
Checks if the interval matrix is flat.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:317
bool is_bisectable() const
Checks whether at least one interval in the matrix is bisectable.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:739
bool _is_superset(const MatrixBase< OtherDerived > &x) const
Internal helper for superset check.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:669
auto ub() const
Returns a matrix containing the upper bounds of each interval element.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:103
auto rand() const
Returns a matrix with random values chosen inside each interval element.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:157
bool _contains(const T &x) const
Internal helper function to check containment.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:219
bool contains(const Matrix< double, RowsAtCompileTime, ColsAtCompileTime > &x) const
Checks if this interval matrix contains the specified matrix x.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:198
auto rad() const
Returns a matrix containing the radii of each interval element.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:171
bool _intersects(const MatrixBase< OtherDerived > &x) const
Internal helper that performs intersection checking.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:356
double volume() const
Computes the volume of the interval matrix.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:33
bool _is_disjoint(const MatrixBase< OtherDerived > &x) const
Internal helper for disjointness checking.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:400
bool intersects(const Matrix< codac2::Interval, RowsAtCompileTime, ColsAtCompileTime > &x) const
Checks whether this matrix intersects with another matrix of intervals.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:335
bool _is_strict_superset(const MatrixBase< OtherDerived > &x) const
Internal helper for strict superset check.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:714