#include
int main() {
int m = 3;
array double complex a[3][3] = { complex(-149,1), -50, -154,
537, 180, 546,
-27, -9, -25};
int status;
array double complex h[m][m];
array double complex p[m][m];
status = hessdecomp(a, h);
if (status == 0) {
printf("h =\n%5.2f\n", h);
}
else
printf("Hessenberg matrix calculation error.\n");
status = hessdecomp(a, h, p);
if (status == 0) {
printf("h =\n%5.2f\n", h);
printf("p =\n%5.2f\n", p);
printf("transpose(p)*p =\n%5.2f\n", transpose(p)*p);
printf("conj(transpose(p))*a*p - h =\n%5.2f\n", conj(transpose(p)*a*p - h));
}
else
printf("Hessenberg matrix calculation error.\n");
}
h =
complex(-149.00, 1.00) complex(42.20, 0.00) complex(-156.32, 0.00)
complex(-537.68, 0.00) complex(152.55, 0.00) complex(-554.93, 0.00)
complex( 0.00, 0.00) complex( 0.07, 0.00) complex( 2.45, 0.00)
h =
complex(-149.00, 1.00) complex(42.20, 0.00) complex(-156.32, 0.00)
complex(-537.68, 0.00) complex(152.55, 0.00) complex(-554.93, 0.00)
complex( 0.00, 0.00) complex( 0.07, 0.00) complex( 2.45, 0.00)
p =
complex( 1.00, 0.00) complex( 0.00, 0.00) complex( 0.00, 0.00)
complex( 0.00, 0.00) complex(-1.00, 0.00) complex( 0.05, 0.00)
complex( 0.00, 0.00) complex( 0.05, 0.00) complex( 1.00, 0.00)
transpose(p)*p =
complex( 1.00, 0.00) complex( 0.00, 0.00) complex( 0.00, 0.00)
complex( 0.00, 0.00) complex( 1.00, 0.00) complex( 0.00, 0.00)
complex( 0.00, 0.00) complex( 0.00, 0.00) complex( 1.00, 0.00)
conj(transpose(p))*a*p - h =
complex( 0.00,-0.00) complex( 0.00,-0.00) complex( 0.00,-0.00)
complex( 0.00,-0.00) complex( 0.00,-0.00) complex( 0.00,-0.00)
complex( 0.00,-0.00) complex( 0.00,-0.00) complex(-0.00,-0.00)