Skip to content

Commit c54b959

Browse files
committed
adjust templates
1 parent 9d35084 commit c54b959

File tree

2 files changed

+138
-96
lines changed

2 files changed

+138
-96
lines changed

src/stdlib_linalg_pinv.fypp

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
#:include "common.fypp"
2-
! Compute the (Moore-Penrose) pseudo-inverse of a matrix.
2+
#:set RC_KINDS_TYPES = REAL_KINDS_TYPES + CMPLX_KINDS_TYPES
33
module stdlib_linalg_pseudoinverse
4+
!! Compute the (Moore-Penrose) pseudo-inverse of a matrix.
45
use stdlib_linalg_constants
56
use stdlib_linalg_blas
67
use stdlib_linalg_lapack
78
use stdlib_linalg_state
8-
use stdlib_linalg_svd, only: svd
9+
use stdlib_linalg, only: svd
910
use iso_fortran_env,only:real32,real64,real128,int8,int16,int32,int64,stderr => error_unit
1011
implicit none(type,external)
1112
private
@@ -19,21 +20,21 @@ module stdlib_linalg_pseudoinverse
1920

2021
! Function interface
2122
interface pinv
22-
#:for rk,rt,ri in ALL_KINDS_TYPES
23+
#:for rk,rt,ri in RC_KINDS_TYPES
2324
module procedure stdlib_linalg_pseudoinverse_${ri}$
2425
#:endfor
2526
end interface pinv
2627

2728
! Subroutine interface
2829
interface pseudoinvert
29-
#:for rk,rt,ri in ALL_KINDS_TYPES
30+
#:for rk,rt,ri in RC_KINDS_TYPES
3031
module procedure stdlib_linalg_pseudoinvert_${ri}$
3132
#:endfor
3233
end interface pseudoinvert
3334

3435
! Operator interface
3536
interface operator(.pinv.)
36-
#:for rk,rt,ri in ALL_KINDS_TYPES
37+
#:for rk,rt,ri in RC_KINDS_TYPES
3738
module procedure stdlib_linalg_pinv_${ri}$_operator
3839
#:endfor
3940
end interface operator(.pinv.)
@@ -42,7 +43,7 @@ module stdlib_linalg_pseudoinverse
4243

4344
contains
4445

45-
#:for rk,rt,ri in ALL_KINDS_TYPES
46+
#:for rk,rt,ri in RC_KINDS_TYPES
4647

4748
! Compute the in-place pseudo-inverse of matrix a
4849
subroutine stdlib_linalg_pseudoinvert_${ri}$(a,pinva,rtol,err)
@@ -53,27 +54,27 @@ module stdlib_linalg_pseudoinverse
5354
!> [optional] ....
5455
real(${rk}$), optional, intent(in) :: rtol
5556
!> [optional] state return flag. On error if not requested, the code will stop
56-
type(linalg_state), optional, intent(out) :: err
57+
type(linalg_state_type), optional, intent(out) :: err
5758

5859
! Local variables
5960
real(${rk}$) :: tolerance,cutoff
6061
real(${rk}$), allocatable :: s(:)
6162
${rt}$, allocatable :: u(:,:),vt(:,:)
62-
type(linalg_state) :: err0
63+
type(linalg_state_type) :: err0
6364
integer(ilp) :: m,n,k,i,j
6465

6566
! Problem size
6667
m = size(a,1,kind=ilp)
6768
n = size(a,2,kind=ilp)
6869
k = min(m,n)
6970
if (m<1 .or. n<1) then
70-
err0 = linalg_state(this,LINALG_VALUE_ERROR,'invalid matrix size: a=',[m,n])
71+
err0 = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid matrix size: a=',[m,n])
7172
call linalg_error_handling(err0,err)
7273
return
7374
end if
7475

7576
if (any(shape(pinva,kind=ilp)/=[n,m])) then
76-
err0 = linalg_state(this,LINALG_VALUE_ERROR,'invalid pinv size:',shape(pinva),'should be',[n,m])
77+
err0 = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid pinv size:',shape(pinva),'should be',[n,m])
7778
call linalg_error_handling(err0,err)
7879
return
7980
end if
@@ -89,7 +90,7 @@ module stdlib_linalg_pseudoinverse
8990
allocate(s(k),u(m,k),vt(k,n))
9091
call svd(a,s,u,vt,overwrite_a=.false.,full_matrices=.false.,err=err0)
9192
if (err0%error()) then
92-
err0 = linalg_state(this,LINALG_ERROR,'svd failure -',err0%message)
93+
err0 = linalg_state_type(this,LINALG_ERROR,'svd failure -',err0%message)
9394
call linalg_error_handling(err0,err)
9495
return
9596
endif
@@ -120,7 +121,7 @@ module stdlib_linalg_pseudoinverse
120121
!> [optional] ....
121122
real(${rk}$), optional, intent(in) :: rtol
122123
!> [optional] state return flag. On error if not requested, the code will stop
123-
type(linalg_state), optional, intent(out) :: err
124+
type(linalg_state_type), optional, intent(out) :: err
124125
!> Matrix pseudo-inverse
125126
${rt}$ :: pinva(size(a,2,kind=ilp),size(a,1,kind=ilp))
126127

0 commit comments

Comments
 (0)