Linear Algebra and the C Language/a0i6
Install and compile this file in your working directory.
/* ------------------------------------ */
/* Save as : c00a.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
double **X_rskewsymmetric_mR(
double **A,
int n)
{
int r;
int c;
double x;
isquare_mR(A,"rskewsymmetric_mR();","(A)");
for ( r=R1; r<A[R_SIZE][C0]; r++)
for ( c=C1; c<A[C_SIZE][C0]; c++)
{
if(r==c)
A[r][c] = 0.;
else{ x = r_I (n);
A[r][c] = -x;
A[c][r] = x;
}
}
return(A);
}
/* ------------------------------------ */
/* ------------------------------------ */
void fun(int r)
{
double **A = rskewsymmetric_mR( i_mR(r,r), 9);
double **AT = transpose_mR(A, i_mR(r,r));
double **mns1A = smul_mR(-1,A, i_mR(r,r));
clrscrn();
printf(" Skew-symmetric matrix : -A = AT\n\n\n");
printf(" -A:");
p_mR(mns1A, S7,P3,C6);
printf(" AT:");
p_mR(AT, S7,P3,C6);
f_mR(A);
f_mR(AT);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun(rp_I(R3)+R1);
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Screen output example:
Skew-symmetric matrix : -A = AT
-A:
-0.000 +2.000 -9.000
-2.000 -0.000 -6.000
+9.000 +6.000 -0.000
AT:
+0.000 +2.000 -9.000
-2.000 +0.000 -6.000
+9.000 +6.000 +0.000
Press return to continue
Press X return to stop