Linear Algebra and the C Language/a0hc


Install and compile this file in your working directory.

/* ------------------------------------ */
/*  Save as :   c00a.c                  */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */ 
/* ------------------------------------ */
double **X_rHankel_mR(
double **U,
double **V,
double **A
)
{
int cn = C2;
int r  = rsize_R(A)-R1;

int c = C1;

  isquare_mR(A,"rHankel_mR;","(A)");

  c_c_mR(V,C1,A,C1);
  c_r_mR(U,R1,A,rsize_R(A));  
  
  for(cn = C2; r >= R1; cn++,r--)   

       c_rU_rA_cn_mR(U,R1,A,r,cn);


   c_c_r_mR(V,C1,U,R1);

  for(c=C1, r=R1; r < rsize_R(A)-C1; r++, c++)  
  
      c_Uc_r_mR(U,c,A,r);
              
 return(A);
}
/* ------------------------------------ */
/* ------------------------------------ */
void fun(int rc)
{
double **U   = r_mR(i_mR(R1,rc),9);
double **V   = r_mR(i_mR(rc,C1),9);	
double **A   =      i_mR(rc,rc);

  clrscrn();
  
  rHankel_mR(U,V,A);
  
  printf(" A: Hankel matrix");
  p_mR(A, S4,P0,C10);

  f_mR(U);
  f_mR(V);   
  f_mR(A);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));
  
  do
        fun(RC4);

  while(stop_w());       

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */


Screen output example:

                                                                                       
 A: Hankel matrix
  +9   +7   +5   +8 
  +7   +5   +8   +5 
  +5   +8   +5   -3 
  +8   +5   -3   +1 


 Press   return to continue
 Press X return to stop