/* mkMatrix.c written march 15th by ian a. mason @ une */ /* modifed for torus multiplication may 25 */ #include #include #include #include #include #include #include "mmlib.h" #define PERMS 0666 int main(int argc, char *argv[]){ int fd[3]; int *a, *b, *c; int matrix_size, i; long length; if((argc != 5) || ((fd[0] = creat(argv[1], PERMS)) == -1) || ((fd[1] = creat(argv[2], PERMS)) == -1) || ((fd[2] = creat(argv[3], PERMS)) == -1) || ((matrix_size = atoi(argv[4])) <= 0)){ fprintf (stderr, "Usage: %s matrixA matrixB matrixC dimension\n", argv[0]); exit(1); } length = matrix_size * matrix_size; if(length < 0){ fprintf(stderr, "Overflow, bummer!\n"); } a = (int*)calloc(length, sizeof(int)); b = (int*)calloc(length, sizeof(int)); c = (int*)calloc(length, sizeof(int)); if ((a == NULL) || (b == NULL) || (c == NULL)) { fprintf(stderr, "%s: out of memory!\n", argv[0]); free(a); free(b); free(c); } init_block(a, b, c, matrix_size, 0, 0); if(set_block_row(fd[0], matrix_size, 0, 0, 0, length, a) == -1) perror("write of matrix A"); if(set_block_row(fd[1], matrix_size, 0, 0, 0, length, b) == -1) perror("write of matrix B"); if(set_block_row(fd[2], matrix_size, 0, 0, 0, length, c) == -1) perror("write of matrix C"); for(i = 0; i < 3; i++) close(fd[i]); printf("Done writing files\n"); return 0; }