MODULE blas_operator_arguments ! Module for defining BLAS operator arguments, cmach values, ! sparse matrix properties, and prec ! and the operator (==) for these types PRIVATE PUBLIC :: OPERATOR(==), & blas_trans_type, blas_no_trans, blas_trans, blas_conj_trans, & blas_uplo_type, blas_upper, blas_lower, & blas_diag_type, blas_non_unit_diag, blas_unit_diag, & blas_side_type, blas_left_side, blas_right_side, & blas_cmach_type, blas_base, blas_t, blas_rnd, blas_ieee, & blas_emin, blas_emax, blas_eps, blas_prec, blas_underflow, & blas_overflow, blas_sfmin, & blas_norm_type, blas_one_norm, blas_real_one_norm, & blas_two_norm, blas_frobenius_norm, blas_inf_norm, & blas_real_inf_norm, blas_max_norm, blas_real_max_norm, & blas_sort_type, blas_decreasing_order, blas_increasing_order, & blas_conj_type, blas_no_conj, blas_conj, & blas_jrot_type, blas_jrot_inner, blas_jrot_outer, & blas_jrot_sorted, & blas_prec_type, blas_prec_single, blas_prec_double, & blas_prec_indigenous, blas_prec_extra, & blas_symmetry_type, blas_general, blas_symmetric, & blas_hermitian, blas_triangular, blas_lower_triangular, & blas_upper_triangular, & blas_field_type, blas_complex, blas_real, blas_double_precision, & blas_single_precision, blas_integer, & blas_size_type, blas_num_rows, blas_num_cols, blas_num_nonzeros, & blas_valid_handle_type, blas_valid_handle, & blas_sparsity_optimization_type, blas_regular, blas_irregular, & blas_block, blas_block_regular, blas_block_irregular, & blas_unassembled, & blas_indices_type, blas_no_repeated_indices, blas_repeated_indices, & blas_base_type, blas_one_base, blas_zero_base, & blas_block_type, blas_col_major, blas_row_major ! .. Derived Type Declarations .. TYPE :: blas_trans_type PRIVATE INTEGER :: dummy END TYPE blas_trans_type TYPE :: blas_uplo_type PRIVATE INTEGER :: dummy END TYPE blas_uplo_type TYPE :: blas_diag_type PRIVATE INTEGER :: dummy END TYPE blas_diag_type TYPE :: blas_side_type PRIVATE INTEGER :: dummy END TYPE blas_side_type TYPE :: blas_cmach_type PRIVATE INTEGER :: dummy END TYPE blas_cmach_type TYPE :: blas_norm_type PRIVATE INTEGER :: dummy END TYPE blas_norm_type TYPE :: blas_sort_type PRIVATE INTEGER :: dummy END TYPE blas_sort_type TYPE :: blas_conj_type PRIVATE INTEGER :: dummy END TYPE blas_conj_type TYPE :: blas_jrot_type PRIVATE INTEGER :: dummy END TYPE blas_jrot_type TYPE :: blas_prec_type PRIVATE INTEGER :: dummy END TYPE blas_prec_type TYPE :: blas_symmetry_type PRIVATE INTEGER :: dummy END TYPE blas_symmetry_type TYPE :: blas_field_type PRIVATE INTEGER :: dummy END TYPE blas_field_type TYPE :: blas_size_type PRIVATE INTEGER :: dummy END TYPE blas_size_type TYPE :: blas_valid_handle_type PRIVATE INTEGER :: dummy END TYPE blas_valid_handle_type TYPE :: blas_sparsity_optimization_type PRIVATE INTEGER :: dummy END TYPE blas_sparsity_optimization_type TYPE :: blas_indices_type PRIVATE INTEGER :: dummy END TYPE blas_indices_type TYPE :: blas_base_type PRIVATE INTEGER :: dummy END TYPE blas_base_type TYPE :: blas_block_type PRIVATE INTEGER :: dummy END TYPE blas_block_type ! .. Dependents .. TYPE (blas_trans_type), PARAMETER :: blas_no_trans = blas_trans_type(1) TYPE (blas_trans_type), PARAMETER :: blas_trans = blas_trans_type(2) TYPE (blas_trans_type), PARAMETER :: blas_conj_trans = blas_trans_type(3) TYPE (blas_cmach_type), PARAMETER :: blas_base = blas_cmach_type(1) TYPE (blas_uplo_type), PARAMETER :: blas_upper = blas_uplo_type(1) TYPE (blas_uplo_type), PARAMETER :: blas_lower= blas_uplo_type(2) TYPE (blas_diag_type), PARAMETER :: blas_non_unit_diag = blas_diag_type(1) TYPE (blas_diag_type), PARAMETER :: blas_unit_diag = blas_diag_type(2) TYPE (blas_side_type), PARAMETER :: blas_left_side = blas_side_type(1) TYPE (blas_side_type), PARAMETER :: blas_right_side = blas_side_type(2) TYPE (blas_cmach_type), PARAMETER :: blas_t = blas_cmach_type(2) TYPE (blas_cmach_type), PARAMETER :: blas_rnd = blas_cmach_type(3) TYPE (blas_cmach_type), PARAMETER :: blas_ieee = blas_cmach_type(4) TYPE (blas_cmach_type), PARAMETER :: blas_emin = blas_cmach_type(5) TYPE (blas_cmach_type), PARAMETER :: blas_emax = blas_cmach_type(6) TYPE (blas_cmach_type), PARAMETER :: blas_eps = blas_cmach_type(7) TYPE (blas_cmach_type), PARAMETER :: blas_prec = blas_cmach_type(8) TYPE (blas_cmach_type), PARAMETER :: blas_underflow = blas_cmach_type(9) TYPE (blas_cmach_type), PARAMETER :: blas_overflow = blas_cmach_type(10) TYPE (blas_cmach_type), PARAMETER :: blas_sfmin = blas_cmach_type(11) TYPE (blas_norm_type), PARAMETER :: blas_one_norm = blas_norm_type(1) TYPE (blas_norm_type), PARAMETER :: blas_real_one_norm = blas_norm_type(2) TYPE (blas_norm_type), PARAMETER :: blas_two_norm = blas_norm_type(3) TYPE (blas_norm_type), PARAMETER :: & blas_frobenius_norm = blas_norm_type(4) TYPE (blas_norm_type), PARAMETER :: blas_inf_norm = blas_norm_type(5) TYPE (blas_norm_type), PARAMETER :: blas_real_inf_norm = blas_norm_type(6) TYPE (blas_norm_type), PARAMETER :: blas_max_norm = blas_norm_type(7) TYPE (blas_norm_type), PARAMETER :: blas_real_max_norm = blas_norm_type(8) TYPE (blas_sort_type), PARAMETER :: & blas_decreasing_order = blas_sort_type(1) TYPE (blas_sort_type), PARAMETER :: & blas_increasing_order = blas_sort_type(2) TYPE (blas_conj_type), PARAMETER :: blas_conj = blas_conj_type(1) TYPE (blas_conj_type), PARAMETER :: blas_no_conj = blas_conj_type(2) TYPE (blas_jrot_type), PARAMETER :: blas_jrot_inner = blas_jrot_type(1) TYPE (blas_jrot_type), PARAMETER :: blas_jrot_outer = blas_jrot_type(2) TYPE (blas_jrot_type), PARAMETER :: blas_jrot_sorted = blas_jrot_type(3) TYPE (blas_prec_type), PARAMETER :: blas_prec_single = blas_prec_type(1) TYPE (blas_prec_type), PARAMETER :: blas_prec_double = blas_prec_type(2) TYPE (blas_prec_type), PARAMETER :: blas_prec_indigenous = blas_prec_type(3) TYPE (blas_prec_type), PARAMETER :: blas_prec_extra = blas_prec_type(4) TYPE (blas_symmetry_type), PARAMETER :: & blas_general = blas_symmetry_type(1) TYPE (blas_symmetry_type), PARAMETER :: & blas_symmetric = blas_symmetry_type(2) TYPE (blas_symmetry_type), PARAMETER :: & blas_hermitian = blas_symmetry_type(3) TYPE (blas_symmetry_type), PARAMETER :: & blas_triangular = blas_symmetry_type(4) TYPE (blas_symmetry_type), PARAMETER :: & blas_lower_triangular = blas_symmetry_type(5) TYPE (blas_symmetry_type), PARAMETER :: & blas_upper_triangular = blas_symmetry_type(6) TYPE (blas_field_type), PARAMETER :: blas_integer = blas_field_type(0) TYPE (blas_field_type), PARAMETER :: blas_complex = blas_field_type(1) TYPE (blas_field_type), PARAMETER :: blas_real = blas_field_type(2) TYPE (blas_field_type), PARAMETER :: & blas_double_precision = blas_field_type(3) TYPE (blas_field_type), PARAMETER :: & blas_single_precision = blas_field_type(4) TYPE (blas_size_type), PARAMETER :: blas_num_rows = blas_size_type(1) TYPE (blas_size_type), PARAMETER :: blas_num_cols = blas_size_type(2) TYPE (blas_size_type), PARAMETER :: blas_num_nonzeros = blas_size_type(3) TYPE (blas_valid_handle_type), PARAMETER :: & blas_valid_handle = blas_valid_handle_type(1) TYPE (blas_sparsity_optimization_type), PARAMETER :: & blas_regular = blas_sparsity_optimization_type(1) TYPE (blas_sparsity_optimization_type), PARAMETER :: & blas_irregular = blas_sparsity_optimization_type(2) TYPE (blas_sparsity_optimization_type), PARAMETER :: & blas_block = blas_sparsity_optimization_type(3) TYPE (blas_sparsity_optimization_type), PARAMETER :: & blas_unassembled = blas_sparsity_optimization_type(4) TYPE (blas_sparsity_optimization_type), PARAMETER :: & blas_block_regular = blas_sparsity_optimization_type(5) TYPE (blas_sparsity_optimization_type), PARAMETER :: & blas_block_irregular = blas_sparsity_optimization_type(6) TYPE (blas_indices_type), PARAMETER :: & blas_no_repeated_indices = blas_indices_type(0) TYPE (blas_indices_type), PARAMETER :: & blas_repeated_indices = blas_indices_type(2) TYPE (blas_base_type), PARAMETER :: blas_one_base = blas_base_type(1) TYPE (blas_base_type), PARAMETER :: blas_zero_base = blas_base_type(2) TYPE (blas_block_type), PARAMETER :: blas_col_major = blas_block_type(1) TYPE (blas_block_type), PARAMETER :: blas_row_major = blas_block_type(2) INTERFACE OPERATOR (==) MODULE PROCEDURE blas_trans_eq MODULE PROCEDURE blas_uplo_eq MODULE PROCEDURE blas_diag_eq MODULE PROCEDURE blas_side_eq MODULE PROCEDURE blas_cmach_eq MODULE PROCEDURE blas_norm_eq MODULE PROCEDURE blas_sort_eq MODULE PROCEDURE blas_conj_eq MODULE PROCEDURE blas_jrot_eq MODULE PROCEDURE blas_prec_eq MODULE PROCEDURE blas_symmetry_eq MODULE PROCEDURE blas_field_eq MODULE PROCEDURE blas_size_eq MODULE PROCEDURE blas_valid_handle_eq MODULE PROCEDURE blas_sparsity_optimization_eq MODULE PROCEDURE blas_indices_eq MODULE PROCEDURE blas_base_eq MODULE PROCEDURE blas_block_eq END INTERFACE CONTAINS FUNCTION blas_trans_eq(arg1,arg2) TYPE (blas_trans_type), INTENT (IN) :: arg1, arg2 LOGICAL :: blas_trans_eq blas_trans_eq = arg1%dummy == arg2%dummy END FUNCTION blas_trans_eq FUNCTION blas_uplo_eq(arg1,arg2) TYPE (blas_uplo_type), INTENT (IN) :: arg1, arg2 LOGICAL :: blas_uplo_eq blas_uplo_eq = arg1%dummy == arg2%dummy END FUNCTION blas_uplo_eq FUNCTION blas_diag_eq(arg1,arg2) TYPE (blas_diag_type), INTENT (IN) :: arg1, arg2 LOGICAL :: blas_diag_eq blas_diag_eq = arg1%dummy == arg2%dummy END FUNCTION blas_diag_eq FUNCTION blas_side_eq(arg1,arg2) TYPE (blas_side_type), INTENT (IN) :: arg1, arg2 LOGICAL :: blas_side_eq blas_side_eq = arg1%dummy == arg2%dummy END FUNCTION blas_side_eq FUNCTION blas_cmach_eq(arg1,arg2) TYPE (blas_cmach_type), INTENT (IN) :: arg1, arg2 LOGICAL :: blas_cmach_eq blas_cmach_eq = arg1%dummy == arg2%dummy END FUNCTION blas_cmach_eq FUNCTION blas_norm_eq(arg1,arg2) TYPE (blas_norm_type), INTENT (IN) :: arg1, arg2 LOGICAL :: blas_norm_eq blas_norm_eq = arg1%dummy == arg2%dummy END FUNCTION blas_norm_eq FUNCTION blas_sort_eq(arg1,arg2) TYPE (blas_sort_type), INTENT (IN) :: arg1, arg2 LOGICAL :: blas_sort_eq blas_sort_eq = arg1%dummy == arg2%dummy END FUNCTION blas_sort_eq FUNCTION blas_conj_eq(arg1,arg2) TYPE (blas_conj_type), INTENT (IN) :: arg1, arg2 LOGICAL :: blas_conj_eq blas_conj_eq = arg1%dummy == arg2%dummy END FUNCTION blas_conj_eq FUNCTION blas_jrot_eq(arg1,arg2) TYPE (blas_jrot_type), INTENT (IN) :: arg1, arg2 LOGICAL :: blas_jrot_eq blas_jrot_eq = arg1%dummy == arg2%dummy END FUNCTION blas_jrot_eq FUNCTION blas_prec_eq(arg1,arg2) TYPE (blas_prec_type), INTENT (IN) :: arg1, arg2 LOGICAL :: blas_prec_eq blas_prec_eq = arg1%dummy == arg2%dummy END FUNCTION blas_prec_eq FUNCTION blas_symmetry_eq(arg1,arg2) TYPE (blas_symmetry_type), INTENT (IN) :: arg1, arg2 LOGICAL :: blas_symmetry_eq blas_symmetry_eq = arg1%dummy == arg2%dummy END FUNCTION blas_symmetry_eq FUNCTION blas_field_eq(arg1,arg2) TYPE (blas_field_type), INTENT (IN) :: arg1, arg2 LOGICAL :: blas_field_eq blas_field_eq = arg1%dummy == arg2%dummy END FUNCTION blas_field_eq FUNCTION blas_size_eq(arg1,arg2) TYPE (blas_size_type), INTENT (IN) :: arg1, arg2 LOGICAL :: blas_size_eq blas_size_eq = arg1%dummy == arg2%dummy END FUNCTION blas_size_eq FUNCTION blas_valid_handle_eq(arg1,arg2) TYPE (blas_valid_handle_type), INTENT (IN) :: arg1, arg2 LOGICAL :: blas_valid_handle_eq blas_valid_handle_eq = arg1%dummy == arg2%dummy END FUNCTION blas_valid_handle_eq FUNCTION blas_sparsity_optimization_eq(arg1,arg2) TYPE (blas_sparsity_optimization_type), INTENT (IN) :: arg1, arg2 LOGICAL :: blas_sparsity_optimization_eq blas_sparsity_optimization_eq = arg1%dummy == arg2%dummy END FUNCTION blas_sparsity_optimization_eq FUNCTION blas_indices_eq(arg1,arg2) TYPE (blas_indices_type), INTENT (IN) :: arg1, arg2 LOGICAL :: blas_indices_eq blas_indices_eq = arg1%dummy == arg2%dummy END FUNCTION blas_indices_eq FUNCTION blas_base_eq(arg1,arg2) TYPE (blas_base_type), INTENT (IN) :: arg1, arg2 LOGICAL :: blas_base_eq blas_base_eq = arg1%dummy == arg2%dummy END FUNCTION blas_base_eq FUNCTION blas_block_eq(arg1,arg2) TYPE (blas_block_type), INTENT (IN) :: arg1, arg2 LOGICAL :: blas_block_eq blas_block_eq = arg1%dummy == arg2%dummy END FUNCTION blas_block_eq END MODULE blas_operator_arguments