Integrate Refactor solver sources and dual MSVC CMake builds
This commit is contained in:
@@ -355,11 +355,12 @@ bool FillInitialBasis(std::vector<double>& vectors, const std::size_t n,
|
||||
}
|
||||
for (double& value : reflector) value /= reflector_norm;
|
||||
for (std::size_t target = column; target < columns; ++target) {
|
||||
const auto length = static_cast<MKL_INT>(n - column);
|
||||
const std::size_t length = n - column;
|
||||
auto* target_column = vectors.data() + column + target * n;
|
||||
const double dot = cblas_ddot(length, reflector.data(), 1,
|
||||
target_column, 1);
|
||||
cblas_daxpy(length, -2.0 * dot, reflector.data(), 1, target_column, 1);
|
||||
const double dot = dense_blas_internal::DotValues(
|
||||
reflector.data(), length, target_column);
|
||||
dense_blas_internal::AxpyValues(-2.0 * dot, reflector.data(), length,
|
||||
target_column);
|
||||
}
|
||||
reflectors.push_back(std::move(reflector));
|
||||
}
|
||||
@@ -370,11 +371,12 @@ bool FillInitialBasis(std::vector<double>& vectors, const std::size_t n,
|
||||
const std::size_t column = index - 1U;
|
||||
const auto& reflector = reflectors[column];
|
||||
for (std::size_t target = 0U; target < columns; ++target) {
|
||||
const auto length = static_cast<MKL_INT>(n - column);
|
||||
const std::size_t length = n - column;
|
||||
auto* target_column = vectors.data() + column + target * n;
|
||||
const double dot = cblas_ddot(length, reflector.data(), 1,
|
||||
target_column, 1);
|
||||
cblas_daxpy(length, -2.0 * dot, reflector.data(), 1, target_column, 1);
|
||||
const double dot = dense_blas_internal::DotValues(
|
||||
reflector.data(), length, target_column);
|
||||
dense_blas_internal::AxpyValues(-2.0 * dot, reflector.data(), length,
|
||||
target_column);
|
||||
}
|
||||
}
|
||||
for (std::size_t column = 0U; column < columns; ++column)
|
||||
@@ -383,9 +385,8 @@ bool FillInitialBasis(std::vector<double>& vectors, const std::size_t n,
|
||||
double gram_error = 0.0;
|
||||
for (std::size_t left = 0U; left < columns; ++left) {
|
||||
for (std::size_t right = 0U; right < columns; ++right) {
|
||||
const double dot = cblas_ddot(static_cast<MKL_INT>(n),
|
||||
vectors.data() + left * n, 1,
|
||||
vectors.data() + right * n, 1);
|
||||
const double dot = dense_blas_internal::DotValues(
|
||||
vectors.data() + left * n, n, vectors.data() + right * n);
|
||||
gram_error = std::hypot(gram_error, dot - (left == right ? 1.0 : 0.0));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user