Program j : vpolagr
program progj
implicit none
real order12,rms
external order12,rms
integer i,j
real rff(14),ff(14),zi(14,13),z(13),maxerr
do j=1,13
z(j)=0.05*j**2
do i=1,14
zi(i,j)=order12(z(j),real(i))
enddo
enddo
call vpolagr(ff,7.0,zi,z,14,13)
maxerr=0
do i=1,14
rff(i)=order12(7.0,float(i))
maxerr=max(maxerr,abs(1-rff(i)/ff(i)))
enddo
print *,'For an interpolation of a vertical field'
print *,'at height 7.0:'
print *,' rms error of vpolagr is:',rms(rff,ff,14)
print *,' maximum relative error is:',maxerr
stop
end
real function order12(x,nn)
real x,nn,n
n=0.5*nn
order12=(((((((((((0.1*x-n+0.2)*x-n+0.3)*x-n+0.4)*x-n+0.5)*x+n
* +0.6)*x+0.7)*x+n+0.8)*x+n+0.9)*x+n+1.0)*x+n+1.1)*x+1.2)*x+1.3
return
end
real function rms(a,b,n)
real a(n),b(n),sum
integer i,n
sum=0
do i=1,n
sum=sum+(a(i)-b(i))**2
enddo
rms=sqrt(sum/n)
return
end