XLPack API: Pascal 使用例
PascalからXLPackを呼び出す
Pascal (Delphi または Free Pascal) からXLPackを呼び出すためにはDLLを直接使う必要があります.
SDKにはDLLインターフェースプログラムxlpack.pasが入っています. これを使うと, 呼び出しプログラムは “uses XLPack;” と宣言するだけでDLLインターフェースの詳細を気にせず組込み関数のように簡単にXLPackを呼び出すことができます.
係数行列a, 右辺行列bともに1次元配列を使います.
Pascalプログラム例 (例題(1))
program test_xlpack_1;
uses XLPack;
procedure test_dgesv;
const
n = 3; lda = n; ldb = n;
a: array[1..n*n] of Double =
(0.2, -0.32, -0.8,
-0.11, 0.81, -0.92,
-0.93, 0.37, -0.29);
b: array[1..n] of Double =
(-0.3727, 0.4319, -1.4247);
var
ipiv: array[1..n] of Integer;
info: Integer;
begin
Dgesv(n, lda, a, ipiv, ldb, b, info);
Writeln('x =');
Writeln(b[1], ' ', b[2], ' ', b[3]);
Writeln('info = ', info);
end;
begin
test_dgesv;
end.
実行結果
x =
8.60000000000000E-0001 6.40000000000000E-0001 5.10000000000000E-0001
info = 0
Pascalプログラム例 (例題(2))
例題(2)ではf(x)の積分をqk15を使って求めます. qk15はf(x)を定義する外部関数を必要とします. 外部関数はDelphiで作成することができ, qk15は必要なときにそれを呼び出します.
program test_xlpack_2;
uses XLPack;
function f(x: Double): Double;
begin
f := 1/(1 + x*x);
end;
procedure test_qk15;
var
a, b, result, abserr: Double;
begin
a := 0; b := 4;
Qk15(f, a, b, result, abserr);
Writeln('result = ', result, ', abserr = ', abserr);
end;
begin
test_qk15;
end.
実行結果
result = 1.32581766136379E+0000, abserr = 1.48272394121622E-0003