00001 function lagint_4th(x,y,v)
00002   use phys_constant, only : long
00003   implicit none
00004   real(long) :: lagint_4th
00005   real(long) :: x(4),y(4), v
00006   real(long) :: dx12, dx13, dx14, dx23, dx24, dx34
00007   real(long) :: dx21, dx31, dx32, dx41, dx42, dx43
00008   real(long) :: xv1, xv2, xv3, xv4, wex1, wex2, wex3, wex4
00009 
00010       dx12 = x(1) - x(2)
00011       dx13 = x(1) - x(3)
00012       dx14 = x(1) - x(4)
00013       dx23 = x(2) - x(3)
00014       dx24 = x(2) - x(4)
00015       dx34 = x(3) - x(4)
00016       dx21 = - dx12
00017       dx31 = - dx13
00018       dx32 = - dx23
00019       dx41 = - dx14
00020       dx42 = - dx24
00021       dx43 = - dx34
00022       xv1 = v - x(1)
00023       xv2 = v - x(2)
00024       xv3 = v - x(3)
00025       xv4 = v - x(4)
00026       wex1 = xv2*xv3*xv4/(dx12*dx13*dx14) 
00027       wex2 = xv1*xv3*xv4/(dx21*dx23*dx24) 
00028       wex3 = xv1*xv2*xv4/(dx31*dx32*dx34) 
00029       wex4 = xv1*xv2*xv3/(dx41*dx42*dx43) 
00030 
00031       lagint_4th = wex1*y(1) + wex2*y(2) + wex3*y(3) + wex4*y(4)
00032 
00033 end function lagint_4th