Linear Algebra and the C Language/a05t


Install and compile this file in your working directory.

/* ------------------------------------ */
/*  Save as :   c00a.c                  */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
void fun(void)
{ 
double **U_T   =         r_mR(         i_mR(R1,C3), 9);  
double **V_T   =         r_mR(         i_mR(R1,C3), 9);
double **UxV_T =       UxV_mR(U_T,V_T, i_mR(R1,C3));  
 
double **U     = transpose_mR(U_T,     i_mR(R3, C1));
double **V     = transpose_mR(V_T,     i_mR(R3, C1));
double **UxV   = transpose_mR(UxV_T,   i_mR(R3, C1));
    
  clrscrn();       
  printf("  u_t:");
  p_mR(U_T, S4, P0, C6);
  printf("  v_t:");
  p_mR(V_T, S4, P0, C6);
  printf("  uxv_t:");
  p_mR(UxV_T, S4, P0, C6);
                  
  printf("                      ||u x v||**2 == %+.4f          \n"
         "      ||u||**2 ||v||**2 - (u.v)**2 == %+.4f        \n\n", 
         
                           pow(norm_R(UxV),2), 
         
     pow(norm_R(U),2) * pow(norm_R(V),2) - pow(dot_R(U,V),2) ); 
                 
  f_mR(U_T); 
  f_mR(V_T);
  f_mR(UxV_T);
    
  f_mR(U); 
  f_mR(V);
  f_mR(UxV);   
}
/* ------------------------------------ */
int main(void)
{
time_t t;

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

} while(stop_w());

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
||u x v||**2 == ||u||**2 ||v||**2 - (u.v)**2

Screen output example:

  u_t  :
  +3   +8   -8 

  v_t  :
  +7   +8   -5 

  uxv_t :
 +24  -41  -32 

                      ||u x v||**2 == +3281.0000          
      ||u||**2 ||v||**2 - (u.v)**2 == +3281.0000        


 Press   return to continue
 Press X return to stop