7 subroutine r8cspline(x,nx,fspl,ibcxmin,bcxmin,ibcxmax,bcxmax,
13 INTEGER,
PARAMETER :: R8=selected_real_kind(12,100)
14 INTEGER iwk,nx,ierx,inum,i
115 data sixth/0.166666666666666667_r8/
121 write(6,
'('' ?cspline: at least 2 x points required.'')')
124 call ibc_ck(ibcxmin,
'cspline',
'xmin',-1,7,ier)
125 if(ibcxmin.ge.0)
call ibc_ck(ibcxmax,
'cspline',
'xmax',0,7,ier)
129 call r8splinck(x,nx,ilinx,1.0e-3_r8,ierx)
133 write(6,
'('' ?cspline: x axis not strict ascending'')')
136 if(ibcxmin.eq.-1)
then
139 write(6,1009) inum,iwk,nx
141 >
' ?cspline: workspace too small. need: ',i6,
' got: ',i6/
142 >
' (need = nx, nx=',i6)
151 if(ibcxmin.eq.1)
then
153 else if(ibcxmin.eq.2)
then
157 if(ibcxmax.eq.1)
then
159 else if(ibcxmax.eq.2)
then
163 call r8v_spline(ibcxmin,ibcxmax,nx,x,fspl,wk)
166 fspl(3,i)=half*fspl(3,i)
167 fspl(4,i)=sixth*fspl(4,i)