Linear Algebra and the C Language/a09m


Install and compile this file in your working directory.

/* ------------------------------------ */
/*  Save as :   c00a.c                  */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
#define   RAb R2
#define   CA  C2
#define   Cb  C1
/* ------------------------------------ */
# define FREEV C1
/* ------------------------------------ */
/* ------------------------------------ */
int main(void)
{
double ab[RAb*(CA+C1)]={
    -3,     -9,     +12,  
    +2,     +6,     -8,     
};

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, S6,P1,C10);
  
  printf(" Ab :  gj_PP_mR(Ab,NO) :");
  gj_PP_mR(Ab,NO);
  p_mR(Ab, S6,P1,C10);
  stop();
  
  clrscrn();  
  put_zeroR_mR(Ab,Ab_free);  
  printf(" Ab_free : put_zeroR_mR(Ab,Ab_free);");  
  p_mR(Ab_free, S6,P1,C10);  
 
  put_freeV_mR(Ab_free);
  printf(" Ab_free : put_freeV_mR(Ab_free);");  
  p_mR(Ab_free, S6,P1,C10);  

  printf("\n Ab_free : gj_PP_mR(Ab_free,YES);");
  gj_PP_mR(Ab_free,YES);  
  p_mR(Ab_free, S6,P1,C10);  

  c_Ab_b_mR(Ab_free,b_free);
  printf("\n b_free :"); 
  p_mR(b_free, S6,P1,C7);
  printf("        b    FREEV");
  p_freeV(b_free, S4,P1);
  stop();

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


Screen output example:

 Ab :
  -3.0   -9.0  +12.0 
  +2.0   +6.0   -8.0 

 Ab :  gj_PP_mR(Ab,NO) :
  +1.0   +3.0   -4.0 
  +0.0   +0.0   +0.0 

 Press return to continue. 


 Ab_free : put_zeroR_mR(Ab,Ab_free);
  +1.0   +3.0   -4.0   +0.0 
  +0.0   +0.0   +0.0   +0.0 

 Ab_free : put_freeV_mR(Ab_free);
  +1.0   +3.0   -4.0   +0.0 
  +0.0   +1.0   +0.0   +1.0 


 Ab_free : gj_PP_mR(Ab_free,YES);
  +1.0   +0.0   -4.0   -3.0 
  +0.0   +1.0   +0.0   +1.0 


 b_free :
  -4.0   -3.0 
  +0.0   +1.0 

        b    FREEV
 x1 =  -4.0 -3.0*w
 x2 =  +0.0 +1.0*w

 Press return to continue.