#!/usr/bin/env ruby
require("gsl")
include Math
printf("QAGI (integrate [-infty:+infty])\n\n")
w = Integration::Workspace.alloc(1000)
f = Function.alloc{ |x, a|
cos(x)/(x*x + a*a)
}
a = 1.0
f.set_params(a)
printf("Case 1: f(x; a) = cos(x)/(x^2 + a^2), I(a) = pi/a e^(-a)\n")
printf(" Expected: I(1) = %10.9f\n", M_PI*exp(-a))
printf(" QAGI Result: %10.9f\n", f.qagi([0, 1e-4], w)[0])
f = Function.alloc{ |x, a|
exp(a*x)/(1 + exp(x))
}
a = 0.3
f.set_params(a)
printf("Case 2: f(x; a) = e^{ax}/(1 + e^x), I(a) = pi/sin(a pi)\n")
printf(" Expected: I(0.3) = %10.9f\n", M_PI/sin(a*M_PI))
printf(" QAGI Result: %10.9f\n", f.qagi([0, 1e-2], w)[0])
syntax highlighted by Code2HTML, v. 0.9.1