Mathc matrices/c102c
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c00a.c */
/* ------------------------------------ */
void fun(int r,int c)
double **A = r_mR(i_mR(r,c),99.);
 clrscrn();
 printf(" A :\n");
 pall_mR(A,S5,P0,C10); 
 printf(" A :\n");
 pall_mR(swapC_withR0_mR(A,C1,C2),S5,P0,C10); 
 f_mR(A);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
int i;
do
 i = rp_I(R3)+R1;
 fun(i,i+C1);
} while(stop_w());
 return 0;
/* ------------------------------------ */

Exemple de sortie écran :
 A :
+4 +1 +2 +3 +4 
+5 -66 +83 +99 +48 
+0 -93 +77 -5 -67 
+0 -27 +44 -33 +24 
 A :
+4 +2 +1 +3 +4 
+5 +83 -66 +99 +48 
+0 +77 -93 -5 -67 
+0 +44 -27 -33 +24 
 Press return to continue
 Press X to stop

Mathc complexes/a09
Bibliothèque
Copier la bibliothèque dans votre répertoire de travail avec les fichiers des parties précédentes :
Exemple pour tester la bibliothèque :

Mathc complexes/h09a
Bibliothèque
Installer ce fichier dans votre répertoire de travail.
/* Save as : wgj3.h */
/* ------------------------------------ */
double **gj_PP_FreeV_mZ(
double **Ab
int r= R1;
int c= C1;
 while( (r<Ab[R_SIZE][C0]) &&
 (c<Ab[C_SIZE_A][C0]) )
 if(pivotbest_gj3Ab_mZ(Ab,r,c)>ERROR_E) 
 zero_under_pivot_gjAb_mZ(Ab,r,c);
 else r--;
 r++;
 c+=C2;

return(Ab);
/* ------------------------------------ */
double **GJ_PP_FreeV_m(
double **Ab,
double **Ab_free,
double **b_free) 
 m0_mZ(Ab_free);
 gj_PP_FreeV_mZ(Ab);
 put_zeroR_mZ(Ab, Ab_free);
 put_freeV_mR(Ab_free);
 gj_mZ(Ab_free); 
 c_Ab_b_mZ(Ab_free, b_free); 
return(b_free); 
/* ------------------------------------ */
 Déclaration des fichiers h.

Mathc complexes/h09o
Bibliothèque
Installer ce fichier dans votre répertoire de travail.
/* Save as : w_a.h */
/* Standard file */
/* Help */
/* Complexes numbers */
/* Create */
/* Print */
Le fichier w_a.h appellera tous les fichiers h de la librairie.

Mathc complexes/h09b
Installer et compiler ce fichier dans votre répertoire de travail.
/* ------------------------------------ */
/* Save as : c01a.c */
void fun(int r)
double **A = r_mZ(i_mZ(r,r),9);
 clrscrn();
 printf(" octave give a bad result. \n");
 printf(" If you past this type of numbers +1 -2*i \n");
 printf(" instead of this type (see space) +1-2*i\n\n");
 printf(" Copy/Past into the octave window. \n\n");
 p_Octave_mZ(A,"A",P0 ,P0);
 printf(" det(A)\n\n\n");
 f_mZ(A); 
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun(rp_I(R3)+R2);
} while(stop_w());
 return 0;
/* ------------------------------------ */
Exemple de sortie écran :
 octave give a bad result. 
 If you past this type of numbers +1 -2*i 
 instead of this type (see space) +1-2*i
 Copy/Past into the octave window. 
 A=[
-4-9*i,+6+8*i,-5+1*i,+5+1*i,+3-7*i;
-8+2*i,-4+6*i,-7+6*i,-7-7*i,-2+3*i;
+2-6*i,+3-7*i,+5+3*i,-2+3*i,+3-7*i;
+2-8*i,+5-6*i,-7+8*i,+9-5*i,-5+2*i;
-5+8*i,+8+8*i,+4+7*i,-4+2*i,+7-3*i]
 det(A)
 Press return to continue
 Press X to stop

Mathc complexes/h09c
Bibliothèque
Exemple pour tester la bibliothèque :

Mathc complexes/h09d
Bibliothèque
Installer ce fichier dans votre répertoire de travail.
/* Save as : wg.h */
/* ------------------------------------ */
 Déclaration des fichiers h.

