Skip to content

Commit 9859435

Browse files
committed
made it a module
1 parent a2aec70 commit 9859435

File tree

7 files changed

+32
-30
lines changed

7 files changed

+32
-30
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ This version is a modernization of the original Fortran 77 code. This is a work
2020
* Conversion from fixed (`.f`) to free-form (`.f90`) source.
2121
* Modified the tests so they can be automatically run in the [CI](https://github.com/jacobwilliams/minpack/actions)
2222

23-
Further updated are planned...
23+
Further updates are planned...
2424

2525
### Documentation
2626

src/minpack.f90

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
1+
!*****************************************************************************************
2+
!>
3+
! Modernized Minpack
4+
module minpack_module
15

2-
subroutine chkder(m,n,x,Fvec,Fjac,Ldfjac,Xp,Fvecp,Mode,Err)
6+
implicit none
7+
8+
contains
9+
!*****************************************************************************************
10+
11+
subroutine chkder(m,n,x,Fvec,Fjac,Ldfjac,Xp,Fvecp,Mode,Err)
312
implicit none
413

514
integer m , n , Ldfjac , Mode
@@ -89,8 +98,7 @@ subroutine chkder(m,n,x,Fvec,Fjac,Ldfjac,Xp,Fvecp,Mode,Err)
8998
integer i , j
9099
double precision eps , epsf , epslog , epsmch , factor , one , &
91100
& temp , zero
92-
double precision dpmpar
93-
data factor , one , zero/1.0d2 , 1.0d0 , 0.0d0/
101+
data factor , one , zero/1.0d2 , 1.0d0 , 0.0d0/
94102
!
95103
! epsmch is the machine precision.
96104
!
@@ -207,7 +215,6 @@ subroutine dogleg(n,r,Lr,Diag,Qtb,Delta,x,Wa1,Wa2)
207215
integer i , j , jj , jp1 , k , l
208216
double precision alpha , bnorm , epsmch , gnorm , one , qnorm , &
209217
& sgnorm , sum , temp , zero
210-
double precision dpmpar , enorm
211218
data one , zero/1.0d0 , 0.0d0/
212219
!
213220
! epsmch is the machine precision.
@@ -692,8 +699,7 @@ subroutine fdjac1(fcn,n,x,Fvec,Fjac,Ldfjac,Iflag,Ml,Mu,Epsfcn,Wa1,&
692699
! **********
693700
integer i , j , k , msum
694701
double precision eps , epsmch , h , temp , zero
695-
double precision dpmpar
696-
data zero/0.0d0/
702+
data zero/0.0d0/
697703
!
698704
! epsmch is the machine precision.
699705
!
@@ -747,7 +753,7 @@ subroutine fdjac1(fcn,n,x,Fvec,Fjac,Ldfjac,Iflag,Ml,Mu,Epsfcn,Wa1,&
747753
!
748754
99999 end
749755

750-
756+
751757
subroutine fdjac2(fcn,m,n,x,Fvec,Fjac,Ldfjac,Iflag,Epsfcn,Wa)
752758
implicit none
753759

@@ -831,8 +837,7 @@ subroutine fdjac2(fcn,m,n,x,Fvec,Fjac,Ldfjac,Iflag,Epsfcn,Wa)
831837
! **********
832838
integer i , j
833839
double precision eps , epsmch , h , temp , zero
834-
double precision dpmpar
835-
data zero/0.0d0/
840+
data zero/0.0d0/
836841
!
837842
! epsmch is the machine precision.
838843
!
@@ -1031,7 +1036,6 @@ subroutine hybrd(fcn,n,x,Fvec,Xtol,Maxfev,Ml,Mu,Epsfcn,Diag,Mode, &
10311036
double precision actred , delta , epsmch , fnorm , fnorm1 , one , &
10321037
& pnorm , prered , p1 , p5 , p001 , p0001 , ratio ,&
10331038
& sum , temp , xnorm , zero
1034-
double precision dpmpar , enorm
10351039
data one , p1 , p5 , p001 , p0001 , zero/1.0d0 , 1.0d-1 , 5.0d-1 ,&
10361040
& 1.0d-3 , 1.0d-4 , 0.0d0/
10371041
!
@@ -1599,7 +1603,6 @@ subroutine hybrj(fcn,n,x,Fvec,Fjac,Ldfjac,Xtol,Maxfev,Diag,Mode, &
15991603
double precision actred , delta , epsmch , fnorm , fnorm1 , one , &
16001604
& pnorm , prered , p1 , p5 , p001 , p0001 , ratio ,&
16011605
& sum , temp , xnorm , zero
1602-
double precision dpmpar , enorm
16031606
data one , p1 , p5 , p001 , p0001 , zero/1.0d0 , 1.0d-1 , 5.0d-1 ,&
16041607
& 1.0d-3 , 1.0d-4 , 0.0d0/
16051608
!
@@ -2200,7 +2203,6 @@ subroutine lmder(fcn,m,n,x,Fvec,Fjac,Ldfjac,Ftol,Xtol,Gtol,Maxfev,&
22002203
& fnorm1 , gnorm , one , par , pnorm , prered , &
22012204
& p1 , p5 , p25 , p75 , p0001 , ratio , sum , &
22022205
& temp , temp1 , temp2 , xnorm , zero
2203-
double precision dpmpar , enorm
22042206
data one , p1 , p5 , p25 , p75 , p0001 , zero/1.0d0 , 1.0d-1 , &
22052207
& 5.0d-1 , 2.5d-1 , 7.5d-1 , 1.0d-4 , 0.0d0/
22062208
!
@@ -2819,8 +2821,7 @@ subroutine lmdif(fcn,m,n,x,Fvec,Ftol,Xtol,Gtol,Maxfev,Epsfcn,Diag,&
28192821
& fnorm1 , gnorm , one , par , pnorm , prered , &
28202822
& p1 , p5 , p25 , p75 , p0001 , ratio , sum , &
28212823
& temp , temp1 , temp2 , xnorm , zero
2822-
double precision dpmpar , enorm
2823-
data one , p1 , p5 , p25 , p75 , p0001 , zero/1.0d0 , 1.0d-1 , &
2824+
data one , p1 , p5 , p25 , p75 , p0001 , zero/1.0d0 , 1.0d-1 , &
28242825
& 5.0d-1 , 2.5d-1 , 7.5d-1 , 1.0d-4 , 0.0d0/
28252826
!
28262827
! epsmch is the machine precision.
@@ -3325,8 +3326,7 @@ subroutine lmpar(n,r,Ldr,Ipvt,Diag,Qtb,Delta,Par,x,Sdiag,Wa1,Wa2)
33253326
integer i , iter , j , jm1 , jp1 , k , l , nsing
33263327
double precision dxnorm , dwarf , fp , gnorm , parc , parl , &
33273328
& paru , p1 , p001 , sum , temp , zero
3328-
double precision dpmpar , enorm
3329-
data p1 , p001 , zero/1.0d-1 , 1.0d-3 , 0.0d0/
3329+
data p1 , p001 , zero/1.0d-1 , 1.0d-3 , 0.0d0/
33303330
!
33313331
! dwarf is the smallest positive magnitude.
33323332
!
@@ -3680,8 +3680,7 @@ subroutine lmstr(fcn,m,n,x,Fvec,Fjac,Ldfjac,Ftol,Xtol,Gtol,Maxfev,&
36803680
& fnorm1 , gnorm , one , par , pnorm , prered , &
36813681
& p1 , p5 , p25 , p75 , p0001 , ratio , sum , &
36823682
& temp , temp1 , temp2 , xnorm , zero
3683-
double precision dpmpar , enorm
3684-
data one , p1 , p5 , p25 , p75 , p0001 , zero/1.0d0 , 1.0d-1 , &
3683+
data one , p1 , p5 , p25 , p75 , p0001 , zero/1.0d0 , 1.0d-1 , &
36853684
& 5.0d-1 , 2.5d-1 , 7.5d-1 , 1.0d-4 , 0.0d0/
36863685
!
36873686
! epsmch is the machine precision.
@@ -4292,8 +4291,7 @@ subroutine qrfac(m,n,a,Lda,Pivot,Ipvt,Lipvt,Rdiag,Acnorm,Wa)
42924291
! **********
42934292
integer i , j , jp1 , k , kmax , minmn
42944293
double precision ajnorm , epsmch , one , p05 , sum , temp , zero
4295-
double precision dpmpar , enorm
4296-
data one , p05 , zero/1.0d0 , 5.0d-2 , 0.0d0/
4294+
data one , p05 , zero/1.0d0 , 5.0d-2 , 0.0d0/
42974295
!
42984296
! epsmch is the machine precision.
42994297
!
@@ -4745,7 +4743,6 @@ subroutine r1updt(m,n,s,Ls,u,v,w,Sing)
47454743
integer i , j , jj , l , nmj , nm1
47464744
double precision cos , cotan , giant , one , p5 , p25 , sin , &
47474745
& tan , tau , temp , zero
4748-
double precision dpmpar
47494746
data one , p5 , p25 , zero/1.0d0 , 5.0d-1 , 2.5d-1 , 0.0d0/
47504747
!
47514748
! giant is the largest magnitude.
@@ -4988,3 +4985,7 @@ subroutine rwupdt(n,r,Ldr,w,b,Alpha,Cos,Sin)
49884985
! last card of subroutine rwupdt.
49894986
!
49904987
end
4988+
4989+
!*****************************************************************************************
4990+
end module minpack_module
4991+
!*****************************************************************************************

test/file15.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11

22
program test
3+
use minpack_module
34
implicit none
45

56
! **********
@@ -31,8 +32,7 @@ program test
3132
integer na(60) , nf(60) , np(60) , nx(60)
3233
double precision factor , fnorm1 , fnorm2 , one , ten , tol
3334
double precision fnm(60) , fvec(40) , wa(2660) , x(40)
34-
double precision dpmpar , enorm
35-
external fcn
35+
external fcn
3636
common /refnum/ NPRob , NFEv
3737
!
3838
! LOGICAL INPUT UNIT IS ASSUMED TO BE NUMBER 5.

test/file16.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11

22
program test
3+
use minpack_module
34
implicit none
45

56
! **********
@@ -32,8 +33,7 @@ program test
3233
double precision factor , fnorm1 , fnorm2 , one , ten , tol
3334
double precision fnm(60) , fjac(40,40) , fvec(40) , wa(1060) , &
3435
& x(40)
35-
double precision dpmpar , enorm
36-
external fcn
36+
external fcn
3737
common /refnum/ NPRob , NFEv , NJEv
3838
!
3939
! LOGICAL INPUT UNIT IS ASSUMED TO BE NUMBER 5.

test/file17.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11

22
program test
3+
use minpack_module
34
implicit none
45

56
! **********
@@ -33,8 +34,7 @@ program test
3334
double precision factor , fnorm1 , fnorm2 , one , ten , tol
3435
double precision fjac(65,40) , fnm(60) , fvec(65) , wa(265) , &
3536
& x(40)
36-
double precision dpmpar , enorm
37-
external fcn
37+
external fcn
3838
common /refnum/ NPRob , NFEv , NJEv
3939
!
4040
! LOGICAL INPUT UNIT IS ASSUMED TO BE NUMBER 5.

test/file19.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11

22
program test
3+
use minpack_module
34
implicit none
45

56
! **********
@@ -32,8 +33,7 @@ program test
3233
& nx(60)
3334
double precision factor , fnorm1 , fnorm2 , one , ten , tol
3435
double precision fnm(60) , fvec(65) , wa(2865) , x(40)
35-
double precision dpmpar , enorm
36-
external fcn
36+
external fcn
3737
common /refnum/ NPRob , NFEv , NJEv
3838
!
3939
! LOGICAL INPUT UNIT IS ASSUMED TO BE NUMBER 5.

test/file20.f90

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11

22
program test
3+
use minpack_module
34
implicit none
45

56
! **********

0 commit comments

Comments
 (0)