Linear Algebra and the C Language/a0ca
Install and compile this file in your working directory.
/* ------------------------------------ */
/* Save as : c00b.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
#define RCA RC5
/* ------------------------------------ */
/* ------------------------------------ */
void fun(void)
{
double **A = rEsymmetric_mR(i_mR(RCA,RCA),455.,1E-3);
double **sinh_A = i_mR(RCA,RCA);
double **EigsVector = i_mR(RCA,RCA);
double **T_EigsVector = i_mR(RCA,RCA);
double **EigsValue = i_mR(RCA,RCA);
double **sinh_EigsValue = i_mR(RCA,RCA);
double **T1 = i_mR(RCA,RCA);
clrscrn();
printf(" A :");
p_mR(A,S10,P4,C6);
/* ================================================================== */
eigs_V_mR(A,EigsVector);
transpose_mR(EigsVector,T_EigsVector);
/* EigsValue : T_EigsVector * A * EigsVector */
mul_mR(T_EigsVector,A,T1);
mul_mR(T1,EigsVector,EigsValue);
printf(" sinh(A) :");
f_eigs_mR(sinh,EigsValue,sinh_EigsValue);
mul_mR(EigsVector,sinh_EigsValue,T1);
mul_mR(T1,T_EigsVector,sinh_A);
p_mR(sinh_A,S10,P4,C6);
/* ================================================================== */
eigs_V_mR(sinh_A,EigsVector);
transpose_mR(EigsVector,T_EigsVector);
/* EigsValue : T_EigsVector * sinh_A * EigsVector */
mul_mR(T_EigsVector,sinh_A,T1);
mul_mR(T1,EigsVector,EigsValue);
printf(" asinh(sinh(A)) = A :");
f_eigs_mR(asinh,EigsValue,sinh_EigsValue);
mul_mR(EigsVector,sinh_EigsValue,T1);
mul_mR(T1,T_EigsVector,A);
p_mR(A,S10,P4,C6);
f_mR(A);
f_mR(sinh_A);
f_mR(EigsVector);
f_mR(T_EigsVector);
f_mR(EigsValue);
f_mR(sinh_EigsValue);
f_mR(T1);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun();
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Screen output example:
A :
+0.2724 +0.0131 -0.1520 +0.0900 -0.0196
+0.0131 +0.1715 +0.1096 -0.0507 +0.0558
-0.1520 +0.1096 +0.1897 -0.1034 +0.1239
+0.0900 -0.0507 -0.1034 +0.0630 -0.1004
-0.0196 +0.0558 +0.1239 -0.1004 +0.3966
sinh(A) :
+0.2802 +0.0105 -0.1593 +0.0943 -0.0254
+0.0105 +0.1745 +0.1141 -0.0534 +0.0612
-0.1593 +0.1141 +0.1988 -0.1089 +0.1339
+0.0943 -0.0534 -0.1089 +0.0664 -0.1069
-0.0254 +0.0612 +0.1339 -0.1069 +0.4127
asinh(sinh(A)) = A :
+0.2724 +0.0131 -0.1520 +0.0900 -0.0196
+0.0131 +0.1715 +0.1096 -0.0507 +0.0558
-0.1520 +0.1096 +0.1897 -0.1034 +0.1239
+0.0900 -0.0507 -0.1034 +0.0630 -0.1004
-0.0196 +0.0558 +0.1239 -0.1004 +0.3966
Press return to continue
Press X return to stop