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