Skip to content

Commit

Permalink
Merge pull request #129 from SimonRohou/codac2_dev
Browse files Browse the repository at this point in the history
Eigen col dimensions are now known at compile time
  • Loading branch information
SimonRohou authored Nov 5, 2024
2 parents 1b988a2 + 1010284 commit db15ee8
Show file tree
Hide file tree
Showing 21 changed files with 196 additions and 174 deletions.
8 changes: 4 additions & 4 deletions python/src/core/codac2_py_core.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,19 +73,19 @@ void export_Polygon(py::module& m);
void export_arithmetic_add(py::module& m,
py::class_<Vector>& py_V, py::class_<IntervalVector>& py_IV,
py::class_<Matrix>& py_M, py::class_<IntervalMatrix>& py_IM,
py::class_<MatrixBaseBlock<EigenMatrix<double>&,double>>& py_B, py::class_<MatrixBaseBlock<EigenMatrix<Interval>&,Interval>>& py_IB);
py::class_<MatrixBaseBlock<Matrix::EigenType&,double>>& py_B, py::class_<MatrixBaseBlock<IntervalMatrix::EigenType&,Interval>>& py_IB);
void export_arithmetic_sub(py::module& m,
py::class_<Vector>& py_V, py::class_<IntervalVector>& py_IV,
py::class_<Matrix>& py_M, py::class_<IntervalMatrix>& py_IM,
py::class_<MatrixBaseBlock<EigenMatrix<double>&,double>>& py_B, py::class_<MatrixBaseBlock<EigenMatrix<Interval>&,Interval>>& py_IB);
py::class_<MatrixBaseBlock<Matrix::EigenType&,double>>& py_B, py::class_<MatrixBaseBlock<IntervalMatrix::EigenType&,Interval>>& py_IB);
void export_arithmetic_mul(py::module& m,
py::class_<Vector>& py_V, py::class_<IntervalVector>& py_IV,
py::class_<Matrix>& py_M, py::class_<IntervalMatrix>& py_IM,
py::class_<MatrixBaseBlock<EigenMatrix<double>&,double>>& py_B, py::class_<MatrixBaseBlock<EigenMatrix<Interval>&,Interval>>& py_IB);
py::class_<MatrixBaseBlock<Matrix::EigenType&,double>>& py_B, py::class_<MatrixBaseBlock<IntervalMatrix::EigenType&,Interval>>& py_IB);
void export_arithmetic_div(py::module& m,
py::class_<Vector>& py_V, py::class_<IntervalVector>& py_IV,
py::class_<Matrix>& py_M, py::class_<IntervalMatrix>& py_IM,
py::class_<MatrixBaseBlock<EigenMatrix<double>&,double>>& py_B, py::class_<MatrixBaseBlock<EigenMatrix<Interval>&,Interval>>& py_IB);
py::class_<MatrixBaseBlock<Matrix::EigenType&,double>>& py_B, py::class_<MatrixBaseBlock<IntervalMatrix::EigenType&,Interval>>& py_IB);
py::class_<Vector> export_Vector(py::module& m);
py::class_<Matrix> export_Matrix(py::module& m);

Expand Down
4 changes: 2 additions & 2 deletions python/src/core/domains/interval/codac2_py_IntervalMatrix.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,11 @@ py::class_<IntervalMatrix> export_IntervalMatrix(py::module& m)
INTERVALMATRIX_INTERVALMATRIX_CONST_INTERVALVECTOR_REF,
"x"_a)

