|
1 | 1 | #:include "common.fypp"
|
2 | 2 | #:set RC_KINDS_TYPES = REAL_KINDS_TYPES + CMPLX_KINDS_TYPES
|
3 | 3 | submodule (stdlib_linalg) stdlib_linalg_matrix_functions
|
| 4 | + use stdlib_constants |
4 | 5 | use stdlib_linalg_constants
|
5 | 6 | use stdlib_linalg_blas, only: gemm
|
6 | 7 | use stdlib_linalg_lapack, only: gesv
|
7 | 8 | use stdlib_linalg_state, only: linalg_state_type, linalg_error_handling, LINALG_ERROR, &
|
8 | 9 | LINALG_INTERNAL_ERROR, LINALG_VALUE_ERROR
|
9 | 10 | implicit none
|
10 | 11 |
|
11 |
| - #:for rk, rt, ri in (REAL_KINDS_TYPES) |
12 |
| - ${rt}$, parameter :: zero_${ri}$ = 0._${rk}$ |
13 |
| - ${rt}$, parameter :: one_${ri}$ = 1._${rk}$ |
14 |
| - #:endfor |
15 |
| - #:for rk, rt, ri in (CMPLX_KINDS_TYPES) |
16 |
| - ${rt}$, parameter :: zero_${ri}$ = (0._${rk}$, 0._${rk}$) |
17 |
| - ${rt}$, parameter :: one_${ri}$ = (1._${rk}$, 0._${rk}$) |
18 |
| - #:endfor |
19 |
| - |
20 | 12 | contains
|
21 | 13 |
|
22 | 14 | #:for rk,rt,ri in RC_KINDS_TYPES
|
@@ -105,7 +97,11 @@ contains
|
105 | 97 | ${rt}$ :: E_tmp(n, n)
|
106 | 98 | do k = 1, s
|
107 | 99 | E_tmp = E
|
108 |
| - call gemm("N", "N", n, n, n, one_${ri}$, E_tmp, n, E_tmp, n, zero_${ri}$, E, n) |
| 100 | + #:if rt.startswith('complex') |
| 101 | + call gemm("N", "N", n, n, n, one_c${rk}$, E_tmp, n, E_tmp, n, zero_c${rk}$, E, n) |
| 102 | + #:else |
| 103 | + call gemm("N", "N", n, n, n, one_${rk}$, E_tmp, n, E_tmp, n, zero_${rk}$, E, n) |
| 104 | + #:endif |
109 | 105 | enddo
|
110 | 106 | end block
|
111 | 107 | return
|
|
0 commit comments