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.Warning
The resulting vectors do not form an orthonormal basis. For this purpose use the utility function initialize_random_orthonormal_basis.
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(:) |
Basis and single instance of |
||
| class(abstract_vector_rsp), | intent(in) | :: | v |
Basis and single instance 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(:) |
Basis and single instance of |
||
| class(abstract_vector_rdp), | intent(in) | :: | v |
Basis and single instance 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(:) |
Basis and single instance of |
||
| class(abstract_vector_csp), | intent(in) | :: | v |
Basis and single instance 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(:) |
Basis and single instance of |
||
| class(abstract_vector_cdp), | intent(in) | :: | v |
Basis and single instance 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 |
Deals with optional argument. Run all tests to verify axioms. Generate random vectors. Check distributivity. Generate random vectors. Check commutativity. Generate random vector. Check zero element. Generate random vector. Check identity. Generate random vectors. Check associativity. Generate random vectors. Check distributivity. Generate random vector. Check distributivity.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_rsp), | intent(in) | :: | x |
Derived-type whose implementation needs to be tested. |
||
| integer, | intent(in), | optional | :: | ntrials |
Number of random samples generated for the tests. |
|
| real(kind=sp), | intent(in), | optional | :: | tolerance |
Deals with optional argument. Run all tests to verify axioms. Generate random vectors. Check distributivity. Generate random vectors. Check commutativity. Generate random vector. Check zero element. Generate random vector. Check identity. Generate random vectors. Check associativity. Generate random vectors. Check distributivity. Generate random vector. Check distributivity.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_rdp), | intent(in) | :: | x |
Derived-type whose implementation needs to be tested. |
||
| integer, | intent(in), | optional | :: | ntrials |
Number of random samples generated for the tests. |
|
| real(kind=dp), | intent(in), | optional | :: | tolerance |
Deals with optional argument. Run all tests to verify axioms. Generate random vectors. Check distributivity. Generate random vectors. Check commutativity. Generate random vector. Check zero element. Generate random vector. Check identity. Generate random vectors. Check associativity. Generate random vectors. Check distributivity. Generate random vector. Check distributivity.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_csp), | intent(in) | :: | x |
Derived-type whose implementation needs to be tested. |
||
| integer, | intent(in), | optional | :: | ntrials |
Number of random samples generated for the tests. |
|
| real(kind=sp), | intent(in), | optional | :: | tolerance |
Deals with optional argument. Run all tests to verify axioms. Generate random vectors. Check distributivity. Generate random vectors. Check commutativity. Generate random vector. Check zero element. Generate random vector. Check identity. Generate random vectors. Check associativity. Generate random vectors. Check distributivity. Generate random vector. Check distributivity.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_cdp), | intent(in) | :: | x |
Derived-type whose implementation needs to be tested. |
||
| integer, | intent(in), | optional | :: | ntrials |
Number of random samples generated for the tests. |
|
| real(kind=dp), | intent(in), | optional | :: | tolerance |
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 |