.def(py::init<const MatrixBaseBlock<EigenMatrix<double>&,double>&>(),
.def(py::init<const MatrixBaseBlock<Matrix::EigenType&,double>&>(),
INTERVALMATRIX_INTERVALMATRIX_CONST_MATRIXBASEBLOCK_QT_REF,
"x"_a)

.def(py::init<const MatrixBaseBlock<EigenMatrix<Interval>&,Interval>&>(),
.def(py::init<const MatrixBaseBlock<IntervalMatrix::EigenType&,Interval>&>(),
INTERVALMATRIX_INTERVALMATRIX_CONST_MATRIXBASEBLOCK_QT_REF,
"x"_a)

Expand Down
76 changes: 38 additions & 38 deletions python/src/core/domains/interval/codac2_py_IntervalMatrixBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,139 +29,139 @@ void export_IntervalMatrixBase(py::module& m, py::class_<S>& pyclass)
pyclass

.def("volume", &S::volume,
DOUBLE_INTERVALMATRIXBASE_SV_VOLUME_CONST)
DOUBLE_INTERVALMATRIXBASE_SVROWSCOLS_VOLUME_CONST)

.def("is_empty", &S::is_empty,
BOOL_INTERVALMATRIXBASE_SV_IS_EMPTY_CONST)
BOOL_INTERVALMATRIXBASE_SVROWSCOLS_IS_EMPTY_CONST)

.def("set_empty", &S::set_empty,
VOID_INTERVALMATRIXBASE_SV_SET_EMPTY)
VOID_INTERVALMATRIXBASE_SVROWSCOLS_SET_EMPTY)

.def("lb", &S::lb,
V_INTERVALMATRIXBASE_SV_LB_CONST)
V_INTERVALMATRIXBASE_SVROWSCOLS_LB_CONST)

.def("ub", &S::ub,
V_INTERVALMATRIXBASE_SV_UB_CONST)
V_INTERVALMATRIXBASE_SVROWSCOLS_UB_CONST)

.def("mid", &S::mid,
V_INTERVALMATRIXBASE_SV_MID_CONST)
V_INTERVALMATRIXBASE_SVROWSCOLS_MID_CONST)

.def("rand", &S::rand,
V_INTERVALMATRIXBASE_SV_RAND_CONST)
V_INTERVALMATRIXBASE_SVROWSCOLS_RAND_CONST)

.def("rad", &S::rad,
V_INTERVALMATRIXBASE_SV_RAD_CONST)
V_INTERVALMATRIXBASE_SVROWSCOLS_RAD_CONST)

.def("diam", &S::diam,
V_INTERVALMATRIXBASE_SV_DIAM_CONST)
V_INTERVALMATRIXBASE_SVROWSCOLS_DIAM_CONST)

.def("min_diam", &S::min_diam,
DOUBLE_INTERVALMATRIXBASE_SV_MIN_DIAM_CONST)
DOUBLE_INTERVALMATRIXBASE_SVROWSCOLS_MIN_DIAM_CONST)

.def("max_diam", &S::max_diam,
DOUBLE_INTERVALMATRIXBASE_SV_MAX_DIAM_CONST)
DOUBLE_INTERVALMATRIXBASE_SVROWSCOLS_MAX_DIAM_CONST)

.def("min_diam_index", [](const S& x)
{
return matlab::output_index(x.min_diam_index());
},
SIZET_INTERVALMATRIXBASE_SV_MIN_DIAM_INDEX_CONST)
SIZET_INTERVALMATRIXBASE_SVROWSCOLS_MIN_DIAM_INDEX_CONST)

.def("max_diam_index", [](const S& x)
{
return matlab::output_index(x.max_diam_index());
},
SIZET_INTERVALMATRIXBASE_SV_MAX_DIAM_INDEX_CONST)
SIZET_INTERVALMATRIXBASE_SVROWSCOLS_MAX_DIAM_INDEX_CONST)

.def("extr_diam_index", [](const S& x, bool min)
{
return matlab::output_index(x.extr_diam_index(min));
},
SIZET_INTERVALMATRIXBASE_SV_EXTR_DIAM_INDEX_BOOL_CONST,
SIZET_INTERVALMATRIXBASE_SVROWSCOLS_EXTR_DIAM_INDEX_BOOL_CONST,
"min"_a)

