! Replaces DTRSV 24 procedures ! Level 2 REAL (DTRSV) ! . unit ! . alpha op_a lower diag b ! 201* any H L U b < alpha a(-H) b ! 202* any H L b < alpha a(-H) b ! 203* any H U b < alpha a(-H) b ! 204* any H b < alpha a(-H) b ! 205 any T L U b < alpha a(-T) b ! 206 any T L b < alpha a(-T) b ! 207 any T U b < alpha a(-T) b ! 208 any T b < alpha a(-T) b ! 209 any L U b < alpha a(-1) b ! 210 any L b < alpha a(-1) b ! 211 any U b < alpha a(-1) b ! 212 any b < alpha a(-1) b ! 213* 1.0 H L U b < a(-H) b ! 214* 1.0 H L b < a(-H) b ! 215* 1.0 H U b < a(-H) b ! 216* 1.0 H b < a(-H) b ! 217 1.0 T L U b < a(-T) b ! 218 1.0 T L b < a(-T) b ! 219 1.0 T U b < a(-T) b ! 220 1.0 T b < a(-T) b ! 221 1.0 L U b < a(-1) b ! 222 1.0 L b < a(-1) b ! 223 1.0 U b < a(-1) b ! 224 1.0 b < a(-1) b ! * means not needed for the REAL case ! . all procedures with op_a of type "blas_conj_trans" ! . are not needed but have been added for consistency ! . with the complex case ! . (201, 202, 203, 204, 213, 214, 215, 216) MODULE dtrsv_01 CONTAINS SUBROUTINE dtrsv_201(alpha,a,op_a,b,lower,unit_diag) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_lower_type, blas_unit_diag_type, & blas_conj_trans_type ! .. Scalar Arguments .. REAL (wp), INTENT (IN) :: alpha TYPE (blas_conj_trans_type), INTENT (IN) :: op_a TYPE (blas_lower_type), INTENT (IN) :: lower TYPE (blas_unit_diag_type), INTENT (IN) :: unit_diag ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) b = alpha*b CALL dtrsv('L','C','U',n,a,n,b,1) END SUBROUTINE dtrsv_201 END MODULE dtrsv_01 MODULE dtrsv_02 CONTAINS SUBROUTINE dtrsv_202(alpha,a,op_a,b,lower) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_lower_type, blas_conj_trans_type ! .. Scalar Arguments .. REAL (wp), INTENT (IN) :: alpha TYPE (blas_conj_trans_type), INTENT (IN) :: op_a TYPE (blas_lower_type), INTENT (IN) :: lower ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) b = alpha*b CALL dtrsv('L','C','N',n,a,n,b,1) END SUBROUTINE dtrsv_202 END MODULE dtrsv_02 MODULE dtrsv_03 CONTAINS SUBROUTINE dtrsv_203(alpha,a,op_a,b,unit_diag) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_unit_diag_type, blas_conj_trans_type ! .. Scalar Arguments .. REAL (wp), INTENT (IN) :: alpha TYPE (blas_conj_trans_type), INTENT (IN) :: op_a TYPE (blas_unit_diag_type), INTENT (IN) :: unit_diag ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) b = alpha*b CALL dtrsv('U','C','U',n,a,n,b,1) END SUBROUTINE dtrsv_203 END MODULE dtrsv_03 MODULE dtrsv_04 CONTAINS SUBROUTINE dtrsv_204(alpha,a,op_a,b) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_conj_trans_type ! .. Scalar Arguments .. REAL (wp), INTENT (IN) :: alpha TYPE (blas_conj_trans_type), INTENT (IN) :: op_a ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) b = alpha*b CALL dtrsv('U','C','N',n,a,n,b,1) END SUBROUTINE dtrsv_204 END MODULE dtrsv_04 MODULE dtrsv_05 CONTAINS SUBROUTINE dtrsv_205(alpha,a,op_a,b,lower,unit_diag) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_lower_type, blas_unit_diag_type, & blas_trans_type ! .. Scalar Arguments .. REAL (wp), INTENT (IN) :: alpha TYPE (blas_trans_type), INTENT (IN) :: op_a TYPE (blas_lower_type), INTENT (IN) :: lower TYPE (blas_unit_diag_type), INTENT (IN) :: unit_diag ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) b = alpha*b CALL dtrsv('L','T','U',n,a,n,b,1) END SUBROUTINE dtrsv_205 END MODULE dtrsv_05 MODULE dtrsv_06 CONTAINS SUBROUTINE dtrsv_206(alpha,a,op_a,b,lower) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_lower_type, blas_trans_type ! .. Scalar Arguments .. REAL (wp), INTENT (IN) :: alpha TYPE (blas_trans_type), INTENT (IN) :: op_a TYPE (blas_lower_type), INTENT (IN) :: lower ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) b = alpha*b CALL dtrsv('L','T','N',n,a,n,b,1) END SUBROUTINE dtrsv_206 END MODULE dtrsv_06 MODULE dtrsv_07 CONTAINS SUBROUTINE dtrsv_207(alpha,a,op_a,b,unit_diag) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_unit_diag_type, blas_trans_type ! .. Scalar Arguments .. REAL (wp), INTENT (IN) :: alpha TYPE (blas_trans_type), INTENT (IN) :: op_a TYPE (blas_unit_diag_type), INTENT (IN) :: unit_diag ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) b = alpha*b CALL dtrsv('U','T','U',n,a,n,b,1) END SUBROUTINE dtrsv_207 END MODULE dtrsv_07 MODULE dtrsv_08 CONTAINS SUBROUTINE dtrsv_208(alpha,a,op_a,b) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type ! .. Scalar Arguments .. REAL (wp), INTENT (IN) :: alpha TYPE (blas_trans_type), INTENT (IN) :: op_a ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) b = alpha*b CALL dtrsv('U','T','N',n,a,n,b,1) END SUBROUTINE dtrsv_208 END MODULE dtrsv_08 MODULE dtrsv_09 CONTAINS SUBROUTINE dtrsv_209(alpha,a,b,lower,unit_diag) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_lower_type, blas_unit_diag_type ! .. Scalar Arguments .. REAL (wp), INTENT (IN) :: alpha TYPE (blas_lower_type), INTENT (IN) :: lower TYPE (blas_unit_diag_type), INTENT (IN) :: unit_diag ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) b = alpha*b CALL dtrsv('L','N','U',n,a,n,b,1) END SUBROUTINE dtrsv_209 END MODULE dtrsv_09 MODULE dtrsv_10 CONTAINS SUBROUTINE dtrsv_210(alpha,a,b,lower) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_lower_type ! .. Scalar Arguments .. REAL (wp), INTENT (IN) :: alpha TYPE (blas_lower_type), INTENT (IN) :: lower ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) b = alpha*b CALL dtrsv('L','N','N',n,a,n,b,1) END SUBROUTINE dtrsv_210 END MODULE dtrsv_10 MODULE dtrsv_11 CONTAINS SUBROUTINE dtrsv_211(alpha,a,b,unit_diag) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_unit_diag_type ! .. Scalar Arguments .. REAL (wp), INTENT (IN) :: alpha TYPE (blas_unit_diag_type), INTENT (IN) :: unit_diag ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) b = alpha*b CALL dtrsv('U','N','U',n,a,n,b,1) END SUBROUTINE dtrsv_211 END MODULE dtrsv_11 MODULE dtrsv_12 CONTAINS SUBROUTINE dtrsv_212(alpha,a,b) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp ! .. Scalar Arguments .. REAL (wp), INTENT (IN) :: alpha ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) b = alpha*b CALL dtrsv('U','N','N',n,a,n,b,1) END SUBROUTINE dtrsv_212 END MODULE dtrsv_12 MODULE dtrsv_13 CONTAINS SUBROUTINE dtrsv_213(a,op_a,b,lower,unit_diag) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_lower_type, blas_unit_diag_type, & blas_conj_trans_type ! .. Scalar Arguments .. TYPE (blas_conj_trans_type), INTENT (IN) :: op_a TYPE (blas_lower_type), INTENT (IN) :: lower TYPE (blas_unit_diag_type), INTENT (IN) :: unit_diag ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) CALL dtrsv('L','C','U',n,a,n,b,1) END SUBROUTINE dtrsv_213 END MODULE dtrsv_13 MODULE dtrsv_14 CONTAINS SUBROUTINE dtrsv_214(a,op_a,b,lower) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_lower_type, blas_conj_trans_type ! .. Scalar Arguments .. TYPE (blas_conj_trans_type), INTENT (IN) :: op_a TYPE (blas_lower_type), INTENT (IN) :: lower ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) CALL dtrsv('L','C','N',n,a,n,b,1) END SUBROUTINE dtrsv_214 END MODULE dtrsv_14 MODULE dtrsv_15 CONTAINS SUBROUTINE dtrsv_215(a,op_a,b,unit_diag) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_unit_diag_type, blas_conj_trans_type ! .. Scalar Arguments .. TYPE (blas_conj_trans_type), INTENT (IN) :: op_a TYPE (blas_unit_diag_type), INTENT (IN) :: unit_diag ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) CALL dtrsv('U','C','U',n,a,n,b,1) END SUBROUTINE dtrsv_215 END MODULE dtrsv_15 MODULE dtrsv_16 CONTAINS SUBROUTINE dtrsv_216(a,op_a,b) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_conj_trans_type ! .. Scalar Arguments .. TYPE (blas_conj_trans_type), INTENT (IN) :: op_a ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) CALL dtrsv('U','C','N',n,a,n,b,1) END SUBROUTINE dtrsv_216 END MODULE dtrsv_16 MODULE dtrsv_17 CONTAINS SUBROUTINE dtrsv_217(a,op_a,b,lower,unit_diag) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_lower_type, blas_unit_diag_type, & blas_trans_type ! .. Scalar Arguments .. TYPE (blas_trans_type), INTENT (IN) :: op_a TYPE (blas_lower_type), INTENT (IN) :: lower TYPE (blas_unit_diag_type), INTENT (IN) :: unit_diag ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) CALL dtrsv('L','T','U',n,a,n,b,1) END SUBROUTINE dtrsv_217 END MODULE dtrsv_17 MODULE dtrsv_18 CONTAINS SUBROUTINE dtrsv_218(a,op_a,b,lower) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_lower_type, blas_trans_type ! .. Scalar Arguments .. TYPE (blas_trans_type), INTENT (IN) :: op_a TYPE (blas_lower_type), INTENT (IN) :: lower ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) CALL dtrsv('L','T','N',n,a,n,b,1) END SUBROUTINE dtrsv_218 END MODULE dtrsv_18 MODULE dtrsv_19 CONTAINS SUBROUTINE dtrsv_219(a,op_a,b,unit_diag) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_unit_diag_type, blas_trans_type ! .. Scalar Arguments .. TYPE (blas_trans_type), INTENT (IN) :: op_a TYPE (blas_unit_diag_type), INTENT (IN) :: unit_diag ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) CALL dtrsv('U','T','U',n,a,n,b,1) END SUBROUTINE dtrsv_219 END MODULE dtrsv_19 MODULE dtrsv_20 CONTAINS SUBROUTINE dtrsv_220(a,op_a,b) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type ! .. Scalar Arguments .. TYPE (blas_trans_type), INTENT (IN) :: op_a ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) CALL dtrsv('U','T','N',n,a,n,b,1) END SUBROUTINE dtrsv_220 END MODULE dtrsv_20 MODULE dtrsv_21 CONTAINS SUBROUTINE dtrsv_221(a,b,lower,unit_diag) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_lower_type, blas_unit_diag_type ! .. Scalar Arguments .. TYPE (blas_lower_type), INTENT (IN) :: lower TYPE (blas_unit_diag_type), INTENT (IN) :: unit_diag ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) CALL dtrsv('L','N','U',n,a,n,b,1) END SUBROUTINE dtrsv_221 END MODULE dtrsv_21 MODULE dtrsv_22 CONTAINS SUBROUTINE dtrsv_222(a,b,lower) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_lower_type ! .. Scalar Arguments .. TYPE (blas_lower_type), INTENT (IN) :: lower ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) CALL dtrsv('L','N','N',n,a,n,b,1) END SUBROUTINE dtrsv_222 END MODULE dtrsv_22 MODULE dtrsv_23 CONTAINS SUBROUTINE dtrsv_223(a,b,unit_diag) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_unit_diag_type ! .. Scalar Arguments .. TYPE (blas_unit_diag_type), INTENT (IN) :: unit_diag ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) CALL dtrsv('U','N','U',n,a,n,b,1) END SUBROUTINE dtrsv_223 END MODULE dtrsv_23 MODULE dtrsv_24 CONTAINS SUBROUTINE dtrsv_224(a,b) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp ! .. Array Arguments .. REAL (wp), INTENT (IN) :: a(:,:) REAL (wp), INTENT (INOUT) :: b(:) ! .. Local Scalar .. INTEGER :: n ! .. External Procedures .. EXTERNAL dtrsv n = SIZE(b) CALL dtrsv('U','N','N',n,a,n,b,1) END SUBROUTINE dtrsv_224 END MODULE dtrsv_24