Linear Algebra and the C Language/a09o


Install and compile this file in your working directory.

/* ------------------------------------ */
/*  Save as :   c00c.c                  */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
#define   RAb R4
#define   CA  C4
#define   Cb  C1
/* ------------------------------------ */
# define FREEV C1
/* ------------------------------------ */
/* ------------------------------------ */
int main(void)
{
double ab[RAb*(CA+C1)]={
    -944,     +337,     -777,     -131,     -592, 
    -944,     +337,     -777,     -131,     -592, 
    +509,     +581,     -475,     -544,     -649, 
     +69,     +777,     -245,      -51,     +974      
};

double **Ab =   ca_A_mR(ab,i_Abr_Ac_bc_mR(RAb, CA, Cb));

double **Ab_free = i_Abr_Ac_bc_mR(CA, CA,Cb + FREEV);
double **b_free  =           i_mR(CA,    Cb + FREEV); 

  clrscrn();
  printf(" Ab :");
  p_mR(Ab, S10,P4,C10);
  
  printf(" Ab :  gj_PP_mR(Ab,NO) :");
  gj_PP_mR(Ab,NO);
  p_mR(Ab, S10,P4,C10);
  stop();
  
  clrscrn(); 
  put_zeroR_mR(Ab,Ab_free);  
  printf(" Ab_free : put_zeroR_mR(Ab,Ab_free);");  
  p_mR(Ab_free, S10,P4,C10);  

  put_freeV_mR(Ab_free);
  printf(" Ab_free : put_freeV_mR(Ab_free);");  
  p_mR(Ab_free, S10,P4,C10);  

  printf(" Ab_free : gj_PP_mR(Ab_free,YES);");
  gj_PP_mR(Ab_free,YES); 
  p_mR(Ab_free, S10,P4,C10);  
  stop();	
  
  clrscrn();
  c_Ab_b_mR(Ab_free,b_free);
  printf(" b_free :"); 
  p_mR(b_free, S10,P4,C7);
  printf("         b        FREEV");
  p_freeV(b_free, S8,P4);
  stop();

  f_mR(Ab);
  f_mR(Ab_free);
  f_mR(b_free);
  
  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */


Screen output example:

 Ab :
 -944.0000  +337.0000  -777.0000  -131.0000  -592.0000 
 -944.0000  +337.0000  -777.0000  -131.0000  -592.0000 
 +509.0000  +581.0000  -475.0000  -544.0000  -649.0000 
  +69.0000  +777.0000  -245.0000   -51.0000  +974.0000 

 Ab :  gj_PP_mR(Ab,NO) :
   +1.0000    -0.3570    +0.8231    +0.1388    +0.6271 
   +0.0000    +1.0000    -0.3765    -0.0756    +1.1610 
   -0.0000    -0.0000    +1.0000    +0.9179    +3.0549 
   +0.0000    +0.0000    +0.0000    +0.0000    +0.0000 

 Press return to continue. 


 Ab_free : put_zeroR_mR(Ab,Ab_free);
   +1.0000    -0.3570    +0.8231    +0.1388    +0.6271    +0.0000 
   +0.0000    +1.0000    -0.3765    -0.0756    +1.1610    +0.0000 
   -0.0000    -0.0000    +1.0000    +0.9179    +3.0549    +0.0000 
   +0.0000    +0.0000    +0.0000    +0.0000    +0.0000    +0.0000 

 Ab_free : put_freeV_mR(Ab_free);
   +1.0000    -0.3570    +0.8231    +0.1388    +0.6271    +0.0000 
   +0.0000    +1.0000    -0.3765    -0.0756    +1.1610    +0.0000 
   -0.0000    -0.0000    +1.0000    +0.9179    +3.0549    +0.0000 
   +0.0000    +0.0000    +0.0000    +1.0000    +0.0000    +1.0000 

 Ab_free : gj_PP_mR(Ab_free,YES);
   +1.0000    +0.0000    +0.0000    +0.0000    -1.0623    +0.5204 
   +0.0000    +1.0000    +0.0000    +0.0000    +2.3111    -0.2700 
   +0.0000    +0.0000    +1.0000    +0.0000    +3.0549    -0.9179 
   +0.0000    +0.0000    +0.0000    +1.0000    +0.0000    +1.0000 

 Press return to continue. 


 b_free :
   -1.0623    +0.5204 
   +2.3111    -0.2700 
   +3.0549    -0.9179 
   +0.0000    +1.0000 

         b        FREEV
 x1 =   -1.0623  +0.5204*u
 x2 =   +2.3111  -0.2700*u
 x3 =   +3.0549  -0.9179*u
 x4 =   +0.0000  +1.0000*u

 Press return to continue.