Linear Algebra and the C Language/a09k
Install and compile this file in your working directory.
/* ------------------------------------ */
/* Save as: c00d.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
# define RAb C4
# define CA C6
# define Cb C1
/* ------------------------------------ */
# define FREEV C3
/* ------------------------------------ */
/* ------------------------------------ */
void X_put_freeV_mR(
double **Ab_free
)
{
int r;
int t=1;
for (r=R1; r<Ab_free[R_SIZE][C0]; r++)
if(Ab_free[r][r]< ERROR_E)
{
clrscrn();
printf(" Ab_free: DEBUG 01"
" b FREEV");
p_mR(Ab_free, S6,P1,C11);
c_s_mR(1.,Ab_free,r,r);
c_s_mR(1.,Ab_free,r,rsize_R(Ab_free)+C1+t);
t++;
printf(" Ab_free: "
"put_freeV_mR() Pivot[%d,%d] b FREEV"
,r,r);
p_mR(Ab_free, S6,P1,C11);
stop();
clrscrn();
}
}
/* ------------------------------------ */
/* ------------------------------------ */
int main(void)
{
double ab[R4*C7]={
+1.0, -3.0, +4.5, -0.5, +4.0, +1.0, +0.0,
-0.0, -0.0, +1.0, +3.0, -2.0, -6.0, -0.0,
+0.0, +0.0, +0.0, +0.0, +1.0, +5.0, +0.0,
+0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0
};
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);
clrscrn();
printf(" Ab: b");
p_mR(Ab, S5,P1,C10);
put_zeroR_mR(Ab,Ab_free);
printf(" Ab_free: put_zeroR_mR(); b FREEV");
p_mR(Ab_free, S5,P1,C10);
stop();
clrscrn();
X_put_freeV_mR(Ab_free);
printf(" Ab_free: put_freeV_mR(Ab_free); b FREEV");
p_mR(Ab_free, S5,P1,C10);
stop();
f_mR(Ab);
f_mR(Ab_free);
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Screen output example:
Ab: b
+1.0 -3.0 +4.5 -0.5 +4.0 +1.0 +0.0
-0.0 -0.0 +1.0 +3.0 -2.0 -6.0 -0.0
+0.0 +0.0 +0.0 +0.0 +1.0 +5.0 +0.0
+0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0
Ab_free: put_zeroR_mR(); b FREEV
+1.0 -3.0 +4.5 -0.5 +4.0 +1.0 +0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0
-0.0 -0.0 +1.0 +3.0 -2.0 -6.0 -0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +0.0 +1.0 +5.0 +0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0
Press return to continue.
Ab_free: DEBUG 01 b FREEV
+1.0 -3.0 +4.5 -0.5 +4.0 +1.0 +0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0
-0.0 -0.0 +1.0 +3.0 -2.0 -6.0 -0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +0.0 +1.0 +5.0 +0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0
Ab_free: put_freeV_mR() Pivot[2,2] b FREEV
+1.0 -3.0 +4.5 -0.5 +4.0 +1.0 +0.0 +0.0 +0.0 +0.0
+0.0 +1.0 +0.0 +0.0 +0.0 +0.0 +0.0 +1.0 +0.0 +0.0
-0.0 -0.0 +1.0 +3.0 -2.0 -6.0 -0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +0.0 +1.0 +5.0 +0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0
Press return to continue.
Ab_free: DEBUG 01 b FREEV
+1.0 -3.0 +4.5 -0.5 +4.0 +1.0 +0.0 +0.0 +0.0 +0.0
+0.0 +1.0 +0.0 +0.0 +0.0 +0.0 +0.0 +1.0 +0.0 +0.0
-0.0 -0.0 +1.0 +3.0 -2.0 -6.0 -0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +0.0 +1.0 +5.0 +0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0
Ab_free: put_freeV_mR() Pivot[4,4] b FREEV
+1.0 -3.0 +4.5 -0.5 +4.0 +1.0 +0.0 +0.0 +0.0 +0.0
+0.0 +1.0 +0.0 +0.0 +0.0 +0.0 +0.0 +1.0 +0.0 +0.0
-0.0 -0.0 +1.0 +3.0 -2.0 -6.0 -0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +1.0 +0.0 +0.0 +0.0 +0.0 +1.0 +0.0
+0.0 +0.0 +0.0 +0.0 +1.0 +5.0 +0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0
Press return to continue.
Ab_free: DEBUG 01 b FREEV
+1.0 -3.0 +4.5 -0.5 +4.0 +1.0 +0.0 +0.0 +0.0 +0.0
+0.0 +1.0 +0.0 +0.0 +0.0 +0.0 +0.0 +1.0 +0.0 +0.0
-0.0 -0.0 +1.0 +3.0 -2.0 -6.0 -0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +1.0 +0.0 +0.0 +0.0 +0.0 +1.0 +0.0
+0.0 +0.0 +0.0 +0.0 +1.0 +5.0 +0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0
Ab_free: put_freeV_mR() Pivot[6,6] b FREEV
+1.0 -3.0 +4.5 -0.5 +4.0 +1.0 +0.0 +0.0 +0.0 +0.0
+0.0 +1.0 +0.0 +0.0 +0.0 +0.0 +0.0 +1.0 +0.0 +0.0
-0.0 -0.0 +1.0 +3.0 -2.0 -6.0 -0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +1.0 +0.0 +0.0 +0.0 +0.0 +1.0 +0.0
+0.0 +0.0 +0.0 +0.0 +1.0 +5.0 +0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +0.0 +0.0 +1.0 +0.0 +0.0 +0.0 +1.0
Press return to continue.
Ab_free: put_freeV_mR(Ab_free); b FREEV
+1.0 -3.0 +4.5 -0.5 +4.0 +1.0 +0.0 +0.0 +0.0 +0.0
+0.0 +1.0 +0.0 +0.0 +0.0 +0.0 +0.0 +1.0 +0.0 +0.0
-0.0 -0.0 +1.0 +3.0 -2.0 -6.0 -0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +1.0 +0.0 +0.0 +0.0 +0.0 +1.0 +0.0
+0.0 +0.0 +0.0 +0.0 +1.0 +5.0 +0.0 +0.0 +0.0 +0.0
+0.0 +0.0 +0.0 +0.0 +0.0 +1.0 +0.0 +0.0 +0.0 +1.0
Press return to continue.