Implement faster mju_isZeroByte.

PiperOrigin-RevId: 814148714
Change-Id: Iaf5ed9d3502eaaaee8d46a986f2db00811ae0707
This commit is contained in:
Kyle Bayes
2025-10-02 02:53:02 -07:00
committed by Copybara-Service
parent 401bf431b8
commit 91257896c0
4 changed files with 42 additions and 21 deletions
+29
View File
@@ -360,6 +360,35 @@ TEST_F(UtilMiscTest, MjuIsZero) {
EXPECT_EQ(mju_isZeroByte((const unsigned char*)vec, sizeof(mjtNum)), 0);
}
TEST_F(UtilMiscTest, MjuIsZeroByte) {
// Zero length array
EXPECT_TRUE(mju_isZeroByte(nullptr, 0));
// zero length array with non-null pointer
unsigned char vec0[1] = {0};
EXPECT_TRUE(mju_isZeroByte(vec0, sizeof(vec0)));
// one zero element array
unsigned char vec1[1] = {0};
EXPECT_TRUE(mju_isZeroByte(vec1, sizeof(vec1)));
// one non-zero element array
unsigned char vec2[2] = {1};
EXPECT_FALSE(mju_isZeroByte(vec2, sizeof(vec2)));
// Non-zero at start
unsigned char vec3[3] = {1, 0, 0};
EXPECT_FALSE(mju_isZeroByte(vec3, sizeof(vec3)));
// Non-zero at end
unsigned char vec4[3] = {0, 0, 1};
EXPECT_FALSE(mju_isZeroByte(vec4, sizeof(vec4)));
// Non-zero in middle
unsigned char vec5[3] = {0, 1, 0};
EXPECT_FALSE(mju_isZeroByte(vec5, sizeof(vec5)));
}
// --------------------------------- Interpolation -----------------------------
using InterpolationTest = MujocoTest;