stdlib_linalg_state 模块

为基于 BLAS/LAPACK 的线性代数过程提供状态/错误处理派生类型。所有过程都是纯的。 (规范) 版本:实验性

用于线性代数例程错误处理的固定存储状态变量

版本:实验性

错误状态处理:如果用户在输出时请求了错误状态变量,只需将其返回给用户。否则,在发生错误时停止程序。

版本:实验性

用于比较错误状态与整型标志的运算符的接口



变量

类型 可见性 属性 名称 初始
integer(kind=ilp), public, parameter :: LINALG_ERROR = -2_ilp
integer(kind=ilp), public, parameter :: LINALG_INTERNAL_ERROR = -3_ilp
integer(kind=ilp), public, parameter :: LINALG_SUCCESS = 0_ilp

状态返回类型

integer(kind=ilp), public, parameter :: LINALG_VALUE_ERROR = -1_ilp

接口

public interface linalg_state_type

  • private pure function new_state(where_at, flag, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)

    错误创建消息,带位置位置

    创建没有消息的状态

    添加位置

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: where_at

    位置

    integer, intent(in) :: flag

    输入错误标志

    class(*), intent(in), optional, dimension(..) :: a1

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a2

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a3

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a4

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a5

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a6

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a7

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a8

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a9

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a10

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a11

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a12

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a13

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a14

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a15

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a16

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a17

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a18

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a19

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a20

    可选的秩无关参数

    返回值 type(linalg_state_type)

  • private pure function new_state_nowhere(flag, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) result(new_state)

    错误创建消息,来自 N 个输入变量(数字或字符串)

    设置错误标志

    设置链

    参数

    类型 意图可选 属性 名称
    integer, intent(in) :: flag

    输入错误标志

    class(*), intent(in), optional, dimension(..) :: a1

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a2

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a3

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a4

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a5

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a6

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a7

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a8

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a9

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a10

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a11

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a12

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a13

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a14

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a15

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a16

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a17

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a18

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a19

    可选的秩无关参数

    class(*), intent(in), optional, dimension(..) :: a20

    可选的秩无关参数

    返回值 type(linalg_state_type)

public interface operator(/=)

  • private elemental function state_neq_flag(err, flag)

    将错误状态与整型标志进行比较

    参数

    类型 意图可选 属性 名称
    type(linalg_state_type), intent(in) :: err
    integer, intent(in) :: flag

    返回值 logical(kind=lk)

  • private elemental function flag_neq_state(flag, err)

    将整型标志与错误状态进行比较

    参数

    类型 意图可选 属性 名称
    integer, intent(in) :: flag
    type(linalg_state_type), intent(in) :: err

    返回值 logical(kind=lk)

public interface operator(<)

  • private elemental function state_lt_flag(err, flag)

    将错误状态与整型标志进行比较

    参数

    类型 意图可选 属性 名称
    type(linalg_state_type), intent(in) :: err
    integer, intent(in) :: flag

    返回值 logical(kind=lk)

  • private elemental function flag_lt_state(flag, err)

    将整型标志与错误状态进行比较

    参数

    类型 意图可选 属性 名称
    integer, intent(in) :: flag
    type(linalg_state_type), intent(in) :: err

    返回值 logical(kind=lk)

public interface operator(<=)

  • private elemental function state_le_flag(err, flag)

    将错误状态与整型标志进行比较

    参数

    类型 意图可选 属性 名称
    type(linalg_state_type), intent(in) :: err
    integer, intent(in) :: flag

    返回值 logical(kind=lk)

  • private elemental function flag_le_state(flag, err)

    将整型标志与错误状态进行比较

    参数

    类型 意图可选 属性 名称
    integer, intent(in) :: flag
    type(linalg_state_type), intent(in) :: err

    返回值 logical(kind=lk)

public interface operator(==)

比较运算符

  • private elemental function state_eq_flag(err, flag)

    将错误状态与整型标志进行比较

    参数

    类型 意图可选 属性 名称
    type(linalg_state_type), intent(in) :: err
    integer, intent(in) :: flag

    返回值 logical(kind=lk)

  • private elemental function flag_eq_state(flag, err)

    将整型标志与错误状态进行比较

    参数

    类型 意图可选 属性 名称
    integer, intent(in) :: flag
    type(linalg_state_type), intent(in) :: err

    返回值 logical(kind=lk)

public interface operator(>)

  • private elemental function state_gt_flag(err, flag)

    将错误状态与整型标志进行比较

    参数

    类型 意图可选 属性 名称
    type(linalg_state_type), intent(in) :: err
    integer, intent(in) :: flag

    返回值 logical(kind=lk)

  • private elemental function flag_gt_state(flag, err)

    将整型标志与错误状态进行比较

    参数

    类型 意图可选 属性 名称
    integer, intent(in) :: flag
    type(linalg_state_type), intent(in) :: err

    返回值 logical(kind=lk)

public interface operator(>=)

  • private elemental function state_ge_flag(err, flag)

    将错误状态与整型标志进行比较

    参数

    类型 意图可选 属性 名称
    type(linalg_state_type), intent(in) :: err
    integer, intent(in) :: flag

    返回值 logical(kind=lk)

  • private elemental function flag_ge_state(flag, err)

    将整型标志与错误状态进行比较

    参数

    类型 意图可选 属性 名称
    integer, intent(in) :: flag
    type(linalg_state_type), intent(in) :: err

    返回值 logical(kind=lk)


派生类型

type, public ::  linalg_state_type

linalg_state_type 定义了线性代数例程的状态返回类型。状态包含一个状态标志、一个注释和一个过程说明符,可用于标记错误发生的位置

组件

类型 可见性 属性 名称 初始
character(len=MSG_LENGTH), public :: message = repeat(' ', MSG_LENGTH)

与当前状态关联的消息

integer(kind=ilp), public :: state = LINALG_SUCCESS

当前退出状态

character(len=NAME_LENGTH), public :: where_at = repeat(' ', NAME_LENGTH)

状态更改的位置

构造函数

private pure function new_state (where_at, flag, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)

错误创建消息,带位置位置

创建没有消息的状态

添加位置

private pure function new_state_nowhere (flag, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)

错误创建消息,来自 N 个输入变量(数字或字符串)

设置错误标志

设置链

类型绑定过程

procedure, public :: destroy => state_destroy ../../

清理

procedure, public :: error => state_is_error
procedure, public :: ok => state_is_ok ../../

状态属性

procedure, public :: print => state_print ../../

打印错误消息

procedure, public :: print_msg => state_message

子程序

public pure subroutine linalg_error_handling(ierr, ierr_out)

流程控制:在输出标志存在的情况下,返回它;否则,在发生错误时停止

参数

类型 意图可选 属性 名称
type(linalg_state_type), intent(in) :: ierr
type(linalg_state_type), intent(out), optional :: ierr_out