comparison 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
comparison
equal deleted inserted replaced
41:c816ae4380d7 42:9e4f9e20b8f1
1 #include <stdio.h>
2 #include "matrix.h"
3
4 void compute();
5 double ** create_identity_matrix(int size);
6 double ** multiply(double **a, double **b, int l, int m, int n);
7 void print_matrix(double **a, int row, int col);
8
9 int
10 main(int argc, char **argv)
11 {
12 compute();
13 return 0;
14 }
15
16 void
17 compute()
18 {
19 double **A, **B, **C;
20 A = create_identity_matrix(4);
21 B = create_identity_matrix(4);
22 printf("A = \n");
23 print_matrix(A, 4, 4);
24 printf("B = \n");
25 print_matrix(B, 4, 4);
26
27 C = multiply(A, B, 4,4,4);
28 printf("C = \n");
29 print_matrix(C, 4, 4);
30
31
32 free(A);
33 free(B);
34 free(C);
35 }
36
37 double **
38 create_identity_matrix(int size)
39 {
40 int i,j;
41 double **ret;
42 ret = create_matrix(sizeof(double), size, size);
43
44 for (j=0; j<size; j++) {
45 for (i=0; i<size; i++) {
46 ret[j][i] = 0;
47 }
48 }
49 for (i=0; i<size; i++) {
50 ret[i][i] = 1.0f;
51 }
52 return ret;
53 }
54
55 double **
56 power_of_matrix(double **a, int n)
57 {
58 int r,c,i;
59 double **result;
60 result = create_identity_matrix(n);
61
62 for (r=0; r<l; r++) {
63 for (c=0; c<n; c++) {
64 result[r][c] = 0;
65 for (i=0; i<m; i++) {
66 result[r][c] += a[r][i] * b[i][c];
67 }
68 }
69 }
70 return result;
71 }
72
73 double **
74 multiply(double **a, double **b, int l, int m, int n)
75 {
76 int r,c,i;
77 double **result;
78 result = create_matrix(sizeof(double), l, n);
79
80 for (r=0; r<l; r++) {
81 for (c=0; c<n; c++) {
82 result[r][c] = 0;
83 for (i=0; i<m; i++) {
84 result[r][c] += a[r][i] * b[i][c];
85 }
86 }
87 }
88 return result;
89 }
90
91 /** 表示用 */
92 void
93 print_matrix(double **a, int row, int col)
94 {
95 int i,j;
96 for( j=0; j<row; j++){
97 printf("\t");
98 for( i=0; i<col; i++){
99 printf("%6.2f ", a[j][i]);
100 }
101 printf("\n");
102 }
103 }
104
105
106
107