Mathc complexes/Fichiers h : vc m

Un livre de Wikilivres.

Bibliothèque

Installer ce fichier dans votre répertoire de travail.

wcm.h
/* ------------------------------------ */
/*  Save as :   wcm.h                   */
/* ------------------------------------ */
double **ca_A_mZ(
double  a[],
double  **A
)
{
int r;
int c;
int i=0;

 	for    (r=R1; r<A[R_SIZE][C0]; r++)
 	   for (c=R1; c<A[C_SIZE][C0]; c++)

            A[r][c] = a[i++];

return(A);
}
/* ------------------------------------ */
double **c_mZ(
double **A,
double **B
)
{
int c;
int r;

 	for    (r=R1; r<A[R_SIZE][C0]; r++)
 	   for (c=R1; c<A[C_SIZE][C0]; c++)

            B[r][c] = A[r][c];
            
return(B);
}
/* ------------------------------------ */
double **c_withR0_mZ(
double **A,
double **B
)
{
int c;
int r;

 	for    (r=R0; r<A[R_SIZE][C0]; r++)
 	   for (c=C1; c<A[C_SIZE][C0]; c++)

            B[r][c] = A[r][c];
            
return(B);
}
/* ------------------------------------ */
void c_s_mZ(
double   s,
double **A,
int r,
int c
)
{
         A[r][c] = s;
}
/* ------------------------------------ */
/* ------------------------------------ */
void c_z_mZ(
nb_Z     z,
double **A,
int r,
int c
)
{
    if(c!=C1) c= (c-C1)*C2+C1;
    
         A[r][c]    = z.r;
         A[r][c+C1] = z.i;
    
}
/* ------------------------------------ */
/* Copy a diagonal matrix into a vector */
/* column                               */
/* ------------------------------------ */
double **c_D_U1_mZ(
double **D,
double **U
)
{
int  r;
int  c;

  for (   r=R1; r<D[R_SIZE][C0]; r++)
    for ( c=C1; c<D[C_SIZE][C0]; c+=C2)

        if(((r-R1)*C2)==c-C1)
          {           
               U[r][C1] = D[r][c   ];
               U[r][C2] = D[r][c+C1];
          }
              
 return(U);
}
/* ------------------------------------ */
/* ------------------------------------ */


La fonction c_mZ(); permet de copier la matrice A dans la matrice B. Elle ne vérifie pas la taille des matrices. Le fait d'avoir conservé cette possibilité m'a rendu de grand service.