Function IntpoHyp(ByVal X As Double, ByVal X1 As Double, ByVal Y1 As Double, _
ByVal X2 As Double, ByVal Y2 As Double, _
ByVal X3 As Double, ByVal Y3 As Double) As Double
Dim dX As Double, dY As Double
dX = X3 - X1: If dX = 0 Then IntpoHyp = (2 ^ 53 - 1) * 2 ^ 971: Exit Function
dY = Y3 - Y1: If dY = 0 Then IntpoHyp = Y1: Exit Function
IntpoHyp = Y1 + dY * F0à1xyInt((X - X1) / dX, (X2 - X1) / dX, (Y2 - Y1) / dY)
End Function
Function F0à1xyInt(ByVal X As Double, ByVal XInt As Double, ByVal YInt As Double) As Double
Dim N As Double, D As Double
N = YInt * (1 - XInt) * X: D = XInt * (1 - YInt) + X * (YInt - XInt)
If Abs(N) < Abs(D) * 2 ^ 40 Then F0à1xyInt = N / D Else F0à1xyInt = Sgn(N) * 2 ^ 40
End Function