Initial commit
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
SUBROUTINE ratint(xa,ya,n,x,y,dy)
|
||||
INTEGER n,NMAX
|
||||
REAL dy,x,y,xa(n),ya(n),TINY
|
||||
PARAMETER (NMAX=10,TINY=1.e-25)
|
||||
INTEGER i,m,ns
|
||||
REAL dd,h,hh,t,w,c(NMAX),d(NMAX)
|
||||
ns=1
|
||||
hh=abs(x-xa(1))
|
||||
do 11 i=1,n
|
||||
h=abs(x-xa(i))
|
||||
if (h.eq.0.)then
|
||||
y=ya(i)
|
||||
dy=0.0
|
||||
return
|
||||
else if (h.lt.hh) then
|
||||
ns=i
|
||||
hh=h
|
||||
endif
|
||||
c(i)=ya(i)
|
||||
d(i)=ya(i)+TINY
|
||||
11 continue
|
||||
y=ya(ns)
|
||||
ns=ns-1
|
||||
do 13 m=1,n-1
|
||||
do 12 i=1,n-m
|
||||
w=c(i+1)-d(i)
|
||||
h=xa(i+m)-x
|
||||
t=(xa(i)-x)*d(i)/h
|
||||
dd=t-c(i+1)
|
||||
if(dd.eq.0.)pause 'failure in ratint'
|
||||
dd=w/dd
|
||||
d(i)=c(i+1)*dd
|
||||
c(i)=t*dd
|
||||
12 continue
|
||||
if (2*ns.lt.n-m)then
|
||||
dy=c(ns+1)
|
||||
else
|
||||
dy=d(ns)
|
||||
ns=ns-1
|
||||
endif
|
||||
y=y+dy
|
||||
13 continue
|
||||
return
|
||||
END
|
||||
Reference in New Issue
Block a user