Sub Ex_Pchse()
Const N = 4, Ne = 2
Dim X(N - 1) As Double, Y(N - 1) As Double, D(N - 1) As Double
Dim Xe(Ne - 1) As Double, Ye(Ne - 1) As Double
Dim Info As Long
'-- Data
X(0) = 0.1: Y(0) = -2.3026
X(1) = 0.11: Y(1) = -2.2073
X(2) = 0.12: Y(2) = -2.1203
X(3) = 0.13: Y(3) = -2.0402
'-- Spline interpolation
Call
Pchse(N, X(), Y(), D(), Info)
If Info <> 0 Then
Debug.Print "Error in
Pchse: Info =", Info
Exit Sub
End If
'-- Compute interpolated values
Xe(0) = 0.115: Xe(1) = 0.125
Call
Pchfe(N, X(), Y(), D(), Ne, Xe(), Ye(), Info)
Debug.Print "ln(" + CStr(Xe(0)) + ") =", Ye(0)
Debug.Print "ln(" + CStr(Xe(1)) + ") =", Ye(1)
Debug.Print "Info =", Info
End Sub
Sub Pchfe(N As Long, X() As Double, F() As Double, D() As Double, Ne As Long, Xe() As Double, Fe() As Double, Info As Long, Optional Skip As Boolean=False, Optional Idxfd As Long=0, Optional Incfd As Long=1)
Evaluation of function values for piecewise cubic Hermite (and cubic spline) interpolation
Sub Pchse(N As Long, X() As Double, F() As Double, D() As Double, Info As Long, Optional Idxfd As Long=0, Optional Incfd As Long=1)
Piecewise cubic spline interpolation ("not a knot" condition)