This module provides the base class absract_vector
from which all Krylov vectors
needs to be derived. To use LightKrylov
, you need to extend one of the
followings:
abstract_vector_rsp
: Real-valued vector with single precision arithmetic.abstract_vector_rdp
: Real-valued vector with double precision arithmetic.abstract_vector_csp
: Complex-valued vector with single precision arithmetic.abstract_vector_cdp
: Complex-valued vector with double precision arithmetic.To extend either of these abstract types, you need to provide an associated implementation for the following type-bound procedures:
zero(self)
: A subroutine zeroing-out the vector.rand(self, ifnorm)
: A subroutine creating a random vector, possibily normalized to have unit-norm (ifnorm = .true.
).scal(self, alpha)
: A subroutine computing in-place the scalar multiplication .dot(self, vec)
: A function computing the inner product .get_size(self)
: A function returning the dimension of the vector .Once these type-bound procedures have been implemented by the user, they will automatically be used to define:
add(self, vec) = axpby(1, vec, 1, self)
sub(self, vec) = axpby(-1, vec, 1, self)
norm(self) = sqrt(self%dot(self))
This module also provides the following utility subroutines:
innerprod(X, Y)
: Function computing the product between a Krylov basis X
and a Krylov vector (resp. basis) Y
.linear_combination(Y, X, V)
: Subroutine computing the linear combination .axpby_basis(alpha, X, beta, Y)
: In-place computation of where X
and Y
are arrays of abstract_vector
.zero_basis(X)
: Zero-out a collection of abstract_vectors
.copy_basis(out, from)
: Copy a collection of abstract_vectors
.rand_basis(X, ifnorm)
: Create a collection of random abstract_vectors
. If ifnorm = .true.
, the vectors are normalized to have unit-norm.Compute the Gram matrix .
This interface provides methods for computing the Gram matrix associated to a basis of abstract_vector
.
The example below assumes that you have already extended the abstract_vector_rdp
class to define your own my_real_vector
type.
type(my_real_vector), dimension(10) :: X
real(dp), dimension(:, :), allocatable :: G
! ... Part of your code where you initialize everything ...
G = Gram(X)
! ... Rest of your code ...
Computes the inner product/Gram matrix associated with the basis .
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_rsp), | intent(in) | :: | X(:) |
Computes the inner product/Gram matrix associated with the basis .
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_rdp), | intent(in) | :: | X(:) |
Computes the inner product/Gram matrix associated with the basis .
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_csp), | intent(in) | :: | X(:) |
Computes the inner product/Gram matrix associated with the basis .
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_cdp), | intent(in) | :: | X(:) |
In-place addition of two arrays of extended abstract_vector
.
This interface provides methods to add in-place two arrays of
extended abstract_vector
, i.e.
No out-of-place alternative is currently available in LightKrylov
.
If you do need an out-of-place version, you can combine axpby_basis
with copy
.
type(my_real_vector), dimension(10) :: X
type(my_real_vector), dimension(10) :: Y
real(dp), dimension(10) :: alpha, beta
! ... Whatever your code is doing ...
call axpby_basis(alpha, X, beta, Y)
! ... Rest of your code ...
Compute in-place where
X
and Y
are arrays of abstract_vector
and alpha
and beta
are real(sp)
numbers.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=sp), | intent(in) | :: | alpha |
Scalar multipliers. |
||
class(abstract_vector_rsp), | intent(in) | :: | x |
Input/Ouput array of |
||
real(kind=sp), | intent(in) | :: | beta |
Scalar multipliers. |
||
class(abstract_vector_rsp), | intent(inout) | :: | y |
Array of |
Compute in-place where
X
and Y
are arrays of abstract_vector
and alpha
and beta
are real(dp)
numbers.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=dp), | intent(in) | :: | alpha |
Scalar multipliers. |
||
class(abstract_vector_rdp), | intent(in) | :: | x |
Input/Ouput array of |
||
real(kind=dp), | intent(in) | :: | beta |
Scalar multipliers. |
||
class(abstract_vector_rdp), | intent(inout) | :: | y |
Array of |
Compute in-place where
X
and Y
are arrays of abstract_vector
and alpha
and beta
are complex(sp)
numbers.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=sp), | intent(in) | :: | alpha |
Scalar multipliers. |
||
class(abstract_vector_csp), | intent(in) | :: | x |
Input/Ouput array of |
||
complex(kind=sp), | intent(in) | :: | beta |
Scalar multipliers. |
||
class(abstract_vector_csp), | intent(inout) | :: | y |
Array of |
Compute in-place where
X
and Y
are arrays of abstract_vector
and alpha
and beta
are complex(dp)
numbers.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=dp), | intent(in) | :: | alpha |
Scalar multipliers. |
||
class(abstract_vector_cdp), | intent(in) | :: | x |
Input/Ouput array of |
||
complex(kind=dp), | intent(in) | :: | beta |
Scalar multipliers. |
||
class(abstract_vector_cdp), | intent(inout) | :: | y |
Array of |
This interface provides methods to copy an array X
of abstract_vector
into
another array Y
. Note that Y
needs to be pre-allocated.
type(my_real_vector), dimension(10) :: X
type(my_real_vector), dimension(10) :: Y
! ... Your code ...
call copy(Y, X)
! ... Your code ...
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_rsp), | intent(out) | :: | out | |||
class(abstract_vector_rsp), | intent(in) | :: | from |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_rdp), | intent(out) | :: | out | |||
class(abstract_vector_rdp), | intent(in) | :: | from |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_csp), | intent(out) | :: | out | |||
class(abstract_vector_csp), | intent(in) | :: | from |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_cdp), | intent(out) | :: | out | |||
class(abstract_vector_cdp), | intent(in) | :: | from |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=sp), | intent(in) | :: | x(:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=dp), | intent(in) | :: | x(:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=sp), | intent(in) | :: | x(:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=dp), | intent(in) | :: | x(:) |
Compute the inner product vector or matrix .
This interface provides methods for computing the inner products between a basis
of real
or complex
vectors and a single vector
or another basis . Depending on the case, it
returns a one-dimensional array or a two-dimensional array
with the same type as .
The example below assumes that you have already extended the abstract_vector_rdp
class to define your own my_real_vector
type.
type(my_real_vector), dimension(10) :: X
type(my_real_vector) :: y
real(dp), dimension(:), allocatable :: v
! ... Part of your code where you initialize everything ...
v = innerprod(X, y)
! ... Rest of your code ...
Similarly, for computing the matrix of inner products between two bases
type(my_real_vector), dimension(10) :: X
type(my_real_vector), dimension(10) :: Y
real(dp), dimension(:, :), allocatable :: M
! ... Part of your code where you initialize everything ...
M = innerprod(X, Y)
! ... Rest of your code ...
Computes the inner product vector between
a basis X
of abstract_vector
and v
, a single abstract_vector
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_rsp), | intent(in) | :: | X(:) |
Bases of |
||
class(abstract_vector_rsp), | intent(in) | :: | y |
Bases of |
Resulting inner-product vector.
Computes the inner product matrix between
two bases of abstract_vector
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_rsp), | intent(in) | :: | X(:) |
Bases of |
||
class(abstract_vector_rsp), | intent(in) | :: | Y(:) |
Bases of |
Resulting inner-product matrix.
Computes the inner product vector between
a basis X
of abstract_vector
and v
, a single abstract_vector
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_rdp), | intent(in) | :: | X(:) |
Bases of |
||
class(abstract_vector_rdp), | intent(in) | :: | y |
Bases of |
Resulting inner-product vector.
Computes the inner product matrix between
two bases of abstract_vector
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_rdp), | intent(in) | :: | X(:) |
Bases of |
||
class(abstract_vector_rdp), | intent(in) | :: | Y(:) |
Bases of |
Resulting inner-product matrix.
Computes the inner product vector between
a basis X
of abstract_vector
and v
, a single abstract_vector
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_csp), | intent(in) | :: | X(:) |
Bases of |
||
class(abstract_vector_csp), | intent(in) | :: | y |
Bases of |
Resulting inner-product vector.
Computes the inner product matrix between
two bases of abstract_vector
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_csp), | intent(in) | :: | X(:) |
Bases of |
||
class(abstract_vector_csp), | intent(in) | :: | Y(:) |
Bases of |
Resulting inner-product matrix.
Computes the inner product vector between
a basis X
of abstract_vector
and v
, a single abstract_vector
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_cdp), | intent(in) | :: | X(:) |
Bases of |
||
class(abstract_vector_cdp), | intent(in) | :: | y |
Bases of |
Resulting inner-product vector.
Computes the inner product matrix between
two bases of abstract_vector
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_cdp), | intent(in) | :: | X(:) |
Bases of |
||
class(abstract_vector_cdp), | intent(in) | :: | Y(:) |
Bases of |
Resulting inner-product matrix.
Given a set of extended abstract_vectors
and coefficients, return the corresponding
linear combinations.
This interface provides methods for computing linear combinations of a set of
abstract_vectors
. Depending on its input, it either computes
i.e. a single vector, or
i.e. a set of vectors of the same type as .
type(my_real_vector), dimension(10) :: X
real(dp), dimension(m, n) :: B
type(my_real_vector) :: Y
! ... Whatever your code is doing ...
call linear_combination(Y, X, B)
! ... Rest of your code ...
Given X
and v
, this function return where
y
is an abstract_vector
, X
an array of abstract_vector
and v
a
Fortran array containing the coefficients of the linear combination.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_rsp), | intent(out), | allocatable | :: | y |
Ouput vector. |
|
class(abstract_vector_rsp), | intent(in) | :: | X(:) |
Krylov basis. |
||
real(kind=sp), | intent(in) | :: | v(:) |
Coordinates of |
Given X
and B
, this function computes where
X
and Y
are arrays of abstract_vector
, and B
is a 2D Fortran array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_rsp), | intent(out), | allocatable | :: | Y(:) |
Output matrix. |
|
class(abstract_vector_rsp), | intent(in) | :: | X(:) |
Krylov basis. |
||
real(kind=sp), | intent(in) | :: | B(:,:) |
Coefficients of the linear combinations. |
Given X
and v
, this function return where
y
is an abstract_vector
, X
an array of abstract_vector
and v
a
Fortran array containing the coefficients of the linear combination.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_rdp), | intent(out), | allocatable | :: | y |
Ouput vector. |
|
class(abstract_vector_rdp), | intent(in) | :: | X(:) |
Krylov basis. |
||
real(kind=dp), | intent(in) | :: | v(:) |
Coordinates of |
Given X
and B
, this function computes where
X
and Y
are arrays of abstract_vector
, and B
is a 2D Fortran array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_rdp), | intent(out), | allocatable | :: | Y(:) |
Output matrix. |
|
class(abstract_vector_rdp), | intent(in) | :: | X(:) |
Krylov basis. |
||
real(kind=dp), | intent(in) | :: | B(:,:) |
Coefficients of the linear combinations. |
Given X
and v
, this function return where
y
is an abstract_vector
, X
an array of abstract_vector
and v
a
Fortran array containing the coefficients of the linear combination.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_csp), | intent(out), | allocatable | :: | y |
Ouput vector. |
|
class(abstract_vector_csp), | intent(in) | :: | X(:) |
Krylov basis. |
||
complex(kind=sp), | intent(in) | :: | v(:) |
Coordinates of |
Given X
and B
, this function computes where
X
and Y
are arrays of abstract_vector
, and B
is a 2D Fortran array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_csp), | intent(out), | allocatable | :: | Y(:) |
Output matrix. |
|
class(abstract_vector_csp), | intent(in) | :: | X(:) |
Krylov basis. |
||
complex(kind=sp), | intent(in) | :: | B(:,:) |
Coefficients of the linear combinations. |
Given X
and v
, this function return where
y
is an abstract_vector
, X
an array of abstract_vector
and v
a
Fortran array containing the coefficients of the linear combination.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_cdp), | intent(out), | allocatable | :: | y |
Ouput vector. |
|
class(abstract_vector_cdp), | intent(in) | :: | X(:) |
Krylov basis. |
||
complex(kind=dp), | intent(in) | :: | v(:) |
Coordinates of |
Given X
and B
, this function computes where
X
and Y
are arrays of abstract_vector
, and B
is a 2D Fortran array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_cdp), | intent(out), | allocatable | :: | Y(:) |
Output matrix. |
|
class(abstract_vector_cdp), | intent(in) | :: | X(:) |
Krylov basis. |
||
complex(kind=dp), | intent(in) | :: | B(:,:) |
Coefficients of the linear combinations. |
This interface provides methods to create an array X
of random abstract_vector
.
It is a simple wrapper around X(i)%rand(ifnorm)
.
type(my_real_vector), dimension(10) :: X
logical :: ifnorm = .true.
! ... Your code ...
call rand_basis(X, ifnorm)
! ... Your code ...
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_rsp), | intent(inout) | :: | X | |||
logical, | intent(in), | optional | :: | ifnorm |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_rdp), | intent(inout) | :: | X | |||
logical, | intent(in), | optional | :: | ifnorm |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_csp), | intent(inout) | :: | X | |||
logical, | intent(in), | optional | :: | ifnorm |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_cdp), | intent(inout) | :: | X | |||
logical, | intent(in), | optional | :: | ifnorm |
This interface provides methods to zero-out a collection of abstract_vector
X
.
It is a simple wrapper around X(i)%zero()
.
type(my_real_vector), dimension(10) :: X
! ... Your code ...
call zero_basis(X)
! ... Your code ...
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_rsp), | intent(inout) | :: | X |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_rdp), | intent(inout) | :: | X |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_csp), | intent(inout) | :: | X |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_vector_cdp), | intent(inout) | :: | X |
Base abstract type from which all other types of vectors used in LightKrylov
are being derived from.
Abstract type to define complex(dp)-valued vectors. Derived-types defined by the user should be extending one such class.
procedure, public, pass(self) :: add => add_cdp | Adds two |
procedure(abstract_axpby_cdp), public, deferred, pass(self) :: axpby | In-place computation of . |
procedure, public, pass(self) :: chsgn => chsgn_cdp | Change the sign of a vector, i.e. . |
procedure(abstract_dot_cdp), public, deferred, pass(self) :: dot | Computes the dot product between two |
procedure(abstract_get_size_cdp), public, deferred, pass(self) :: get_size | Return size of specific abstract vector |
procedure, public, pass(self) :: norm => norm_cdp | Computes the norm of the |
procedure(abstract_rand_cdp), public, deferred, pass(self) :: rand | Creates a random |
procedure(abstract_scal_cdp), public, deferred, pass(self) :: scal | Compute the scalar-vector product. |
procedure, public, pass(self) :: sub => sub_cdp | Subtracts two |
procedure(abstract_zero_cdp), public, deferred, pass(self) :: zero | Sets an |
Abstract type to define complex(sp)-valued vectors. Derived-types defined by the user should be extending one such class.
procedure, public, pass(self) :: add => add_csp | Adds two |
procedure(abstract_axpby_csp), public, deferred, pass(self) :: axpby | In-place computation of . |
procedure, public, pass(self) :: chsgn => chsgn_csp | Change the sign of a vector, i.e. . |
procedure(abstract_dot_csp), public, deferred, pass(self) :: dot | Computes the dot product between two |
procedure(abstract_get_size_csp), public, deferred, pass(self) :: get_size | Return size of specific abstract vector |
procedure, public, pass(self) :: norm => norm_csp | Computes the norm of the |
procedure(abstract_rand_csp), public, deferred, pass(self) :: rand | Creates a random |
procedure(abstract_scal_csp), public, deferred, pass(self) :: scal | Compute the scalar-vector product. |
procedure, public, pass(self) :: sub => sub_csp | Subtracts two |
procedure(abstract_zero_csp), public, deferred, pass(self) :: zero | Sets an |
Abstract type to define real(dp)-valued vectors. Derived-types defined by the user should be extending one such class.
procedure, public, pass(self) :: add => add_rdp | Adds two |
procedure(abstract_axpby_rdp), public, deferred, pass(self) :: axpby | In-place computation of . |
procedure, public, pass(self) :: chsgn => chsgn_rdp | Change the sign of a vector, i.e. . |
procedure(abstract_dot_rdp), public, deferred, pass(self) :: dot | Computes the dot product between two |
procedure(abstract_get_size_rdp), public, deferred, pass(self) :: get_size | Return size of specific abstract vector |
procedure, public, pass(self) :: norm => norm_rdp | Computes the norm of the |
procedure(abstract_rand_rdp), public, deferred, pass(self) :: rand | Creates a random |
procedure(abstract_scal_rdp), public, deferred, pass(self) :: scal | Compute the scalar-vector product. |
procedure, public, pass(self) :: sub => sub_rdp | Subtracts two |
procedure(abstract_zero_rdp), public, deferred, pass(self) :: zero | Sets an |
Abstract type to define real(sp)-valued vectors. Derived-types defined by the user should be extending one such class.
procedure, public, pass(self) :: add => add_rsp | Adds two |
procedure(abstract_axpby_rsp), public, deferred, pass(self) :: axpby | In-place computation of . |
procedure, public, pass(self) :: chsgn => chsgn_rsp | Change the sign of a vector, i.e. . |
procedure(abstract_dot_rsp), public, deferred, pass(self) :: dot | Computes the dot product between two |
procedure(abstract_get_size_rsp), public, deferred, pass(self) :: get_size | Return size of specific abstract vector |
procedure, public, pass(self) :: norm => norm_rsp | Computes the norm of the |
procedure(abstract_rand_rsp), public, deferred, pass(self) :: rand | Creates a random |
procedure(abstract_scal_rsp), public, deferred, pass(self) :: scal | Compute the scalar-vector product. |
procedure, public, pass(self) :: sub => sub_rsp | Subtracts two |
procedure(abstract_zero_rsp), public, deferred, pass(self) :: zero | Sets an |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
complex(kind=dp), | public, | allocatable | :: | data(:) | |||
integer, | public | :: | n |
procedure, public, pass(self) :: add => add_cdp | Adds two |
procedure, public, pass(self) :: axpby => dense_axpby_cdp | In-place computation of . |
procedure, public, pass(self) :: chsgn => chsgn_cdp | Change the sign of a vector, i.e. . |
procedure, public, pass(self) :: dot => dense_dot_cdp | Computes the dot product between two |
procedure, public, pass(self) :: get_size => dense_get_size_cdp | Return size of specific abstract vector |
procedure, public, pass(self) :: norm => norm_cdp | Computes the norm of the |
procedure, public, pass(self) :: rand => dense_rand_cdp | Creates a random |
procedure, public, pass(self) :: scal => dense_scal_cdp | Compute the scalar-vector product. |
procedure, public, pass(self) :: sub => sub_cdp | Subtracts two |
procedure, public, pass(self) :: zero => dense_zero_cdp | Sets an |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
complex(kind=sp), | public, | allocatable | :: | data(:) | |||
integer, | public | :: | n |
procedure, public, pass(self) :: add => add_csp | Adds two |
procedure, public, pass(self) :: axpby => dense_axpby_csp | In-place computation of . |
procedure, public, pass(self) :: chsgn => chsgn_csp | Change the sign of a vector, i.e. . |
procedure, public, pass(self) :: dot => dense_dot_csp | Computes the dot product between two |
procedure, public, pass(self) :: get_size => dense_get_size_csp | Return size of specific abstract vector |
procedure, public, pass(self) :: norm => norm_csp | Computes the norm of the |
procedure, public, pass(self) :: rand => dense_rand_csp | Creates a random |
procedure, public, pass(self) :: scal => dense_scal_csp | Compute the scalar-vector product. |
procedure, public, pass(self) :: sub => sub_csp | Subtracts two |
procedure, public, pass(self) :: zero => dense_zero_csp | Sets an |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=dp), | public, | allocatable | :: | data(:) | |||
integer, | public | :: | n |
procedure, public, pass(self) :: add => add_rdp | Adds two |
procedure, public, pass(self) :: axpby => dense_axpby_rdp | In-place computation of . |
procedure, public, pass(self) :: chsgn => chsgn_rdp | Change the sign of a vector, i.e. . |
procedure, public, pass(self) :: dot => dense_dot_rdp | Computes the dot product between two |
procedure, public, pass(self) :: get_size => dense_get_size_rdp | Return size of specific abstract vector |
procedure, public, pass(self) :: norm => norm_rdp | Computes the norm of the |
procedure, public, pass(self) :: rand => dense_rand_rdp | Creates a random |
procedure, public, pass(self) :: scal => dense_scal_rdp | Compute the scalar-vector product. |
procedure, public, pass(self) :: sub => sub_rdp | Subtracts two |
procedure, public, pass(self) :: zero => dense_zero_rdp | Sets an |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=sp), | public, | allocatable | :: | data(:) | |||
integer, | public | :: | n |
procedure, public, pass(self) :: add => add_rsp | Adds two |
procedure, public, pass(self) :: axpby => dense_axpby_rsp | In-place computation of . |
procedure, public, pass(self) :: chsgn => chsgn_rsp | Change the sign of a vector, i.e. . |
procedure, public, pass(self) :: dot => dense_dot_rsp | Computes the dot product between two |
procedure, public, pass(self) :: get_size => dense_get_size_rsp | Return size of specific abstract vector |
procedure, public, pass(self) :: norm => norm_rsp | Computes the norm of the |
procedure, public, pass(self) :: rand => dense_rand_rsp | Creates a random |
procedure, public, pass(self) :: scal => dense_scal_rsp | Compute the scalar-vector product. |
procedure, public, pass(self) :: sub => sub_rsp | Subtracts two |
procedure, public, pass(self) :: zero => dense_zero_rsp | Sets an |