34 #include "qrm_common.h"
59 real(kind(1.d0)) :: b(:,:), x(:,:)
63 character(len=*),
parameter :: name=
'qrm_least_squares'
67 __qrm_prnt_dbg(
'("Entering the least-squares driver")')
70 __qrm_check_ret(name,
'qrm_check_spmat',9999)
72 if(qrm_mat%m .lt. qrm_mat%n)
then
73 call
qrm_err_push(30, name,ied=(/qrm_mat%m,qrm_mat%n,0,0,0/))
79 __qrm_check_ret(name,
'qrm_analyse',9999)
82 __qrm_check_ret(name,
'qrm_factorize',9999)
85 __qrm_check_ret(name,
'qrm_apply',9999)
87 __qrm_check_ret(name,
'qrm_solve',9999)
94 if(err_act .eq. qrm_abort_)
then
127 real(kind(1.d0)) :: b(:), x(:)
131 character(len=*),
parameter :: name=
'qrm_least_squares'
135 __qrm_prnt_dbg(
'("Entering the least-squares driver")')
138 __qrm_check_ret(name,
'qrm_check_spmat',9999)
140 if(qrm_mat%m .lt. qrm_mat%n)
then
141 call
qrm_err_push(30, name,ied=(/qrm_mat%m,qrm_mat%n,0,0,0/))
147 __qrm_check_ret(name,
'qrm_analyse',9999)
151 __qrm_check_ret(name,
'qrm_factorize',9999)
154 __qrm_check_ret(name,
'qrm_apply',9999)
156 __qrm_check_ret(name,
'qrm_solve',9999)
163 if(err_act .eq. qrm_abort_)
then
This module contains all the error management routines and data.
subroutine dqrm_solve2d(qrm_mat, transp, b, x)
This function solves for R or R' against multiple vectors.
This module contains all the interfaces for the typed routines in the solve phase.
subroutine dqrm_apply1d(qrm_mat, transp, b)
This function applies Q or Q^T to a single vector.
subroutine dqrm_least_squares2d(qrm_mat, b, x)
This routine computes the least-squares solution of a problem.
subroutine qrm_err_act_restore(err_act)
Restores the value of the qrm_err_act variable.
subroutine dqrm_apply2d(qrm_mat, transp, b)
This function applies Q or Q^T to a set of vectors.
This module contains the definition of the basic sparse matrix type and of the associated methods...
subroutine qrm_err_check()
This subroutine checks the errors stack. If something is found all the entries in the stack are poppe...
subroutine dqrm_analyse(qrm_mat, transp)
This is the driver routine for the analysis phase.
This module contains all the generic interfaces for the typed routines in the factorization phase...
This type defines the data structure used to store a matrix.
subroutine dqrm_least_squares1d(qrm_mat, b, x)
This routine computes the least-squares solution of a problem.
This module contains the generic interfaces for all the analysis routines.
subroutine dqrm_check_spmat(qrm_spmat, op)
Check the compatibility and correctness of icntl and rcntl parameters.
This module implements the memory handling routines. Pretty mucch allocations and deallocations...
subroutine dqrm_solve1d(qrm_mat, transp, b, x)
This function solves for R or R' against a single vector.
subroutine qrm_err_push(code, sub, ied, aed)
This subroutine pushes an error on top of the stack.
subroutine dqrm_factorize(qrm_mat, transp)
This routine is the main factorization driver.
subroutine qrm_err_act_save(err_act)
Saves a copy of the qrm_err_act variable.