Add mju_sym2dense, document future breakage of mj_fullM
PiperOrigin-RevId: 910242375 Change-Id: Ibfbdef9cfb66088723499ea257da09aee0d80938
This commit is contained in:
committed by
Copybara-Service
parent
a51a7bf062
commit
767c607f58
@@ -1241,6 +1241,37 @@ PYBIND11_MODULE(_functions, pymodule) {
|
||||
colind.data());
|
||||
});
|
||||
|
||||
DEF_WITH_OMITTED_PY_ARGS(traits::mju_sym2dense, "n")(
|
||||
pymodule,
|
||||
[](Eigen::Ref<EigenArrayXX> res,
|
||||
Eigen::Ref<const EigenVectorX> mat,
|
||||
Eigen::Ref<const EigenVectorI> rownnz,
|
||||
Eigen::Ref<const EigenVectorI> rowadr,
|
||||
Eigen::Ref<const EigenVectorI> colind) {
|
||||
if (res.rows() != res.cols()) {
|
||||
throw py::type_error("res should be a square matrix");
|
||||
}
|
||||
if (res.rows() != rownnz.size()) {
|
||||
throw py::type_error("#rows in res should equal size of rownnz");
|
||||
}
|
||||
if (res.rows() != rowadr.size()) {
|
||||
throw py::type_error("#rows in res should equal size of rowadr");
|
||||
}
|
||||
if (res.rows() > 0) {
|
||||
int nnz = rowadr.array().tail(1)[0] + rownnz.array().tail(1)[0];
|
||||
if (mat.size() < nnz) {
|
||||
throw py::type_error("mat size is too small for the given sparse "
|
||||
"structure");
|
||||
}
|
||||
if (colind.size() < nnz) {
|
||||
throw py::type_error("colind size is too small for the given "
|
||||
"sparse structure");
|
||||
}
|
||||
}
|
||||
return ::mju_sym2dense(res.data(), mat.data(), res.rows(),
|
||||
rownnz.data(), rowadr.data(), colind.data());
|
||||
});
|
||||
|
||||
// Quaternions
|
||||
Def<traits::mju_rotVecQuat>(pymodule);
|
||||
Def<traits::mju_negQuat>(pymodule);
|
||||
|
||||
@@ -7755,6 +7755,48 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
||||
),
|
||||
doc='Convert matrix from sparse to dense.',
|
||||
)),
|
||||
('mju_sym2dense',
|
||||
FunctionDecl(
|
||||
name='mju_sym2dense',
|
||||
return_type=ValueType(name='void'),
|
||||
parameters=(
|
||||
FunctionParameterDecl(
|
||||
name='res',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjtNum'),
|
||||
),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='mat',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjtNum', is_const=True),
|
||||
),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='n',
|
||||
type=ValueType(name='int'),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='rownnz',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='int', is_const=True),
|
||||
),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='rowadr',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='int', is_const=True),
|
||||
),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='colind',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='int', is_const=True),
|
||||
),
|
||||
),
|
||||
),
|
||||
doc='Convert lower-triangular symmetric CSR matrix to full dense matrix.', # pylint: disable=line-too-long
|
||||
)),
|
||||
('mju_rotVecQuat',
|
||||
FunctionDecl(
|
||||
name='mju_rotVecQuat',
|
||||
|
||||
Reference in New Issue
Block a user