stdlib_sparse_constants.fypp Source File


Source Code

#:include "common.fypp"
#:set R_KINDS_TYPES = list(zip(REAL_KINDS, REAL_TYPES, REAL_SUFFIX))
#:set C_KINDS_TYPES = list(zip(CMPLX_KINDS, CMPLX_TYPES, CMPLX_SUFFIX))
module stdlib_sparse_constants
    use stdlib_kinds, only: int8, int16, int32, int64, sp, dp, xdp, qp

    implicit none
    public

    enum, bind(C)
        enumerator :: sparse_full  !! Full Sparse matrix (no symmetry considerations)
        enumerator :: sparse_lower !! Symmetric Sparse matrix with triangular inferior storage
        enumerator :: sparse_upper !! Symmetric Sparse matrix with triangular supperior storage
    end enum

    character(1), parameter :: sparse_op_none = 'N' !! no transpose
    character(1), parameter :: sparse_op_transpose = 'T' !! transpose
    character(1), parameter :: sparse_op_hermitian = 'H' !! conjugate or hermitian transpose
    
    ! Integer size support for ILP64 builds should be done here
    integer, parameter :: ilp = int32

    #:for k1, t1, s1 in (R_KINDS_TYPES)
    ${t1}$, parameter :: zero_${s1}$ = 0._${k1}$
    ${t1}$, parameter :: one_${s1}$ = 1._${k1}$
    #:endfor
    #:for k1, t1, s1 in (C_KINDS_TYPES)
    ${t1}$, parameter :: zero_${s1}$ = (0._${k1}$,0._${k1}$)
    ${t1}$, parameter :: one_${s1}$ = (1._${k1}$,1._${k1}$)
    #:endfor

end module stdlib_sparse_constants