diff --git a/doc/specs/stdlib_linalg.md b/doc/specs/stdlib_linalg.md index 33fa43ed0..8f1fe2e47 100644 --- a/doc/specs/stdlib_linalg.md +++ b/doc/specs/stdlib_linalg.md @@ -187,6 +187,10 @@ to the original. Stable +### Class + +Pure function. + ### Description Create a diagonal array or extract the diagonal elements of an array diff --git a/src/stdlib_linalg.fypp b/src/stdlib_linalg.fypp index c56f40bed..c33668839 100644 --- a/src/stdlib_linalg.fypp +++ b/src/stdlib_linalg.fypp @@ -154,13 +154,13 @@ module stdlib_linalg ! Vector to matrix ! #:for k1, t1 in RCI_KINDS_TYPES - module function diag_${t1[0]}$${k1}$(v) result(res) + module pure function diag_${t1[0]}$${k1}$(v) result(res) ${t1}$, intent(in) :: v(:) ${t1}$ :: res(size(v),size(v)) end function diag_${t1[0]}$${k1}$ #:endfor #:for k1, t1 in RCI_KINDS_TYPES - module function diag_${t1[0]}$${k1}$_k(v,k) result(res) + module pure function diag_${t1[0]}$${k1}$_k(v,k) result(res) ${t1}$, intent(in) :: v(:) integer, intent(in) :: k ${t1}$ :: res(size(v)+abs(k),size(v)+abs(k)) @@ -171,13 +171,13 @@ module stdlib_linalg ! Matrix to vector ! #:for k1, t1 in RCI_KINDS_TYPES - module function diag_${t1[0]}$${k1}$_mat(A) result(res) + module pure function diag_${t1[0]}$${k1}$_mat(A) result(res) ${t1}$, intent(in) :: A(:,:) ${t1}$ :: res(minval(shape(A))) end function diag_${t1[0]}$${k1}$_mat #:endfor #:for k1, t1 in RCI_KINDS_TYPES - module function diag_${t1[0]}$${k1}$_mat_k(A,k) result(res) + module pure function diag_${t1[0]}$${k1}$_mat_k(A,k) result(res) ${t1}$, intent(in) :: A(:,:) integer, intent(in) :: k ${t1}$ :: res(minval(shape(A))-abs(k)) diff --git a/src/stdlib_linalg_diag.fypp b/src/stdlib_linalg_diag.fypp index ec05abc42..3e74ab67f 100644 --- a/src/stdlib_linalg_diag.fypp +++ b/src/stdlib_linalg_diag.fypp @@ -7,7 +7,7 @@ submodule (stdlib_linalg) stdlib_linalg_diag contains #:for k1, t1 in RCI_KINDS_TYPES - module function diag_${t1[0]}$${k1}$(v) result(res) + module pure function diag_${t1[0]}$${k1}$(v) result(res) ${t1}$, intent(in) :: v(:) ${t1}$ :: res(size(v),size(v)) integer :: i @@ -20,7 +20,7 @@ contains #:for k1, t1 in RCI_KINDS_TYPES - module function diag_${t1[0]}$${k1}$_k(v,k) result(res) + module pure function diag_${t1[0]}$${k1}$_k(v,k) result(res) ${t1}$, intent(in) :: v(:) integer, intent(in) :: k ${t1}$ :: res(size(v)+abs(k),size(v)+abs(k)) @@ -44,7 +44,7 @@ contains #:endfor #:for k1, t1 in RCI_KINDS_TYPES - module function diag_${t1[0]}$${k1}$_mat(A) result(res) + module pure function diag_${t1[0]}$${k1}$_mat(A) result(res) ${t1}$, intent(in) :: A(:,:) ${t1}$ :: res(minval(shape(A))) integer :: i @@ -55,7 +55,7 @@ contains #:endfor #:for k1, t1 in RCI_KINDS_TYPES - module function diag_${t1[0]}$${k1}$_mat_k(A,k) result(res) + module pure function diag_${t1[0]}$${k1}$_mat_k(A,k) result(res) ${t1}$, intent(in) :: A(:,:) integer, intent(in) :: k ${t1}$ :: res(minval(shape(A))-abs(k))