diff options
author | Alberto Ruiz <aruiz@um.es> | 2010-02-20 17:08:59 +0000 |
---|---|---|
committer | Alberto Ruiz <aruiz@um.es> | 2010-02-20 17:08:59 +0000 |
commit | dedd74ee85ee1bf468552107760541b31e6f1878 (patch) | |
tree | 2726f637f48498eef1af22ce03741a3353d8ec08 /examples/devel/ej1/functions.c | |
parent | dc9cdee87db0181774cb230610e4b24f9ef3f89a (diff) |
added simpler devel example
Diffstat (limited to 'examples/devel/ej1/functions.c')
-rw-r--r-- | examples/devel/ej1/functions.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/examples/devel/ej1/functions.c b/examples/devel/ej1/functions.c new file mode 100644 index 0000000..02a4cdd --- /dev/null +++ b/examples/devel/ej1/functions.c | |||
@@ -0,0 +1,35 @@ | |||
1 | /* assuming row order */ | ||
2 | |||
3 | typedef struct { double r, i; } doublecomplex; | ||
4 | |||
5 | #define DVEC(A) int A##n, double*A##p | ||
6 | #define CVEC(A) int A##n, doublecomplex*A##p | ||
7 | #define DMAT(A) int A##r, int A##c, double*A##p | ||
8 | #define CMAT(A) int A##r, int A##c, doublecomplex*A##p | ||
9 | |||
10 | #define AT(M,row,col) (M##p[(row)*M##c + (col)]) | ||
11 | |||
12 | /*-----------------------------------------------------*/ | ||
13 | |||
14 | int c_scale_vector(double s, DVEC(x), DVEC(y)) { | ||
15 | int k; | ||
16 | for (k=0; k<=yn; k++) { | ||
17 | yp[k] = s*xp[k]; | ||
18 | } | ||
19 | return 0; | ||
20 | } | ||
21 | |||
22 | /*-----------------------------------------------------*/ | ||
23 | |||
24 | int c_diag(DMAT(m),DVEC(y),DMAT(z)) { | ||
25 | int i,j; | ||
26 | for (j=0; j<yn; j++) { | ||
27 | yp[j] = AT(m,j,j); | ||
28 | } | ||
29 | for (i=0; i<mr; i++) { | ||
30 | for (j=0; j<mc; j++) { | ||
31 | AT(z,i,j) = i==j?yp[i]:0; | ||
32 | } | ||
33 | } | ||
34 | return 0; | ||
35 | } | ||