#!/usr/local/bin/ruby
require "GSL"
include GSL
# Test module Interpolation
# generate output suitable for graph(1) from GNU plotutils:
# ruby test/interp.rb > interp.dat
# graph -Tps < interp.dat > interp.ps
STDERR.puts "Running interpolation tests (interp)..."
x = []
y = []
puts "#m=0,S=2"
0.upto(9) do |i|
x[i] = i + 0.5 * Special::Trig::sin(i)
y[i] = i + Special::Trig::cos(i * i)
printf "%g %g\n", x[i], y[i]
end
acc = Interpolation::Accel.new
type = [Interpolation::Interp::LINEAR, Interpolation::Interp::CSPLINE, Interpolation::Interp::AKIMA]
type.each_index do |k|
i = Interpolation::Interp.new(type[k], 10)
#STDERR.print "#{i.name}\n"
ret = i.init(x, y)
STDERR.puts strerror(ret) if ret != GSL_SUCCESS
puts "#m=#{k},S=0"
xi = x[0]
d = Result.new
while (xi < x[9]) do
yi = i.eval(x, y, xi, acc)
printf "%g %g\n", xi, yi
xi += 0.01
end
acc.reset
end
STDERR.puts "\ndone."