00001 function dfdx_3rd(x,f,v)
00002   implicit none
00003   real(8) :: dfdx_3rd
00004   real(8) :: x(4),f(4), v
00005   real(8) :: dx01, dx02, dx03, dx10, dx12, dx13
00006   real(8) :: dx20, dx21, dx23, dx30, dx31, dx32
00007   real(8) :: xv0, xv1, xv2, xv3
00008   real(8) :: wex0, wex1, wex2, wex3
00009   integer :: ir0, ir1, ir2, ir3
00010 
00011   ir0 = 1
00012   ir1 = 2
00013   ir2 = 3
00014   ir3 = 4
00015   dx01 = x(ir0) - x(ir1)
00016   dx02 = x(ir0) - x(ir2)
00017   dx03 = x(ir0) - x(ir3)
00018   dx12 = x(ir1) - x(ir2)
00019   dx13 = x(ir1) - x(ir3)
00020   dx23 = x(ir2) - x(ir3)
00021   dx10 = - dx01
00022   dx20 = - dx02
00023   dx21 = - dx12
00024   dx30 = - dx03
00025   dx31 = - dx13
00026   dx32 = - dx23
00027   xv0 = v - x(ir0)
00028   xv1 = v - x(ir1)
00029   xv2 = v - x(ir2)
00030   xv3 = v - x(ir3)
00031   wex0 = (xv2*xv3 + xv1*xv3 + xv1*xv2)/(dx01*dx02*dx03)
00032   wex1 = (xv2*xv3 + xv0*xv3 + xv0*xv2)/(dx10*dx12*dx13) 
00033   wex2 = (xv1*xv3 + xv0*xv3 + xv0*xv1)/(dx20*dx21*dx23) 
00034   wex3 = (xv1*xv2 + xv0*xv2 + xv0*xv1)/(dx30*dx31*dx32) 
00035   dfdx_3rd = wex0*f(ir0) + wex1*f(ir1) + wex2*f(ir2) + wex3*f(ir3)
00036 
00037 end function dfdx_3rd