Mathc complexes/Fichiers c : i dup


Application


Étudions la fonction :

/* ------------------------------------ */
double **i_RC_mZ(
int      R,          // A[R_SIZE][C0]
int      C           // A[C_SIZE][C0]
)
{
  R =  (R-R1);
  C = ((C-C1)/C2);

return( i_mZ(R,C) );
}
/* ------------------------------------ */


  T = i_RC_mZ(A[R_SIZE][C0],A[C_SIZE][C0]);


En fait on initialise la taille de la matrice directement en lisant en mémoire celle-ci, au lieu d'utiliser rsize_mZ(); et csize_mZ(); car cela est plus rapide.


On se rappel qu'avant de mémoriser la taille de la matrice dans la fonction i_mZ(); on ajoute la ligne zéro et la colonne zéro.

Il faut donc les retrancher avant l'appel de la fonction i_mZ(); qui va naturellement les rajouter un peu plus tard.

  • (r-R1)
  • (c-C1)


/* ------------------------------------ */
/*  Save as :   c00a.c                  */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
int main(void)
{
 double **A     =    i_mZ(            R3,         C5   );
 double **B     =    i_mZ(    rsize_Z(A),   csize_Z(A) );
 double **C     = i_RC_mZ( A[R_SIZE][C0],A[C_SIZE][C0] );
 
   clrscrn();

   printf(" A :");
   r_mZ(A,9);
   p_mZ(A, S4,P0, S2,P0, C5);
   	
   printf(" B :");
   c_mZ(A,B);
   p_mZ(B, S4,P0, S2,P0, C5);

   printf(" C :");
   c_mZ(A,C);
   p_mZ(C, S4,P0, S2,P0, C5);
   stop();
   
   f_mZ(A);
   f_mZ(B);  
   f_mZ(C);  
     
   return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */


 A :
  +2-1i   -6+2i   -7-6i   -6+6i   +7+8i 
  +9-7i   +9-9i   -2+6i   +1-6i   +2+5i 
  -7-1i   -6+6i   +3+3i   +2-9i   +6-5i 

 B :
  +2-1i   -6+2i   -7-6i   -6+6i   +7+8i 
  +9-7i   +9-9i   -2+6i   +1-6i   +2+5i 
  -7-1i   -6+6i   +3+3i   +2-9i   +6-5i 

 C :
  +2-1i   -6+2i   -7-6i   -6+6i   +7+8i 
  +9-7i   +9-9i   -2+6i   +1-6i   +2+5i 
  -7-1i   -6+6i   +3+3i   +2-9i   +6-5i 

 Press return to continue.