Avoid allocation and copying in implicit solver's addJTBJSparse

PiperOrigin-RevId: 710679558
Change-Id: Ie75fdcd1127ff619c2668f568ab6a8a11e079dda
This commit is contained in:
Yuval Tassa
2024-12-30 04:18:11 -08:00
committed by Copybara-Service
parent 8cb253b6ca
commit e42370c982
3 changed files with 14 additions and 24 deletions
+5 -5
View File
@@ -355,10 +355,10 @@ void mju_combineSparseInc(mjtNum* dst, const mjtNum* src, int n, mjtNum a, mjtNu
// dst += src, only at common non-zero indices
void mju_addToSparseInc(mjtNum* dst, const mjtNum* src,
int nnzdst, const int* inddst,
int nnzsrc, const int* indsrc) {
// dst += scl*src, only at common non-zero indices
void mju_addToSclSparseInc(mjtNum* dst, const mjtNum* src,
int nnzdst, const int* inddst,
int nnzsrc, const int* indsrc, mjtNum scl) {
if (!nnzdst || !nnzsrc) {
return;
}
@@ -368,7 +368,7 @@ void mju_addToSparseInc(mjtNum* dst, const mjtNum* src,
// common non-zero index
if (inds == indd) {
// add
dst[adrd] += src[adrs];
dst[adrd] += scl * src[adrs];
// advance src
if (++adrs < nnzsrc) {