/* nag_lapackeig_zungql (f08ctc) Example Program. * * Copyright 2025 Numerical Algorithms Group. * * Mark 31.1, 2025. */ #include<nag.h> #include<stdio.h> intmain(void){ /* Scalars */ Integeri,j,m,n,pda; Integerexit_status=0; /* Arrays */ char*title=0; Complex*a=0,*tau=0; /* Nag Types */ Nag_OrderTypeorder; NagErrorfail; #ifdef NAG_COLUMN_MAJOR #define A(I, J) a[(J - 1) * pda + I - 1] order=Nag_ColMajor; #else #define A(I, J) a[(I - 1) * pda + J - 1] order=Nag_RowMajor; #endif INIT_FAIL(fail); printf("nag_lapackeig_zungql (f08ctc) Example Program Results\n\n"); /* Skip heading in data file */ scanf("%*[^\n]"); scanf("%"NAG_IFMT"%"NAG_IFMT"%*[^\n]",&m,&n); #ifdef NAG_COLUMN_MAJOR pda=m; #else pda=n; #endif /* Allocate memory */ if(!(title=NAG_ALLOC(31,char))||!(a=NAG_ALLOC(m*n,Complex))|| !(tau=NAG_ALLOC(n,Complex))){ printf("Allocation failure\n"); exit_status=-1; gotoEND; } /* Read A from data file */ for(i=1;i<=m;++i) for(j=1;j<=n;++j) scanf(" ( %lf , %lf )",&A(i,j).re,&A(i,j).im); scanf("%*[^\n]"); /* nag_lapackeig_zgeqlf (f08csc). * Compute the QL factorization of A. */ nag_lapackeig_zgeqlf(order,m,n,a,pda,tau,&fail); if(fail.code!=NE_NOERROR){ printf("Error from nag_lapackeig_zgeqlf (f08csc).\n%s\n",fail.message); exit_status=1; gotoEND; } /* nag_lapackeig_zungql (f08ctc). * Form the leading n columns of Q explicitly. */ nag_lapackeig_zungql(order,m,n,n,a,pda,tau,&fail); if(fail.code!=NE_NOERROR){ printf("Error from nag_lapackeig_zungql (f08ctc).\n%s\n",fail.message); exit_status=1; gotoEND; } sprintf(title,"The leading %4"NAG_IFMT" columns of Q",n); /* nag_file_print_matrix_complex_gen_comp (x04dbc). * Print the leading n columns of Q. */ fflush(stdout); nag_file_print_matrix_complex_gen_comp( order,Nag_GeneralMatrix,Nag_NonUnitDiag,m,n,a,pda,Nag_BracketForm, "%7.4f",title,Nag_IntegerLabels,0,Nag_IntegerLabels,0,80,0,0, &fail); if(fail.code!=NE_NOERROR){ printf("Error from nag_file_print_matrix_complex_gen_comp (x04dbc).\n%s\n", fail.message); exit_status=1; } END: NAG_FREE(title); NAG_FREE(a); NAG_FREE(tau); returnexit_status; } #undef A