#include
int main() {
int m = 3;
array double a[3][3] = { 0.8,0.2,0.1,
0.1,0.7,0.3,
0.1,0.1,0.6};
int status;
array double p[m][m], h[m][m];
status = hessdecomp(a, h);
if (status == 0) {
printf("h =\n%f\n", h);
}
else
printf(" Hessenberg matrix calculation error.\n");
status = hessdecomp(a, h, p);
if (status == 0) {
printf("h =\n%f\n", h);
printf("p =\n%f\n", p);
printf("transpose(p)*p =\n%f\n",transpose(p)*p );
printf("transpose(p)*a*p - h =\n%f\n", transpose(p)*a*p - h);
}
else
printf(" Hessenberg matrix calculation error.\n");
}
h =
0.800000 -0.212132 -0.070711
-0.141421 0.850000 -0.050000
0.000000 0.150000 0.450000
h =
0.800000 -0.212132 -0.070711
-0.141421 0.850000 -0.050000
0.000000 0.150000 0.450000
p =
1.000000 0.000000 0.000000
0.000000 -0.707107 -0.707107
0.000000 -0.707107 0.707107
transpose(p)*p =
1.000000 0.000000 0.000000
0.000000 1.000000 -0.000000
0.000000 -0.000000 1.000000
transpose(p)*a*p - h =
0.000000 -0.000000 -0.000000
0.000000 0.000000 -0.000000
0.000000 0.000000 0.000000