.def("__contains__", &S::contains,
BOOL_INTERVALMATRIXBASE_SV_CONTAINS_CONST_V_REF_CONST)
BOOL_INTERVALMATRIXBASE_SVROWSCOLS_CONTAINS_CONST_V_REF_CONST)

.def("contains", &S::contains,
BOOL_INTERVALMATRIXBASE_SV_CONTAINS_CONST_V_REF_CONST)
BOOL_INTERVALMATRIXBASE_SVROWSCOLS_CONTAINS_CONST_V_REF_CONST)

.def("interior_contains", &S::interior_contains,
BOOL_INTERVALMATRIXBASE_SV_INTERIOR_CONTAINS_CONST_V_REF_CONST)
BOOL_INTERVALMATRIXBASE_SVROWSCOLS_INTERIOR_CONTAINS_CONST_V_REF_CONST)

.def("is_unbounded", &S::is_unbounded,
BOOL_INTERVALMATRIXBASE_SV_IS_UNBOUNDED_CONST)
BOOL_INTERVALMATRIXBASE_SVROWSCOLS_IS_UNBOUNDED_CONST)

.def("is_degenerated", &S::is_degenerated,
BOOL_INTERVALMATRIXBASE_SV_IS_DEGENERATED_CONST)
BOOL_INTERVALMATRIXBASE_SVROWSCOLS_IS_DEGENERATED_CONST)

.def("is_flat", &S::is_flat,
BOOL_INTERVALMATRIXBASE_SV_IS_FLAT_CONST)
BOOL_INTERVALMATRIXBASE_SVROWSCOLS_IS_FLAT_CONST)

.def("intersects", &S::intersects,
BOOL_INTERVALMATRIXBASE_SV_INTERSECTS_CONST_S_REF_CONST)
BOOL_INTERVALMATRIXBASE_SVROWSCOLS_INTERSECTS_CONST_S_REF_CONST)

.def("is_disjoint", &S::is_disjoint,
BOOL_INTERVALMATRIXBASE_SV_IS_DISJOINT_CONST_S_REF_CONST)
BOOL_INTERVALMATRIXBASE_SVROWSCOLS_IS_DISJOINT_CONST_S_REF_CONST)

.def("overlaps", &S::overlaps,
BOOL_INTERVALMATRIXBASE_SV_OVERLAPS_CONST_S_REF_CONST)
BOOL_INTERVALMATRIXBASE_SVROWSCOLS_OVERLAPS_CONST_S_REF_CONST)

.def("is_subset", &S::is_subset,
BOOL_INTERVALMATRIXBASE_SV_IS_SUBSET_CONST_S_REF_CONST)
BOOL_INTERVALMATRIXBASE_SVROWSCOLS_IS_SUBSET_CONST_S_REF_CONST)

.def("is_strict_subset", &S::is_strict_subset,
BOOL_INTERVALMATRIXBASE_SV_IS_STRICT_SUBSET_CONST_S_REF_CONST)
BOOL_INTERVALMATRIXBASE_SVROWSCOLS_IS_STRICT_SUBSET_CONST_S_REF_CONST)

.def("is_interior_subset", &S::is_interior_subset,
BOOL_INTERVALMATRIXBASE_SV_IS_INTERIOR_SUBSET_CONST_S_REF_CONST)
BOOL_INTERVALMATRIXBASE_SVROWSCOLS_IS_INTERIOR_SUBSET_CONST_S_REF_CONST)

.def("is_strict_interior_subset", &S::is_strict_interior_subset,
BOOL_INTERVALMATRIXBASE_SV_IS_STRICT_INTERIOR_SUBSET_CONST_S_REF_CONST)
BOOL_INTERVALMATRIXBASE_SVROWSCOLS_IS_STRICT_INTERIOR_SUBSET_CONST_S_REF_CONST)

