00001 function dfdx_4th(x,f,v)
00002 use phys_constant, only : long
00003 implicit none
00004 real(long) :: dfdx_4th
00005 real(long) :: x(5),f(5), v
00006 real(long) :: dx01, dx02, dx03, dx04
00007 real(long) :: dx10, dx12, dx13, dx14
00008 real(long) :: dx20, dx21, dx23, dx24
00009 real(long) :: dx30, dx31, dx32, dx34
00010 real(long) :: dx40, dx41, dx42, dx43
00011 real(long) :: xv0, xv1, xv2, xv3, xv4
00012 real(long) :: wex0, wex1, wex2, wex3, wex4
00013 integer :: ir0, ir1, ir2, ir3, ir4
00014
00015 ir0 = 1
00016 ir1 = 2
00017 ir2 = 3
00018 ir3 = 4
00019 ir4 = 5
00020 dx01 = x(ir0) - x(ir1)
00021 dx02 = x(ir0) - x(ir2)
00022 dx03 = x(ir0) - x(ir3)
00023 dx04 = x(ir0) - x(ir4)
00024 dx12 = x(ir1) - x(ir2)
00025 dx13 = x(ir1) - x(ir3)
00026 dx14 = x(ir1) - x(ir4)
00027 dx23 = x(ir2) - x(ir3)
00028 dx24 = x(ir2) - x(ir4)
00029 dx34 = x(ir3) - x(ir4)
00030 dx10 = - dx01
00031 dx20 = - dx02
00032 dx21 = - dx12
00033 dx30 = - dx03
00034 dx31 = - dx13
00035 dx32 = - dx23
00036 dx40 = - dx04
00037 dx41 = - dx14
00038 dx42 = - dx24
00039 dx43 = - dx34
00040 xv0 = v - x(ir0)
00041 xv1 = v - x(ir1)
00042 xv2 = v - x(ir2)
00043 xv3 = v - x(ir3)
00044 xv4 = v - x(ir4)
00045
00046 wex0 = (xv2*xv3*xv4 + xv1*xv3*xv4 + &
00047 & xv1*xv2*xv4 + xv1*xv2*xv3)/(dx01*dx02*dx03*dx04)
00048 wex1 = (xv2*xv3*xv4 + xv0*xv3*xv4 + &
00049 & xv0*xv2*xv4 + xv0*xv2*xv3)/(dx10*dx12*dx13*dx14)
00050 wex2 = (xv1*xv3*xv4 + xv0*xv3*xv4 + &
00051 & xv0*xv1*xv4 + xv0*xv1*xv3)/(dx20*dx21*dx23*dx24)
00052 wex3 = (xv1*xv2*xv4 + xv0*xv2*xv4 + &
00053 & xv0*xv1*xv4 + xv0*xv1*xv2)/(dx30*dx31*dx32*dx34)
00054 wex4 = (xv1*xv2*xv3 + xv0*xv2*xv3 + &
00055 & xv0*xv1*xv3 + xv0*xv1*xv2)/(dx40*dx41*dx42*dx43)
00056 dfdx_4th = wex0*f(ir0) + wex1*f(ir1) + wex2*f(ir2) &
00057 & + wex3*f(ir3) + wex4*f(ir4)
00058
00059 end function dfdx_4th