#include <stdio.h>
#include "matrixOp.h"

int main() {
    // Erstellt zwei 2x3-Matrizen mit aufsteigenden Werten
    Matrix *a = CreateMatrix(2, 3, 1.0); // 1.0, 2.0, 3.0, 4.0, 5.0, 6.0
    Matrix *b = CreateMatrix(2, 3, 7.0); // 7.0, 8.0, 9.0, 10.0, 11.0, 12.0

    Matrix *c, *d, *e, *f;

    printf("Matrix a:\n");
    PrintMatrix(a);

    printf("Matrix b:\n");
    PrintMatrix(b);

    // Addition: a + b
    c = AddMatrix(a, b);
    printf("a + b:\n");
    PrintMatrix(c);

    // Subtraktion: a - b
    d = SubMatrix(a, b);
    printf("a - b:\n");
    PrintMatrix(d);

    // Transponieren von a
    e = TransposeMatrix(a);
    printf("Transpose of a:\n");
    PrintMatrix(e);

    // Matrixmultiplikation: a * a^T
    f = MulMatrix(a, e);
    printf("a * a^T:\n");
    PrintMatrix(f);

    // Determinante der Ergebnismatrix (nur für 2x2 möglich)
    printf("det(a * a^T): %.2f\n", DetMatrix(f));

    // Speicher wieder freigeben
    FreeMatrix(a);
    FreeMatrix(b);
    FreeMatrix(c);
    FreeMatrix(d);
    FreeMatrix(e);
    FreeMatrix(f);

    return 0;
}

//gcc TestMatricOp.c -L. -lmatrixOp -o TestMatricOp