lsmrblas Module

This file contains the following BLAS routines dcopy, ddot, dnrm2, dscal required by subroutines lsmr and acheck.

References

  • Jack Dongarra, Jim Bunch, Cleve Moler, Pete Stewart, LINPACK User's Guide, SIAM, 1979, ISBN13: 978-0-898711-72-1, LC: QA214.L56.
  • Charles Lawson, Richard Hanson, David Kincaid, Fred Krogh, Algorithm 539, Basic Linear Algebra Subprograms for Fortran Usage, ACM Transactions on Mathematical Software, Volume 5, Number 3, September 1979, pages 308-323.

Note

This version has not been linked with an external BLAS library, and uses the BLAS functions in this module.


Uses

  • module~~lsmrblas~~UsesGraph module~lsmrblas lsmrblas module~lsmrdatamodule lsmrDataModule module~lsmrblas->module~lsmrdatamodule iso_fortran_env iso_fortran_env module~lsmrdatamodule->iso_fortran_env

Functions

public function ddot(n, dx, incx, dy, incy)

Dot product of two vectors.

Arguments

Type IntentOptional Attributes Name
integer(kind=ip), intent(in) :: n

the number of entries in the vectors.

real(kind=wp), intent(in) :: dx(*)

the first vector

integer(kind=ip), intent(in) :: incx

the increment between successive entries in DX.

real(kind=wp), intent(in) :: dy(*)

the second vector

integer(kind=ip), intent(in) :: incy

the increment between successive entries in DY.

Return Value real(kind=wp)

public function dnrm2(n, x, incx)

The euclidean norm of a vector sqrt ( X' * X ).

Arguments

Type IntentOptional Attributes Name
integer(kind=ip), intent(in) :: n
real(kind=wp), intent(in) :: x(*)
integer(kind=ip), intent(in) :: incx

Return Value real(kind=wp)


Subroutines

public subroutine dcopy(n, dx, incx, dy, incy)

Copies a vector X to a vector Y.

Arguments

Type IntentOptional Attributes Name
integer(kind=ip) :: n
real(kind=wp) :: dx(*)
integer(kind=ip) :: incx
real(kind=wp) :: dy(*)
integer(kind=ip) :: incy

public subroutine dscal(n, sa, x, incx)

Scales a vector by a constant.

Arguments

Type IntentOptional Attributes Name
integer(kind=ip), intent(in) :: n

the number of entries in the vector.

real(kind=wp), intent(in) :: sa

the multiplier.

real(kind=wp), intent(inout) :: x(*)

the vector to be scaled.

integer(kind=ip), intent(in) :: incx

the increment between successive entries of X.