35 #include "qrm_common.h"
59 _qrm_data,
allocatable :: tmp(:,:)
60 _qrm_real,
allocatable :: rnrm(:)
65 character(len=*),
parameter :: name=
'qrm_residual_orth'
70 __qrm_check_ret(name,
'qrm_check_spmat',9999)
76 call
qrm_matmul(qrm_mat,
't', _qrm_one, r, _qrm_zero, tmp)
91 if(err_act .eq. qrm_abort_)
then
120 _qrm_data,
allocatable :: tmp(:)
126 character(len=*),
parameter :: name=
'qrm_residual_orth'
131 __qrm_check_ret(name,
'qrm_check_spmat',9999)
136 call
qrm_matmul(qrm_mat,
't', _qrm_one, r, _qrm_zero, tmp)
142 nrm = nrm/(rnrm*anrm)
150 if(err_act .eq. qrm_abort_)
then
181 _qrm_data :: b(:,:), x(:,:)
184 _qrm_data,
allocatable :: tmp(:,:)
185 _qrm_real,
allocatable :: rnrm(:)
189 character(len=*),
parameter :: name=
'qrm_residual_orth'
194 __qrm_check_ret(name,
'qrm_check_spmat',9999)
197 call
qrm_matmul(qrm_mat,
'n', -_qrm_one, x, _qrm_one, b)
203 call
qrm_matmul(qrm_mat,
't', _qrm_one, b, _qrm_zero, tmp)
216 if(err_act .eq. qrm_abort_)
then
244 _qrm_data :: b(:), x(:)
247 _qrm_data,
allocatable :: tmp(:)
252 character(len=*),
parameter :: name=
'qrm_residual_orth'
257 __qrm_check_ret(name,
'qrm_check_spmat',9999)
260 call
qrm_matmul(qrm_mat,
'n', -_qrm_one, x, _qrm_one, b)
265 call
qrm_matmul(qrm_mat,
't', _qrm_one, b, _qrm_zero, tmp)
278 if(err_act .eq. qrm_abort_)
then
This module contains all the error management routines and data.
Generic interface for the qrm_adealloc_i, qrm_adealloc_2i, qrm_adealloc_s, qrm_adealloc_2s, qrm_adealloc_3s, qrm_adealloc_d, qrm_adealloc_2d, qrm_adealloc_3d, qrm_adealloc_c, qrm_adealloc_2c, qrm_adealloc_3c, qrm_adealloc_z, qrm_adealloc_2z, qrm_adealloc_3z, routines.
subroutine _qrm_residual_orth2d(qrm_mat, r, nrm)
This routine computes the scaled norm of the product A'*r for multiple residuals. ...
subroutine qrm_err_act_restore(err_act)
Restores the value of the qrm_err_act variable.
subroutine _qrm_residual_and_orth1d(qrm_mat, b, x, nrm)
This routine computes the scaled norm of the product A'*r.
subroutine _qrm_residual_and_orth2d(qrm_mat, b, x, nrm)
This routine computes the scaled norm of the product A'*r.
This module contains generic interfaces for a number of auxiliary tools.
subroutine qrm_err_check()
This subroutine checks the errors stack. If something is found all the entries in the stack are poppe...
Generic interface for the ::_qrm_vecnrm2d and ::_qrm_vecnrm1d routines.
Generic interface for the qrm_aalloc_i, qrm_aalloc_2i, qrm_aalloc_s, qrm_aalloc_2s, qrm_aalloc_3s, qrm_aalloc_d, qrm_aalloc_2d, qrm_aalloc_3d, qrm_aalloc_c, qrm_aalloc_2c, qrm_aalloc_3c, qrm_aalloc_z, qrm_aalloc_2z, qrm_aalloc_3z, routines.
This type defines the data structure used to store a matrix.
subroutine _qrm_check_spmat(qrm_spmat, op)
Check the compatibility and correctness of icntl and rcntl parameters.
This module contains the definition of the basic sparse matrix type and of the associated methods...
This module implements the memory handling routines. Pretty mucch allocations and deallocations...
subroutine _qrm_residual_orth1d(qrm_mat, r, nrm)
This routine computes the scaled norm of the product A'*r.
Generic interface for the ::_qrm_matmul2d and ::_qrm_matmul1d routines.
subroutine qrm_err_act_save(err_act)
Saves a copy of the qrm_err_act variable.