Mathc complexes/h09h
Bibliothèque
Installer ce fichier dans votre répertoire de travail.
/* Save as : wgc_ab.h */
double **c_A_b_Ab_mZ(
double **A,
double **b,
double **Ab
int r;
int c;
int c_A;
 for (r=R1; r<A[R_SIZE][C0]; r++)
 for (c=C1; c<A[C_SIZE][C0]; c++)
 Ab[r][c] = A[r][c];
 c_A = --c;
 for (r=R1; r<A[R_SIZE][C0]; r++)
 for (c=C1; c<b[C_SIZE][C0]; c++)
 Ab[r][c+c_A] = b[r][c];
return(Ab);
/* ------------------------------------ */
double **c_Ab_A_mZ(
double **Ab,
double **A
int r;
int c;
 for (r=R1; r<Ab[R_SIZE][C0]; r++)
 for (c=C1; c<Ab[C_SIZE_A][C0]; c++)
 A[r][c] = Ab[r][c];
return(A);
/* ------------------------------------ */
double **c_Ab_b_mZ(
double **Ab,
double **b
int r;
int c;
int b_c;
 for (r=R1; r<Ab[R_SIZE][C0]; r++)
 for (c=Ab[C_SIZE_A][C0],b_c=C1; c<Ab[C_SIZE][C0]; c++,b_c++)
 b[r][b_c] = Ab[r][c];
return(b);
/* ------------------------------------ */
double **c_Ab_subArxr_mZ(
double **Ab,
double **subA
int r;
int c;
 for (r=R1; r< Ab[R_SIZE][C0]; r++)
 for (c=C1; c<(((Ab[R_SIZE][C0]-C1)*C2)+C1); c++)
 subA[r][c] = Ab[r][c];
return(subA);
/* ------------------------------------ */
 Déclaration des fichiers h.

Mathc complexes/h09j
Installer et compiler ce fichier dans votre répertoire de travail.
/* ------------------------------------ */
/* Save as : c00b.c */
int main(void)
double **A = rE_mZ(i_mZ(R3,C3), 999, 1E-2 );
 printf("A :"); 
 PE_mZ(A, S10,P2, S7,P2,C6);
 stop();
 f_mZ(A);
 return 0;
/* ------------------------------------ */
Exemple de sortie écran :
A :
 +4.79e+00,-1.54e+00i, -5.01e+00,+9.92e+00i, -7.63e+00,-5.91e+00i, 
 -8.43e+00,+7.08e+00i, +8.80e-01,+5.66e+00i, +2.52e+00,-5.65e+00i, 
 +5.85e+00,-8.64e+00i, -3.89e+00,+5.46e+00i, +9.73e+00,-5.73e+00i 
 Press return to continue.

Mathc complexes/h09i
Bibliothèque
Installer ce fichier dans votre répertoire de travail.
/* Save as : wgc_inv.h */
void c_Inv_A_mZ(
double **AID,
double **A
int r;
int c;
int T = A[C_SIZE][C0];
 --T;
 for (r=R1; r<A[R_SIZE][C0]; r++)
 for (c=C1; c<A[C_SIZE][C0]; c++)
 A[r][c] = AID[r][c+T];
/* ------------------------------------ */
 Déclaration des fichiers h.

Mathc complexes/h09g
Bibliothèque
Installer ce fichier dans votre répertoire de travail.
/* Save as : wgc_m.h */
/* wgj4.h : gj4_mZ(); */
/* copy (n-R1) rows of A into B */
void c_nr_mZ(
double **A,
int r_n,
double **B
int r;
int c;
 for (r=R1; r<r_n; r++)
 for (c=C1; c<A[C_SIZE][C0]; c++)
 B[r][c] = A[r][c];
/* ------------------------------------ */
/* copy n rows of A into B */
double **c_n_r_mZ(
double **A,
int r_n,
double **B
int r;
int c;
 for (r=R1; r<=r_n; r++)
 for (c=C1; c<A[C_SIZE][C0]; c++)
 B[r][c] = A[r][c];
return(B);
/* ------------------------------------ */
double **c_r1Ar2_mZ(
double **A,
int r1,
int r2)
int c;
 for ( c=C1; c<A[C_SIZE][C0]; c++)
 A[r2][c] = A[r1][c];
return(A);
/* ------------------------------------ */
double **c_r1zr2_mZ(
double **A,
int r1,
int r2,
nb_Z z)
nb_Z T;
int c;
 for ( c=C1; c<A[C_SIZE][C0]; c+=C2)
 T = mul_Z(i_Z(A[r1][c],A[r1][c+C1]),z);
 A[r2][c] = T.r;
 A[r2][c+C1] = T.i;
return(A);
/* ------------------------------------ */
 Déclaration des fichiers h.

Mathc complexes/h09f
Bibliothèque
Installer ce fichier dans votre répertoire de travail.
/* Save as : wgel_op.h */
double **swapcoef_R0_mZ(
double **A,
int c1,
int c2)
double T;
 T = A[R0][c1];
 A[R0][c1] = A[R0][c2];
 A[R0][c2] = T;
return(A);
/* ------------------------------------ */
 Déclaration des fichiers h.

Mathc complexes/h09e
Bibliothèque
Installer ce fichier dans votre répertoire de travail.
/* Save as : wg_i.h */
double **i_Abr_Ac_bc_mZ(
int Ab_r,
int A_c,
int b_c
double **Ab;
int Ab_c;
 if( Ab_r < R2 || A_c<C2 || b_c<C1)
 printf(" Error : double **iAbR0_mZ(); \n\n");
 printf(" A_c, b_c must be : Ab_r < R2 || A_c<C2 || b_c<C1 \n\n");
 printf(" This matrix is to study linear sytem.\n\n");
 fflush(stdout);
 getchar();
 exit(EXIT_FAILURE);
 Ab_c = A_c + b_c;
 Ab = i_mZ( Ab_r, Ab_c); /* create the matrix */
 Ab[C_SIZE_A][C0] = A_c*C2+C1; /* Ab[C_SIZE][C0]; The size of A */
return(Ab);
/* ------------------------------------ */
double **i_AbR_AbC_AC_mZ(
int Ab_r,
int Ab_c,
int A_c
double **Ab;
 Ab_r--;
 Ab_c = ((Ab_c-C1)/C2);
 Ab = i_mZ(Ab_r,Ab_c);
 Ab[C_SIZE_A][C0] = A_c;
return(Ab);
/* ------------------------------------ */
 Déclaration des fichiers h.