aboutsummaryrefslogtreecommitdiff
path: root/experiments/hilbert_qr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'experiments/hilbert_qr.cpp')
-rw-r--r--experiments/hilbert_qr.cpp30
1 files changed, 7 insertions, 23 deletions
diff --git a/experiments/hilbert_qr.cpp b/experiments/hilbert_qr.cpp
index 849bc8d..3a52194 100644
--- a/experiments/hilbert_qr.cpp
+++ b/experiments/hilbert_qr.cpp
@@ -1,20 +1,8 @@
-#include "matrix.hpp"
-#include "qr.hpp"
+import linalgebra;
+import std;
-#include <chrono>
-#include <cmath>
-#include <cstddef>
-#include <functional>
-#include <iomanip>
-#include <iostream>
-#include <optional>
-#include <stdexcept>
-#include <string>
-
-using linalg::Matrix;
-using linalg::QRResult;
-
-// --- Matrix construction ---
+using linalgebra::Matrix;
+using linalgebra::QRResult;
Matrix hilbert(std::size_t n) {
Matrix H(n, n);
@@ -24,8 +12,6 @@ Matrix hilbert(std::size_t n) {
return H;
}
-// --- Metrics ---
-
double reconstruction_error(const Matrix& A, const QRResult& qr) {
const std::size_t m = A.rows();
const std::size_t n = A.cols();
@@ -53,7 +39,6 @@ double orthogonality_error(const QRResult& qr) {
return std::sqrt(err);
}
-
using Clock = std::chrono::high_resolution_clock;
using Seconds = std::chrono::duration<double>;
@@ -98,7 +83,6 @@ void print_row(const std::string& method, std::optional<Result> r) {
<< std::setw(10) << r->time_s * 1e6 << " µs\n";
}
-
int main() {
std::cout << std::string(70, '*') << "\n";
std::cout << " Hilbert QR Experiment: comparing GS variants and Householder\n";
@@ -124,11 +108,11 @@ int main() {
std::cout << std::string(70, ' ') << "\n";
print_row("classical_gs",
- measure(H, [](const Matrix& A) { return linalg::qr_classical_gs(A); }));
+ measure(H, [](const Matrix& A) { return linalgebra::qr_classical_gs(A); }));
print_row("modified_gs",
- measure(H, [](const Matrix& A) { return linalg::qr_modified_gs(A); }));
+ measure(H, [](const Matrix& A) { return linalgebra::qr_modified_gs(A); }));
print_row("householder",
- measure(H, [](const Matrix& A) { return linalg::qr_householder(A); }));
+ measure(H, [](const Matrix& A) { return linalgebra::qr_householder(A); }));
}
return 0;