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>
167template<
typename U=Scalar>
168 requires IsIntervalDomain<U>
181template<
typename U=Scalar>
182 requires IsIntervalDomain<U>
195template<
typename U=Scalar>
196 requires IsIntervalDomain<U>
209template<
typename U=Scalar>
210 requires IsIntervalDomain<U>
235template<
typename OtherDerived>
236inline bool contains(
const MatrixBase<OtherDerived>& x)
const
247 assert_release(x.size() == this->size());
252 for(Index i = 0 ; i < this->rows() ; i++)
253 for(Index j = 0 ; j < this->cols() ; j++)
279template<
typename OtherDerived>
291 assert_release(x.size() == this->size());
296 for(Index i = 0 ; i < this->rows() ; i++)
297 for(Index j = 0 ; j < this->cols() ; j++)
312 for(Index i = 0 ; i < this->rows() ; i++)
313 for(Index j = 0 ; j < this->cols() ; j++)
328 for(Index i = 0 ; i < this->rows() ; i++)
329 for(Index j = 0 ; j < this->cols() ; j++)
346 for(Index i = 0 ; i < this->rows() ; i++)
347 for(Index j = 0 ; j < this->cols() ; j++)
372template<
typename OtherDerived>
373inline bool intersects(
const MatrixBase<OtherDerived>& x)
const
381template<
typename OtherDerived>
384 assert_release(this->size() == x.size());
389 for(Index i = 0 ; i < this->rows() ; i++)
390 for(Index j = 0 ; j < this->cols() ; j++)
416template<
typename OtherDerived>
425template<
typename OtherDerived>
428 assert_release(this->size() == x.size());
433 for(Index i = 0 ; i < this->rows() ; i++)
434 for(Index j = 0 ; j < this->cols() ; j++)
460template<
typename OtherDerived>
461inline bool overlaps(
const MatrixBase<OtherDerived>& x)
const
469template<
typename OtherDerived>
470inline bool _overlaps(
const MatrixBase<OtherDerived>& x)
const
472 assert_release(this->size() == x.size());
477 for(Index i = 0 ; i < this->rows() ; i++)
478 for(Index j = 0 ; j < this->cols() ; j++)
505template<
typename OtherDerived>
506inline bool is_subset(
const MatrixBase<OtherDerived>& x)
const
517 assert_release(this->size() == x.size());
522 for(Index i = 0 ; i < this->rows() ; i++)
523 for(Index j = 0 ; j < this->cols() ; j++)
549template<
typename OtherDerived>
561 assert_release(this->size() == x.size());
569 for(Index i = 0 ; i < this->rows() ; i++)
570 for(Index j = 0 ; j < this->cols() ; j++)
596template<
typename OtherDerived>
605template<
typename OtherDerived>
608 assert_release(this->size() == x.size());
613 for(Index i = 0 ; i < this->rows() ; i++)
614 for(Index j = 0 ; j < this->cols() ; j++)
641template<
typename OtherDerived>
650template<
typename OtherDerived>
653 assert_release(this->size() == x.size());
658 for(Index i = 0 ; i < this->rows() ; i++)
659 for(Index j = 0 ; j < this->cols() ; j++)
685template<
typename OtherDerived>
694template<
typename OtherDerived>
697 assert_release(this->size() == x.size());
702 for(Index i = 0 ; i < this->rows() ; i++)
703 for(Index j = 0 ; j < this->cols() ; j++)
730template<
typename OtherDerived>
739template<
typename OtherDerived>
742 assert_release(this->size() == x.size());
750 for(Index i = 0 ; i < this->rows() ; i++)
751 for(Index j = 0 ; j < this->cols() ; j++)
767 for(Index i = 0 ; i < this->rows() ; i++)
768 for(Index j = 0 ; j < this->cols() ; j++)
781 for(Index i = 0 ; i < this->rows() ; i++)
782 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:449
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:719
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:326
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:674
auto smig() const
Returns a matrix containing the signed mignitudes of each interval element.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:169
bool is_unbounded() const
Checks if the interval matrix contains any unbounded intervals.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:309
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:515
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:585
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:538
auto diam() const
Returns a matrix containing the diameters of each interval element.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:211
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:559
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:268
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:494
bool _overlaps(const MatrixBase< OtherDerived > &x) const
Internal helper to check overlap.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:470
auto smag() const
Returns a matrix containing the signed magnitudes of each interval element.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:157
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:405
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:606
#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:289
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:630
bool _is_strict_interior_subset(const MatrixBase< OtherDerived > &x) const
Internal helper for strict interior subset relation.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:651
bool is_flat() const
Checks if the interval matrix is flat.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:343
bool is_bisectable() const
Checks whether at least one interval in the matrix is bisectable.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:765
bool _is_superset(const MatrixBase< OtherDerived > &x) const
Internal helper for superset check.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:695
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:183
bool _contains(const T &x) const
Internal helper function to check containment.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:245
bool has_integer_bounds() const
Checks whether all intervals in the matrix have integer lower and upper bounds.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:779
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:224
auto rad() const
Returns a matrix containing the radii of each interval element.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:197
bool _intersects(const MatrixBase< OtherDerived > &x) const
Internal helper that performs intersection checking.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:382
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:426
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:361
bool _is_strict_superset(const MatrixBase< OtherDerived > &x) const
Internal helper for strict superset check.
Definition codac2_MatrixBase_addons_IntervalMatrixBase.h:740