Linear Algebra and the C Language/a00s


Install this file in your working directory.

/* ------------------------------------ */
/*  Save as :   vpfm.h                  */
/* ------------------------------------ */
double **fp_mR(
double **A,
char FileName[],
char MatrixName[],
int er,
int dr,
int n
)
{
FILE * fp = fopen(FileName,"a");
 
int r;
int c;
int n_c = C1;
int n_c_LAST;
int n_c_FIRST;
 
fprintf(fp,"%s",MatrixName);
 
while(n_c<A[C_SIZE][C0])
     {
      n_c+=n;
                           n_c_FIRST = n_c-n;
      if(n_c<A[C_SIZE][C0])n_c_LAST  = n_c;
      else                 n_c_LAST  = A[C_SIZE][C0];
 
          for(r=R1; r<A[R_SIZE][C0]; r++)
         {
          fprintf(fp,"\n");
              for (c=n_c_FIRST; c<n_c_LAST; c++)
               fprintf(fp,"%+*.*f ",er,dr,A[r][c]);
          }
      fprintf(fp,"\n");
     }
fprintf(fp,"\n\n");
 
fclose(fp);
 
return(A);
}
/* ------------------------------------ */
double **fpE_mR(
double **A,
char FileName[],
char MatrixName[],
int er,
int dr,
int n
)
{
FILE * fp = fopen(FileName,"a");
 
int r;
int c;
int n_c = C1;
int n_c_LAST;
int n_c_FIRST;
 
fprintf(fp,"%s",MatrixName);
 
while(n_c<A[C_SIZE][C0])
     {
      n_c+=n;
                           n_c_FIRST = n_c-n;
      if(n_c<A[C_SIZE][C0])n_c_LAST  = n_c;
      else                 n_c_LAST  = A[C_SIZE][C0];
 
          for(r=R1; r<A[R_SIZE][C0]; r++)
         {
          fprintf(fp,"\n");
              for (c=n_c_FIRST; c<n_c_LAST; c++)
               fprintf(fp,"%+*.*e ",er,dr,A[r][c]);
          }
      fprintf(fp,"\n");
     }
fprintf(fp,"\n\n");
 
fclose(fp);
 
return(A);
}
/* ------------------------------------ */
/* ------------------------------------ */
/* ------------------------------------ */
double **fP_mR(
double **A,
char FileName[],
char MatrixName[],
int er,
int dr,
int n
)
{
FILE * fp = fopen(FileName,"a");
 
int r;
int c;
int n_c = C1;
int n_c_LAST;
int n_c_FIRST;
 
fprintf(fp,"%s",MatrixName);
 
while(n_c<A[C_SIZE][C0])
     {
      n_c+=n;
                           n_c_FIRST = n_c-n;
      if(n_c<A[C_SIZE][C0])n_c_LAST  = n_c;
      else                 n_c_LAST  = A[C_SIZE][C0];
 
          for(r=R1; r<A[R_SIZE][C0]; r++)
         {
          fprintf(fp,"\n");
              for (c=n_c_FIRST; c<n_c_LAST; c++)
               fprintf(fp,"%+*.*f, ",er,dr,A[r][c]);
          }
      fprintf(fp,"\n");
     }
fprintf(fp,"\n\n");
 
fclose(fp);
 
return(A);
}
/* ------------------------------------ */
double **fPE_mR(
double **A,
char FileName[],
char MatrixName[],
int er,
int dr,
int n
)
{
FILE * fp = fopen(FileName,"a");
 
int r;
int c;
int n_c = C1;
int n_c_LAST;
int n_c_FIRST;
 
fprintf(fp,"%s",MatrixName);
 
while(n_c<A[C_SIZE][C0])
     {
      n_c+=n;
                           n_c_FIRST = n_c-n;
      if(n_c<A[C_SIZE][C0])n_c_LAST  = n_c;
      else                 n_c_LAST  = A[C_SIZE][C0];
 
          for(r=R1; r<A[R_SIZE][C0]; r++)
         {
          fprintf(fp,"\n");
              for (c=n_c_FIRST; c<n_c_LAST; c++)
               fprintf(fp,"%+*.*e, ",er,dr,A[r][c]);
          }
      fprintf(fp,"\n");
     }
fprintf(fp,"\n\n");
 
fclose(fp);
 
return(A);
}
/* ------------------------------------ */
/* ------------------------------------ */


fP_mR(); and fPE_mR(); add a comma separating the numbers, instead of a single space, to make it easy to reintroduce a matrix into a C file.