Linear Algebra and the C Language/a0ab
Install and compile this file in your working directory.
/* ------------------------------------ */
/* Save as : c00h.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
void fun(int r)
{
double **U = r_mR(i_mR(r,r),9.);
double **Orth = i_mR(r,r);
double **Orth_Normal = i_mR(r,r);
double **Orth_Normal_T = i_mR(r,r);
clrscrn();
printf(" U :");
p_mR(U, S8,P4, C6);
printf(" Orth : orth_mR(U,Orth,NO);");
orth_mR(U,Orth,NO);
p_mR(Orth, S8,P4, C6);
stop();
clrscrn();
printf(" Orth_Normal : normalize_mR(Orth,Orth_Normal);");
normalize_mR(Orth,Orth_Normal);
p_mR(Orth_Normal, S8,P4, C6);
printf(" Orth_Normal_T : transpose_mR(Orth_Normal,Orth_Normal_T);");
transpose_mR(Orth_Normal,Orth_Normal_T);
p_mR(Orth_Normal_T, S8,P4, C6);
printf(" Orth_Normal_T Orth_Normal :");
mul_mR(Orth_Normal_T,Orth_Normal, U);
p_mR(U, S8,P4, C6);
f_mR(U);
f_mR(Orth);
f_mR(Orth_Normal);
f_mR(Orth_Normal_T);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun(rp_I(R2)+R2);
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Screen output example:
U :
-5.0000 -1.0000 -7.0000 -4.0000
+8.0000 -1.0000 +9.0000 -1.0000
+8.0000 -1.0000 +1.0000 -1.0000
-6.0000 +3.0000 +4.0000 -6.0000
Orth : orth_mR(U,Orth,NO);
-5.0000 -1.7672 +0.7821 -4.1397
+8.0000 +0.2275 +4.4562 -1.5236
+8.0000 +0.2275 -3.5438 -3.3060
-6.0000 +2.0794 +0.5648 -2.9898
Press return to continue.
Orth_Normal : normalize_mR(Orth,Orth_Normal);
-0.3637 -0.6431 +0.1354 -0.6601
+0.5819 +0.0828 +0.7717 -0.2430
+0.5819 +0.0828 -0.6137 -0.5272
-0.4364 +0.7567 +0.0978 -0.4768
Orth_Normal_T : transpose_mR(Orth_Normal,Orth_Normal_T);
-0.3637 +0.5819 +0.5819 -0.4364
-0.6431 +0.0828 +0.0828 +0.7567
+0.1354 +0.7717 -0.6137 +0.0978
-0.6601 -0.2430 -0.5272 -0.4768
Orth_Normal_T Orth_Normal :
+1.0000 +0.0000 +0.0000 -0.0000
+0.0000 +1.0000 +0.0000 +0.0000
+0.0000 +0.0000 +1.0000 +0.0000
-0.0000 +0.0000 +0.0000 +1.0000
Press return to continue
Press X return to stop