diff --git a/include/piqp/sparse/blocksparse_stage_kkt.hpp b/include/piqp/sparse/blocksparse_stage_kkt.hpp index 611ca73..b716bab 100644 --- a/include/piqp/sparse/blocksparse_stage_kkt.hpp +++ b/include/piqp/sparse/blocksparse_stage_kkt.hpp @@ -669,7 +669,7 @@ class BlocksparseStageKKT : public KKTSystem if (!A_kkt.B[block_index - 1]) { A_kkt.B[block_index - 1] = std::make_unique(last_block_off_diag_size, last_block_diag_size); } - BLASFEO_DMATEL(A_kkt.B[block_index - 1]->ref(), i - block_start, j + last_block_off_diag_size - block_start) = v; + BLASFEO_DMATEL(A_kkt.B[block_index - 1]->ref(), i - block_start, j - last_block_start) = v; } } } diff --git a/tests/data/scenario_mpc.mat b/tests/data/scenario_mpc.mat new file mode 100644 index 0000000..796b009 Binary files /dev/null and b/tests/data/scenario_mpc.mat differ diff --git a/tests/src/sparse/blocksparse_stage_kkt_test.cpp b/tests/src/sparse/blocksparse_stage_kkt_test.cpp index aafc856..9071cab 100644 --- a/tests/src/sparse/blocksparse_stage_kkt_test.cpp +++ b/tests/src/sparse/blocksparse_stage_kkt_test.cpp @@ -194,6 +194,6 @@ TEST_P(BlocksparseStageKKTTest, FactorizeSolveSQP) } INSTANTIATE_TEST_SUITE_P(FromFolder, BlocksparseStageKKTTest, - ::testing::Values("small_sparse_dual_inf", "small_dense", + ::testing::Values("small_sparse_dual_inf", "small_dense", "scenario_mpc", "chain_mass_sqp", "robot_arm_sqp", "robot_arm_sqp_constr_perm", "robot_arm_sqp_no_global"));