1 subroutine divdif(n,x,func,second)
4 C Compute numerically the second derivatives of a function of n variables.
5 C The lower triangle of the derivative matrix is stored in the vector second.
7 integer n,nf,i,ii,j,icant,uiparm
8 double precision x(n),xi,xj,f,fxp,fxm,fxpym,fxmyp,dwaf,
9 & delta /5.0d-4/, ddelta /2.5d-7/
10 double precision urparm
11 double precision second(n*(n+1)/2)
13 call func(n,x,nf,f,uiparm,urparm,ufparm)
17 c print*, i,i," ii",ii
20 call func(n,x,nf,fxp,uiparm,urparm,ufparm)
22 call func(n,x,nf,fxm,uiparm,urparm,ufparm)
24 second(ii)=(fxp+fxm-dwaf)/ddelta
31 c print *,i,j," ii",ii
34 call func(n,x,nf,fxpym,uiparm,urparm,ufparm)
37 call func(n,x,nf,fxmyp,uiparm,urparm,ufparm)
38 second(ii)=0.5d0*((second(icant(i,i))+second(icant(j,j)))
39 & -(fxpym+fxmyp-dwaf)/ddelta)
46 c------------------------------------------------------------------------------
47 subroutine func(n,x,nf,f,uiparm,urparm,ufparm)
50 double precision x(2),urparm,f
56 C-----------------------------------------------------------------------
57 INTEGER FUNCTION ICANT(I,J)
67 c------------------------------------------------------------------------