#include <stdio.h> #define MAXDIM_M 1000 #define MAXDIM_N 1000 double buffer[MAXDIM_M*MAXDIM_N]; void initMatrix(long m, long n, double *A, long incRowA, long incColA) { long i, j; for (j=0; j<n; ++j) { for (i=0; i<m; ++i) { A[i*incRowA+j*incColA] = j*n+i+1; } } } void printMatrix(long m, long n, const double *A, long incRowA, long incColA) { long i, j; for (i=0; i<m; ++i) { printf(" "); for (j=0; j<n; ++j) { printf("%4.1lf ", A[i*incRowA+j*incColA]); } printf("\n"); } printf("\n"); } int main() { long m = 7; long n = 8; // // Matrix mit Spaltenformat // long incRowA = 1; long incColA = 7; printf("\nInit A as ColMajor"); printf("\n==================\n"); initMatrix(m, n, buffer, incRowA, incColA); printf("A = \n"); printMatrix(m, n, buffer, incRowA, incColA); printf("A^T = \n"); printMatrix(n, m, buffer, incColA, incRowA); printf("A(2,:) = \n"); printMatrix(1, n, &buffer[1*incRowA], incColA, incRowA); printf("buffer for A = \n"); printMatrix(1, m*n, buffer, 1, 1); // // Matrix im Zeilenformat // incRowA = 8; incColA = 1; printf("\nInit A as RowMajor"); printf("\n==================\n"); initMatrix(m, n, buffer, incRowA, incColA); printf("A = \n"); printMatrix(m, n, buffer, incRowA, incColA); printf("A^T = \n"); printMatrix(n, m, buffer, incColA, incRowA); printf("A(2,:) = \n"); printMatrix(1, n, &buffer[1*incRowA], incColA, incRowA); printf("buffer for A = \n"); printMatrix(1, m*n, buffer, 1, 1); return 0; } |