Linear Algebra and the C Language/a0l3
Install and compile this file in your working directory.
/* ------------------------------------ */
/* Save as: c00b.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
# define RAb C4
# define CA C6
# define Cb C1
/* ------------------------------------ */
# define FREEV C3
/* ------------------------------------ */
/* ------------------------------------ */
void X_put_zeroR_mR(
double **Ab,
double **Ab_free
)
{
int r;
int c;
int r_free= R1;
int t=0;
for (r=R1; r<Ab[R_SIZE][C0]; r++)
for (c=r+t; c<Ab[C_SIZE_A][C0]; c++)
if(Ab[r][c]> ERROR_E)
{
clrscrn();
printf(" Ab: put_zeroR_mR();"
" b");
p_mR(Ab, S7,P2,C10);
printf(" Ab_free: DEBUG 01 "
" b FREEV");
p_mR(Ab_free, S7,P2,C10);
c_r_mR(Ab,r,Ab_free,r_free);
printf(" Ab_free: COPY THE ROW [%d] OF Ab"
" INTO THE ROW [%d] OF Ab_free",r,r_free);
p_mR(Ab_free, S7,P2,C10);
stop();
clrscrn();
c = Ab[C_SIZE_A][C0];
r_free++;
}
else
{
clrscrn();
printf(" Ab: put_zeroR_mR();"
" b");
p_mR(Ab, S7,P2,C10);
printf(" Ab_free: DEBUG 02 "
" b FREEV");
p_mR(Ab_free, S7,P2,C10);
r_free++;
t++;
printf(" Ab_free: A LINE OF ZERO");
p_mR(Ab_free, S7,P2,C10);
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();
X_put_zeroR_mR(Ab,Ab_free);
printf(" Ab_free: put_zeroR_mR();"
" b FREEV");
p_mR(Ab_free, S7,P2,C10);
stop();
f_mR(Ab);
f_mR(Ab_free);
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Screen output example:
Ab: put_zeroR_mR(); b
+1.00 -3.00 +4.50 -0.50 +4.00 +1.00 +0.00
-0.00 -0.00 +1.00 +3.00 -2.00 -6.00 -0.00
+0.00 +0.00 +0.00 +0.00 +1.00 +5.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
Ab_free: DEBUG 01 b FREEV
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
Ab_free: COPY THE ROW [1] OF Ab INTO THE ROW [1] OF Ab_free
+1.00 -3.00 +4.50 -0.50 +4.00 +1.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
Press return to continue.
Ab: put_zeroR_mR(); b
+1.00 -3.00 +4.50 -0.50 +4.00 +1.00 +0.00
-0.00 -0.00 +1.00 +3.00 -2.00 -6.00 -0.00
+0.00 +0.00 +0.00 +0.00 +1.00 +5.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
Ab_free: DEBUG 02 b FREEV
+1.00 -3.00 +4.50 -0.50 +4.00 +1.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
Ab_free: A LINE OF ZERO
+1.00 -3.00 +4.50 -0.50 +4.00 +1.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
Press return to continue.
Ab: put_zeroR_mR(); b
+1.00 -3.00 +4.50 -0.50 +4.00 +1.00 +0.00
-0.00 -0.00 +1.00 +3.00 -2.00 -6.00 -0.00
+0.00 +0.00 +0.00 +0.00 +1.00 +5.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
Ab_free: DEBUG 01 b FREEV
+1.00 -3.00 +4.50 -0.50 +4.00 +1.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
Ab_free: COPY THE ROW [2] OF Ab INTO THE ROW [3] OF Ab_free
+1.00 -3.00 +4.50 -0.50 +4.00 +1.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
-0.00 -0.00 +1.00 +3.00 -2.00 -6.00 -0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
Press return to continue.
Ab: put_zeroR_mR(); b
+1.00 -3.00 +4.50 -0.50 +4.00 +1.00 +0.00
-0.00 -0.00 +1.00 +3.00 -2.00 -6.00 -0.00
+0.00 +0.00 +0.00 +0.00 +1.00 +5.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
Ab_free: DEBUG 02 b FREEV
+1.00 -3.00 +4.50 -0.50 +4.00 +1.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
-0.00 -0.00 +1.00 +3.00 -2.00 -6.00 -0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
Ab_free: A LINE OF ZERO
+1.00 -3.00 +4.50 -0.50 +4.00 +1.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
-0.00 -0.00 +1.00 +3.00 -2.00 -6.00 -0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
Press return to continue.
Ab: put_zeroR_mR(); b
+1.00 -3.00 +4.50 -0.50 +4.00 +1.00 +0.00
-0.00 -0.00 +1.00 +3.00 -2.00 -6.00 -0.00
+0.00 +0.00 +0.00 +0.00 +1.00 +5.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
Ab_free: DEBUG 01 b FREEV
+1.00 -3.00 +4.50 -0.50 +4.00 +1.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
-0.00 -0.00 +1.00 +3.00 -2.00 -6.00 -0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
Ab_free: COPY THE ROW [3] OF Ab INTO THE ROW [5] OF Ab_free
+1.00 -3.00 +4.50 -0.50 +4.00 +1.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
-0.00 -0.00 +1.00 +3.00 -2.00 -6.00 -0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +1.00 +5.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
Press return to continue.
Ab: put_zeroR_mR(); b
+1.00 -3.00 +4.50 -0.50 +4.00 +1.00 +0.00
-0.00 -0.00 +1.00 +3.00 -2.00 -6.00 -0.00
+0.00 +0.00 +0.00 +0.00 +1.00 +5.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
Ab_free: DEBUG 02 b FREEV
+1.00 -3.00 +4.50 -0.50 +4.00 +1.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
-0.00 -0.00 +1.00 +3.00 -2.00 -6.00 -0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +1.00 +5.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
Ab_free: A LINE OF ZERO
+1.00 -3.00 +4.50 -0.50 +4.00 +1.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
-0.00 -0.00 +1.00 +3.00 -2.00 -6.00 -0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +1.00 +5.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
Press return to continue.
Ab_free: put_zeroR_mR(); b FREEV
+1.00 -3.00 +4.50 -0.50 +4.00 +1.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
-0.00 -0.00 +1.00 +3.00 -2.00 -6.00 -0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +1.00 +5.00 +0.00 +0.00 +0.00 +0.00
+0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
Press return to continue.