Sub Ex_Chfdv()
Const N = 4, Ne = 2
Dim X(N - 1) As Double, Y(N - 1) As Double, D(N - 1) As Double
Dim Ic(1) As Long, Vc(1) As Double
Dim Xe(Ne - 1) As Double, Ye(Ne - 1) As Double, Yep(Ne - 1) As Double, Nex(1) As Long
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
'-- Cubic Hermite interpolation
Call Pchim(N, X(), Y(), D(), Info)
If Info <> 0 Then
Debug.Print "Error in Pchim: Info =", Info
Exit Sub
End If
'-- Compute interpolated values
Xe(0) = 0.115: Xe(1) = 0.125
Call Chfdv(X(1), X(2), Y(1), Y(2), D(1), D(2), Ne, Xe(), Ye(), Yep(), Nex(), Info)
Debug.Print "ln(" + CStr(Xe(0)) + ") =", Ye(0), "ln'(" + CStr(Xe(0)) + ") =", Yep(0)
Debug.Print "ln(" + CStr(Xe(1)) + ") =", Ye(1), "ln'(" + CStr(Xe(1)) + ") =", Yep(1)
Debug.Print "Info =", Info, "Nex(0) =", Nex(0), "Nex(1) =", Nex(1)
End Sub