Integrate Refactor solver sources and dual MSVC CMake builds

This commit is contained in:
KOKO\Mimi
2026-10-18 02:10:51 +09:00
parent 7ee32e5837
commit 12d51480de
218 changed files with 17842 additions and 9689 deletions
@@ -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));
}
}