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