- 316 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 12:47:39 ]
- >>315
#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct tag_matrix_t{ int column, row; double **data, *data_area; }matrix_t; matrix_t *matrix_alloc(int column, int row){ matrix_t *matrix; int x, y; matrix=malloc(sizeof(matrix_t)); matrix->column=column; matrix->row=row; matrix->data_area=malloc(sizeof(double)*column*row); matrix->data=malloc(sizeof(double*)*column); for(y=0;y<column;y++) matrix->data[y]=&matrix->data_area[y*row]; for(x=0;x<row;x++) matrix->data[0][x]=0.0; for(y=1;y<column;y++) memcpy(matrix->data[y], matrix->data[0], sizeof(double)*row); return matrix; } matrix_t *matrix_mul(matrix_t *a, matrix_t *b){ matrix_t *c; int i, j, k, x; if((x=a->row)!=b->column) return NULL; c=matrix_alloc(a->column, b->row); for(i=0;i<a->column;i++) for(j=0;j<b->row;j++) for(k=0;k<x;k++) c->data[i][j]+=a->data[i][k]*b->data[k][j]; return c; }
|

|