.def("is_superset", &S::is_superset,
BOOL_INTERVALMATRIXBASE_SV_IS_SUPERSET_CONST_S_REF_CONST)
BOOL_INTERVALMATRIXBASE_SVROWSCOLS_IS_SUPERSET_CONST_S_REF_CONST)

.def("is_strict_superset", &S::is_strict_superset,
BOOL_INTERVALMATRIXBASE_SV_IS_STRICT_SUPERSET_CONST_S_REF_CONST)
BOOL_INTERVALMATRIXBASE_SVROWSCOLS_IS_STRICT_SUPERSET_CONST_S_REF_CONST)

.def("is_bisectable", &S::is_bisectable,
BOOL_INTERVALMATRIXBASE_SV_IS_BISECTABLE_CONST)
BOOL_INTERVALMATRIXBASE_SVROWSCOLS_IS_BISECTABLE_CONST)

.def("inflate", (S&(S::*)(double))&S::inflate,
S_REF_INTERVALMATRIXBASE_SV_INFLATE_DOUBLE,
S_REF_INTERVALMATRIXBASE_SVROWSCOLS_INFLATE_DOUBLE,
"r"_a)

.def("inflate", (S&(S::*)(const V&))&S::inflate,
S_REF_INTERVALMATRIXBASE_SV_INFLATE_CONST_V_REF,
S_REF_INTERVALMATRIXBASE_SVROWSCOLS_INFLATE_CONST_V_REF,
"r"_a)

.def("bisect", [](const S& x, size_t_type i, double ratio)
{
matlab::test_integer(i);
return x.bisect(matlab::input_index(i),ratio);
},
PAIR_SS_INTERVALMATRIXBASE_SV_BISECT_SIZET_FLOAT_CONST,
PAIR_SS_INTERVALMATRIXBASE_SVROWSCOLS_BISECT_SIZET_FLOAT_CONST,
"i"_a, "ratio"_a = 0.49)

.def("bisect_largest", &S::bisect_largest,
PAIR_SS_INTERVALMATRIXBASE_SV_BISECT_LARGEST_FLOAT_CONST,
PAIR_SS_INTERVALMATRIXBASE_SVROWSCOLS_BISECT_LARGEST_FLOAT_CONST,
"ratio"_a = 0.49)

.def(py::self &= py::self,
S_REF_INTERVALMATRIXBASE_SV_OPERATORANDEQ_CONST_S_REF
S_REF_INTERVALMATRIXBASE_SVROWSCOLS_OPERATORANDEQ_CONST_S_REF
"x"_a)

.def(py::self |= py::self,
S_REF_INTERVALMATRIXBASE_SV_OPERATOROREQ_CONST_S_REF
S_REF_INTERVALMATRIXBASE_SVROWSCOLS_OPERATOROREQ_CONST_S_REF
"x"_a)

.def(py::self & py::self,
S_INTERVALMATRIXBASE_SV_OPERATORAND_CONST_S_REF_CONST
S_INTERVALMATRIXBASE_SVROWSCOLS_OPERATORAND_CONST_S_REF_CONST
"x"_a)

.def(py::self | py::self,
S_INTERVALMATRIXBASE_SV_OPERATOROR_CONST_S_REF_CONST,
S_INTERVALMATRIXBASE_SVROWSCOLS_OPERATOROR_CONST_S_REF_CONST,
"x"_a)
;

Expand Down
2 changes: 1 addition & 1 deletion python/src/core/matrices/codac2_py_Matrix.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ py::class_<Matrix> export_Matrix(py::module& m)
MATRIX_MATRIX_CONST_VECTOR_REF,
"x"_a)

.def(py::init<const MatrixBaseBlock<EigenMatrix<double>&,double>&>(),
.def(py::init<const MatrixBaseBlock<Matrix::EigenType&,double>&>(),
MATRIX_MATRIX_CONST_MATRIXBASEBLOCK_QDOUBLE_REF,
"x"_a)

Expand Down
Loading

0 comments on commit db15ee8

Please sign in to comment.