1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
/* on evite les majuscules pour les variables, et on donne des noms explicites aux variables */
double** create_matrix(int nb_colonne, int nb_ligne)
{
/* On declare les variables au debut de la fonction ou du bloc */
double** matrix;
int i; /* i est accepte en tant qu'iterateur, pas besoin de le nommer autrement */
matrix = calloc(sizeof(double*),nb_colonne);
if (matrix == NULL)
{
/* Ne pas oublier de gerer l'erreur */
printf (erreur);
}
else
{
for(i=0 ; i< nb_colonne;i++)
{
matrix[i] = calloc(sizeof(double),nb_ligne);
if (matrix[i] == NULL)
{
printf ("erreur allocation ligne %d\n", i);
free_matrix (matrix, nb_colonne);
}
}
}
return matrix;
}
void free_matrix(double **m, int nb_colonne)
{
int i;
for(i=0;i<nb_colonne;i++)
{
free(m[i]);
}
free(m);
}
/* Et ainsi de suite :) */
void fill_matrix(double **m, int I, int J){
srand(time(NULL));
int i,j;for(i=0;i<I;i++){
for(j=0;j<J;j++){
m[i][j]=rand()%(I*J);
}
}
}
void print_matrix(double **m, int I, int J){
int i,j;for(i=0;i<I;i++){
for(j=0;j<J;j++){printf("%.2lf | ",m[i][j]);}
printf("\n");
}
}
double ** create_identity(int I){
double **Id = create_matrix(I,I);
int i,j;
for(i=0;i<I;i++){
for(j=0;j<I;j++){
if(i==j){Id[i][j]=1 ;}
else {Id[i][j]=0 ;}
}
}
return Id;
}
double compute_trace(double **m, int I){
double sum=0;
int i,j;
for(i=0;i<I;i++){
for(j=0;j<I;j++){
if(i==j){sum+=m[i][j];}
}
}
return sum;
}
double ** compute_product(double **m1, double **m2, int I, int J, int K){
double** m3 = create_matrix(I,K);
int i,j,k;
for(i=0;i<I;i++){
for(k=0;k<K;k++){
for(j=0;j<J;j++){
m3[i][k]+= (m1[i][j])*(m2[j][k]);
}
}
}
return m3;
}
double ** compute_power(double **m, int I, int n){
if(n==1){return m;}
if(n==2) {return compute_product(m,m,I,I,I);}
else {return compute_power(compute_product(m,m,I,I,I),I,n-1);}
} |
Partager