Mercurial > hg > CbC > CbC_gcc
diff CbC-examples/matrix/compute_power.c @ 42:9e4f9e20b8f1
add some examples.
author | kent@teto.cr.ie.u-ryukyu.ac.jp |
---|---|
date | Mon, 25 Jan 2010 17:13:59 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/matrix/compute_power.c Mon Jan 25 17:13:59 2010 +0900 @@ -0,0 +1,107 @@ +#include <stdio.h> +#include "matrix.h" + +void compute(); +double ** create_identity_matrix(int size); +double ** multiply(double **a, double **b, int l, int m, int n); +void print_matrix(double **a, int row, int col); + +int +main(int argc, char **argv) +{ + compute(); + return 0; +} + +void +compute() +{ + double **A, **B, **C; + A = create_identity_matrix(4); + B = create_identity_matrix(4); + printf("A = \n"); + print_matrix(A, 4, 4); + printf("B = \n"); + print_matrix(B, 4, 4); + + C = multiply(A, B, 4,4,4); + printf("C = \n"); + print_matrix(C, 4, 4); + + + free(A); + free(B); + free(C); +} + +double ** +create_identity_matrix(int size) +{ + int i,j; + double **ret; + ret = create_matrix(sizeof(double), size, size); + + for (j=0; j<size; j++) { + for (i=0; i<size; i++) { + ret[j][i] = 0; + } + } + for (i=0; i<size; i++) { + ret[i][i] = 1.0f; + } + return ret; +} + +double ** +power_of_matrix(double **a, int n) +{ + int r,c,i; + double **result; + result = create_identity_matrix(n); + + for (r=0; r<l; r++) { + for (c=0; c<n; c++) { + result[r][c] = 0; + for (i=0; i<m; i++) { + result[r][c] += a[r][i] * b[i][c]; + } + } + } + return result; +} + +double ** +multiply(double **a, double **b, int l, int m, int n) +{ + int r,c,i; + double **result; + result = create_matrix(sizeof(double), l, n); + + for (r=0; r<l; r++) { + for (c=0; c<n; c++) { + result[r][c] = 0; + for (i=0; i<m; i++) { + result[r][c] += a[r][i] * b[i][c]; + } + } + } + return result; +} + +/** 表示用 */ +void +print_matrix(double **a, int row, int col) +{ + int i,j; + for( j=0; j<row; j++){ + printf("\t"); + for( i=0; i<col; i++){ + printf("%6.2f ", a[j][i]); + } + printf("\n"); + } +} + + + +