int main() {
int n = 2;
array double a[2][2] = {8, -3,
-5, 9};
array double t[n][n];
array double q[n][n];
int status;
status = schurdecomp(a, q, t);
if(status == 0) {
printf("Schur vectors q =\n%f\n", q);
printf("Schur form t =\n%f\n", t);
printf("q*t*q^T =\n%f\n", q*t*transpose(q));
printf("q^T*q =\n%f\n", transpose(q)*q);
}
else
printf("error: numerical error in schurdecomp()\n");
schurdecomp(a, q, NULL);
printf("Schur vectors q =\n%f\n", q);
}
Schur vectors q =
0.661061 -0.750332
0.750332 0.661061
Schur form t =
4.594875 2.000000
0.000000 12.405125
q*t*q^T =
8.000000 -3.000000
-5.000000 9.000000
q^T*q =
1.000000 0.000000
0.000000 1.000000
Schur vectors q =
0.661061 -0.750332
0.750332 0.661061