/*********************************************************** cfint.c -- 連分数補間 ***********************************************************/ Const N = 5 /* 点の数 */ Dim x[N], y[N] /* N 個の点の x 座標, y 座標 */
Sub maketable() /* 係数を求め y[] に上書き */
Dim i As Long, j As Long
j = 0 While j < N - 1 i=j+1 While i < N y[i] = (x[i] - x[j]) / (y[i] - y[j]) i=i+1 Wend j=j+1 Wend End Sub
Function interpolate(t As Double) As Double /* 補間 */
Dim i As Long Dim r As Double
r = y[N - 1] i = N - 2 While i >= 0 r = (t - x[i]) / r + y[i] i=i-1 Wend interpolate = r End Function
Const PI = 3.14159265358979323846264
#N88BASIC Sub main()
Dim i As Long Dim s As Double
For i = 0 To N-1 /* 表を作る */ x[i] = 20 * i y[i] = Tan(x[i] * PI / 180) Next maketable() i=0
While i <= 80 /* 補間 */ s = interpolate(i) Print i, s, s - Tan(i * PI / 180) i=i+1 Wend End Sub main()