Fix MatrixVectorMultiply and incorrect DCHECKS. (Thanks to Serget Sharybin for reporting this) Change-Id: I6bbc41667308fc2932871cf25ad07b431f70801f
diff --git a/internal/ceres/blas.h b/internal/ceres/blas.h index 12667d0..bacf1ff 100644 --- a/internal/ceres/blas.h +++ b/internal/ceres/blas.h
@@ -171,8 +171,8 @@ const int NUM_ROW_C = NUM_ROW_A; const int NUM_COL_C = NUM_COL_B; - DCHECK_LT(start_row_c + NUM_ROW_C, row_stride_c); - DCHECK_LT(start_col_c + NUM_COL_C, col_stride_c); + DCHECK_LE(start_row_c + NUM_ROW_C, row_stride_c); + DCHECK_LE(start_col_c + NUM_COL_C, col_stride_c); for (int row = 0; row < NUM_ROW_C; ++row) { for (int col = 0; col < NUM_COL_C; ++col) { @@ -324,8 +324,8 @@ const int NUM_ROW_C = NUM_COL_A; const int NUM_COL_C = NUM_COL_B; - DCHECK_LT(start_row_c + NUM_ROW_C, row_stride_c); - DCHECK_LT(start_col_c + NUM_COL_C, col_stride_c); + DCHECK_LE(start_row_c + NUM_ROW_C, row_stride_c); + DCHECK_LE(start_col_c + NUM_COL_C, col_stride_c); for (int row = 0; row < NUM_ROW_C; ++row) { for (int col = 0; col < NUM_COL_C; ++col) { @@ -401,7 +401,7 @@ } else if (kOperation < 0) { cref -= Aref.lazyProduct(bref); } else { - cref -= Aref.lazyProduct(bref); + cref = Aref.lazyProduct(bref); } #else @@ -459,7 +459,7 @@ } else if (kOperation < 0) { cref -= Aref.transpose().lazyProduct(bref); } else { - cref -= Aref.transpose().lazyProduct(bref); + cref = Aref.transpose().lazyProduct(bref); } #else