3 subroutine r8cspeval(xget,iselect,fval,x,nx,ilinx,f,ier)
8 INTEGER,
PARAMETER :: R8=selected_real_kind(12,100)
76 integer :: ia(1) = (/ 0 /)
81 call r8cspevx(xget,x,nx,ilinx,ia(1),dxa(1),ier)
84 call r8cspevfn(iselect,1,1,fval,ia,dxa,f,nx)
94 subroutine r8cspevx(xget,x,nx,ilinx,i,dx,ier)
99 INTEGER,
PARAMETER :: R8=selected_real_kind(12,100)
129 if((xget.lt.x(1)).or.(xget.gt.x(nx)))
then
130 zxtol=4.0e-7_r8*max(abs(x(1)),abs(x(nx)))
131 if((xget.lt.x(1)-zxtol).or.(xget.gt.x(nx)+zxtol))
then
133 write(6,1001) xget,x(1),x(nx)
134 1001
format(
' ?cspeval: xget=',1pe11.4,
' out of range ',
135 > 1pe11.4,
' to ',1pe11.4)
137 if((xget.lt.x(1)-0.5_r8*zxtol).or.
138 > (xget.gt.x(nx)+0.5_r8*zxtol))
139 >
write(6,1011) xget,x(1),x(nx)
140 1011
format(
' %cspeval: xget=',1pe15.8,
' beyond range ',
141 > 1pe15.8,
' to ',1pe15.8,
' (fixup applied)')
142 if(xget.lt.x(1))
then
156 ii=1+nxm*(zxget-x(1))/(x(nx)-x(1))
158 if(zxget.lt.x(i))
then
160 else if(zxget.gt.x(i+1))
then
164 if((1.le.i).and.(i.lt.nxm))
then
165 if((x(i).le.zxget).and.(zxget.le.x(i+1)))
then
168 call r8zonfind(x,nx,zxget,i)
172 call r8zonfind(x,nx,zxget,i)
183 subroutine r8cspevfn(ict,ivec,ivd,fval,iv,dxv,f,nx)
189 INTEGER,
PARAMETER :: R8=selected_real_kind(12,100)
262 fval(v,iaval)=6.0_r8*f(4,i)
274 fval(v,iaval)=f(1,i)+dx*(f(2,i)+dx*(f(3,i)+dx*f(4,i)))
284 fval(v,iaval)=f(2,i)+dx*(2.0_r8*f(3,i)+dx*3.0_r8*f(4,i))
294 fval(v,iaval)=2.0_r8*f(3,i)+dx*6.0_r8*f(4,i)