diff --git a/src/seriell.cpp b/src/seriell.cpp new file mode 100644 index 0000000..8c12662 --- /dev/null +++ b/src/seriell.cpp @@ -0,0 +1,66 @@ +#include +#include +#include + +// Funktion erzeugt zwei Matrizen A und B der Größe n x n mit Zufallswerten +void generateRandomMatrices(int n, + std::vector>& A, + std::vector>& B, + double min_val = 0.0, + double max_val = 10.0) +{ + // Zufallsgenerator initialisieren + std::srand(static_cast(std::time(nullptr))); + + A.resize(n, std::vector(n)); + B.resize(n, std::vector(n)); + + for (int i = 0; i < n; ++i) + for (int j = 0; j < n; ++j) + { + double r1 = static_cast(std::rand()) / RAND_MAX; // 0..1 + double r2 = static_cast(std::rand()) / RAND_MAX; // 0..1 + A[i][j] = min_val + r1 * (max_val - min_val); + B[i][j] = min_val + r2 * (max_val - min_val); + } +} + +// Matrizenmultiplikation +std::vector> matmul(const std::vector>& A, + const std::vector>& B) +{ + int n = A.size(); + int m = B[0].size(); + int p = B.size(); + + if (A[0].size() != B.size()) + throw std::runtime_error("Matrixgrößen passen nicht."); + + std::vector> C(n, std::vector(m, 0.0)); + + for (int i = 0; i < n; ++i) + for (int j = 0; j < m; ++j) + for (int k = 0; k < p; ++k) + C[i][j] += A[i][k] * B[k][j]; + + return C; +} + +int main() +{ + int N = 500; // z.B. 500x500 + std::vector> A, B; + + auto start = std::chrono::steady_clock::now(); + + generateRandomMatrices(N, A, B); + auto C_serial = matmul(A, B); + + auto end = std::chrono::steady_clock::now(); + std::chrono::duration diff = end - start; + std::cout << "Took: " << diff.count() << "s\n"; + + return 0; +}// +// Created by Anke Bidlingmaier on 15.12.25. +// \ No newline at end of file