/* nag_lapackeig_dorglq (f08ajc) 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; NagErrorfail; Nag_OrderTypeorder; /* Arrays */ char*title=0; double*a=0,*tau=0; #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_dorglq (f08ajc) 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,double))|| !(tau=NAG_ALLOC(m,double))){ 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",&A(i,j)); } scanf("%*[^\n] "); /* Compute the LQ factorization of A */ /* nag_lapackeig_dgelqf (f08ahc). * LQ factorization of real general rectangular matrix */ nag_lapackeig_dgelqf(order,m,n,a,pda,tau,&fail); if(fail.code!=NE_NOERROR){ printf("Error from nag_lapackeig_dgelqf (f08ahc).\n%s\n",fail.message); exit_status=1; gotoEND; } /* Form the leading M rows of Q explicitly */ /* nag_lapackeig_dorglq (f08ajc). * Form all or part of orthogonal Q from LQ factorization * determined by nag_lapackeig_dgelqf (f08ahc) */ nag_lapackeig_dorglq(order,m,n,m,a,pda,tau,&fail); if(fail.code!=NE_NOERROR){ printf("Error from nag_lapackeig_dorglq (f08ajc).\n%s\n",fail.message); exit_status=1; gotoEND; } /* Print the leading M rows of Q only */ sprintf(title,"The leading %2"NAG_IFMT" rows of Q\n",m); /* nag_file_print_matrix_real_gen (x04cac). * Print real general matrix (easy-to-use) */ fflush(stdout); nag_file_print_matrix_real_gen(order,Nag_GeneralMatrix,Nag_NonUnitDiag,m, n,a,pda,title,0,&fail); if(fail.code!=NE_NOERROR){ printf("Error from nag_file_print_matrix_real_gen (x04cac).\n%s\n", fail.message); exit_status=1; gotoEND; } END: NAG_FREE(title); NAG_FREE(a); NAG_FREE(tau); returnexit_status; }