#include void main () { float **allocate_real_matrix(int, int, int, int); void free_real_matrix(float **, int, int, int); void qzival(int, float **, float **, float [], float [], float [], int [], float []); int k,iter[5]; float **a,**b,alfr[5],alfi[5],beta[5],em[2]; a=allocate_real_matrix(1,4,1,4); b=allocate_real_matrix(1,4,1,4); a[1][1]=2.0; a[1][2]=3.0; a[1][3] = -3.0; a[1][4]=4.0; a[2][1]=1.0; a[2][2] = -1.0; a[2][3]=5.0; a[2][4]=1.0; a[3][1]=0.0; a[3][2]=2.0; a[3][3]=6.0; a[3][4]=8.0; a[4][1]=1.0; a[4][2]=1.0; a[4][3]=0.0; a[4][4]=4.0; b[1][1]=1.0; b[1][2]=5.0; b[1][3]=9.0; b[1][4]=0.0; b[2][1]=2.0; b[2][2]=6.0; b[2][3]=10.0; b[2][4]=2.0; b[3][1]=3.0; b[3][2]=7.0; b[3][3]=11.0; b[3][4] = -1.0; b[4][1]=4.0; b[4][2]=8.0; b[4][3]=12.0; b[4][4]=3.0; em[0]=1.0e-35; em[1]=1.0e-6; qzival(4,a,b,alfr,alfi,beta,iter,em); for (k=1; k<=4; k++) printf("ITER[%1d]=%3d\n",k,iter[k]); printf("\nALFA(real part) ALFA(imaginary part) BETA\n"); for (k=1; k<=4; k++) printf(" %12.6e %16.6e %21.6e\n",alfr[k],alfi[k],beta[k]); printf("\nLAMBDA(real part) LAMBDA(imaginary part)\n"); for (k=1; k<=4; k++) if (beta[k] == 0.0) printf(" INFINITE INDEFINITE\n"); else printf(" %12.6e %16.6e\n",alfr[k]/beta[k],alfi[k]/beta[k]); free_real_matrix(a,1,4,1); free_real_matrix(b,1,4,1); }