16#include "../../base/base_uses.f90"
18#include "libxsmm_version.h"
21#if CPVERSION_CHECK(1, 11, <=, LIBXSMM_CONFIG_VERSION_MAJOR, LIBXSMM_CONFIG_VERSION_MINOR)
22 USE libxsmm,
ONLY: libxsmm_diff
25# define PURE_ARRAY_EQ PURE
31 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'dbt_tas_util'
36 MODULE PROCEDURE swap_i8
37 MODULE PROCEDURE swap_i
41 MODULE PROCEDURE array_eq_i8
42 MODULE PROCEDURE array_eq_i
52 SUBROUTINE swap_i8(arr)
53 INTEGER(KIND=int_8),
DIMENSION(2),
INTENT(INOUT) :: arr
55 INTEGER(KIND=int_8) :: tmp
67 SUBROUTINE swap_i(arr)
68 INTEGER,
DIMENSION(2),
INTENT(INOUT) :: arr
84 pure_array_eq
FUNCTION array_eq_i(arr1, arr2)
85 INTEGER,
DIMENSION(:),
INTENT(IN) :: arr1, arr2
88#if CPVERSION_CHECK(1, 11, <=, LIBXSMM_CONFIG_VERSION_MAJOR, LIBXSMM_CONFIG_VERSION_MINOR)
89 array_eq_i = .NOT. libxsmm_diff(arr1, arr2)
92 IF (
SIZE(arr1) .EQ.
SIZE(arr2)) array_eq_i = all(arr1 == arr2)
103 pure_array_eq
FUNCTION array_eq_i8(arr1, arr2)
104 INTEGER(KIND=int_8),
DIMENSION(:),
INTENT(IN) :: arr1, arr2
105 LOGICAL :: array_eq_i8
107#if CPVERSION_CHECK(1, 11, <=, LIBXSMM_CONFIG_VERSION_MAJOR, LIBXSMM_CONFIG_VERSION_MINOR)
108 array_eq_i8 = .NOT. libxsmm_diff(arr1, arr2)
110 array_eq_i8 = .false.
111 IF (
SIZE(arr1) .EQ.
SIZE(arr2)) array_eq_i8 = all(arr1 == arr2)
often used utilities for tall-and-skinny matrices
Defines the basic variable types.
integer, parameter, public int_8
integer, parameter, public int_4
All kind of helpful little routines.