File tree Expand file tree Collapse file tree 2 files changed +38
-0
lines changed Expand file tree Collapse file tree 2 files changed +38
-0
lines changed Original file line number Diff line number Diff line change @@ -11,6 +11,7 @@ module stdlib_linalg
11
11
public :: diag
12
12
public :: eye
13
13
public :: trace
14
+ public :: outer_product
14
15
15
16
interface diag
16
17
!! version: experimental
@@ -52,6 +53,7 @@ module stdlib_linalg
52
53
#:endfor
53
54
end interface
54
55
56
+
55
57
! Matrix trace
56
58
interface trace
57
59
!! version: experimental
@@ -63,6 +65,22 @@ module stdlib_linalg
63
65
#:endfor
64
66
end interface
65
67
68
+
69
+ ! Outer product (of two vectors)
70
+ interface outer_product
71
+ !! version: experimental
72
+ !!
73
+ !! Computes outer product of two vectors, returning a matrix
74
+ !! ([Specification](../page/specs/stdlib_linalg.html#description_3))
75
+ #:for k1, t1 in RCI_KINDS_TYPES
76
+ module function outer_product_${t1[0]}$${k1}$(u,v) result(res)
77
+ ${t1}$, intent(in) :: u(:), v(:)
78
+ ${t1}$ :: res(size(u),size(v))
79
+ integer :: col
80
+ end function outer_product_${t1[0]}$${k1}$
81
+ #:endfor
82
+ end interface outer_product
83
+
66
84
contains
67
85
68
86
function eye(n) result(res)
Original file line number Diff line number Diff line change
1
+ #:include "common.fypp"
2
+ #:set RCI_KINDS_TYPES = REAL_KINDS_TYPES + CMPLX_KINDS_TYPES + INT_KINDS_TYPES
3
+ submodule (stdlib_linalg) stdlib_linalg_outer_product
4
+
5
+ implicit none
6
+
7
+ contains
8
+
9
+ #:for k1, t1 in RCI_KINDS_TYPES
10
+ module function outer_product_${t1[0]}$${k1}$(u,v) result(res)
11
+ ${t1}$, intent(in) :: u(:), v(:)
12
+ ${t1}$ :: res(size(u),size(v))
13
+ integer :: col
14
+ do col=1,size(v)
15
+ res(:,col) = v(col) * u
16
+ end do
17
+ end function outer_product_${t1[0]}$${k1}$
18
+ #:endfor
19
+
20
+ end submodule
You can’t perform that action at this time.
0 commit comments