/tags/rel-1-3-29/SWIG/Examples/guile/matrix/matrix.c
C | 61 lines | 38 code | 22 blank | 1 comment | 8 complexity | a43c7a26c16911b1084e60b63692d1f5 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- /* FILE : matrix.c : some simple 4x4 matrix operations */
- #include <stdlib.h>
- #include <stdio.h>
- double **new_matrix() {
- int i;
- double **M;
- M = (double **) malloc(4*sizeof(double *));
- M[0] = (double *) malloc(16*sizeof(double));
-
- for (i = 0; i < 4; i++) {
- M[i] = M[0] + 4*i;
- }
- return M;
- }
- void destroy_matrix(double **M) {
- free(M[0]);
- free(M);
- }
- void print_matrix(double **M) {
- int i,j;
- for (i = 0; i < 4; i++) {
- for (j = 0; j < 4; j++) {
- printf("%10g ", M[i][j]);
- }
- printf("\n");
- }
- }
- void mat_mult(double **m1, double **m2, double **m3) {
- int i,j,k;
- double temp[4][4];
- for (i = 0; i < 4; i++)
- for (j = 0; j < 4; j++) {
- temp[i][j] = 0;
- for (k = 0; k < 4; k++)
- temp[i][j] += m1[i][k]*m2[k][j];
- }
- for (i = 0; i < 4; i++)
- for (j = 0; j < 4; j++)
- m3[i][j] = temp[i][j];
- }